diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 18a3c12..f3a7a37 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ + android:targetSdkVersion="23" /> diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java index 594ed7a..22f83eb 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java @@ -56,13 +56,14 @@ public class GeneralSettingsActivity extends NrzSettingsActivity { NrzSettingsActivity._boolPrefs.add(new BindObjectPref("sync_others", DefaultPrefs.syncOthers)); // Bind our string preferences - NrzSettingsActivity._stringPrefs.add(new BindObjectPref("sync_frequency", "")); + NrzSettingsActivity._stringPrefs.add(new BindObjectPref("sync_frequency", "15")); + NrzSettingsActivity._intPrefs.add(new BindObjectPref("sync_bulk_messages", -1)); // Must be at the end, after preference bind super.onPostCreate(savedInstanceState); } - protected static void handleCheckboxPreference(String key, Boolean value) { + protected void handleCheckboxPreference(String key, Boolean value) { // Network types allowed for sync if("push_on_receive".equals(key) || "sync_wifi".equals(key) || "sync_2g".equals(key) || @@ -75,7 +76,7 @@ public class GeneralSettingsActivity extends NrzSettingsActivity { } } - protected static void handleListPreference(String key, String value, + protected void handleListPreference(String key, String value, ListPreference preference) { // For list preferences, look up the correct display value in // the preference's 'entries' list. @@ -86,6 +87,10 @@ public class GeneralSettingsActivity extends NrzSettingsActivity { .setSummary((index >= 0) ? preference.getEntries()[index] : null); + Log.d(TAG, "Modifying listPreference " + key); + + OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(NrzSettingsActivity._context); + // Handle sync frequency change if ("sync_frequency".equals(key)) { Account[] myAccountList = GeneralSettingsActivity._accountMgr.getAccountsByType(GeneralSettingsActivity._accountType); @@ -114,7 +119,12 @@ public class GeneralSettingsActivity extends NrzSettingsActivity { ContentResolver.addPeriodicSync(myAccountList[i], GeneralSettingsActivity._accountAuthority, b, syncFreq * 60); } + + prefs.putLong(key, syncFreq); } } + else if ("sync_bulk_messages".equals(key)) { + prefs.putInteger(key, Integer.parseInt(value)); + } } } diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java index 1df7bd1..3a38f94 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java @@ -194,7 +194,7 @@ public class SmsFetcher { return; } - Cursor c = new SmsDataProvider(_context).query(mbURI, "date > ?", new String[] { sinceDate.toString() }); + Cursor c = new SmsDataProvider(_context).queryMessagesSinceDate(mbURI, sinceDate); // Reading mailbox if ((c != null) && (c.getCount() > 0)) { diff --git a/src/main/java/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java b/src/main/java/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java index 2d76ab9..1d65596 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java @@ -66,4 +66,8 @@ public class OCSMSSharedPrefs extends SharedPrefs { public Boolean syncInOtherModes() { return _sPrefs.getBoolean("sync_others", DefaultPrefs.syncOthers); } + + public Integer getSyncBulkLimit() { + return _sPrefs.getInt("sync_bulk_messages", -1); + } } diff --git a/src/main/java/fr/unix_experience/owncloud_sms/providers/SmsDataProvider.java b/src/main/java/fr/unix_experience/owncloud_sms/providers/SmsDataProvider.java index f5eccd0..d3e2ae4 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/providers/SmsDataProvider.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/providers/SmsDataProvider.java @@ -23,6 +23,9 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.support.annotation.NonNull; +import android.util.Log; + +import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs; public class SmsDataProvider extends ContentProvider { public SmsDataProvider () {} @@ -52,13 +55,23 @@ public class SmsDataProvider extends ContentProvider { } public Cursor queryNonExistingMessages(String mailBox, String existingIds) { + OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(_context); + Integer bulkLimit = prefs.getSyncBulkLimit(); + Log.d(TAG, "Bulk limit is " + bulkLimit.toString()); if (!existingIds.isEmpty()) { - return query(mailBox, "_id NOT IN (" + existingIds + ")"); + return query(mailBox, "_id NOT IN (" + existingIds + ")"); } return query(mailBox); } + public Cursor queryMessagesSinceDate(String mailBox, Long sinceDate) { + OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(_context); + Integer bulkLimit = prefs.getSyncBulkLimit(); + Log.d(TAG, "Bulk limit is " + bulkLimit.toString()); + return query(mailBox, "date > ?", new String[] { sinceDate.toString() }); + } + public Cursor query(String mailBox, String selection, String[] selectionArgs) { return query(Uri.parse(mailBox), new String[] { "read", "date", "address", "seen", "body", "_id", "type", }, @@ -102,4 +115,5 @@ public class SmsDataProvider extends ContentProvider { } private Context _context; + private static final String TAG = SmsDataProvider.class.getSimpleName(); } diff --git a/src/main/res/values-en/strings.xml b/src/main/res/values-en/strings.xml index 0e1253c..4475c4c 100644 --- a/src/main/res/values-en/strings.xml +++ b/src/main/res/values-en/strings.xml @@ -163,5 +163,6 @@ Contributors and issue\'s reporters Contact informations Choose account > Contact phones + Max messages to send per sync diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index ecfa21f..2654b16 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -91,6 +91,4 @@ Proceso de sincronización Sincronización en progreso... Error Fatal ! - Choisissez un compte - Informations sur le contact diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index f425d5e..7b437b4 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -70,6 +70,15 @@ 1440 -1 + + 100 SMS + 1000 SMS + 2000 SMS + 5000 SMS + 10000 SMS + 25000 SMS + Tous les SMS non synchronisés + Pousser le SMS à la réception Synchroniser en Wi-Fi @@ -132,4 +141,12 @@ Les contributeurs et rapporteurs de bugs Erreur #12: Impossible de se connecter à l\'instance ownCloud Erreur #13: Impossible de se connecter à l\'instance ownCloud > Numéros de téléphone associés + Choisissez un compte + Compte distant + Chosissez un compte + Choisissez un contact + Erreur #4: Données invalides reçues lors de la synchronisation. + Erreur #7: Encodage inconnu à la conversion + Erreur #2: Echec de la création de la requête + Nombre maximum de messages à envoyer par synchronisation diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 9ee4055..e504877 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -79,6 +79,24 @@ 1440 -1 + + 100 SMS + 1000 SMS + 2000 SMS + 5000 SMS + 10000 SMS + 25000 SMS + Every SMS not synced + + + 100 + 1000 + 2000 + 5000 + 10000 + 25000 + -1 + 1 hour 3 hours @@ -172,4 +190,5 @@ Contributors and issue\'s reporters Server doesn\'t support this feature. Ensure server version is at least 1.6. Contact informations > Contact phones + Max messages to send per sync diff --git a/src/main/res/xml/pref_data_sync.xml b/src/main/res/xml/pref_data_sync.xml index de90ad4..2789683 100644 --- a/src/main/res/xml/pref_data_sync.xml +++ b/src/main/res/xml/pref_data_sync.xml @@ -9,6 +9,14 @@ android:negativeButtonText="@null" android:positiveButtonText="@null" android:title="@string/pref_title_sync_frequency" /> +