Clean ups and refactoring.
This commit is contained in:
parent
9eb147625c
commit
73d613d11d
32 changed files with 239 additions and 295 deletions
|
|
@ -81,6 +81,8 @@ android {
|
|||
versionNameSuffix ' DEBUG'
|
||||
manifestPlaceholders = [appName: "Phonograph DEBUG"]
|
||||
|
||||
ext.enableCrashlytics = false // Disable fabric build ID generation for debug builds
|
||||
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.kabouzeid.gramophone;
|
|||
import android.app.Application;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.crashlytics.android.core.CrashlyticsCore;
|
||||
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
||||
|
|
@ -18,6 +19,10 @@ public class App extends Application {
|
|||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
if (!BuildConfig.DEBUG) Fabric.with(this, new Crashlytics());
|
||||
// Set up Crashlytics, disabled for debug builds
|
||||
Crashlytics crashlyticsKit = new Crashlytics.Builder()
|
||||
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
|
||||
.build();
|
||||
Fabric.with(this, crashlyticsKit);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@ import android.util.SparseArray;
|
|||
import android.view.ViewGroup;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.ui.fragments.libraryfragments.AlbumsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.libraryfragments.ArtistsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.libraryfragments.PlaylistsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.libraryfragments.SongsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.AlbumsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.ArtistsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.PlaylistsFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.SongsFragment;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
|
|
|
|||
|
|
@ -30,8 +30,9 @@ public class PlayingQueueAdapter extends SongAdapter implements DraggableItemAda
|
|||
|
||||
private int current;
|
||||
|
||||
public PlayingQueueAdapter(AppCompatActivity activity, ArrayList<Song> dataSet, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
||||
public PlayingQueueAdapter(AppCompatActivity activity, ArrayList<Song> dataSet, int current, @LayoutRes int itemLayoutRes, boolean usePalette, @Nullable CabHolder cabHolder) {
|
||||
super(activity, dataSet, itemLayoutRes, usePalette, cabHolder);
|
||||
this.current = current;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ import java.util.ArrayList;
|
|||
import java.util.Random;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -33,6 +35,7 @@ public class MusicPlayerRemote {
|
|||
|
||||
private static final WeakHashMap<Context, ServiceBinder> mConnectionMap = new WeakHashMap<>();
|
||||
|
||||
@DebugLog
|
||||
public static ServiceToken bindToService(@NonNull final Context context,
|
||||
final ServiceConnection callback) {
|
||||
Activity realActivity = ((Activity) context).getParent();
|
||||
|
|
@ -52,6 +55,7 @@ public class MusicPlayerRemote {
|
|||
return null;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
public static void unbindFromService(@Nullable final ServiceToken token) {
|
||||
if (token == null) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -4,10 +4,14 @@ package com.kabouzeid.gramophone.interfaces;
|
|||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public interface MusicServiceEventListener {
|
||||
void onPlayingMetaChanged();
|
||||
void onServiceConnected();
|
||||
|
||||
void onServiceDisconnected();
|
||||
|
||||
void onQueueChanged();
|
||||
|
||||
void onPlayingMetaChanged();
|
||||
|
||||
void onPlayStateChanged();
|
||||
|
||||
void onRepeatModeChanged();
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* This cursor basically wraps a song cursor and is given a list of the order of the ids of the
|
||||
* contents of the cursor. It wraps the Cursor and simulates the internal cursor being sorted
|
||||
|
|
@ -46,7 +44,6 @@ public class SortedCursor extends AbstractCursor {
|
|||
* @param order the list of unique ids in sorted order to display
|
||||
* @param columnName the column name of the id to look up in the internal cursor
|
||||
*/
|
||||
@DebugLog
|
||||
public SortedCursor(@NonNull final Cursor cursor, @Nullable final String[] order, final String columnName) {
|
||||
mCursor = cursor;
|
||||
mMissingValues = buildCursorPositionMapping(order, columnName);
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ package com.kabouzeid.gramophone.misc;
|
|||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* <a href="http://code.google.com/p/android/issues/detail?id=14944">Issue
|
||||
* 14944</a>
|
||||
|
|
@ -28,7 +26,6 @@ public abstract class WrappedAsyncTaskLoader<D> extends AsyncTaskLoader<D> {
|
|||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@DebugLog
|
||||
@Override
|
||||
public void deliverResult(D data) {
|
||||
if (!isReset()) {
|
||||
|
|
@ -42,7 +39,6 @@ public abstract class WrappedAsyncTaskLoader<D> extends AsyncTaskLoader<D> {
|
|||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@DebugLog
|
||||
@Override
|
||||
protected void onStartLoading() {
|
||||
if (this.mData != null) {
|
||||
|
|
@ -55,7 +51,6 @@ public abstract class WrappedAsyncTaskLoader<D> extends AsyncTaskLoader<D> {
|
|||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@DebugLog
|
||||
@Override
|
||||
protected void onStopLoading() {
|
||||
// Attempt to cancel the current load task if possible
|
||||
|
|
@ -65,7 +60,6 @@ public abstract class WrappedAsyncTaskLoader<D> extends AsyncTaskLoader<D> {
|
|||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@DebugLog
|
||||
@Override
|
||||
protected void onReset() {
|
||||
super.onReset();
|
||||
|
|
|
|||
|
|
@ -29,12 +29,15 @@ import android.preference.PreferenceManager;
|
|||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.bumptech.glide.BitmapRequestBuilder;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.animation.GlideAnimation;
|
||||
import com.bumptech.glide.request.target.SimpleTarget;
|
||||
import com.crashlytics.android.answers.Answers;
|
||||
import com.crashlytics.android.answers.CustomEvent;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.appwidget.WidgetMedium;
|
||||
import com.kabouzeid.gramophone.glide.BlurTransformation;
|
||||
|
|
@ -74,10 +77,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
public static final String ACTION_REWIND = "com.kabouzeid.gramophone.rewind";
|
||||
public static final String ACTION_QUIT = "com.kabouzeid.gramophone.quitservice";
|
||||
|
||||
// do not change this strings as it will break support with other apps (e.g. last.fm scrobbling)
|
||||
// do not change these three strings as it will break support with other apps (e.g. last.fm scrobbling)
|
||||
public static final String META_CHANGED = "com.kabouzeid.gramophone.metachanged";
|
||||
public static final String QUEUE_CHANGED = "com.kabouzeid.gramophone.queuechanged";
|
||||
public static final String PLAY_STATE_CHANGED = "com.kabouzeid.gramophone.playstatechanged";
|
||||
|
||||
public static final String REPEAT_MODE_CHANGED = "com.kabouzeid.gramophone.repeatmodechanged";
|
||||
public static final String SHUFFLE_MODE_CHANGED = "com.kabouzeid.gramophone.shufflemodechanged";
|
||||
public static final String MEDIA_STORE_CHANGED = "com.kabouzeid.gramophone.mediastorechanged";
|
||||
|
|
@ -133,8 +137,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
private QueueSaveHandler queueSaveHandler;
|
||||
private HandlerThread musicPlayerHandlerThread;
|
||||
private HandlerThread queueSaveHandlerThread;
|
||||
private HistoryStore historyStore;
|
||||
private SongPlayCountStore songPlayCountStore;
|
||||
private SongPlayCountHelper songPlayCountHelper = new SongPlayCountHelper();
|
||||
private final BroadcastReceiver becomingNoisyReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
|
|
@ -146,7 +148,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
};
|
||||
private ContentObserver mediaStoreObserver;
|
||||
private boolean notHandledMetaChangedForCurrentTrack;
|
||||
private boolean isServiceInUse;
|
||||
private boolean isServiceBound;
|
||||
|
||||
private Handler uiThreadHandler;
|
||||
|
||||
|
|
@ -154,23 +156,25 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
return MusicUtil.getSongFileUri(song.id).toString();
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
playingNotificationHelper = new PlayingNotificationHelper(this);
|
||||
|
||||
historyStore = HistoryStore.getInstance(this);
|
||||
songPlayCountStore = SongPlayCountStore.getInstance(this);
|
||||
|
||||
shuffleMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(SAVED_SHUFFLE_MODE, 0);
|
||||
repeatMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(SAVED_REPEAT_MODE, 0);
|
||||
|
||||
final PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
||||
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName());
|
||||
wakeLock.setReferenceCounted(false);
|
||||
|
||||
musicPlayerHandlerThread = new HandlerThread("PlaybackHandler");
|
||||
String playbackHandlerName = "PlaybackHandler";
|
||||
try {
|
||||
musicPlayerHandlerThread = new HandlerThread(playbackHandlerName, Process.THREAD_PRIORITY_AUDIO);
|
||||
} catch (SecurityException e) {
|
||||
Log.e(TAG, "Failed to create HandlerThread with Process.THREAD_PRIORITY_AUDIO", e);
|
||||
Answers.getInstance().logCustom(new CustomEvent("SecurityException: Process.THREAD_PRIORITY_AUDIO")); // TODO remove in future update
|
||||
musicPlayerHandlerThread = new HandlerThread(playbackHandlerName, Process.THREAD_PRIORITY_FOREGROUND);
|
||||
}
|
||||
musicPlayerHandlerThread.start();
|
||||
playerHandler = new PlaybackHandler(this, musicPlayerHandlerThread.getLooper());
|
||||
|
||||
|
|
@ -186,8 +190,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
|
||||
registerReceiversAndRemoteControlClient();
|
||||
|
||||
restoreState();
|
||||
|
||||
mediaStoreObserver = new MediaStoreObserver(playerHandler);
|
||||
getContentResolver().registerContentObserver(
|
||||
MediaStore.Audio.Media.INTERNAL_CONTENT_URI, true, mediaStoreObserver);
|
||||
|
|
@ -196,8 +198,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
|
||||
PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this);
|
||||
|
||||
notifyChange(SHUFFLE_MODE_CHANGED);
|
||||
notifyChange(REPEAT_MODE_CHANGED);
|
||||
restoreState();
|
||||
}
|
||||
|
||||
private void registerReceiversAndRemoteControlClient() {
|
||||
|
|
@ -230,6 +231,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
getAudioManager().registerRemoteControlClient(remoteControlClient);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
|
||||
if (intent != null) {
|
||||
|
|
@ -266,6 +268,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
return START_STICKY;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
quit();
|
||||
|
|
@ -275,20 +278,23 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
wakeLock.release();
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
isServiceInUse = true;
|
||||
isServiceBound = true;
|
||||
return musicBind;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onRebind(Intent intent) {
|
||||
isServiceInUse = true;
|
||||
isServiceBound = true;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public boolean onUnbind(Intent intent) {
|
||||
isServiceInUse = false;
|
||||
isServiceBound = false;
|
||||
if (!isPlaying()) {
|
||||
stopSelf();
|
||||
}
|
||||
|
|
@ -350,6 +356,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
}
|
||||
|
||||
private void restoreState() {
|
||||
shuffleMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(SAVED_SHUFFLE_MODE, 0);
|
||||
repeatMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(SAVED_REPEAT_MODE, 0);
|
||||
notifyPrivateChange(SHUFFLE_MODE_CHANGED);
|
||||
notifyPrivateChange(REPEAT_MODE_CHANGED);
|
||||
|
||||
playerHandler.removeMessages(RESTORE_QUEUES);
|
||||
playerHandler.sendEmptyMessage(RESTORE_QUEUES);
|
||||
}
|
||||
|
|
@ -372,8 +383,8 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
if (restoredPositionInTrack > 0) seek(restoredPositionInTrack);
|
||||
|
||||
notHandledMetaChangedForCurrentTrack = true;
|
||||
sendChangeIntent(META_CHANGED);
|
||||
sendChangeIntent(QUEUE_CHANGED);
|
||||
sendPrivateIntent(META_CHANGED);
|
||||
sendPrivateIntent(QUEUE_CHANGED);
|
||||
updateWidgets();
|
||||
}
|
||||
}
|
||||
|
|
@ -383,7 +394,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
pause();
|
||||
playingNotificationHelper.killNotification();
|
||||
|
||||
if (isServiceInUse) {
|
||||
if (isServiceBound) {
|
||||
return START_STICKY;
|
||||
} else {
|
||||
closeAudioEffectSession();
|
||||
|
|
@ -623,7 +634,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
.putInt(SAVED_REPEAT_MODE, repeatMode)
|
||||
.apply();
|
||||
prepareNext();
|
||||
notifyChange(REPEAT_MODE_CHANGED);
|
||||
notifyPrivateChange(REPEAT_MODE_CHANGED);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -886,33 +897,43 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
position = newPosition;
|
||||
break;
|
||||
}
|
||||
notifyChange(SHUFFLE_MODE_CHANGED);
|
||||
notifyPrivateChange(SHUFFLE_MODE_CHANGED);
|
||||
notifyChange(QUEUE_CHANGED);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
private void notifyChange(@NonNull final String what) {
|
||||
handleChange(what);
|
||||
sendChangeIntent(what);
|
||||
notifyPrivateChange(what);
|
||||
sendPublicIntent(what);
|
||||
}
|
||||
|
||||
private void sendChangeIntent(@NonNull final String what) {
|
||||
final Intent internalIntent = new Intent(what);
|
||||
@DebugLog
|
||||
private void notifyPrivateChange(@NonNull final String what) {
|
||||
handleChange(what);
|
||||
sendPrivateIntent(what);
|
||||
}
|
||||
|
||||
// to let other apps know whats playing. i.E. last.fm (scrobbling) or musixmatch
|
||||
@DebugLog
|
||||
private void sendPublicIntent(@NonNull final String what) {
|
||||
final Intent intent = new Intent(what.replace(PHONOGRAPH_PACKAGE_NAME, MUSIC_PACKAGE_NAME));
|
||||
|
||||
final Song currentSong = getCurrentSong();
|
||||
if (currentSong.id != -1) {
|
||||
internalIntent.putExtra("id", currentSong.id);
|
||||
internalIntent.putExtra("artist", currentSong.artistName);
|
||||
internalIntent.putExtra("album", currentSong.albumName);
|
||||
internalIntent.putExtra("track", currentSong.title);
|
||||
internalIntent.putExtra("duration", currentSong.duration);
|
||||
intent.putExtra("id", currentSong.id);
|
||||
intent.putExtra("artist", currentSong.artistName);
|
||||
intent.putExtra("album", currentSong.albumName);
|
||||
intent.putExtra("track", currentSong.title);
|
||||
intent.putExtra("duration", currentSong.duration);
|
||||
}
|
||||
internalIntent.putExtra("playing", isPlaying());
|
||||
sendStickyBroadcast(internalIntent);
|
||||
intent.putExtra("playing", isPlaying());
|
||||
|
||||
// to let other apps know whats playing. i.E. last.fm (scrobbling) or musixmatch
|
||||
final Intent publicMusicIntent = new Intent(internalIntent);
|
||||
publicMusicIntent.setAction(what.replace(PHONOGRAPH_PACKAGE_NAME, MUSIC_PACKAGE_NAME));
|
||||
sendStickyBroadcast(publicMusicIntent);
|
||||
sendStickyBroadcast(intent);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
private void sendPrivateIntent(final String what) {
|
||||
sendBroadcast(new Intent(what));
|
||||
}
|
||||
|
||||
private void handleChange(@NonNull final String what) {
|
||||
|
|
@ -935,9 +956,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
savePosition();
|
||||
savePositionInTrack();
|
||||
final Song currentSong = getCurrentSong();
|
||||
historyStore.addSongId(currentSong.id);
|
||||
HistoryStore.getInstance(this).addSongId(currentSong.id);
|
||||
if (songPlayCountHelper.shouldBumpPlayCount()) {
|
||||
songPlayCountStore.bumpPlayCount(songPlayCountHelper.getSong().id);
|
||||
SongPlayCountStore.getInstance(this).bumpPlayCount(songPlayCountHelper.getSong().id);
|
||||
}
|
||||
songPlayCountHelper.notifySongChanged(currentSong);
|
||||
break;
|
||||
|
|
@ -1146,7 +1167,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
public void run() {
|
||||
// actually call refresh when the delayed callback fires
|
||||
// do not send a sticky broadcast here
|
||||
sendBroadcast(new Intent(MEDIA_STORE_CHANGED));
|
||||
notifyPrivateChange(MEDIA_STORE_CHANGED);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ import com.kabouzeid.gramophone.util.Util;
|
|||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* Be careful when changing things in this Activity!
|
||||
|
|
@ -337,7 +336,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
return new AsyncAlbumLoader(this, args.getInt(EXTRA_ALBUM_ID));
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Album> loader, Album data) {
|
||||
supportStartPostponedEnterTransition();
|
||||
|
|
@ -347,7 +345,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
}
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoaderReset(Loader<Album> loader) {
|
||||
this.album = new Album();
|
||||
|
|
@ -362,7 +359,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
this.albumId = albumId;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public Album loadInBackground() {
|
||||
return AlbumLoader.getAlbum(getContext(), albumId);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ import java.util.ArrayList;
|
|||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import hugo.weaving.DebugLog;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
|
@ -418,7 +417,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
return new AsyncArtistDataLoader(this, args.getInt(EXTRA_ARTIST_ID));
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoadFinished(Loader<ArtistData> loader, ArtistData data) {
|
||||
supportStartPostponedEnterTransition();
|
||||
|
|
@ -428,7 +426,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoaderReset(Loader<ArtistData> loader) {
|
||||
this.artistData = new ArtistData();
|
||||
|
|
@ -444,7 +441,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
this.artistId = artistId;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public ArtistData loadInBackground() {
|
||||
Artist artist = ArtistLoader.getArtist(getContext(), artistId);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.kabouzeid.gramophone.ui.activities;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
|
|
@ -9,7 +8,6 @@ import android.net.Uri;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
|
@ -24,6 +22,8 @@ import android.widget.ImageView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.crashlytics.android.answers.Answers;
|
||||
import com.crashlytics.android.answers.CustomEvent;
|
||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||
import com.kabouzeid.appthemehelper.util.ATHUtil;
|
||||
import com.kabouzeid.appthemehelper.util.NavigationViewUtil;
|
||||
|
|
@ -40,8 +40,8 @@ import com.kabouzeid.gramophone.model.Song;
|
|||
import com.kabouzeid.gramophone.service.MusicService;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.intro.AppIntroActivity;
|
||||
import com.kabouzeid.gramophone.ui.fragments.FolderFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.LibraryFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.folders.FoldersFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.LibraryFragment;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
|
||||
|
|
@ -74,14 +74,13 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
|
||||
private boolean blockRequestPermissions;
|
||||
|
||||
private boolean bottomBarSupposedToBeHidden = true;
|
||||
private boolean keepBottomBarHidden = true;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
Answers.getInstance().logCustom(new CustomEvent("TEST")); // TODO remove in future update
|
||||
|
||||
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
|
||||
Util.setStatusBarTranslucent(getWindow());
|
||||
drawerLayout.setFitsSystemWindows(false);
|
||||
|
|
@ -94,15 +93,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
|
||||
if (savedInstanceState == null) {
|
||||
setMusicChooser(PreferenceUtil.getInstance(this).getLastMusicChooser());
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
initDelayedBottomBar();
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
restoreCurrentFragment();
|
||||
initDelayedBottomBar();
|
||||
}
|
||||
|
||||
if (!checkShowIntro()) {
|
||||
|
|
@ -119,7 +111,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
break;
|
||||
case FOLDERS:
|
||||
navigationView.setCheckedItem(R.id.nav_folders);
|
||||
setCurrentFragment(FolderFragment.newInstance(this));
|
||||
setCurrentFragment(FoldersFragment.newInstance(this));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -255,8 +247,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
super.onServiceConnected(name, service);
|
||||
public void onServiceConnected() {
|
||||
super.onServiceConnected();
|
||||
updateNavigationDrawerHeader();
|
||||
handlePlaybackIntent(getIntent());
|
||||
}
|
||||
|
||||
|
|
@ -410,17 +403,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideBottomBar(boolean hide) {
|
||||
bottomBarSupposedToBeHidden = hide;
|
||||
super.hideBottomBar(hide || keepBottomBarHidden);
|
||||
}
|
||||
|
||||
private void initDelayedBottomBar() {
|
||||
keepBottomBarHidden = false;
|
||||
hideBottomBar(bottomBarSupposedToBeHidden);
|
||||
}
|
||||
|
||||
public interface MainActivityFragmentCallbacks {
|
||||
boolean handleBackPress();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,10 +20,12 @@ import com.kabouzeid.gramophone.service.MusicService;
|
|||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements ServiceConnection, MusicServiceEventListener {
|
||||
public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements MusicServiceEventListener {
|
||||
public static final String TAG = AbsMusicServiceActivity.class.getSimpleName();
|
||||
|
||||
private final ArrayList<MusicServiceEventListener> mMusicServiceEventListeners = new ArrayList<>();
|
||||
|
|
@ -33,41 +35,26 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
|
|||
private boolean receiverRegistered;
|
||||
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
serviceToken = MusicPlayerRemote.bindToService(this, this);
|
||||
serviceToken = MusicPlayerRemote.bindToService(this, new ServiceConnection() {
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
AbsMusicServiceActivity.this.onServiceConnected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(ComponentName name) {
|
||||
AbsMusicServiceActivity.this.onServiceDisconnected();
|
||||
}
|
||||
});
|
||||
|
||||
setPermissionDeniedMessage(getString(R.string.permission_external_storage_denied));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
if (!receiverRegistered) {
|
||||
musicStateReceiver = new MusicStateReceiver(this);
|
||||
|
||||
final IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(MusicService.PLAY_STATE_CHANGED);
|
||||
filter.addAction(MusicService.SHUFFLE_MODE_CHANGED);
|
||||
filter.addAction(MusicService.REPEAT_MODE_CHANGED);
|
||||
filter.addAction(MusicService.META_CHANGED);
|
||||
filter.addAction(MusicService.QUEUE_CHANGED);
|
||||
filter.addAction(MusicService.MEDIA_STORE_CHANGED);
|
||||
|
||||
registerReceiver(musicStateReceiver, filter);
|
||||
|
||||
receiverRegistered = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(ComponentName name) {
|
||||
if (receiverRegistered) {
|
||||
unregisterReceiver(musicStateReceiver);
|
||||
receiverRegistered = false;
|
||||
}
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
|
@ -90,6 +77,45 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
if (!receiverRegistered) {
|
||||
musicStateReceiver = new MusicStateReceiver(this);
|
||||
|
||||
final IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(MusicService.PLAY_STATE_CHANGED);
|
||||
filter.addAction(MusicService.SHUFFLE_MODE_CHANGED);
|
||||
filter.addAction(MusicService.REPEAT_MODE_CHANGED);
|
||||
filter.addAction(MusicService.META_CHANGED);
|
||||
filter.addAction(MusicService.QUEUE_CHANGED);
|
||||
filter.addAction(MusicService.MEDIA_STORE_CHANGED);
|
||||
|
||||
registerReceiver(musicStateReceiver, filter);
|
||||
|
||||
receiverRegistered = true;
|
||||
}
|
||||
|
||||
for (MusicServiceEventListener listener : mMusicServiceEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onServiceConnected();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected() {
|
||||
if (receiverRegistered) {
|
||||
unregisterReceiver(musicStateReceiver);
|
||||
receiverRegistered = false;
|
||||
}
|
||||
|
||||
for (MusicServiceEventListener listener : mMusicServiceEventListeners) {
|
||||
if (listener != null) {
|
||||
listener.onServiceDisconnected();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
for (MusicServiceEventListener listener : mMusicServiceEventListeners) {
|
||||
|
|
@ -152,6 +178,7 @@ public abstract class AbsMusicServiceActivity extends AbsBaseActivity implements
|
|||
reference = new WeakReference<>(activity);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onReceive(final Context context, @NonNull final Intent intent) {
|
||||
final String action = intent.getAction();
|
||||
|
|
|
|||
|
|
@ -79,6 +79,14 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
|
||||
protected abstract View createContentView();
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
super.onServiceConnected();
|
||||
if (!MusicPlayerRemote.getPlayingQueue().isEmpty()) {
|
||||
hideBottomBar(false);
|
||||
} // don't call hideBottomBar(true) here as it causes a bug with the SlidingUpPanelLayout
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueueChanged() {
|
||||
super.onQueueChanged();
|
||||
|
|
@ -212,6 +220,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
}
|
||||
}
|
||||
|
||||
public SlidingUpPanelLayout getSlidingUpPanelLayout() {
|
||||
return slidingUpPanelLayout;
|
||||
}
|
||||
|
||||
public MiniPlayerFragment getMiniPlayerFragment() {
|
||||
return miniPlayerFragment;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,16 @@ public class AbsMusicServiceFragment extends Fragment implements MusicServiceEve
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueueChanged() {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.folders;
|
||||
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
|
@ -41,6 +41,7 @@ import com.kabouzeid.gramophone.loader.SongLoader;
|
|||
import com.kabouzeid.gramophone.loader.SortedCursor;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.AbsMainActivityFragment;
|
||||
import com.kabouzeid.gramophone.util.PhonographColorUtil;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||
|
|
@ -59,10 +60,9 @@ import java.util.List;
|
|||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
public class FolderFragment extends AbsMainActivityFragment implements MainActivity.MainActivityFragmentCallbacks, CabHolder, BreadCrumbLayout.SelectionCallback, SongFileAdapter.Callbacks, AppBarLayout.OnOffsetChangedListener {
|
||||
public static final String TAG = FolderFragment.class.getSimpleName();
|
||||
public class FoldersFragment extends AbsMainActivityFragment implements MainActivity.MainActivityFragmentCallbacks, CabHolder, BreadCrumbLayout.SelectionCallback, SongFileAdapter.Callbacks, AppBarLayout.OnOffsetChangedListener {
|
||||
public static final String TAG = FoldersFragment.class.getSimpleName();
|
||||
|
||||
protected static final String PATH = "path";
|
||||
protected static final String CRUMBS = "crumbs";
|
||||
|
|
@ -85,15 +85,15 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv
|
|||
private SongFileAdapter adapter;
|
||||
private MaterialCab cab;
|
||||
|
||||
public FolderFragment() {
|
||||
public FoldersFragment() {
|
||||
}
|
||||
|
||||
public static FolderFragment newInstance(Context context) {
|
||||
public static FoldersFragment newInstance(Context context) {
|
||||
return newInstance(PreferenceUtil.getInstance(context).getStartDirectory());
|
||||
}
|
||||
|
||||
public static FolderFragment newInstance(File directory) {
|
||||
FolderFragment frag = new FolderFragment();
|
||||
public static FoldersFragment newInstance(File directory) {
|
||||
FoldersFragment frag = new FoldersFragment();
|
||||
Bundle b = new Bundle();
|
||||
b.putSerializable(PATH, directory);
|
||||
frag.setArguments(b);
|
||||
|
|
@ -416,7 +416,6 @@ public class FolderFragment extends AbsMainActivityFragment implements MainActiv
|
|||
int scanned = 0;
|
||||
int failed = 0;
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onScanCompleted(final String path, final Uri uri) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library;
|
||||
|
||||
|
||||
import android.content.Intent;
|
||||
|
|
@ -31,7 +31,8 @@ import com.kabouzeid.gramophone.interfaces.CabHolder;
|
|||
import com.kabouzeid.gramophone.loader.SongLoader;
|
||||
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.SearchActivity;
|
||||
import com.kabouzeid.gramophone.ui.fragments.libraryfragments.AbsLibraryPagerRecyclerViewCustomGridSizeFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.AbsMainActivityFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager.AbsLibraryPagerRecyclerViewCustomGridSizeFragment;
|
||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
import com.kabouzeid.gramophone.util.PhonographColorUtil;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
|
|
@ -151,6 +152,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
if (pager == null) return;
|
||||
inflater.inflate(R.menu.menu_main, menu);
|
||||
if (isPlaylistPage()) {
|
||||
menu.add(0, R.id.action_new_playlist, 0, R.string.new_playlist_title);
|
||||
|
|
@ -175,6 +177,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde
|
|||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (pager == null) return false;
|
||||
Fragment currentFragment = getCurrentFragment();
|
||||
if (currentFragment instanceof AbsLibraryPagerRecyclerViewCustomGridSizeFragment) {
|
||||
AbsLibraryPagerRecyclerViewCustomGridSizeFragment absLibraryRecyclerViewCustomGridSizeFragment = (AbsLibraryPagerRecyclerViewCustomGridSizeFragment) currentFragment;
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
|
||||
import com.kabouzeid.gramophone.ui.fragments.LibraryFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.LibraryFragment;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class AbsLibraryPagerFragment extends Fragment {
|
||||
public class AbsLibraryPagerFragment extends AbsMusicServiceFragment {
|
||||
|
||||
/* http://stackoverflow.com/a/2888433 */
|
||||
@Override
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.LayoutRes;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.LayoutRes;
|
||||
|
|
@ -15,7 +15,6 @@ import android.widget.TextView;
|
|||
|
||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
|
||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||
|
||||
|
|
@ -25,7 +24,7 @@ import butterknife.ButterKnife;
|
|||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public abstract class AbsLibraryPagerRecyclerViewFragment<A extends RecyclerView.Adapter, LM extends RecyclerView.LayoutManager> extends AbsLibraryPagerFragment implements OnOffsetChangedListener, MusicServiceEventListener {
|
||||
public abstract class AbsLibraryPagerRecyclerViewFragment<A extends RecyclerView.Adapter, LM extends RecyclerView.LayoutManager> extends AbsLibraryPagerFragment implements OnOffsetChangedListener {
|
||||
|
||||
public static final String TAG = AbsLibraryPagerRecyclerViewFragment.class.getSimpleName();
|
||||
|
||||
|
|
@ -59,7 +58,6 @@ public abstract class AbsLibraryPagerRecyclerViewFragment<A extends RecyclerView
|
|||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
getLibraryFragment().addOnAppBarOffsetChangedListener(this);
|
||||
getLibraryFragment().getMainActivity().addMusicServiceEventListener(this);
|
||||
|
||||
setUpRecyclerView();
|
||||
}
|
||||
|
|
@ -115,31 +113,6 @@ public abstract class AbsLibraryPagerRecyclerViewFragment<A extends RecyclerView
|
|||
container.setPadding(container.getPaddingLeft(), container.getPaddingTop(), container.getPaddingRight(), getLibraryFragment().getTotalAppBarScrollingRange() + i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueueChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayStateChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShuffleModeChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRepeatModeChanged() {
|
||||
|
||||
}
|
||||
|
||||
private void checkIsEmpty() {
|
||||
if (empty != null) {
|
||||
empty.setText(getEmptyMessage());
|
||||
|
|
@ -166,7 +139,6 @@ public abstract class AbsLibraryPagerRecyclerViewFragment<A extends RecyclerView
|
|||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
getLibraryFragment().removeOnAppBarOffsetChangedListener(this);
|
||||
getLibraryFragment().getMainActivity().removeMusicServiceEventListener(this);
|
||||
ButterKnife.unbind(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -17,8 +17,6 @@ import com.kabouzeid.gramophone.util.PreferenceUtil;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -103,19 +101,16 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
getLoaderManager().restartLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public Loader<ArrayList<Album>> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncAlbumLoader(getActivity());
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoadFinished(Loader<ArrayList<Album>> loader, ArrayList<Album> data) {
|
||||
getAdapter().swapDataSet(data);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoaderReset(Loader<ArrayList<Album>> loader) {
|
||||
getAdapter().swapDataSet(new ArrayList<Album>());
|
||||
|
|
@ -126,7 +121,6 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
super(context);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public ArrayList<Album> loadInBackground() {
|
||||
return AlbumLoader.getAllAlbums(getContext());
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -17,8 +17,6 @@ import com.kabouzeid.gramophone.util.PreferenceUtil;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -105,19 +103,19 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
|
|||
getAdapter().notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
|
||||
@Override
|
||||
public Loader<ArrayList<Artist>> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncArtistLoader(getActivity());
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<ArrayList<Artist>> loader, ArrayList<Artist> data) {
|
||||
getAdapter().swapDataSet(data);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<ArrayList<Artist>> loader) {
|
||||
getAdapter().swapDataSet(new ArrayList<Artist>());
|
||||
|
|
@ -128,7 +126,6 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
|
|||
super(context);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public ArrayList<Artist> loadInBackground() {
|
||||
return ArtistLoader.getAllArtists(getContext());
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -19,8 +19,6 @@ import com.kabouzeid.gramophone.model.smartplaylist.MyTopTracksPlaylist;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -59,19 +57,16 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<Playl
|
|||
getLoaderManager().restartLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public Loader<ArrayList<Playlist>> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncPlaylistLoader(getActivity());
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoadFinished(Loader<ArrayList<Playlist>> loader, ArrayList<Playlist> data) {
|
||||
getAdapter().swapDataSet(data);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoaderReset(Loader<ArrayList<Playlist>> loader) {
|
||||
getAdapter().swapDataSet(new ArrayList<Playlist>());
|
||||
|
|
@ -94,7 +89,6 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<Playl
|
|||
return playlists;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public ArrayList<Playlist> loadInBackground() {
|
||||
return getAllPlaylists(getContext());
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.libraryfragments;
|
||||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
|
@ -18,8 +18,6 @@ import com.kabouzeid.gramophone.util.PreferenceUtil;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -116,19 +114,16 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
|
|||
getAdapter().notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public Loader<ArrayList<Song>> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncSongLoader(getActivity());
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoadFinished(Loader<ArrayList<Song>> loader, ArrayList<Song> data) {
|
||||
getAdapter().swapDataSet(data);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public void onLoaderReset(Loader<ArrayList<Song>> loader) {
|
||||
getAdapter().swapDataSet(new ArrayList<Song>());
|
||||
|
|
@ -139,7 +134,6 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
|
|||
super(context);
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public ArrayList<Song> loadInBackground() {
|
||||
return SongLoader.getAllSongs(getContext());
|
||||
|
|
@ -5,7 +5,6 @@ import android.content.res.ColorStateList;
|
|||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
|
|
@ -20,8 +19,7 @@ import com.kabouzeid.gramophone.R;
|
|||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper;
|
||||
import com.kabouzeid.gramophone.helper.PlayPauseButtonOnClickHandler;
|
||||
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity;
|
||||
import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment;
|
||||
import com.kabouzeid.gramophone.views.PlayPauseDrawable;
|
||||
|
||||
import butterknife.Bind;
|
||||
|
|
@ -31,11 +29,9 @@ import me.zhanghai.android.materialprogressbar.MaterialProgressBar;
|
|||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class MiniPlayerFragment extends Fragment implements MusicServiceEventListener, MusicProgressViewUpdateHelper.Callback {
|
||||
public class MiniPlayerFragment extends AbsMusicServiceFragment implements MusicProgressViewUpdateHelper.Callback {
|
||||
@Bind(R.id.mini_player_title)
|
||||
TextView miniPlayerTitle;
|
||||
@Bind(R.id.mini_player_image)
|
||||
ImageView miniPlayerImage;
|
||||
@Bind(R.id.mini_player_play_pause_button)
|
||||
ImageView miniPlayerPlayPauseButton;
|
||||
@Bind(R.id.progress_bar)
|
||||
|
|
@ -45,24 +41,6 @@ public class MiniPlayerFragment extends Fragment implements MusicServiceEventLis
|
|||
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
||||
private AbsMusicServiceActivity activity;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
try {
|
||||
activity = (AbsMusicServiceActivity) context;
|
||||
} catch (ClassCastException e) {
|
||||
throw new RuntimeException(context.getClass().getSimpleName() + " must be an instance of " + AbsMusicServiceActivity.class.getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
activity = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
@ -80,39 +58,41 @@ public class MiniPlayerFragment extends Fragment implements MusicServiceEventLis
|
|||
super.onViewCreated(view, savedInstanceState);
|
||||
ButterKnife.bind(this, view);
|
||||
|
||||
view.setOnTouchListener(new FlingPlayBackController(activity));
|
||||
view.setOnTouchListener(new FlingPlayBackController(getActivity()));
|
||||
setUpMiniPlayer();
|
||||
|
||||
activity.addMusicServiceEventListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
activity.removeMusicServiceEventListener(this);
|
||||
ButterKnife.unbind(this);
|
||||
}
|
||||
|
||||
private void setUpMiniPlayer() {
|
||||
setUpPlayPauseButton();
|
||||
progressBar.setProgressTintList(ColorStateList.valueOf(ThemeStore.accentColor(activity)));
|
||||
progressBar.setProgressTintList(ColorStateList.valueOf(ThemeStore.accentColor(getActivity())));
|
||||
}
|
||||
|
||||
private void setUpPlayPauseButton() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
miniPlayerPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
miniPlayerPlayPauseButton.setImageDrawable(miniPlayerPlayPauseDrawable);
|
||||
miniPlayerPlayPauseButton.setColorFilter(ATHUtil.resolveColor(activity, R.attr.iconColor, ThemeStore.textColorSecondary(getActivity())), PorterDuff.Mode.SRC_IN);
|
||||
miniPlayerPlayPauseButton.setColorFilter(ATHUtil.resolveColor(getActivity(), R.attr.iconColor, ThemeStore.textColorSecondary(getActivity())), PorterDuff.Mode.SRC_IN);
|
||||
miniPlayerPlayPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
private void updateSongTitle() {
|
||||
miniPlayerTitle.setText(MusicPlayerRemote.getCurrentSong().title);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueueChanged() {
|
||||
public void onServiceConnected() {
|
||||
updateSongTitle();
|
||||
updatePlayPauseDrawableState(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
updateSongTitle();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -120,21 +100,6 @@ public class MiniPlayerFragment extends Fragment implements MusicServiceEventLis
|
|||
updatePlayPauseDrawableState(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRepeatModeChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShuffleModeChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaStoreChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdateProgressViews(int progress, int total) {
|
||||
progressBar.setMax(total);
|
||||
|
|
@ -182,9 +147,6 @@ public class MiniPlayerFragment extends Fragment implements MusicServiceEventLis
|
|||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
if (miniPlayerPlayPauseDrawable == null) {
|
||||
miniPlayerPlayPauseDrawable = new PlayPauseDrawable(activity);
|
||||
}
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
miniPlayerPlayPauseDrawable.setPause(animate);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.player;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -21,10 +19,9 @@ import com.kabouzeid.gramophone.R;
|
|||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper;
|
||||
import com.kabouzeid.gramophone.helper.PlayPauseButtonOnClickHandler;
|
||||
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
|
||||
import com.kabouzeid.gramophone.misc.SimpleOnSeekbarChangeListener;
|
||||
import com.kabouzeid.gramophone.service.MusicService;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity;
|
||||
import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment;
|
||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||
import com.kabouzeid.gramophone.views.PlayPauseDrawable;
|
||||
|
||||
|
|
@ -34,7 +31,7 @@ import butterknife.ButterKnife;
|
|||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class PlaybackControlsFragment extends Fragment implements MusicServiceEventListener, MusicProgressViewUpdateHelper.Callback {
|
||||
public class PlaybackControlsFragment extends AbsMusicServiceFragment implements MusicProgressViewUpdateHelper.Callback {
|
||||
|
||||
@Bind(R.id.player_play_pause_fab)
|
||||
FloatingActionButton playPauseFab;
|
||||
|
|
@ -56,28 +53,11 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
|
||||
private PlayPauseDrawable playerFabPlayPauseDrawable;
|
||||
|
||||
private AbsMusicServiceActivity activity;
|
||||
private int lastPlaybackControlsColor;
|
||||
private int lastDisabledPlaybackControlsColor;
|
||||
|
||||
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
try {
|
||||
activity = (AbsMusicServiceActivity) context;
|
||||
} catch (ClassCastException e) {
|
||||
throw new RuntimeException(context.getClass().getSimpleName() + " must be an instance of " + AbsMusicServiceActivity.class.getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
activity = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
@ -94,7 +74,6 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
ButterKnife.bind(this, view);
|
||||
activity.addMusicServiceEventListener(this);
|
||||
setUpMusicControllers();
|
||||
updateProgressTextColor();
|
||||
}
|
||||
|
|
@ -102,7 +81,6 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
activity.removeMusicServiceEventListener(this);
|
||||
ButterKnife.unbind(this);
|
||||
}
|
||||
|
||||
|
|
@ -119,12 +97,10 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueueChanged() {
|
||||
|
||||
public void onServiceConnected() {
|
||||
updatePlayPauseDrawableState(false);
|
||||
updateRepeatState();
|
||||
updateShuffleState();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -142,13 +118,8 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
updateShuffleState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaStoreChanged() {
|
||||
|
||||
}
|
||||
|
||||
public void setColor(int color) {
|
||||
if (ColorUtil.isColorLight(color)) {
|
||||
public void setDark(boolean dark) {
|
||||
if (dark) {
|
||||
lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(getActivity(), true);
|
||||
lastDisabledPlaybackControlsColor = MaterialValueHelper.getSecondaryDisabledTextColor(getActivity(), true);
|
||||
} else {
|
||||
|
|
@ -166,9 +137,9 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
final int fabColor = Color.WHITE;
|
||||
TintHelper.setTintAuto(playPauseFab, fabColor, true);
|
||||
|
||||
updatePlayPauseDrawableState(false);
|
||||
// Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable);
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(getActivity());
|
||||
|
||||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(new Runnable() {
|
||||
|
|
@ -183,9 +154,6 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
}
|
||||
|
||||
protected void updatePlayPauseDrawableState(boolean animate) {
|
||||
if (playerFabPlayPauseDrawable == null) {
|
||||
playerFabPlayPauseDrawable = new PlayPauseDrawable(activity);
|
||||
}
|
||||
if (MusicPlayerRemote.isPlaying()) {
|
||||
playerFabPlayPauseDrawable.setPause(animate);
|
||||
} else {
|
||||
|
|
@ -229,7 +197,6 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
}
|
||||
|
||||
private void setUpShuffleButton() {
|
||||
updateShuffleState();
|
||||
shuffleButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
@ -250,7 +217,6 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv
|
|||
}
|
||||
|
||||
private void setUpRepeatButton() {
|
||||
updateRepeatState();
|
||||
repeatButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
updatePlayingQueue();
|
||||
viewPager.addOnPageChangeListener(this);
|
||||
viewPager.setOnTouchListener(new View.OnTouchListener() {
|
||||
GestureDetector gestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() {
|
||||
|
|
@ -75,6 +74,11 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
ButterKnife.unbind(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected() {
|
||||
updatePlayingQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
viewPager.setCurrentItem(MusicPlayerRemote.getPosition());
|
||||
|
|
@ -88,7 +92,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
private void updatePlayingQueue() {
|
||||
viewPager.setAdapter(new AlbumCoverPagerAdapter(getFragmentManager(), MusicPlayerRemote.getPlayingQueue()));
|
||||
viewPager.setCurrentItem(MusicPlayerRemote.getPosition());
|
||||
// doesn't get called automatically for some reason
|
||||
onPageSelected(MusicPlayerRemote.getPosition());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
@Bind(R.id.player_queue_sub_header)
|
||||
TextView playerQueueSubHeader;
|
||||
|
||||
|
||||
private int lastColor;
|
||||
|
||||
private PlaybackControlsFragment playbackControlsFragment;
|
||||
|
|
@ -154,9 +153,16 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
updateIsFavorite();
|
||||
public void onServiceConnected() {
|
||||
updateQueue();
|
||||
updateCurrentSong();
|
||||
updateIsFavorite();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayingMetaChanged() {
|
||||
updateCurrentSong();
|
||||
updateIsFavorite();
|
||||
updateQueuePosition();
|
||||
}
|
||||
|
||||
|
|
@ -215,6 +221,7 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
playingQueueAdapter = new PlayingQueueAdapter(
|
||||
((AppCompatActivity) getActivity()),
|
||||
MusicPlayerRemote.getPlayingQueue(),
|
||||
MusicPlayerRemote.getPosition(),
|
||||
R.layout.item_list,
|
||||
false,
|
||||
null);
|
||||
|
|
@ -227,6 +234,8 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
recyclerView.setItemAnimator(animator);
|
||||
|
||||
recyclerViewDragDropManager.attachRecyclerView(recyclerView);
|
||||
|
||||
layoutManager.scrollToPositionWithOffset(MusicPlayerRemote.getPosition() + 1, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -287,7 +296,7 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
@Override
|
||||
public void onColorChanged(int color) {
|
||||
animateColorChange(color);
|
||||
playbackControlsFragment.setColor(color);
|
||||
playbackControlsFragment.setDark(ColorUtil.isColorLight(color));
|
||||
getCallbacks().onPaletteColorChanged();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import android.support.annotation.StyleRes;
|
|||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.helper.SortOrder;
|
||||
import com.kabouzeid.gramophone.ui.fragments.FolderFragment;
|
||||
import com.kabouzeid.gramophone.ui.fragments.mainactivity.folders.FoldersFragment;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
|
@ -317,7 +317,7 @@ public final class PreferenceUtil {
|
|||
}
|
||||
|
||||
public final File getStartDirectory() {
|
||||
return new File(mPreferences.getString(START_DIRECTORY, FolderFragment.getDefaultStartDirectory().getPath()));
|
||||
return new File(mPreferences.getString(START_DIRECTORY, FoldersFragment.getDefaultStartDirectory().getPath()));
|
||||
}
|
||||
|
||||
public void setStartDirectory(File file) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context="com.kabouzeid.gramophone.ui.fragments.FolderFragment">
|
||||
tools:context=".ui.fragments.mainactivity.folders.FoldersFragment">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context="com.kabouzeid.gramophone.ui.fragments.LibraryFragment">
|
||||
tools:context=".ui.fragments.mainactivity.library.LibraryFragment">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue