From 1bd41a3b92d871445dbdc17e3f86ee1504f23a90 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Wed, 17 Oct 2012 20:48:31 -0700 Subject: Reworked Sleep Timer --- .../dsub/activity/DownloadActivity.java | 11 ++++++ .../dsub/activity/SettingsActivity.java | 7 ---- .../daneren2005/dsub/service/DownloadService.java | 6 ++-- .../dsub/service/DownloadServiceImpl.java | 41 +++++++++------------- 4 files changed, 32 insertions(+), 33 deletions(-) (limited to 'subsonic-android/src') diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java index 70120574..604966a9 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/DownloadActivity.java @@ -35,6 +35,7 @@ import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.os.Handler; +import android.util.Log; import android.view.ContextMenu; import android.view.Display; import android.view.GestureDetector; @@ -78,6 +79,7 @@ import static github.daneren2005.dsub.domain.PlayerState.*; import java.util.ArrayList; public class DownloadActivity extends SubsonicTabActivity implements OnGestureListener { + private static final String TAG = DownloadActivity.class.getSimpleName(); private static final int DIALOG_SAVE_PLAYLIST = 100; private static final int PERCENTAGE_OF_SCREEN_FOR_SWIPE = 5; @@ -532,6 +534,8 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi togglePlaying.setTitle(nowPlaying ? R.string.download_show_downloading : R.string.download_show_now_playing); MenuItem shuffle = menu.findItem(R.id.menu_shuffle); shuffle.setVisible(nowPlaying); + MenuItem timer = menu.findItem(R.id.menu_toggle_timer); + timer.setTitle(getDownloadService().getSleepTimer() ? R.string.download_stop_timer : R.string.download_start_timer); return super.onPrepareOptionsMenu(menu); } @@ -624,6 +628,13 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi toggleNowPlaying(); invalidateOptionsMenu(); return true; + case R.id.menu_toggle_timer: + if(getDownloadService().getSleepTimer()) { + getDownloadService().stopSleepTimer(); + } else { + getDownloadService().startSleepTimer(); + } + return true; case R.id.menu_exit: intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/SettingsActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/SettingsActivity.java index bf079448..febfedca 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -57,7 +57,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer private EditTextPreference cacheLocation; private ListPreference preloadCount; private EditTextPreference randomSize; - private ListPreference sleepTimer; private EditTextPreference sleepTimerDuration; @Override @@ -73,7 +72,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer cacheLocation = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_CACHE_LOCATION); preloadCount = (ListPreference) findPreference(Constants.PREFERENCES_KEY_PRELOAD_COUNT); randomSize = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_RANDOM_SIZE); - sleepTimer = (ListPreference) findPreference(Constants.PREFERENCES_KEY_SLEEP_TIMER); sleepTimerDuration = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SLEEP_TIMER_DURATION); findPreference("testConnection1").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @@ -143,10 +141,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer else if (Constants.PREFERENCES_KEY_CACHE_LOCATION.equals(key)) { setCacheLocation(sharedPreferences.getString(key, "")); } - else if(Constants.PREFERENCES_KEY_SLEEP_TIMER.equals(key)){ - DownloadService downloadService = DownloadServiceImpl.getInstance(); - downloadService.setSleepTimerStatus(Integer.parseInt(sharedPreferences.getString(key, "0"))); - } else if (Constants.PREFERENCES_KEY_SLEEP_TIMER_DURATION.equals(key)){ DownloadService downloadService = DownloadServiceImpl.getInstance(); downloadService.setSleepTimerDuration(Integer.parseInt(sharedPreferences.getString(key, "60"))); @@ -166,7 +160,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer cacheLocation.setSummary(cacheLocation.getText()); preloadCount.setSummary(preloadCount.getEntry()); randomSize.setSummary(randomSize.getText()); - sleepTimer.setSummary(sleepTimer.getEntry()); sleepTimerDuration.setSummary(sleepTimerDuration.getText()); for (ServerSettings ss : serverSettings.values()) { ss.update(); diff --git a/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java b/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java index 55bd195d..b1fa732d 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/DownloadService.java @@ -117,7 +117,9 @@ public interface DownloadService { void setSleepTimerDuration(int duration); - void setSleepTimerStatus(int status); - void startSleepTimer(); + + void stopSleepTimer(); + + boolean getSleepTimer(); } diff --git a/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java b/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java index 6218209d..496bd757 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/DownloadServiceImpl.java @@ -110,7 +110,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { private Timer sleepTimer; private int timerDuration; - private int timerStatus; static { try { @@ -175,7 +174,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { SharedPreferences prefs = Util.getPreferences(this); timerDuration = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_SLEEP_TIMER_DURATION, "60")); - timerStatus = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_SLEEP_TIMER, "0")); sleepTimer = null; instance = this; @@ -517,7 +515,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { @Override public synchronized void play(int index) { - Log.d(TAG, "Play"); play(index, true); } @@ -625,8 +622,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { @Override public synchronized void start() { try { - if(timerStatus > 0) - startSleepTimer(); if (jukeboxEnabled) { jukeboxService.start(); } else { @@ -830,8 +825,6 @@ public class DownloadServiceImpl extends Service implements DownloadService { } if (start) { - if(timerStatus > 0) - startSleepTimer(); mediaPlayer.start(); setPlayerState(STARTED); } else { @@ -847,22 +840,10 @@ public class DownloadServiceImpl extends Service implements DownloadService { @Override public void setSleepTimerDuration(int duration){ timerDuration = duration; - if(this.playerState == PlayerState.STARTED && timerStatus > 0) - startSleepTimer(); - } - - @Override - public void setSleepTimerStatus(int status){ - timerStatus = status; - if(this.playerState == PlayerState.STARTED && timerStatus > 0) - startSleepTimer(); } @Override public void startSleepTimer(){ - final SharedPreferences prefs = Util.getPreferences(this); - final SharedPreferences.Editor editor = prefs.edit(); - if(sleepTimer != null){ sleepTimer.cancel(); sleepTimer.purge(); @@ -874,15 +855,27 @@ public class DownloadServiceImpl extends Service implements DownloadService { @Override public void run() { pause(); - if(timerStatus == 1){ - timerStatus = 0; - editor.putString(Constants.PREFERENCES_KEY_SLEEP_TIMER, String.valueOf(timerStatus)); - editor.commit(); - } + sleepTimer.cancel(); + sleepTimer.purge(); + sleepTimer = null; } }, timerDuration * 60 * 1000); } + + @Override + public void stopSleepTimer() { + if(sleepTimer != null){ + sleepTimer.cancel(); + sleepTimer.purge(); + } + sleepTimer = null; + } + + @Override + public boolean getSleepTimer() { + return sleepTimer != null; + } private void handleError(Exception x) { Log.w(TAG, "Media player error: " + x, x); -- cgit v1.2.3