From e18f29369683f6563164b43c49e9eaa41de3835f Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Mon, 10 Jun 2013 06:50:54 -0700 Subject: Moved scrobbling into MainFragment when toggling back to online mode --- .../daneren2005/dsub/fragments/MainFragment.java | 62 +++++++++++++++++++++- .../dsub/fragments/SelectDirectoryFragment.java | 57 -------------------- .../dsub/service/OfflineMusicService.java | 1 + 3 files changed, 62 insertions(+), 58 deletions(-) (limited to 'subsonic-android') diff --git a/subsonic-android/src/github/daneren2005/dsub/fragments/MainFragment.java b/subsonic-android/src/github/daneren2005/dsub/fragments/MainFragment.java index bbe3c507..9a0f512a 100644 --- a/subsonic-android/src/github/daneren2005/dsub/fragments/MainFragment.java +++ b/subsonic-android/src/github/daneren2005/dsub/fragments/MainFragment.java @@ -1,10 +1,13 @@ package github.daneren2005.dsub.fragments; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.StatFs; +import android.util.Log; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.View; @@ -21,6 +24,8 @@ import github.daneren2005.dsub.util.Util; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuInflater; +import github.daneren2005.dsub.service.MusicService; +import github.daneren2005.dsub.service.MusicServiceFactory; import github.daneren2005.dsub.util.ModalBackgroundTask; import github.daneren2005.dsub.view.ChangeLog; import java.io.File; @@ -29,6 +34,7 @@ import java.util.Arrays; import java.util.List; public class MainFragment extends SubsonicFragment { + private static final String TAG = MainFragment.class.getSimpleName(); private LayoutInflater inflater; private static final int MENU_GROUP_SERVER = 10; @@ -192,8 +198,16 @@ public class MainFragment extends SubsonicFragment { } private void toggleOffline() { - Util.setOffline(context, !Util.isOffline(context)); + boolean isOffline = Util.isOffline(context); + Util.setOffline(context, !isOffline); context.getPagerAdapter().invalidate(); + + if(isOffline) { + MusicService musicService = MusicServiceFactory.getMusicService(context); + if(musicService.hasOfflineScrobbles()){ + showOfflineScrobblesDialog(); + } + } } private void showAlbumList(String type) { @@ -211,6 +225,52 @@ public class MainFragment extends SubsonicFragment { replaceFragment(fragment, R.id.home_layout); } } + + private void showOfflineScrobblesDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setIcon(android.R.drawable.ic_dialog_info); + + builder.setTitle(R.string.select_album_offline_scrobbles_dialog_title); + builder.setMessage(R.string.select_album_offline_scrobbles_dialog_message); + + //want this on the left and delete on the right hence the backwards button types + builder.setNegativeButton(R.string.select_album_offline_scrobbles_dialog_yes, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + new Thread("Scrobble offline") { + @Override + public void run() { + try { + MusicService musicService = MusicServiceFactory.getMusicService(context); + musicService.processOfflineScrobbles(context, null); + } catch (Exception x) { + Log.i(TAG, "Failed to process offline sc/robbles"); + } + } + }.start(); + } + }); + + builder.setPositiveButton(R.string.select_album_offline_scrobbles_dialog_delete, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + dialogInterface.dismiss(); + FileUtil.getOfflineScrobblesFile().delete(); + } + }); + + builder.setNeutralButton(R.string.select_album_offline_scrobbles_dialog_no, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + dialogInterface.dismiss(); + } + }); + + builder.create().show(); + } private void showAboutDialog() { try { diff --git a/subsonic-android/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java b/subsonic-android/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java index 971bdd62..82b6c481 100644 --- a/subsonic-android/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java +++ b/subsonic-android/src/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java @@ -27,7 +27,6 @@ import github.daneren2005.dsub.service.MusicServiceFactory; import github.daneren2005.dsub.service.OfflineException; import github.daneren2005.dsub.service.ServerTooOldException; import github.daneren2005.dsub.util.Constants; -import github.daneren2005.dsub.util.FileUtil; import github.daneren2005.dsub.util.LoadingTask; import github.daneren2005.dsub.util.Pair; import github.daneren2005.dsub.util.TabBackgroundTask; @@ -273,12 +272,6 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Adapter } else { getMusicDirectory(id, name, refresh); } - - //this may be done better elsewhere but it works for now :) - MusicService musicService = MusicServiceFactory.getMusicService(context); - if(musicService.hasOfflineScrobbles()){ - showOfflineScrobblesDialog(); - } } private void getMusicDirectory(final String id, final String name, final boolean refresh) { @@ -640,56 +633,6 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Adapter builder.create().show(); } - - private void showOfflineScrobblesDialog() { - - - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setIcon(android.R.drawable.ic_dialog_info); - - builder.setTitle(R.string.select_album_offline_scrobbles_dialog_title); - - builder.setMessage(R.string.select_album_offline_scrobbles_dialog_message); - - //want this on the left and delete on the right hence the backwards button types - builder.setNegativeButton(R.string.select_album_offline_scrobbles_dialog_yes, - - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - new Thread("Scrobble offline") { - @Override - public void run() { - try { - MusicService musicService = MusicServiceFactory.getMusicService(context); - musicService.processOfflineScrobbles(context, null); - } catch (Exception x) { - Log.i(TAG, "Failed to process offline sc/robbles"); - } - } - }.start(); - } - }); - - builder.setPositiveButton(R.string.select_album_offline_scrobbles_dialog_delete, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - dialogInterface.dismiss(); - FileUtil.getOfflineScrobblesFile().delete(); - } - }); - - builder.setNeutralButton(R.string.select_album_offline_scrobbles_dialog_no, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - dialogInterface.dismiss(); - } - }); - - builder.create().show(); - } private View createHeader(List entries) { View header = entryList.findViewById(R.id.select_album_header); diff --git a/subsonic-android/src/github/daneren2005/dsub/service/OfflineMusicService.java b/subsonic-android/src/github/daneren2005/dsub/service/OfflineMusicService.java index 3efb22dc..85d91b21 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/OfflineMusicService.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/OfflineMusicService.java @@ -32,6 +32,7 @@ import java.util.Set; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; +import android.media.MediaMetadataRetriever; import android.util.Log; import github.daneren2005.dsub.domain.Artist; import github.daneren2005.dsub.domain.Genre; -- cgit v1.2.3