RecyclerView

This commit is contained in:
Karim Abou Zeid 2015-03-12 21:18:30 +01:00
commit 02e15fa739
25 changed files with 305 additions and 430 deletions

View file

@ -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);

View file

@ -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<Song> {
private Context context;
private App app;
private SongAdapter.GoToAble goToAble;
private Activity activity;
public PlayingQueueAdapter(Context context, SongAdapter.GoToAble goToAble, List<Song> playList) {
super(context, R.layout.item_playlist, playList);
this.context = context;
app = (App) context.getApplicationContext();
this.goToAble = goToAble;
public PlayingQueueAdapter(Activity activity, List<Song> 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<Song> {
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;

View file

@ -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<Song> {
public static final String TAG = SongAdapter.class.getSimpleName();
protected Context context;
protected GoToAble goToAble;
protected Activity activity;
public SongAdapter(Context context, GoToAble goToAble, List<Song> objects) {
super(context, R.layout.item_song, objects);
this.context = context;
this.goToAble = goToAble;
public SongAdapter(Activity activity, List<Song> objects) {
super(activity, R.layout.item_song, objects);
this.activity = activity;
}
@Override
@ -50,31 +51,33 @@ public class SongAdapter extends ArrayAdapter<Song> {
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<Song> {
return convertView;
}
public static interface GoToAble {
public void goToAlbum(int albumId);
public void goToArtist(int artistId);
}
}

View file

@ -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<Song> objects) {
super(context, goToAble, objects);
public SongViewListAdapter(Activity activity, List<Song> 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;

View file

@ -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<Song> 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

View file

@ -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();
}

View file

@ -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<Song> 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);

View file

@ -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());
}
}

View file

@ -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<MainActivityFragment> pages; //TODO check if this must be static
private SparseArray<AbsMainActivityFragment> 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

View file

@ -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;
}

View file

@ -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;

View file

@ -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);
}
}
}
}

View file

@ -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) {

View file

@ -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);
}
}
}

View file

@ -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<Album> albums = ArtistAlbumLoader.getArtistAlbumList(getParentActivity(), getArtistId());
List<Album> 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);
}
}

View file

@ -25,10 +25,10 @@ public class ViewPagerTabArtistBioFragment extends AbsViewPagerTabArtistListFrag
protected ListAdapter getAdapter() {
final List<String> 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);
}
});

View file

@ -20,13 +20,9 @@ import java.util.List;
public class ViewPagerTabArtistSongListFragment extends AbsViewPagerTabArtistListFragment {
@Override
protected ListAdapter getAdapter() {
final List<Song> 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<Song> 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) {

View file

@ -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<Album> 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<Album> 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());
}
}

View file

@ -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<Artist> 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<Artist> artists = ArtistLoader.getArtists(getActivity(), query);
fillAbsListView(artists);
}
@Override
public void returnToNonSearch() {
setUpAbsListView();
absListView.setPadding(0, getTopPadding(), 0, getBottomPadding());
}
}

View file

@ -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<Song> 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<Song> songs = SongLoader.getSongs(getActivity(), query);
fillAbsListView(songs);
}
@Override
public void returnToNonSearch() {
setUpAbsListView();
absListView.setPadding(0, getTopPadding(), 0, getBottomPadding());
}
@Override

View file

@ -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;
}
}

View file

@ -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;
}
}