diff --git a/app/src/main/java/com/kabouzeid/gramophone/App.java b/app/src/main/java/com/kabouzeid/gramophone/App.java index 1436e105..12029193 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/App.java +++ b/app/src/main/java/com/kabouzeid/gramophone/App.java @@ -45,14 +45,6 @@ public class App extends Application { PreferenceManager.getDefaultSharedPreferences(this).edit().putInt(AppKeys.SP_THEME, appTheme).apply(); } - public boolean isTablet() { - return getResources().getConfiguration().smallestScreenWidthDp >= 600; - } - - public boolean isInPortraitMode() { - return getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; - } - public void addToVolleyRequestQueue(Request request) { request.setTag(TAG); getVolleyRequestQueue().add(request); diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlayingQueueAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlayingQueueAdapter.java index 46f27ac6..e12a0827 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlayingQueueAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlayingQueueAdapter.java @@ -1,5 +1,6 @@ package com.kabouzeid.gramophone.adapter; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; @@ -13,13 +14,13 @@ import android.widget.TextView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.SongDetailDialogHelper; import com.kabouzeid.gramophone.loader.SongFilePathLoader; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; +import com.kabouzeid.gramophone.util.NavigationUtil; import java.io.File; import java.util.List; @@ -28,22 +29,18 @@ import java.util.List; * Created by karim on 24.01.15. */ public class PlayingQueueAdapter extends ArrayAdapter { - private Context context; - private App app; - private SongAdapter.GoToAble goToAble; + private Activity activity; - public PlayingQueueAdapter(Context context, SongAdapter.GoToAble goToAble, List playList) { - super(context, R.layout.item_playlist, playList); - this.context = context; - app = (App) context.getApplicationContext(); - this.goToAble = goToAble; + public PlayingQueueAdapter(Activity activity, List playList) { + super(activity, R.layout.item_playlist, playList); + this.activity = activity; } @Override public View getView(int position, View convertView, ViewGroup parent) { final Song song = getItem(position); if (convertView == null) { - convertView = LayoutInflater.from(context).inflate(R.layout.item_playlist, parent, false); + convertView = LayoutInflater.from(activity).inflate(R.layout.item_playlist, parent, false); } final TextView title = (TextView) convertView.findViewById(R.id.song_title); final ImageView playingIndicator = (ImageView) convertView.findViewById(R.id.playing_indicator); @@ -61,31 +58,27 @@ public class PlayingQueueAdapter extends ArrayAdapter { overflowButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { - PopupMenu popupMenu = new PopupMenu(context, v); + PopupMenu popupMenu = new PopupMenu(activity, v); popupMenu.inflate(R.menu.menu_song); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_tag_editor: - Intent intent = new Intent(context, SongTagEditorActivity.class); + Intent intent = new Intent(activity, SongTagEditorActivity.class); intent.putExtra(AppKeys.E_ID, song.id); - context.startActivity(intent); + activity.startActivity(intent); return true; case R.id.action_details: - String songFilePath = SongFilePathLoader.getSongFilePath(context, song.id); + String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id); File songFile = new File(songFilePath); - SongDetailDialogHelper.getDialog(context, songFile).show(); + SongDetailDialogHelper.getDialog(activity, songFile).show(); return true; case R.id.action_go_to_album: - if (goToAble != null) { - goToAble.goToAlbum(song.albumId); - } + NavigationUtil.goToAlbum(activity, song.albumId, null); return true; case R.id.action_go_to_artist: - if (goToAble != null) { - goToAble.goToArtist(song.artistId); - } + NavigationUtil.goToAlbum(activity, song.artistId, null); return true; } return false; diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java index 8ab21310..b1c024b9 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongAdapter.java @@ -1,7 +1,8 @@ package com.kabouzeid.gramophone.adapter.songadapter; -import android.content.Context; +import android.app.Activity; import android.content.Intent; +import android.support.v4.util.Pair; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -16,8 +17,10 @@ import com.kabouzeid.gramophone.helper.SongDetailDialogHelper; import com.kabouzeid.gramophone.loader.SongFilePathLoader; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; import com.kabouzeid.gramophone.util.MusicUtil; +import com.kabouzeid.gramophone.util.NavigationUtil; import java.io.File; import java.util.List; @@ -27,13 +30,11 @@ import java.util.List; */ public class SongAdapter extends ArrayAdapter { public static final String TAG = SongAdapter.class.getSimpleName(); - protected Context context; - protected GoToAble goToAble; + protected Activity activity; - public SongAdapter(Context context, GoToAble goToAble, List objects) { - super(context, R.layout.item_song, objects); - this.context = context; - this.goToAble = goToAble; + public SongAdapter(Activity activity, List objects) { + super(activity, R.layout.item_song, objects); + this.activity = activity; } @Override @@ -50,31 +51,33 @@ public class SongAdapter extends ArrayAdapter { overflowButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { - PopupMenu popupMenu = new PopupMenu(context, v); + PopupMenu popupMenu = new PopupMenu(activity, v); popupMenu.inflate(R.menu.menu_song); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_tag_editor: - Intent intent = new Intent(context, SongTagEditorActivity.class); + Intent intent = new Intent(activity, SongTagEditorActivity.class); intent.putExtra(AppKeys.E_ID, song.id); - context.startActivity(intent); + activity.startActivity(intent); return true; case R.id.action_details: - String songFilePath = SongFilePathLoader.getSongFilePath(context, song.id); + String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id); File songFile = new File(songFilePath); - SongDetailDialogHelper.getDialog(context, songFile).show(); + SongDetailDialogHelper.getDialog(activity, songFile).show(); return true; case R.id.action_go_to_album: - if (goToAble != null) { - goToAble.goToAlbum(song.albumId); - } + Pair[] albumPairs = null; + if (activity instanceof AbsFabActivity) + albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs); + NavigationUtil.goToAlbum(activity, song.albumId, albumPairs); return true; case R.id.action_go_to_artist: - if (goToAble != null) { - goToAble.goToArtist(song.artistId); - } + Pair[] artistPairs = null; + if (activity instanceof AbsFabActivity) + artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs); + NavigationUtil.goToArtist(activity, song.artistId, artistPairs); return true; } return false; @@ -90,11 +93,4 @@ public class SongAdapter extends ArrayAdapter { return convertView; } - - public static interface GoToAble { - public void goToAlbum(int albumId); - - public void goToArtist(int artistId); - } - } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongViewListAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongViewListAdapter.java index 6eb4e9d2..d19b61f7 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongViewListAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/songadapter/SongViewListAdapter.java @@ -1,7 +1,8 @@ package com.kabouzeid.gramophone.adapter.songadapter; -import android.content.Context; +import android.app.Activity; import android.content.Intent; +import android.support.v4.util.Pair; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -15,8 +16,10 @@ import com.kabouzeid.gramophone.helper.SongDetailDialogHelper; import com.kabouzeid.gramophone.loader.SongFilePathLoader; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.Song; +import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; import com.kabouzeid.gramophone.util.MusicUtil; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.squareup.picasso.Picasso; import java.io.File; @@ -28,8 +31,8 @@ import java.util.List; public class SongViewListAdapter extends SongAdapter { public static final String TAG = SongViewListAdapter.class.getSimpleName(); - public SongViewListAdapter(Context context, SongAdapter.GoToAble goToAble, List objects) { - super(context, goToAble, objects); + public SongViewListAdapter(Activity activity, List objects) { + super(activity, objects); } @Override @@ -46,31 +49,33 @@ public class SongViewListAdapter extends SongAdapter { overflowButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { - PopupMenu popupMenu = new PopupMenu(context, v); + PopupMenu popupMenu = new PopupMenu(activity, v); popupMenu.inflate(R.menu.menu_song); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_tag_editor: - Intent intent = new Intent(context, SongTagEditorActivity.class); + Intent intent = new Intent(activity, SongTagEditorActivity.class); intent.putExtra(AppKeys.E_ID, song.id); - context.startActivity(intent); + activity.startActivity(intent); return true; case R.id.action_details: - String songFilePath = SongFilePathLoader.getSongFilePath(context, song.id); + String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id); File songFile = new File(songFilePath); - SongDetailDialogHelper.getDialog(context, songFile).show(); + SongDetailDialogHelper.getDialog(activity, songFile).show(); return true; case R.id.action_go_to_album: - if (goToAble != null) { - goToAble.goToAlbum(song.albumId); - } + Pair[] albumPairs = new Pair[]{Pair.create(albumArt, getContext().getResources().getString(R.string.transition_album_cover))}; + if (activity instanceof AbsFabActivity) + albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs); + NavigationUtil.goToAlbum(activity, song.albumId, albumPairs); return true; case R.id.action_go_to_artist: - if (goToAble != null) { - goToAble.goToArtist(song.artistId); - } + Pair[] artistPairs = null; + if (activity instanceof AbsFabActivity) + artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs); + NavigationUtil.goToArtist(activity, song.artistId, artistPairs); return true; } return false; diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingQueueDialogHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingQueueDialogHelper.java index 5612596f..8e916b1d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingQueueDialogHelper.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingQueueDialogHelper.java @@ -1,5 +1,6 @@ package com.kabouzeid.gramophone.helper; +import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.AdapterView; @@ -18,18 +19,17 @@ import java.util.List; * Created by karim on 24.01.15. */ public class PlayingQueueDialogHelper { - public static MaterialDialog getDialog(Context context, SongAdapter.GoToAble goToAble) { - final App app = (App) context.getApplicationContext(); + public static MaterialDialog getDialog(Activity activity) { List playingQueue = MusicPlayerRemote.getPlayingQueue(); if (playingQueue.isEmpty()) { return null; } - MaterialDialog dialog = new MaterialDialog.Builder(context) - .title(context.getResources().getString(R.string.label_current_playing_queue)) + MaterialDialog dialog = new MaterialDialog.Builder(activity) + .title(activity.getResources().getString(R.string.label_current_playing_queue)) .customView(R.layout.dialog_playlist, false) - .positiveText(context.getResources().getString(R.string.close)) - .negativeText(context.getResources().getString(R.string.save_as_playlist)) + .positiveText(activity.getResources().getString(R.string.close)) + .negativeText(activity.getResources().getString(R.string.save_as_playlist)) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { @@ -44,7 +44,7 @@ public class PlayingQueueDialogHelper { }) .build(); final DragSortListView dragSortListView = (DragSortListView) dialog.getCustomView().findViewById(R.id.dragSortListView); - final PlayingQueueAdapter playingQueueAdapter = new PlayingQueueAdapter(context, goToAble, playingQueue); + final PlayingQueueAdapter playingQueueAdapter = new PlayingQueueAdapter(activity, playingQueue); dragSortListView.setAdapter(playingQueueAdapter); dragSortListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/interfaces/KabSearchAbleFragment.java b/app/src/main/java/com/kabouzeid/gramophone/interfaces/KabSearchAbleFragment.java deleted file mode 100644 index 0fb54cbf..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/interfaces/KabSearchAbleFragment.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.kabouzeid.gramophone.interfaces; - -/** - * Created by karim on 29.12.14. - */ -public interface KabSearchAbleFragment { - public void search(String query); - - public void returnToNonSearch(); -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index c030263a..4fc72e08 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -33,6 +33,7 @@ import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.AlbumTagEditorActivity; import com.kabouzeid.gramophone.util.MusicUtil; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; import com.nineoldandroids.view.ViewHelper; @@ -154,13 +155,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab return TAG; } - @Override - public void goToAlbum(int albumId) { - if (album.id != albumId) { - goToAlbum(albumId); - } - } - private void initViews() { albumArtImageView = (ImageView) findViewById(R.id.album_art); toolbar = (Toolbar) findViewById(R.id.toolbar); @@ -232,7 +226,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab private void setListViewPadding() { setListViewPaddingTop(); - if (app.isInPortraitMode() || app.isTablet()) { + if (Util.isInPortraitMode(this) || Util.isTablet(this)) { setListViewPaddingBottom(); } } @@ -267,7 +261,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab private void setUpTranslucence() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Util.setStatusBarTranslucent(getWindow(), true); - if (app.isInPortraitMode() || app.isTablet()) { + if (Util.isInPortraitMode(this) || Util.isTablet(this)) { Util.setNavBarTranslucent(getWindow(), true); } } @@ -275,7 +269,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab private void setUpSongsAdapter() { final List songs = AlbumSongLoader.getAlbumSongList(this, album.id, new SongTrackNumberComparator()); - final SongAdapter songAdapter = new SongAdapter(this, this, songs); + final SongAdapter songAdapter = new SongAdapter(this, songs); absSongListView.setAdapter(songAdapter); absSongListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -318,14 +312,14 @@ public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisab case R.id.action_settings: return true; case R.id.action_current_playing: - return openCurrentPlayingIfPossible(null); + return NavigationUtil.openCurrentPlayingIfPossible(this, null); case R.id.action_tag_editor: Intent intent = new Intent(this, AlbumTagEditorActivity.class); intent.putExtra(AppKeys.E_ID, album.id); startActivity(intent); return true; case R.id.action_go_to_artist: - goToArtist(album.artistId, null); + NavigationUtil.goToArtist(this, album.artistId, null); return true; } return super.onOptionsItemSelected(item); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index 2c2f1322..bf8cd070 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -36,6 +36,7 @@ import com.kabouzeid.gramophone.ui.fragments.artistviewpager.AbsViewPagerTabArti import com.kabouzeid.gramophone.ui.fragments.artistviewpager.ViewPagerTabArtistAlbumFragment; import com.kabouzeid.gramophone.ui.fragments.artistviewpager.ViewPagerTabArtistBioFragment; import com.kabouzeid.gramophone.ui.fragments.artistviewpager.ViewPagerTabArtistSongListFragment; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; import com.nineoldandroids.animation.Animator; @@ -106,13 +107,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements KabViewsDisa return TAG; } - @Override - public void goToArtist(int artistId) { - if (artist.id != artistId) { - super.goToArtist(artistId); - } - } - private void initViews() { artistImageView = (ImageView) findViewById(R.id.artist_image); toolbar = (Toolbar) findViewById(R.id.toolbar); @@ -387,7 +381,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements KabViewsDisa case R.id.action_settings: return true; case R.id.action_current_playing: - openCurrentPlayingIfPossible(null); + NavigationUtil.openCurrentPlayingIfPossible(this, null); return true; } return super.onOptionsItemSelected(item); @@ -462,7 +456,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements KabViewsDisa case 2: return pages.get(position, new ViewPagerTabArtistBioFragment()); default: - return pages.get(position, new MainActivity.PlaceholderFragment()); + return pages.get(position, new MainActivity.PlaceholderFragmentAbs()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 6a5b7143..b9c7308a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; @@ -29,16 +28,16 @@ import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; -import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.ArtistViewFragment; -import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.MainActivityFragment; +import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.SongViewFragment; import com.kabouzeid.gramophone.util.MusicUtil; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PreferenceUtils; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; @@ -168,7 +167,7 @@ public class MainActivity extends AbsFabActivity try { super.enableViews(); toolbar.setEnabled(true); - ((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews(); + ((AbsMainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews(); } catch (NullPointerException e) { //Log.e(TAG, "wasn't able to enable the views", e); } @@ -178,7 +177,7 @@ public class MainActivity extends AbsFabActivity public void disableViews() { try { super.disableViews(); - ((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews(); + ((AbsMainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews(); } catch (NullPointerException e) { //Log.e(TAG, "wasn't able to disable the views", e); } @@ -195,7 +194,7 @@ public class MainActivity extends AbsFabActivity @Override public void onNavigationDrawerItemSelected(int position) { if (position == NavigationDrawerFragment.NAVIGATION_DRAWER_HEADER) { - openCurrentPlayingIfPossible(null); + NavigationUtil.openCurrentPlayingIfPossible(this, null); } else { if (viewPager != null) { viewPager.setCurrentItem(position, true); @@ -233,10 +232,10 @@ public class MainActivity extends AbsFabActivity AboutDeveloperDialogHelper.getDialog(this).show(); return true; case R.id.action_current_playing: - openCurrentPlayingIfPossible(null); + NavigationUtil.openCurrentPlayingIfPossible(this, null); return true; case R.id.action_playing_queue: - final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(this, this); + final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(this); if (materialDialog != null) { materialDialog.show(); } else { @@ -262,9 +261,9 @@ public class MainActivity extends AbsFabActivity super.onBackPressed(); } - public static class PlaceholderFragment extends MainActivityFragment { + public static class PlaceholderFragmentAbs extends AbsMainActivityFragment { - public PlaceholderFragment() { + public PlaceholderFragmentAbs() { } @Override @@ -276,16 +275,6 @@ public class MainActivity extends AbsFabActivity return rootView; } - @Override - public void search(String query) { - - } - - @Override - public void returnToNonSearch() { - - } - @Override public void enableViews() { @@ -306,7 +295,7 @@ public class MainActivity extends AbsFabActivity private String[] titles; - private SparseArray pages; //TODO check if this must be static + private SparseArray pages; //TODO check if this must be static private Context context; public MainActivityViewPagerAdapter(Activity activity) { @@ -336,7 +325,7 @@ public class MainActivity extends AbsFabActivity case 4: //TODO playlists } - return pages.get(position, new PlaceholderFragment()); + return pages.get(position, new PlaceholderFragmentAbs()); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java index a211a259..efb1c865 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java @@ -33,6 +33,7 @@ import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; import com.kabouzeid.gramophone.util.MusicUtil; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; import com.nineoldandroids.view.ViewPropertyAnimator; @@ -337,12 +338,6 @@ public class MusicControllerActivity extends AbsFabActivity { }).start(); } - @Override - protected boolean openCurrentPlayingIfPossible(Pair[] sharedViews) { - onBackPressed(); - return true; - } - @Override protected void updateControllerState() { super.updateControllerState(); @@ -394,7 +389,7 @@ public class MusicControllerActivity extends AbsFabActivity { super.onBackPressed(); return true; case R.id.action_playing_queue: - final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(this, this); + final MaterialDialog materialDialog = PlayingQueueDialogHelper.getDialog(this); if (materialDialog != null) { materialDialog.show(); } else { @@ -412,10 +407,10 @@ public class MusicControllerActivity extends AbsFabActivity { SongDetailDialogHelper.getDialog(this, songFile).show(); return true; case R.id.action_go_to_album: - goToAlbum(song.albumId, null); + NavigationUtil.goToAlbum(this, song.albumId, null); return true; case R.id.action_go_to_artist: - goToArtist(song.artistId, null); + NavigationUtil.goToAlbum(this, song.artistId, null); return true; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java index 39bc61df..722c4732 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java @@ -28,6 +28,7 @@ import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.SearchEntry; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.Util; import java.util.ArrayList; @@ -63,9 +64,21 @@ public class SearchActivity extends AbsBaseActivity { playList.add((Song) item); MusicPlayerRemote.openQueue(playList, 0, true); } else if (item instanceof Album) { - goToAlbum(((Album) item).id, new Pair[]{Pair.create(view.findViewById(R.id.image), getResources().getString(R.string.transition_album_cover))}); + NavigationUtil.goToAlbum(SearchActivity.this, + ((Album) item).id, + new Pair[]{ + Pair.create(view.findViewById(R.id.image), + getResources().getString(R.string.transition_album_cover) + ) + }); } else if (item instanceof Artist) { - goToArtist(((Artist) item).id, new Pair[]{Pair.create(view.findViewById(R.id.image), getResources().getString(R.string.transition_artist_image))}); + NavigationUtil.goToArtist(SearchActivity.this, + ((Artist) item).id, + new Pair[]{ + Pair.create(view.findViewById(R.id.image), + getResources().getString(R.string.transition_artist_image) + ) + }); } } } @@ -75,7 +88,7 @@ public class SearchActivity extends AbsBaseActivity { @Override public boolean onTouch(View v, MotionEvent event) { Util.hideSoftKeyboard(SearchActivity.this); - if(searchView != null){ + if (searchView != null) { searchView.clearFocus(); } return false; @@ -178,7 +191,7 @@ public class SearchActivity extends AbsBaseActivity { results.addAll(albums); albumLabel.setNumber(albums.size()); } - if(results.size() <= 3){ + if (results.size() <= 3) { results.clear(); results.add(new LabelEntry(getResources().getString(R.string.no_results).toUpperCase())); } @@ -187,7 +200,6 @@ public class SearchActivity extends AbsBaseActivity { } - public static class LabelEntry implements SearchEntry { String title; String label; @@ -197,8 +209,8 @@ public class SearchActivity extends AbsBaseActivity { this.title = label; } - public void setNumber(int number){ - if(number != -1) { + public void setNumber(int number) { + if (number != -1) { label = title + " (" + number + ")"; } else { label = title; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java index 11023a93..7bf0faf3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsBaseActivity.java @@ -1,30 +1,19 @@ package com.kabouzeid.gramophone.ui.activities.base; -import android.content.Intent; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; -import android.support.v4.util.Pair; import android.support.v7.app.ActionBarActivity; -import android.widget.Toast; import com.crashlytics.android.Crashlytics; import com.kabouzeid.gramophone.App; -import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter; -import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.misc.AppKeys; -import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity; -import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity; -import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity; import com.kabouzeid.gramophone.util.Util; /** * Created by karim on 20.01.15. */ -public abstract class AbsBaseActivity extends ActionBarActivity implements KabViewsDisableAble, SongAdapter.GoToAble { +public abstract class AbsBaseActivity extends ActionBarActivity implements KabViewsDisableAble { private App app; private boolean areViewsEnabled; @@ -68,72 +57,9 @@ public abstract class AbsBaseActivity extends ActionBarActivity implements KabVi protected void setUpTranslucence(boolean statusBarTranslucent, boolean navigationBarTranslucent) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Util.setStatusBarTranslucent(getWindow(), statusBarTranslucent); - if (getApp().isInPortraitMode() || getApp().isTablet()) { + if (Util.isInPortraitMode(this) || Util.isTablet(this)) { Util.setNavBarTranslucent(getWindow(), navigationBarTranslucent); } } } - - protected boolean openCurrentPlayingIfPossible(Pair[] sharedViews) { - if (MusicPlayerRemote.getPosition() != -1) { - if (areViewsEnabled()) { - disableViews(); - Intent intent = new Intent(this, MusicControllerActivity.class); - if (sharedViews != null) { - ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, - sharedViews - ); - ActivityCompat.startActivity(this, intent, optionsCompat.toBundle()); - } else { - startActivity(intent); - } - return true; - } - } else { - Toast.makeText(this, getResources().getString(R.string.nothing_playing), Toast.LENGTH_SHORT).show(); - } - return false; - } - - @Override - public void goToAlbum(int albumId) { - goToAlbum(albumId, null); - } - - @Override - public void goToArtist(int artistId) { - goToArtist(artistId, null); - } - - public void goToArtist(int artistId, Pair[] sharedViews) { - if(areViewsEnabled()) { - disableViews(); - final Intent intent = new Intent(this, ArtistDetailActivity.class); - intent.putExtra(AppKeys.E_ARTIST, artistId); - if (sharedViews != null) { - ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, - sharedViews - ); - ActivityCompat.startActivity(this, intent, optionsCompat.toBundle()); - } else { - startActivity(intent); - } - } - } - - public void goToAlbum(int albumId, Pair[] sharedViews) { - if(areViewsEnabled()) { - disableViews(); - final Intent intent = new Intent(this, AlbumDetailActivity.class); - intent.putExtra(AppKeys.E_ALBUM, albumId); - if (sharedViews != null) { - ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, - sharedViews - ); - ActivityCompat.startActivity(this, intent, optionsCompat.toBundle()); - } else { - startActivity(intent); - } - } - } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java index c9e0e974..ddfb2b8d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java @@ -13,6 +13,7 @@ import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.misc.SmallOnGestureListener; import com.kabouzeid.gramophone.model.MusicRemoteEvent; +import com.kabouzeid.gramophone.util.NavigationUtil; import com.melnykov.fab.FloatingActionButton; import com.squareup.otto.Subscribe; @@ -41,7 +42,7 @@ public abstract class AbsFabActivity extends AbsBaseActivity { final GestureDetector gestureDetector = new GestureDetector(this, new SmallOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - openCurrentPlayingIfPossible(null); + NavigationUtil.openCurrentPlayingIfPossible(AbsFabActivity.this, getSharedViewsWithFab(null)); return true; } }); @@ -115,22 +116,7 @@ public abstract class AbsFabActivity extends AbsBaseActivity { getFab().setEnabled(false); } - @Override - protected boolean openCurrentPlayingIfPossible(Pair[] sharedViews) { - return super.openCurrentPlayingIfPossible(getSharedViewsWithFab(sharedViews)); - } - - @Override - public void goToArtist(int artistId, Pair[] sharedViews) { - super.goToArtist(artistId, getSharedViewsWithFab(sharedViews)); - } - - @Override - public void goToAlbum(int albumId, Pair[] sharedViews) { - super.goToAlbum(albumId, getSharedViewsWithFab(sharedViews)); - } - - private Pair[] getSharedViewsWithFab(Pair[] sharedViews) { + public Pair[] getSharedViewsWithFab(Pair[] sharedViews) { Pair[] sharedViewsWithFab; if (sharedViews != null) { sharedViewsWithFab = new Pair[sharedViews.length + 1]; @@ -150,8 +136,8 @@ public abstract class AbsFabActivity extends AbsBaseActivity { @Override protected void onDestroy() { - App.bus.unregister(busEventListener); super.onDestroy(); + App.bus.unregister(busEventListener); } public void onMusicRemoteEvent(MusicRemoteEvent event) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/AbsViewPagerTabArtistListFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/AbsViewPagerTabArtistListFragment.java index 539a965d..aebcd387 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/AbsViewPagerTabArtistListFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/AbsViewPagerTabArtistListFragment.java @@ -22,7 +22,6 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme public static final String TAG = AbsViewPagerTabArtistListFragment.class.getSimpleName(); protected App app; private ObservableGridView observableGridView; - private Activity parentActivity; private int artistId = -1; private String artistName = ""; private int paddingViewHeight; @@ -31,7 +30,6 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { app = (App) getActivity().getApplicationContext(); - parentActivity = getActivity(); getArgs(); View view = inflater.inflate(R.layout.fragment_gridview, container, false); @@ -53,7 +51,7 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme paddingViewHeight = artistImageViewHeight + titleViewHeight + tabHeight; - if (app.isInPortraitMode() || app.isTablet()) { + if (Util.isInPortraitMode(getActivity()) || Util.isTablet(getActivity())) { observableGridView.setPadding(0, paddingViewHeight, 0, Util.getNavigationBarHeight(getActivity())); } else { observableGridView.setPadding(0, paddingViewHeight, 0, 0); @@ -118,10 +116,6 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme return artistName; } - public Activity getParentActivity() { - return parentActivity; - } - protected void setOnItemClickListener(AdapterView.OnItemClickListener onItemClickListener) { observableGridView.setOnItemClickListener(onItemClickListener); } @@ -132,9 +126,9 @@ public abstract class AbsViewPagerTabArtistListFragment extends Fragment impleme @Override public void onScrollChanged(int scrollY, boolean b, boolean b2) { - if (parentActivity instanceof ObservableScrollViewCallbacks) { + if (getActivity() instanceof ObservableScrollViewCallbacks) { if (getUserVisibleHint()) { - ((ObservableScrollViewCallbacks) parentActivity).onScrollChanged(scrollY + paddingViewHeight, b, b2); + ((ObservableScrollViewCallbacks) getActivity()).onScrollChanged(scrollY + paddingViewHeight, b, b2); } } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java index 42eddc8b..169e0546 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistAlbumFragment.java @@ -10,7 +10,7 @@ import android.widget.AdapterView; import android.widget.ListAdapter; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.AlbumViewGridAdapter; +import com.kabouzeid.gramophone.adapter.AlbumAdapter; import com.kabouzeid.gramophone.comparator.AlbumAlphabeticComparator; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.loader.ArtistAlbumLoader; @@ -30,9 +30,9 @@ public class ViewPagerTabArtistAlbumFragment extends AbsViewPagerTabArtistListFr @Override protected ListAdapter getAdapter() { - List albums = ArtistAlbumLoader.getArtistAlbumList(getParentActivity(), getArtistId()); + List albums = ArtistAlbumLoader.getArtistAlbumList(getActivity(), getArtistId()); Collections.sort(albums, new AlbumAlphabeticComparator()); - ListAdapter adapter = new AlbumViewGridAdapter(getParentActivity(), albums); + //ListAdapter adapter = new AlbumAdapter(getActivity(), albums); setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -43,7 +43,8 @@ public class ViewPagerTabArtistAlbumFragment extends AbsViewPagerTabArtistListFr } }); setColumns(getResources().getInteger(R.integer.grid_columns)); - return adapter; + //return adapter; + return null; } @SuppressWarnings("unchecked") @@ -69,18 +70,18 @@ public class ViewPagerTabArtistAlbumFragment extends AbsViewPagerTabArtistListFr } private void disableParentActivitiesViews() { - if (getParentActivity() instanceof KabViewsDisableAble) { - ((KabViewsDisableAble) getParentActivity()).disableViews(); + if (getActivity() instanceof KabViewsDisableAble) { + ((KabViewsDisableAble) getActivity()).disableViews(); } } private boolean areParentActivitiesViewsEnabled() { - return !(getParentActivity() instanceof KabViewsDisableAble) || ((KabViewsDisableAble) getParentActivity()).areViewsEnabled(); + return !(getActivity() instanceof KabViewsDisableAble) || ((KabViewsDisableAble) getActivity()).areViewsEnabled(); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - fab = (FloatingActionButton) getParentActivity().findViewById(R.id.fab); + fab = (FloatingActionButton) getActivity().findViewById(R.id.fab); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistBioFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistBioFragment.java index 079c3152..048e0867 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistBioFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistBioFragment.java @@ -25,10 +25,10 @@ public class ViewPagerTabArtistBioFragment extends AbsViewPagerTabArtistListFrag protected ListAdapter getAdapter() { final List strings = new ArrayList<>(); strings.add("loading"); - ListAdapter adapter = new SimpleTextAdapter(getParentActivity(), strings); + ListAdapter adapter = new SimpleTextAdapter(getActivity(), strings); setAdapter(adapter); - LastFMArtistBiographyLoader.loadArtistBio(getParentActivity(), getArtistName(), new LastFMArtistBiographyLoader.ArtistBioLoaderCallback() { + LastFMArtistBiographyLoader.loadArtistBio(getActivity(), getArtistName(), new LastFMArtistBiographyLoader.ArtistBioLoaderCallback() { @Override public void onArtistBioLoaded(String biography) { if (biography == null || biography.trim().equals("")) { @@ -41,7 +41,7 @@ public class ViewPagerTabArtistBioFragment extends AbsViewPagerTabArtistListFrag } strings.clear(); strings.add(biography); - ListAdapter adapter = new SimpleTextAdapter(getParentActivity(), strings); + ListAdapter adapter = new SimpleTextAdapter(getActivity(), strings); setAdapter(adapter); } }); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistSongListFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistSongListFragment.java index c3c754a9..571914c3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistSongListFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/artistviewpager/ViewPagerTabArtistSongListFragment.java @@ -20,13 +20,9 @@ import java.util.List; public class ViewPagerTabArtistSongListFragment extends AbsViewPagerTabArtistListFragment { @Override protected ListAdapter getAdapter() { - final List songs = ArtistSongLoader.getArtistSongList(getParentActivity(), getArtistId()); - Collections.sort(songs, new SongAlphabeticComparator()); - AbsBaseActivity absBaseActivity = null; - if (getParentActivity() instanceof AbsBaseActivity) { - absBaseActivity = (AbsBaseActivity) getParentActivity(); - } - ListAdapter adapter = new SongAdapter(getParentActivity(), absBaseActivity, songs); + final List songs = ArtistSongLoader.getArtistSongList(getActivity(), getArtistId()); + + ListAdapter adapter = new SongAdapter(getActivity(), songs); setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java index fec26a5a..caa96e97 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AlbumViewFragment.java @@ -1,31 +1,28 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments; import android.os.Bundle; -import android.support.v4.util.Pair; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.AbsListView; -import android.widget.AdapterView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.AlbumViewGridAdapter; -import com.kabouzeid.gramophone.comparator.AlbumAlphabeticComparator; +import com.kabouzeid.gramophone.adapter.AlbumAdapter; import com.kabouzeid.gramophone.loader.AlbumLoader; import com.kabouzeid.gramophone.model.Album; -import java.util.Collections; import java.util.List; /** * Created by karim on 22.11.14. */ -public class AlbumViewFragment extends MainActivityFragment { +public class AlbumViewFragment extends AbsMainActivityFragment { public static final String TAG = AlbumViewFragment.class.getSimpleName(); private App app; - private AbsListView absListView; + private RecyclerView recyclerView; private View fragmentRootView; @Override @@ -52,17 +49,17 @@ public class AlbumViewFragment extends MainActivityFragment { @Override public void enableViews() { super.enableViews(); - absListView.setEnabled(true); + recyclerView.setEnabled(true); } @Override public void disableViews() { super.disableViews(); - absListView.setEnabled(false); + recyclerView.setEnabled(false); } private void initViews() { - absListView = (AbsListView) fragmentRootView.findViewById(R.id.absList); + recyclerView = (RecyclerView) fragmentRootView.findViewById(R.id.absList); } private void setUpViews() { @@ -75,40 +72,9 @@ public class AlbumViewFragment extends MainActivityFragment { } private void fillAbsListView(List albums) { - //Collections.sort(albums, new AlbumAlphabeticComparator()); - AlbumViewGridAdapter albumViewGridAdapter = new AlbumViewGridAdapter(getActivity(), albums); - absListView.setAdapter(albumViewGridAdapter); - absListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Album album = (Album) parent.getItemAtPosition(position); - View albumArtView = view.findViewById(R.id.album_art); - - openAlbumDetailsActivity(album, albumArtView); - } - }); - - absListView.setPadding(0, getTopPadding(app), 0, getBottomPadding(app)); - } - - private void openAlbumDetailsActivity(Album album, View albumArtForTransition) { - getMainActivity().goToAlbum(album.id, new Pair[]{ - Pair.create(albumArtForTransition, getString(R.string.transition_album_cover)) - }); - } - - @Override - public void search(String query) { - setUpAbsListView(query); - } - - private void setUpAbsListView(String query) { - List albums = AlbumLoader.getAlbums(getActivity(), query); - fillAbsListView(albums); - } - - @Override - public void returnToNonSearch() { - setUpAbsListView(); + AlbumAdapter albumAdapter = new AlbumAdapter(getActivity(), albums); + recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2)); + recyclerView.setAdapter(albumAdapter); + recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java index d4e6a557..f899e0a4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/ArtistViewFragment.java @@ -2,7 +2,6 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments; import android.app.Fragment; -import android.content.Intent; import android.os.Bundle; import android.support.v4.util.Pair; import android.view.LayoutInflater; @@ -14,32 +13,20 @@ import android.widget.AdapterView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.ArtistViewListAdapter; -import com.kabouzeid.gramophone.comparator.ArtistAlphabeticComparator; import com.kabouzeid.gramophone.loader.ArtistLoader; -import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.Artist; -import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity; -import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity; +import com.kabouzeid.gramophone.util.NavigationUtil; -import java.util.Collections; import java.util.List; /** * A simple {@link Fragment} subclass. */ -public class ArtistViewFragment extends MainActivityFragment { +public class ArtistViewFragment extends AbsMainActivityFragment { public static final String TAG = ArtistViewFragment.class.getSimpleName(); - private App app; private AbsListView absListView; private View fragmentRootView; - private boolean areViewsEnabled; - - @Override - public void onCreate(Bundle savedInstanceState) { - app = (App) getActivity().getApplicationContext(); - super.onCreate(savedInstanceState); - } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -82,7 +69,6 @@ public class ArtistViewFragment extends MainActivityFragment { } private void fillAbsListView(List artists) { - //Collections.sort(artists, new ArtistAlphabeticComparator()); ArtistViewListAdapter artistAdapter = new ArtistViewListAdapter(getActivity(), artists); absListView.setAdapter(artistAdapter); absListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @@ -91,34 +77,10 @@ public class ArtistViewFragment extends MainActivityFragment { final Artist artist = (Artist) parent.getItemAtPosition(position); final View artistImageView = view.findViewById(R.id.artist_image); - if (getActivity() instanceof AbsFabActivity) { - AbsFabActivity absFabActivity = (AbsFabActivity) getActivity(); - Pair[] sharedElements = {Pair.create(artistImageView, getString(R.string.transition_artist_image))}; - absFabActivity.goToArtist(artist.id, sharedElements); - } else { - Intent intent = new Intent(getActivity(), ArtistDetailActivity.class); - intent.putExtra(AppKeys.E_ARTIST, artist.id); - startActivity(intent); - } + Pair[] sharedElements = {Pair.create(artistImageView, getString(R.string.transition_artist_image))}; + NavigationUtil.goToArtist(getActivity(), artist.id, sharedElements); } }); - - absListView.setPadding(0, getTopPadding(app), 0, getBottomPadding(app)); - - } - - @Override - public void search(String query) { - setUpAbsListView(query); - } - - private void setUpAbsListView(String query) { - List artists = ArtistLoader.getArtists(getActivity(), query); - fillAbsListView(artists); - } - - @Override - public void returnToNonSearch() { - setUpAbsListView(); + absListView.setPadding(0, getTopPadding(), 0, getBottomPadding()); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java index e28729a3..5352cd8d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/SongViewFragment.java @@ -11,31 +11,22 @@ import android.widget.AdapterView; import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.songadapter.SongViewListAdapter; -import com.kabouzeid.gramophone.comparator.SongAlphabeticComparator; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; -import java.util.Collections; import java.util.List; /** * Created by karim on 29.12.14. */ -public class SongViewFragment extends MainActivityFragment { +public class SongViewFragment extends AbsMainActivityFragment { public static final String TAG = SongViewFragment.class.getSimpleName(); - private App app; private AbsListView absListView; private View fragmentRootView; - @Override - public void onCreate(Bundle savedInstanceState) { - app = (App) getActivity().getApplicationContext(); - super.onCreate(savedInstanceState); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -64,12 +55,7 @@ public class SongViewFragment extends MainActivityFragment { } private void fillAbsListView(final List songs) { - //Collections.sort(songs, new SongAlphabeticComparator()); - AbsBaseActivity absBaseActivity = null; - if (getActivity() instanceof AbsBaseActivity) { - absBaseActivity = (AbsBaseActivity) getActivity(); - } - SongViewListAdapter songAdapter = new SongViewListAdapter(getActivity(), absBaseActivity, songs); + SongViewListAdapter songAdapter = new SongViewListAdapter(getActivity(), songs); absListView.setAdapter(songAdapter); absListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override @@ -78,22 +64,7 @@ public class SongViewFragment extends MainActivityFragment { } }); - absListView.setPadding(0, getTopPadding(app), 0, getBottomPadding(app)); - } - - @Override - public void search(String query) { - setUpAbsListView(query); - } - - private void setUpAbsListView(String query) { - List songs = SongLoader.getSongs(getActivity(), query); - fillAbsListView(songs); - } - - @Override - public void returnToNonSearch() { - setUpAbsListView(); + absListView.setPadding(0, getTopPadding(), 0, getBottomPadding()); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java new file mode 100644 index 00000000..f5fb4d4b --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java @@ -0,0 +1,86 @@ +package com.kabouzeid.gramophone.util; + +import android.app.Activity; +import android.content.Intent; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.ActivityOptionsCompat; +import android.support.v4.util.Pair; +import android.widget.Toast; + +import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.helper.MusicPlayerRemote; +import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; +import com.kabouzeid.gramophone.misc.AppKeys; +import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity; +import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity; +import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity; + +/** + * Created by karim on 12.03.15. + */ +public class NavigationUtil { + public static void goToArtist(final Activity activity, final int artistId, final Pair[] sharedViews) { + if(activity instanceof ArtistDetailActivity){ + return; + } + if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) { + if (activity instanceof KabViewsDisableAble) + ((KabViewsDisableAble) activity).disableViews(); + final Intent intent = new Intent(activity, ArtistDetailActivity.class); + intent.putExtra(AppKeys.E_ARTIST, artistId); + if (sharedViews != null) { + ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, + sharedViews + ); + ActivityCompat.startActivity(activity, intent, optionsCompat.toBundle()); + } else { + activity.startActivity(intent); + } + } + } + + public static void goToAlbum(final Activity activity, final int albumId, final Pair[] sharedViews) { + if(activity instanceof AlbumDetailActivity){ + return; + } + if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) { + if (activity instanceof KabViewsDisableAble) + ((KabViewsDisableAble) activity).disableViews(); + final Intent intent = new Intent(activity, AlbumDetailActivity.class); + intent.putExtra(AppKeys.E_ALBUM, albumId); + if (sharedViews != null) { + ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, + sharedViews + ); + ActivityCompat.startActivity(activity, intent, optionsCompat.toBundle()); + } else { + activity.startActivity(intent); + } + } + } + + public static boolean openCurrentPlayingIfPossible(final Activity activity, final Pair[] sharedViews) { + if (activity instanceof MusicControllerActivity){ + return true; + } + if (MusicPlayerRemote.getPosition() != -1) { + if ((activity instanceof KabViewsDisableAble && ((KabViewsDisableAble) activity).areViewsEnabled()) || !(activity instanceof KabViewsDisableAble)) { + if (activity instanceof KabViewsDisableAble) + ((KabViewsDisableAble) activity).disableViews(); + Intent intent = new Intent(activity, MusicControllerActivity.class); + if (sharedViews != null) { + ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, + sharedViews + ); + ActivityCompat.startActivity(activity, intent, optionsCompat.toBundle()); + } else { + activity.startActivity(intent); + } + return true; + } + } else { + Toast.makeText(activity, activity.getResources().getString(R.string.nothing_playing), Toast.LENGTH_SHORT).show(); + } + return false; + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java index 4fe099ac..f9f37792 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java @@ -3,6 +3,8 @@ package com.kabouzeid.gramophone.util; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; import android.content.res.TypedArray; import android.database.Cursor; import android.graphics.Bitmap; @@ -11,13 +13,22 @@ import android.net.NetworkInfo; import android.net.Uri; import android.os.Build; import android.provider.MediaStore; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.ActivityOptionsCompat; +import android.support.v4.util.Pair; import android.util.TypedValue; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; +import android.widget.Toast; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.helper.MusicPlayerRemote; +import com.kabouzeid.gramophone.misc.AppKeys; +import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity; +import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity; +import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity; /** * Created by karim on 12.12.14. @@ -187,4 +198,12 @@ public class Util { public static boolean hasKitKatSDK() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; } + + public static boolean isTablet(final Context context) { + return context.getResources().getConfiguration().smallestScreenWidthDp >= 600; + } + + public static boolean isInPortraitMode(final Context context) { + return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; + } } diff --git a/app/src/main/res/layout/album_tile.xml b/app/src/main/res/layout/album_tile.xml index b2694d15..31fb73bc 100644 --- a/app/src/main/res/layout/album_tile.xml +++ b/app/src/main/res/layout/album_tile.xml @@ -1,51 +1,62 @@ - - - + xmlns:tools="http://schemas.android.com/tools"> + android:padding="4dp"> - + - + android:background="@color/materialmusic_default_bar_color" + android:orientation="vertical" + android:padding="16dp" + android:transitionName="@string/transition_album_text"> + + + + + + - \ No newline at end of file + + diff --git a/app/src/main/res/layout/fragment_albumview.xml b/app/src/main/res/layout/fragment_albumview.xml index bf3b8239..23ba0ba6 100644 --- a/app/src/main/res/layout/fragment_albumview.xml +++ b/app/src/main/res/layout/fragment_albumview.xml @@ -6,13 +6,11 @@ android:layout_height="match_parent" android:padding="2dp"> - diff --git a/app/src/main/res/layout/fragment_artist_view.xml b/app/src/main/res/layout/fragment_artist_view.xml index b5990968..96c0eab7 100644 --- a/app/src/main/res/layout/fragment_artist_view.xml +++ b/app/src/main/res/layout/fragment_artist_view.xml @@ -12,6 +12,5 @@ android:dividerHeight="0px" android:divider="@null" android:listSelector="?rect_selector" - android:numColumns="@integer/grid_columns" android:scrollbars="vertical"/>