aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2013-08-29 21:44:46 -0700
committerScott Jackson <daneren2005@gmail.com>2013-08-29 21:44:46 -0700
commit725eb7a4cf75a263a2515c5f90c28cf8aa201df2 (patch)
tree79d9c0f1f0a96387749e64250a29c2db012720f9
parentd96760a8dc86483c631c0bef721c5807a0908d69 (diff)
downloaddsub-725eb7a4cf75a263a2515c5f90c28cf8aa201df2.tar.gz
dsub-725eb7a4cf75a263a2515c5f90c28cf8aa201df2.tar.bz2
dsub-725eb7a4cf75a263a2515c5f90c28cf8aa201df2.zip
Added sync settings for on, interval, and wifi only
-rw-r--r--res/values/arrays.xml21
-rw-r--r--res/values/strings.xml8
-rw-r--r--res/xml/settings.xml23
-rw-r--r--src/github/daneren2005/dsub/activity/MainActivity.java12
-rw-r--r--src/github/daneren2005/dsub/activity/SettingsActivity.java29
-rw-r--r--src/github/daneren2005/dsub/util/Constants.java3
6 files changed, 91 insertions, 5 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index d6541f9f..b558d68e 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -150,4 +150,25 @@
<item>@string/settings.video_flash</item>
</string-array>
+ <string-array name="syncIntervalValues">
+ <item>15</item>
+ <item>30</item>
+ <item>60</item>
+ <item>120</item>
+ <item>240</item>
+ <item>360</item>
+ <item>720</item>
+ <item>1440</item>
+ </string-array>
+ <string-array name="syncIntervalNames">
+ <item>15 Minutes</item>
+ <item>30 Minutes</item>
+ <item>1 Hour</item>
+ <item>2 Hours</item>
+ <item>3 Hours</item>
+ <item>6 Hours</item>
+ <item>12 Hours</item>
+ <item>Daily</item>
+ </string-array>
+
</resources> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0b2815ec..87667e51 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -298,7 +298,7 @@
<string name="settings.media_button_summary">Respond to phone, headset and Bluetooth media buttons</string>
<string name="settings.screen_lit_title">Keep screen on</string>
<string name="settings.screen_lit_summary">Keeping the screen on while downloading improves download speed.</string>
- <string name="settings.playlist_title">Playlists</string>
+ <string name="settings.playlist_title">Play</string>
<string name="settings.playlist_random_size_title">Random Size</string>
<string name="settings.buffer_length">Buffer Length (0 = when fully cached)</string>
<string name="settings.sleep_timer_title">Sleep Timer</string>
@@ -324,6 +324,12 @@
<string name="settings.video_hls">HTTP Live Stream (HLS) (Requires Subsonic 4.8+)</string>
<string name="settings.video_transcode">Direct Transcode (Requires video -> mp4 or similar setup on Server)</string>
<string name="settings.video_flash">Flash (Requires Plugin)</string>
+ <string name="settings.sync_title">Sync</string>
+ <string name="settings.sync_enabled">Sync Enabled</string>
+ <string name="settings.sync_enabled_summary">Whether or not playlists or podcasts are periodically checked for changes</string>
+ <string name="settings.sync_interval">Sync Interval</string>
+ <string name="settings.sync_wifi">Sync on Wifi only</string>
+ <string name="settings.sync_wifi_summary">Only sync while on wifi</string>
<string name="shuffle.title">Shuffle By</string>
<string name="shuffle.startYear">Start Year:</string>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index eb139b83..feb7a81e 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -151,6 +151,29 @@
</PreferenceCategory>
<PreferenceCategory
+ android:title="@string/settings.sync_title">
+
+ <CheckBoxPreference
+ android:title="@string/settings.sync_enabled"
+ android:summary="@string/settings.sync_enabled_summary"
+ android:key="syncEnabled"
+ android:defaultValue="true"/>
+
+ <ListPreference
+ android:title="@string/settings.sync_interval"
+ android:key="syncInterval"
+ android:defaultValue="60"
+ android:entryValues="@array/syncIntervalValues"
+ android:entries="@array/syncIntervalNames"/>
+
+ <CheckBoxPreference
+ android:title="@string/settings.sync_wifi"
+ android:summary="@string/settings.sync_wifi_summary"
+ android:key="syncWifi"
+ android:defaultValue="true"/>
+ </PreferenceCategory>
+
+ <PreferenceCategory
android:title="@string/button_bar.chat">
<CheckBoxPreference
diff --git a/src/github/daneren2005/dsub/activity/MainActivity.java b/src/github/daneren2005/dsub/activity/MainActivity.java
index 2bcc9176..da46df71 100644
--- a/src/github/daneren2005/dsub/activity/MainActivity.java
+++ b/src/github/daneren2005/dsub/activity/MainActivity.java
@@ -316,11 +316,15 @@ public class MainActivity extends SubsonicActivity {
Account account = new Account(Constants.SYNC_ACCOUNT_NAME, Constants.SYNC_ACCOUNT_TYPE);
accountManager.addAccountExplicitly(account, null, null);
+ SharedPreferences prefs = Util.getPreferences(this);
+ boolean syncEnabled = prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_ENABLED, true);
+ int syncInterval = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_SYNC_INTERVAL, "60"));
+
// Make sync run every hour
- ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, true);
- ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, new Bundle(), 60L * 60L);
- ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, true);
- ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, new Bundle(), 60L * 60L);
+ ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, syncEnabled);
+ ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, new Bundle(), 60L * syncInterval);
+ ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, syncEnabled);
+ ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, new Bundle(), 60L * syncInterval);
}
private void showInfoDialog() {
diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java
index 89d475d3..902c55d8 100644
--- a/src/github/daneren2005/dsub/activity/SettingsActivity.java
+++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java
@@ -18,6 +18,8 @@
*/
package github.daneren2005.dsub.activity;
+import android.accounts.Account;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -73,6 +75,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
private PreferenceCategory serversCategory;
private EditTextPreference chatRefreshRate;
private ListPreference videoPlayer;
+ private ListPreference syncInterval;
private int serverCount = 3;
private SharedPreferences settings;
@@ -100,6 +103,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
serversCategory = (PreferenceCategory) findPreference(Constants.PREFERENCES_KEY_SERVER_KEY);
chatRefreshRate = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_CHAT_REFRESH);
videoPlayer = (ListPreference) findPreference(Constants.PREFERENCES_KEY_VIDEO_PLAYER);
+ syncInterval = (ListPreference) findPreference(Constants.PREFERENCES_KEY_SYNC_INTERVAL);
settings = Util.getPreferences(this);
serverCount = settings.getInt(Constants.PREFERENCES_KEY_SERVER_COUNT, 3);
@@ -163,6 +167,31 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
}
});
+ findPreference(Constants.PREFERENCES_KEY_SYNC_ENABLED).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ Boolean syncEnabled = (Boolean) newValue;
+
+ Account account = new Account(Constants.SYNC_ACCOUNT_NAME, Constants.SYNC_ACCOUNT_TYPE);
+ ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, syncEnabled);
+ ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, syncEnabled);
+
+ return true;
+ }
+ });
+ syncInterval.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ Integer syncInterval = Integer.parseInt(((String) newValue));
+
+ Account account = new Account(Constants.SYNC_ACCOUNT_NAME, Constants.SYNC_ACCOUNT_TYPE);
+ ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, new Bundle(), 60L * syncInterval);
+ ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, new Bundle(), 60L * syncInterval);
+
+ return true;
+ }
+ });
+
serversCategory.removePreference(addServerPreference);
for (int i = 1; i <= serverCount; i++) {
String instance = String.valueOf(i);
diff --git a/src/github/daneren2005/dsub/util/Constants.java b/src/github/daneren2005/dsub/util/Constants.java
index dcc50181..fccd03cd 100644
--- a/src/github/daneren2005/dsub/util/Constants.java
+++ b/src/github/daneren2005/dsub/util/Constants.java
@@ -114,6 +114,9 @@ public final class Constants {
public static final String PREFERENCES_KEY_CHAT_ENABLED = "chatEnabled";
public static final String PREFERENCES_KEY_VIDEO_PLAYER = "videoPlayer";
public static final String PREFERENCES_KEY_CONTROL_MODE = "remoteControlMode";
+ public static final String PREFERENCES_KEY_SYNC_ENABLED = "syncEnabled";
+ public static final String PREFERENCES_KEY_SYNC_INTERVAL = "syncInterval";
+ public static final String PREFERENCES_KEY_SYNC_WIFI = "syncWifi";
public static final String OFFLINE_SCROBBLE_COUNT = "scrobbleCount";
public static final String OFFLINE_SCROBBLE_ID = "scrobbleID";