Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2019-02-07 01:35:49 +0300
committerstefan-niedermann <info@niedermann.it>2019-02-07 01:35:49 +0300
commit1998c04b3ec731b52ae50e004a7ae8c93561edcf (patch)
treebc35c0c16ce14ffd32b4f62cd58c5157308c0849 /app
parentb1b2d64cb754e7409a5829d7ef6476412f0afce4 (diff)
#519 Synchronize on Wi-Fi only
- Add preference - Add check in isSyncPossible() - Add strings and resources
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/android/fragment/PreferencesFragment.java32
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/NoteServerSyncHelper.java11
-rw-r--r--app/src/main/res/drawable/ic_wifi_black_24dp.xml5
-rw-r--r--app/src/main/res/values/strings.xml4
-rw-r--r--app/src/main/res/xml/preferences.xml7
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 &#8230;</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"