package io.hefuyi.listener.util;
import android.annotation.TargetApi;
import android.app.Activity;
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 io.hefuyi.listener.Constants;
import io.hefuyi.listener.R;
import io.hefuyi.listener.ui.activity.MainActivity;
import io.hefuyi.listener.ui.activity.SettingActivity;
import io.hefuyi.listener.ui.fragment.AlbumDetailFragment;
import io.hefuyi.listener.ui.fragment.ArtistDetailFragment;
import io.hefuyi.listener.ui.fragment.FolderSongsFragment;
import io.hefuyi.listener.ui.fragment.PlaylistDetailFragment;
import static io.hefuyi.listener.util.ListenerUtil.isLollipop;
/**
* Created by hefuyi on 2016/11/6.
*/
public class NavigationUtil {
@TargetApi(21)
public static void navigateToAlbum(Activity context, long albumID, String albumName, Pair<View, String> transitionViews) {
FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
Fragment fragment;
if (isLollipop() && transitionViews != null) {
Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform);
transaction.addSharedElement(transitionViews.first, transitionViews.second);
fragment = AlbumDetailFragment.newInstance(albumID, albumName, true, transitionViews.second);
fragment.setSharedElementEnterTransition(changeImage);
fragment.setSharedElementReturnTransition(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, albumName, 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, String name, Pair<View, String> transitionViews) {
FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
Fragment fragment;
if (ListenerUtil.isLollipop() && transitionViews != null) {
Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform);
transaction.addSharedElement(transitionViews.first, transitionViews.second);
fragment = ArtistDetailFragment.newInstance(artistID, name, true, transitionViews.second);
fragment.setSharedElementEnterTransition(changeImage);
fragment.setSharedElementReturnTransition(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, name, 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, String artistName) {
Intent intent = new Intent(context, MainActivity.class);
intent.setAction(Constants.NAVIGATE_ARTIST);
intent.putExtra(Constants.ARTIST_ID, artistId);
intent.putExtra(Constants.ARTIST_NAME, artistName);
context.startActivity(intent);
}
public static void goToAlbum(Context context, long albumId, String albumName) {
Intent intent = new Intent(context, MainActivity.class);
intent.setAction(Constants.NAVIGATE_ALBUM);
intent.putExtra(Constants.ALBUM_ID, albumId);
intent.putExtra(Constants.ALBUM_NAME, albumName);
context.startActivity(intent);
}
public static Intent getNowPlayingIntent(Context context) {
Intent intent = new Intent(context, MainActivity.class);
intent.setAction(Constants.NAVIGATE_LIBRARY);
return intent;
}
public static void navigateToSettings(Activity context) {
final Intent intent = new Intent(context, SettingActivity.class);
context.startActivity(intent);
}
@TargetApi(21)
public static void navigateToPlaylistDetail(Activity context, long playlistID, String playlistName, long firstAlbumID, Pair<View, String> transitionViews) {
FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
Fragment fragment;
if (isLollipop() && transitionViews != null) {
Transition changeImage = TransitionInflater.from(context).inflateTransition(R.transition.image_transform);
transaction.addSharedElement(transitionViews.first, transitionViews.second);
fragment = PlaylistDetailFragment.newInstance(playlistID, playlistName, firstAlbumID, true, transitionViews.second);
fragment.setSharedElementEnterTransition(changeImage);
fragment.setSharedElementReturnTransition(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 = PlaylistDetailFragment.newInstance(playlistID, playlistName, firstAlbumID, false, transitionViews.second);
}
transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container));
transaction.add(R.id.fragment_container, fragment);
transaction.addToBackStack(null).commit();
}
public static void navigateToFolderSongs(Activity context, String path) {
FragmentTransaction transaction = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction();
Fragment fragment = FolderSongsFragment.newInstance(path);
transaction.setCustomAnimations(R.anim.activity_fade_in,
R.anim.activity_fade_out, R.anim.activity_fade_in, R.anim.activity_fade_out);
transaction.hide(((AppCompatActivity) context).getSupportFragmentManager().findFragmentById(R.id.fragment_container));
transaction.add(R.id.fragment_container, fragment);
transaction.addToBackStack(null).commit();
}
public static void navigateToEqualizer(Activity context) {
try {
// The google MusicFX apps need to be started using startActivityForResult
context.startActivityForResult(ListenerUtil.createEffectsIntent(), 666);
} catch (final ActivityNotFoundException notFound) {
Toast.makeText(context, "Equalizer not found", Toast.LENGTH_SHORT).show();
}
}
}