diff options
author | stefan-niedermann <info@niedermann.it> | 2019-02-07 01:35:49 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-02-07 01:35:49 +0300 |
commit | 1998c04b3ec731b52ae50e004a7ae8c93561edcf (patch) | |
tree | bc35c0c16ce14ffd32b4f62cd58c5157308c0849 /app | |
parent | b1b2d64cb754e7409a5829d7ef6476412f0afce4 (diff) |
#519 Synchronize on Wi-Fi only
- Add preference
- Add check in isSyncPossible()
- Add strings and resources
Diffstat (limited to 'app')
5 files changed, 46 insertions, 13 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java index e3cb0a6f..f1ed2e65 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java @@ -7,9 +7,10 @@ import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.SwitchPreference; -import androidx.annotation.Nullable; +import android.util.Log; import android.widget.Toast; +import androidx.annotation.Nullable; import at.bitfire.cert4android.CustomCertManager; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.util.Notes; @@ -30,21 +31,28 @@ public class PreferencesFragment extends PreferenceFragment { } }); - final SwitchPreference themePref = (SwitchPreference) findPreference(getString(R.string.pref_key_theme)); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); + final SwitchPreference themePref = (SwitchPreference) findPreference(getString(R.string.pref_key_theme)); themePref.setSummary(sp.getBoolean(getString(R.string.pref_key_theme), false) ? - getString(R.string.pref_value_theme_dark) : getString(R.string.pref_value_theme_light)); - themePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - Boolean darkTheme = (Boolean) newValue; - Notes.setAppTheme(darkTheme); - getActivity().setResult(Activity.RESULT_OK); - getActivity().finish(); + getString(R.string.pref_value_theme_dark) : getString(R.string.pref_value_theme_light)); + themePref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + Boolean darkTheme = (Boolean) newValue; + Notes.setAppTheme(darkTheme); + getActivity().setResult(Activity.RESULT_OK); + getActivity().finish(); + return true; + }); - return true; - } + final SwitchPreference wifiOnlyPref = (SwitchPreference) findPreference(getString(R.string.pref_key_wifi_only)); + wifiOnlyPref.setSummary(sp.getBoolean(getString(R.string.pref_key_wifi_only), false) ? + getString(R.string.pref_value_wifi_and_mobile) : getString(R.string.pref_value_wifi_only)); + wifiOnlyPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + Boolean syncOnWifiOnly = (Boolean) newValue; + wifiOnlyPref.setSummary(sp.getBoolean(getString(R.string.pref_key_wifi_only), false) ? + getString(R.string.pref_value_wifi_and_mobile) : getString(R.string.pref_value_wifi_only)); + Log.v("Notes", "syncOnWifiOnly: " + syncOnWifiOnly); + return true; }); } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java index fdccffde..cf214de5 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java @@ -142,7 +142,16 @@ public class NoteServerSyncHelper { * @return true if sync is possible, otherwise false. */ public boolean isSyncPossible() { - return networkConnected && isConfigured(appContext) && cert4androidReady; + boolean onlyWifiGuard = true; + if( + PreferenceManager.getDefaultSharedPreferences(this.appContext) + .getBoolean("wifiOnly", false) && + !((ConnectivityManager) appContext.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { + onlyWifiGuard = false; + Log.d(NoteServerSyncHelper.class.getSimpleName(), "Network available, but no wifi."); + } + + return networkConnected && isConfigured(appContext) && cert4androidReady && onlyWifiGuard; } public CustomCertManager getCustomCertManager() { diff --git a/app/src/main/res/drawable/ic_wifi_black_24dp.xml b/app/src/main/res/drawable/ic_wifi_black_24dp.xml new file mode 100644 index 00000000..d5798991 --- /dev/null +++ b/app/src/main/res/drawable/ic_wifi_black_24dp.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="#666666" android:viewportHeight="24.0" + android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M1,9l2,2c4.97,-4.97 13.03,-4.97 18,0l2,-2C16.93,2.93 7.08,2.93 1,9zM9,17l3,3 3,-3c-1.65,-1.66 -4.34,-1.66 -6,0zM5,13l2,2c2.76,-2.76 7.24,-2.76 10,0l2,-2C15.14,9.14 8.87,9.14 5,13z"/> +</vector> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6528e8a..b1c8a1c3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -55,6 +55,7 @@ <string name="settings_submitting">Connecting …</string> <string name="settings_note_mode">Display mode for Notes</string> <string name="settings_theme_title">Theme</string> + <string name="settings_theme_wifi_only">Sync</string> <string name="settings_cert_category">Manage certificates</string> <string name="settings_cert_trust_system">Trust system certificates</string> <string name="settings_cert_trust_system_on">System and user-added CAs will be trusted (recommended)</string> @@ -139,6 +140,7 @@ <string name="pref_key_reset_trust" translatable="false">resetTrust</string> <string name="pref_key_note_mode" translatable="false">noteMode</string> <string name="pref_key_theme" translatable="false">darkTheme</string> + <string name="pref_key_wifi_only" translatable="false">wifiOnly</string> <string name="pref_key_last_note_mode" translatable="false">lastNoteMode</string> <string name="pref_value_mode_edit" translatable="false">edit</string> <string name="pref_value_mode_preview" translatable="false">preview</string> @@ -146,6 +148,8 @@ <string name="pref_value_mode_note" translatable="false">note</string> <string name="pref_value_theme_light">Light</string> <string name="pref_value_theme_dark">Dark</string> + <string name="pref_value_wifi_only">Sync only on Wi-Fi</string> + <string name="pref_value_wifi_and_mobile">Sync on Wi-Fi and mobile data</string> <!-- Array: note modes --> <string-array name="noteMode_entries"> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b6ff1db7..c60e3062 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -25,6 +25,13 @@ android:summary="%s" android:title="@string/settings_theme_title" /> + <SwitchPreference + android:defaultValue="@string/pref_value_wifi_and_mobile" + android:icon="@drawable/ic_insert_link_black_24dp" + android:key="@string/pref_key_wifi_only" + android:summary="%s" + android:title="@string/settings_theme_wifi_only" /> + <PreferenceScreen android:key="@string/pref_key_certs" android:persistent="false" |