diff options
author | stefan-niedermann <info@niedermann.it> | 2019-12-14 00:20:31 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-12-14 00:20:31 +0300 |
commit | 72fd49a31c2ed298e9f9ee58afcaf8097236dd99 (patch) | |
tree | f3f845ed3fcd1d00c2fb33783938332003c9ea56 /app/src | |
parent | 1e90cad2b2a8cfed31eed5e5ce5fe0fcb82f9e74 (diff) |
#230 Background synchronization
Make setting to en/disable the background sync (Off, 15 Minutes, 1 Hour, 6 Hours)
Diffstat (limited to 'app/src')
6 files changed, 74 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java index 1f6947461..a3dcc624d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java @@ -43,16 +43,30 @@ public class SyncWorker extends Worker { } public static void register(@NonNull Context context) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS) - .setConstraints(constraints) - .build(); - WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.KEEP, work); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); + String backgroundSync = sharedPreferences.getString(context.getString(R.string.pref_key_background_sync), context.getString(R.string.pref_value_background_15_minutes)); + if (!context.getString(R.string.pref_value_background_sync_off).equals(backgroundSync)) { + int repeatInterval = 15; + TimeUnit unit = TimeUnit.MINUTES; + if (context.getString(R.string.pref_value_background_1_hour).equals(backgroundSync)) { + repeatInterval = 1; + unit = TimeUnit.HOURS; + } else if (context.getString(R.string.pref_value_background_6_hours).equals(backgroundSync)) { + repeatInterval = 6; + unit = TimeUnit.HOURS; + } + Constraints constraints = new Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build(); + PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, repeatInterval, unit) + .setConstraints(constraints).build(); + WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.REPLACE, work); + } else { + deregister(context); + } } - public static void deregister(@NonNull Context context) { + private static void deregister(@NonNull Context context) { WorkManager.getInstance(context.getApplicationContext()).cancelAllWorkByTag(TAG); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java index bf9e13213..4925c447d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java @@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui.settings; import android.app.Activity; import android.os.Bundle; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.SwitchPreference; @@ -13,6 +14,7 @@ import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.Application; import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.persistence.sync.SyncWorker; public class SettingsFragment extends PreferenceFragment { @@ -20,6 +22,8 @@ public class SettingsFragment extends PreferenceFragment { String prefKeyWifiOnly; @BindString(R.string.pref_key_dark_theme) String prefKeyDarkTheme; + @BindString(R.string.pref_key_background_sync) + String prefKeyBackgroundSync; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -45,5 +49,12 @@ public class SettingsFragment extends PreferenceFragment { getActivity().recreate(); return true; }); + + final ListPreference backgroundSyncPref = (ListPreference) findPreference(prefKeyBackgroundSync); + backgroundSyncPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + DeckLog.log("backgroundSync: " + newValue); + SyncWorker.register(getActivity().getApplicationContext()); + return true; + }); } } diff --git a/app/src/main/res/drawable/ic_network_wifi_grey600_24dp.xml b/app/src/main/res/drawable/ic_network_wifi_grey600_24dp.xml new file mode 100644 index 000000000..1c3b9a41c --- /dev/null +++ b/app/src/main/res/drawable/ic_network_wifi_grey600_24dp.xml @@ -0,0 +1,6 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#757575" android:viewportHeight="24.0" + android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillAlpha=".3" android:fillColor="#FF000000" android:pathData="M12.01,21.49L23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4C5.28,3 0.81,6.66 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01z"/> + <path android:fillColor="#FF000000" android:pathData="M3.53,10.95l8.46,10.54 0.01,0.01 0.01,-0.01 8.46,-10.54C20.04,10.62 16.81,8 12,8c-4.81,0 -8.04,2.62 -8.47,2.95z"/> +</vector> diff --git a/app/src/main/res/values/setup.xml b/app/src/main/res/values/setup.xml index f25e3291b..e9b860fba 100644 --- a/app/src/main/res/values/setup.xml +++ b/app/src/main/res/values/setup.xml @@ -6,6 +6,26 @@ <string name="pref_key_wifi_only" translatable="false">wifiOnly</string> <string name="pref_key_dark_theme" translatable="false">darkTheme</string> + <string name="pref_key_background_sync" translatable="false">backgroundSync</string> + + <string name="pref_value_background_sync_off">off</string> + <string name="pref_value_background_15_minutes">15_minutes</string> + <string name="pref_value_background_1_hour">1_hour</string> + <string name="pref_value_background_6_hours">6_hours</string> + + <string-array name="background_sync_entries"> + <item>@string/simple_off</item> + <item>@string/minutes_15</item> + <item>@string/hour_1</item> + <item>@string/hours_6</item> + </string-array> + + <string-array name="background_sync_values"> + <item>@string/pref_value_background_sync_off</item> + <item>@string/pref_value_background_15_minutes</item> + <item>@string/pref_value_background_1_hour</item> + <item>@string/pref_value_background_6_hours</item> + </string-array> <!-- To be concatenated with the account id --> <string name="shared_preference_last_board_for_account_" translatable="false">it.niedermann.nextcloud.deck.last_board_for_account_</string> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d571b42cd..35d8f2eb5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -130,6 +130,7 @@ <string name="simple_rename">Rename</string> <string name="simple_settings">Settings</string> <string name="settings_theme_title">Dark theme</string> + <string name="settings_background_sync">Background synchronization</string> <string name="pref_value_wifi_and_mobile">Sync on Wi-Fi and mobile data</string> <string name="pref_value_wifi_only">Sync only on Wi-Fi</string> <string name="pref_value_theme_light">Light</string> @@ -149,4 +150,8 @@ <string name="delete_attachment">Delete %1$s</string> <string name="no_content">No content yet</string> <string name="last_background_sync">Last background sync:</string> + <string name="simple_off">Off</string> + <string name="minutes_15">15 Minutes</string> + <string name="hour_1">1 Hour</string> + <string name="hours_6">6 Hours</string> </resources> diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index 98a7220fa..6a24dce9e 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -3,14 +3,22 @@ <SwitchPreference android:defaultValue="@string/pref_value_wifi_and_mobile" - android:icon="@drawable/ic_sync_grey600_24dp" + android:icon="@drawable/ic_network_wifi_grey600_24dp" android:key="@string/pref_key_wifi_only" android:title="@string/pref_value_wifi_only" /> + <ListPreference + android:defaultValue="@string/minutes_15" + android:entries="@array/background_sync_entries" + android:entryValues="@array/background_sync_values" + android:icon="@drawable/ic_sync_grey600_24dp" + android:key="@string/pref_key_background_sync" + android:summary="%s" + android:title="@string/settings_background_sync" /> + <SwitchPreference android:defaultValue="@string/pref_value_theme_light" android:icon="@drawable/ic_brightness_2_grey600_24dp" android:key="@string/pref_key_dark_theme" android:title="@string/settings_theme_title" /> - </PreferenceScreen> |