aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2016-01-04 17:22:08 -0800
committerScott Jackson <daneren2005@gmail.com>2016-01-04 17:22:08 -0800
commite3fa83f7cc194e72a5d096c99e6b9eb13f63ae1b (patch)
tree47ddb7c763775e4b4b199fbf7e32d1b3baa822a8 /app/src
parent9fcb88c5a91ee271eaae81c0ccabe7111dcc695a (diff)
downloaddsub-e3fa83f7cc194e72a5d096c99e6b9eb13f63ae1b.tar.gz
dsub-e3fa83f7cc194e72a5d096c99e6b9eb13f63ae1b.tar.bz2
dsub-e3fa83f7cc194e72a5d096c99e6b9eb13f63ae1b.zip
#609 Go directly to playlist/podcast from sync notification
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java8
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java16
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java19
-rw-r--r--app/src/main/java/github/daneren2005/dsub/service/sync/PlaylistSyncAdapter.java6
-rw-r--r--app/src/main/java/github/daneren2005/dsub/service/sync/PodcastSyncAdapter.java6
-rw-r--r--app/src/main/java/github/daneren2005/dsub/util/Notifications.java6
6 files changed, 59 insertions, 2 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
index 2f87af68..41878a4c 100644
--- a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
+++ b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
@@ -155,6 +155,14 @@ public class SubsonicFragmentActivity extends SubsonicActivity implements Downlo
}
}
currentFragment = getNewFragment(fragmentType);
+ if(getIntent().hasExtra(Constants.INTENT_EXTRA_NAME_ID)) {
+ Bundle currentArguments = currentFragment.getArguments();
+ if(currentArguments == null) {
+ currentArguments = new Bundle();
+ }
+ currentArguments.putString(Constants.INTENT_EXTRA_NAME_ID, getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ID));
+ currentFragment.setArguments(currentArguments);
+ }
currentFragment.setPrimaryFragment(true);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, currentFragment, currentFragment.getSupportTag() + "").commit();
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
index 6e2c9da5..28cf9911 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
@@ -184,6 +184,22 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment<Playlist> {
replaceFragment(fragment);
}
+ @Override
+ public void onFinishRefresh() {
+ Bundle args = getArguments();
+ if(args != null) {
+ String playlistId = args.getString(Constants.INTENT_EXTRA_NAME_ID, null);
+ if (playlistId != null && objects != null) {
+ for (Playlist playlist : objects) {
+ if (playlistId.equals(playlist.getId())) {
+ onItemClicked(null, playlist);
+ break;
+ }
+ }
+ }
+ }
+ }
+
private void deletePlaylist(final Playlist playlist) {
Util.confirmDialog(context, R.string.common_delete, playlist.getName(), new DialogInterface.OnClickListener() {
@Override
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java
index 3f8f7844..a6975725 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java
@@ -270,6 +270,25 @@ public class SelectPodcastsFragment extends SelectRecyclerFragment<Serializable>
};
}
+ @Override
+ public void onFinishRefresh() {
+ Bundle args = getArguments();
+ if(args != null) {
+ String podcastId = args.getString(Constants.INTENT_EXTRA_NAME_ID, null);
+ if (podcastId != null && objects != null) {
+ for (Serializable ser : objects) {
+ if (ser instanceof PodcastChannel) {
+ PodcastChannel podcast = (PodcastChannel) ser;
+ if (podcastId.equals(podcast.getId())) {
+ onItemClicked(null, podcast);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
public void refreshPodcasts() {
new SilentBackgroundTask<Void>(context) {
@Override
diff --git a/app/src/main/java/github/daneren2005/dsub/service/sync/PlaylistSyncAdapter.java b/app/src/main/java/github/daneren2005/dsub/service/sync/PlaylistSyncAdapter.java
index a0996628..6c017472 100644
--- a/app/src/main/java/github/daneren2005/dsub/service/sync/PlaylistSyncAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/service/sync/PlaylistSyncAdapter.java
@@ -69,6 +69,7 @@ public class PlaylistSyncAdapter extends SubsonicSyncAdapter {
ArrayList<SyncSet> playlistList = SyncUtil.getSyncedPlaylists(context, instance);
List<String> updated = new ArrayList<String>();
+ String updatedId = null;
boolean removed = false;
for(int i = 0; i < playlistList.size(); i++) {
SyncSet cachedPlaylist = playlistList.get(i);
@@ -97,6 +98,9 @@ public class PlaylistSyncAdapter extends SubsonicSyncAdapter {
file.downloadNow(musicService);
if(file.isSaved() && !updated.contains(playlist.getName())) {
updated.add(playlist.getName());
+ if(updatedId == null) {
+ updatedId = playlist.getId();
+ }
}
}
@@ -147,7 +151,7 @@ public class PlaylistSyncAdapter extends SubsonicSyncAdapter {
}
if(updated.size() > 0) {
- Notifications.showSyncNotification(context, R.string.sync_new_playlists, SyncUtil.joinNames(updated));
+ Notifications.showSyncNotification(context, R.string.sync_new_playlists, SyncUtil.joinNames(updated), updatedId);
}
}
}
diff --git a/app/src/main/java/github/daneren2005/dsub/service/sync/PodcastSyncAdapter.java b/app/src/main/java/github/daneren2005/dsub/service/sync/PodcastSyncAdapter.java
index 985a7267..ce8e7a91 100644
--- a/app/src/main/java/github/daneren2005/dsub/service/sync/PodcastSyncAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/service/sync/PodcastSyncAdapter.java
@@ -68,6 +68,7 @@ public class PodcastSyncAdapter extends SubsonicSyncAdapter {
}
List<String> updated = new ArrayList<String>();
+ String updatedId = null;
for(int i = 0; i < podcastList.size(); i++) {
SyncSet set = podcastList.get(i);
String id = set.id;
@@ -87,6 +88,9 @@ public class PodcastSyncAdapter extends SubsonicSyncAdapter {
existingEpisodes.add(entry.getId());
if(!updated.contains(podcasts.getName())) {
updated.add(podcasts.getName());
+ if(updatedId == null) {
+ updatedId = podcasts.getId();
+ }
}
}
}
@@ -104,7 +108,7 @@ public class PodcastSyncAdapter extends SubsonicSyncAdapter {
// Make sure there are is at least one change before re-syncing
if(updated.size() > 0) {
FileUtil.serialize(context, podcastList, SyncUtil.getPodcastSyncFile(context, instance));
- Notifications.showSyncNotification(context, R.string.sync_new_podcasts, SyncUtil.joinNames(updated));
+ Notifications.showSyncNotification(context, R.string.sync_new_podcasts, SyncUtil.joinNames(updated), updatedId);
}
} catch(Exception e) {
Log.w(TAG, "Failed to get podcasts for " + Util.getServerName(context, instance));
diff --git a/app/src/main/java/github/daneren2005/dsub/util/Notifications.java b/app/src/main/java/github/daneren2005/dsub/util/Notifications.java
index 375c9966..356ec552 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/Notifications.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/Notifications.java
@@ -306,6 +306,9 @@ public final class Notifications {
}
public static void showSyncNotification(final Context context, int stringId, String extra) {
+ showSyncNotification(context, stringId, extra, null);
+ }
+ public static void showSyncNotification(final Context context, int stringId, String extra, String extraId) {
if(Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_SYNC_NOTIFICATION, true)) {
if(extra == null) {
extra = "";
@@ -346,6 +349,9 @@ public final class Notifications {
if(type != null) {
notificationIntent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TYPE, type);
}
+ if(extraId != null) {
+ notificationIntent.putExtra(Constants.INTENT_EXTRA_NAME_ID, extraId);
+ }
builder.setContentIntent(PendingIntent.getActivity(context, stringId, notificationIntent, 0));