/* * Copyright (C) 2015 Naman Dwivedi * * Licensed under the GNU General Public License v3 * * This is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ package com.naman14.timber.utils; import android.annotation.TargetApi; import android.app.Activity; import android.app.ActivityOptions; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.transition.Transition; import android.transition.TransitionInflater; import android.util.Pair; import android.view.View; import android.widget.Toast; import com.naman14.timber.R; import com.naman14.timber.activities.MainActivity; import com.naman14.timber.activities.NowPlayingActivity; import com.naman14.timber.activities.PlaylistDetailActivity; import com.naman14.timber.activities.SearchActivity; import com.naman14.timber.activities.SettingsActivity; import com.naman14.timber.fragments.AlbumDetailFragment; import com.naman14.timber.fragments.ArtistDetailFragment; import com.naman14.timber.nowplaying.Timber1; import com.naman14.timber.nowplaying.Timber2; import com.naman14.timber.nowplaying.Timber3; import com.naman14.timber.nowplaying.Timber4; import com.naman14.timber.nowplaying.Timber5; import com.naman14.timber.nowplaying.Timber6; import java.util.ArrayList; public class NavigationUtils { @TargetApi(21) public static void navigateToAlbum(Activity context, long albumID, Pair<View, String> transitionViews) { FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); Fragment fragment; if (TimberUtils.isLollipop() && transitionViews != null && PreferencesUtility.getInstance(context).getAnimations()) { Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform); transaction.addSharedElement(transitionViews.first, transitionViews.second); fragment = AlbumDetailFragment.newInstance(albumID, true, transitionViews.second); fragment.setSharedElementEnterTransition(changeImage); } else { transaction.setCustomAnimations(R.anim.activity_fade_in, R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out); fragment = AlbumDetailFragment.newInstance(albumID, false, null); } transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container)); transaction.add(R.id.fragment_container, fragment); transaction.addToBackStack(null).commit(); } @TargetApi(21) public static void navigateToArtist(Activity context, long artistID, Pair<View, String> transitionViews) { FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); Fragment fragment; if (TimberUtils.isLollipop() && transitionViews != null && PreferencesUtility.getInstance(context).getAnimations()) { Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform); transaction.addSharedElement(transitionViews.first, transitionViews.second); fragment = ArtistDetailFragment.newInstance(artistID, true, transitionViews.second); fragment.setSharedElementEnterTransition(changeImage); } else { transaction.setCustomAnimations(R.anim.activity_fade_in, R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out); fragment = ArtistDetailFragment.newInstance(artistID, false, null); } transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container)); transaction.add(R.id.fragment_container, fragment); transaction.addToBackStack(null).commit(); } public static void goToArtist(Context context, long artistId) { Intent intent = new Intent(context, MainActivity.class); intent.setAction(Constants.NAVIGATE_ARTIST); intent.putExtra(Constants.ARTIST_ID, artistId); context.startActivity(intent); } public static void goToAlbum(Context context, long albumId) { Intent intent = new Intent(context, MainActivity.class); intent.setAction(Constants.NAVIGATE_ALBUM); intent.putExtra(Constants.ALBUM_ID, albumId); context.startActivity(intent); } public static void navigateToNowplaying(Activity context, boolean withAnimations) { final Intent intent = new Intent(context, NowPlayingActivity.class); if (!PreferencesUtility.getInstance(context).getSystemAnimations()) { intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); } context.startActivity(intent); } public static Intent getNowPlayingIntent(Context context) { final Intent intent = new Intent(context, MainActivity.class); intent.setAction(Constants.NAVIGATE_NOWPLAYING); return intent; } public static void navigateToSettings(Activity context) { final Intent intent = new Intent(context, SettingsActivity.class); if (!PreferencesUtility.getInstance(context).getSystemAnimations()) { intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); } intent.setAction(Constants.NAVIGATE_SETTINGS); context.startActivity(intent); } public static void navigateToSearch(Activity context) { final Intent intent = new Intent(context, SearchActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); intent.setAction(Constants.NAVIGATE_SEARCH); context.startActivity(intent); } @TargetApi(21) public static void navigateToPlaylistDetail(Activity context, String action, long firstAlbumID, String playlistName, int foregroundcolor, long playlistID, ArrayList<Pair> transitionViews) { final Intent intent = new Intent(context, PlaylistDetailActivity.class); if (!PreferencesUtility.getInstance(context).getSystemAnimations()) { intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); } intent.setAction(action); intent.putExtra(Constants.PLAYLIST_ID, playlistID); intent.putExtra(Constants.PLAYLIST_FOREGROUND_COLOR, foregroundcolor); intent.putExtra(Constants.ALBUM_ID, firstAlbumID); intent.putExtra(Constants.PLAYLIST_NAME, playlistName); intent.putExtra(Constants.ACTIVITY_TRANSITION, transitionViews != null); if (transitionViews != null && TimberUtils.isLollipop() && PreferencesUtility.getInstance(context).getAnimations()) { ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.getInstance(), transitionViews.get(0), transitionViews.get(1), transitionViews.get(2)); context.startActivityForResult(intent, Constants.ACTION_DELETE_PLAYLIST, options.toBundle()); } else { context.startActivityForResult(intent, Constants.ACTION_DELETE_PLAYLIST); } } public static void navigateToEqualizer(Activity context) { try { // The google MusicFX apps need to be started using startActivityForResult context.startActivityForResult(TimberUtils.createEffectsIntent(), 666); } catch (final ActivityNotFoundException notFound) { Toast.makeText(context, "Equalizer not found", Toast.LENGTH_SHORT).show(); } } public static Intent getNavigateToStyleSelectorIntent(Activity context, String what) { final Intent intent = new Intent(context, SettingsActivity.class); if (!PreferencesUtility.getInstance(context).getSystemAnimations()) { intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); } intent.setAction(Constants.SETTINGS_STYLE_SELECTOR); intent.putExtra(Constants.SETTINGS_STYLE_SELECTOR_WHAT, what); return intent; } public static Fragment getFragmentForNowplayingID(String fragmentID) { switch (fragmentID) { case Constants.TIMBER1: return new Timber1(); case Constants.TIMBER2: return new Timber2(); case Constants.TIMBER3: return new Timber3(); case Constants.TIMBER4: return new Timber4(); case Constants.TIMBER5: return new Timber5(); case Constants.TIMBER6: return new Timber6(); default: return new Timber1(); } } public static int getIntForCurrentNowplaying(String nowPlaying) { switch (nowPlaying) { case Constants.TIMBER1: return 0; case Constants.TIMBER2: return 1; case Constants.TIMBER3: return 2; case Constants.TIMBER4: return 3; case Constants.TIMBER5: return 4; case Constants.TIMBER6: return 5; default: return 2; } } }