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" />
+