diff --git a/res/layout/fragment_mainactivity_gotosettings.xml b/res/layout/fragment_mainactivity_gotosettings.xml
index 8d7a839..3a33902 100644
--- a/res/layout/fragment_mainactivity_gotosettings.xml
+++ b/res/layout/fragment_mainactivity_gotosettings.xml
@@ -46,7 +46,7 @@
android:textAppearance="?android:attr/textAppearanceLarge" />
@@ -79,6 +79,29 @@
android:background="@drawable/standard_button"
style="@style/StandardButton"
android:text="@string/ma_button_goto_settings" />
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 95e2087..80eb4c1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -136,6 +136,8 @@
Welcome to ownCloud SMS application. This application let you synchronize your SMS to your ownCloud instance using SMS app.
ownCloud developers\n\
Contributors and issue\'s reporters
+ Synchronize all messages
+ Launch synchronization now
Sync process
diff --git a/src/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java b/src/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java
index 195086b..64acb53 100644
--- a/src/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java
+++ b/src/fr/unix_experience/owncloud_sms/activities/GeneralSettingsActivity.java
@@ -28,15 +28,19 @@ import android.content.SharedPreferences.Editor;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
+import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
+import android.util.Log;
import java.util.List;
import fr.unix_experience.owncloud_sms.R;
+import fr.unix_experience.owncloud_sms.defines.DefaultPrefs;
+import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
public class GeneralSettingsActivity extends PreferenceActivity {
private static final boolean ALWAYS_SIMPLE_PREFS = false;
@@ -73,11 +77,7 @@ public class GeneralSettingsActivity extends PreferenceActivity {
mContext = getBaseContext();
- // Bind the summaries of EditText/List/Dialog/Ringtone preferences to
- // their values. When their values change, their summaries are updated
- // to reflect the new value, per the Android Design guidelines.
- bindPreferenceSummaryToValue(findPreference("sync_frequency"));
- //bindPreferenceSummaryToValue(findPreference("slow_sync_frequency"));
+ bindPreferences();
}
/** {@inheritDoc} */
@@ -114,9 +114,9 @@ public class GeneralSettingsActivity extends PreferenceActivity {
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
- String stringValue = value.toString();
-
if (preference instanceof ListPreference) {
+ String prefKey = preference.getKey();
+ String stringValue = value.toString();
// For list preferences, look up the correct display value in
// the preference's 'entries' list.
ListPreference listPreference = (ListPreference) preference;
@@ -127,9 +127,6 @@ public class GeneralSettingsActivity extends PreferenceActivity {
.setSummary(index >= 0 ? listPreference.getEntries()[index]
: null);
-
- String prefKey = preference.getKey();
-
Account[] myAccountList = mAccountMgr.getAccountsByType(mAccountType);
// Handle sync frequency change
@@ -161,16 +158,6 @@ public class GeneralSettingsActivity extends PreferenceActivity {
}
}
}
- // Network types allowed for sync
- else if(prefKey.equals("sync_wifi") || prefKey.equals("sync_2g") ||
- prefKey.equals("sync_3g") || prefKey.equals("sync_gprs") ||
- prefKey.equals("sync_4g") || prefKey.equals("sync_others")) {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
-
- Editor edit = prefs.edit();
- edit.putBoolean(prefKey, Boolean.parseBoolean(stringValue));
- edit.commit();
- }
// Slow Sync frequency
/*else if (prefKey.equals(new String("slow_sync_frequency"))) {
long syncFreq = Long.parseLong((String)value);
@@ -201,10 +188,22 @@ public class GeneralSettingsActivity extends PreferenceActivity {
}
}
}*/
+ } else if (preference instanceof CheckBoxPreference) {
+ String prefKey = preference.getKey();
+ Boolean boolValue = (Boolean)value;
+ // Network types allowed for sync
+ if(prefKey.equals(new String("sync_wifi")) || prefKey.equals("sync_2g") ||
+ prefKey.equals(new String("sync_3g")) || prefKey.equals("sync_gprs") ||
+ prefKey.equals("sync_4g") || prefKey.equals("sync_others")) {
+ Log.d("FUCK",prefKey + " " + boolValue.toString());
+
+ OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(mContext);
+ prefs.putBoolean(prefKey, boolValue);
+ }
} else {
// For all other preferences, set the summary to the value's
// simple string representation.
- preference.setSummary(stringValue);
+ //preference.setSummary(boolValue);
}
return true;
}
@@ -219,7 +218,24 @@ public class GeneralSettingsActivity extends PreferenceActivity {
*
* @see #sBindPreferenceSummaryToValueListener
*/
- private static void bindPreferenceSummaryToValue(Preference preference) {
+ private static void bindPreferenceBooleanToValue(Preference preference, Boolean defValue) {
+ // Set the listener to watch for value changes.
+ preference
+ .setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
+
+ // Trigger the listener immediately with the preference's
+ // current value.
+ sBindPreferenceSummaryToValueListener.onPreferenceChange(
+ preference,
+ PreferenceManager.getDefaultSharedPreferences(
+ preference.getContext()).getBoolean(
+ preference.getKey(),
+ defValue
+ )
+ );
+ }
+
+ private static void bindPreferenceStringToValue(Preference preference) {
// Set the listener to watch for value changes.
preference
.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
@@ -251,8 +267,29 @@ public class GeneralSettingsActivity extends PreferenceActivity {
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
- bindPreferenceSummaryToValue(findPreference("sync_frequency"));
+ bindPreferenceStringToValue(findPreference("sync_frequency"));
+ bindPreferenceBooleanToValue(findPreference("sync_wifi"), DefaultPrefs.syncWifi);
+ bindPreferenceBooleanToValue(findPreference("sync_4g"), DefaultPrefs.sync4G);
+ bindPreferenceBooleanToValue(findPreference("sync_3g"), DefaultPrefs.sync3G);
+ bindPreferenceBooleanToValue(findPreference("sync_gprs"), DefaultPrefs.syncGPRS);
+ bindPreferenceBooleanToValue(findPreference("sync_2g"), DefaultPrefs.sync2G);
+ bindPreferenceBooleanToValue(findPreference("sync_others"), DefaultPrefs.syncOthers);
//bindPreferenceSummaryToValue(findPreference("slow_sync_frequency"));
}
}
+
+ private void bindPreferences() {
+ mContext = getBaseContext();
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences to
+ // their values. When their values change, their summaries are updated
+ // to reflect the new value, per the Android Design guidelines.
+ bindPreferenceStringToValue(findPreference("sync_frequency"));
+ bindPreferenceBooleanToValue(findPreference("sync_wifi"), DefaultPrefs.syncWifi);
+ bindPreferenceBooleanToValue(findPreference("sync_4g"), DefaultPrefs.sync4G);
+ bindPreferenceBooleanToValue(findPreference("sync_3g"), DefaultPrefs.sync3G);
+ bindPreferenceBooleanToValue(findPreference("sync_gprs"), DefaultPrefs.syncGPRS);
+ bindPreferenceBooleanToValue(findPreference("sync_2g"), DefaultPrefs.sync2G);
+ bindPreferenceBooleanToValue(findPreference("sync_others"), DefaultPrefs.syncOthers);
+ }
}
diff --git a/src/fr/unix_experience/owncloud_sms/activities/MainActivity.java b/src/fr/unix_experience/owncloud_sms/activities/MainActivity.java
index fdb86bf..09c17de 100644
--- a/src/fr/unix_experience/owncloud_sms/activities/MainActivity.java
+++ b/src/fr/unix_experience/owncloud_sms/activities/MainActivity.java
@@ -28,7 +28,13 @@ package fr.unix_experience.owncloud_sms.activities;
import java.util.List;
import java.util.Vector;
+import org.json.JSONArray;
+
import fr.unix_experience.owncloud_sms.R;
+import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor;
+import fr.unix_experience.owncloud_sms.engine.SmsFetcher;
+import fr.unix_experience.owncloud_sms.engine.ASyncTask.SyncTask;
+import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
@@ -39,6 +45,7 @@ import android.provider.Settings;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -151,6 +158,20 @@ public class MainActivity extends Activity {
public void openAddAccount(View view) {
startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
}
+
+ public void syncAllMessages(View view) {
+ ConnectivityMonitor cMon = new ConnectivityMonitor(getApplicationContext());
+
+ if (cMon.isValid()) {
+ // Now fetch messages since last stored date
+ JSONArray smsList = new SmsFetcher(getApplicationContext())
+ .bufferizeMessagesSinceDate((long) 0);
+
+ if (smsList != null) {
+ new SyncTask(getApplicationContext(), smsList).execute();
+ }
+ }
+ }
public void openGooglePlayStore(View view) {
Intent intent;
diff --git a/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java b/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java
index d0d67c8..21b5d88 100644
--- a/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java
+++ b/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java
@@ -34,12 +34,11 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncTask
public void onReceive(Context context, Intent intent) {
ConnectivityMonitor cMon = new ConnectivityMonitor(context);
- Log.d(TAG, "test");
// If data is available and previous dataConnectionState was false, then we need to sync
if (cMon.isValid() && dataConnectionAvailable == false) {
dataConnectionAvailable = true;
Log.d(TAG,"ConnectivityChanged.onReceive, data conn available");
- checkMessagesToSend(context);
+ checkMessagesAndSend(context);
}
// No data available and previous dataConnectionState was true
else if (dataConnectionAvailable == true && !cMon.isValid()) {
@@ -48,7 +47,7 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncTask
}
}
- private void checkMessagesToSend(Context context) {
+ private void checkMessagesAndSend(Context context) {
// Get last message synced from preferences
Long lastMessageSynced = (new OCSMSSharedPrefs(context)).getLastMessageDate();
Log.d(TAG,"Synced Last:" + lastMessageSynced);
@@ -56,7 +55,10 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncTask
// Now fetch messages since last stored date
JSONArray smsList = new SmsFetcher(context).bufferizeMessagesSinceDate(lastMessageSynced);
- if (smsList != null) {
+ ConnectivityMonitor cMon = new ConnectivityMonitor(context);
+
+ // Synchronize if network is valid and there are SMS
+ if (cMon.isValid() && smsList != null) {
new SyncTask(context, smsList).execute();
}
}
diff --git a/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java b/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java
index 765536c..fbc869f 100644
--- a/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java
+++ b/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java
@@ -16,12 +16,10 @@ package fr.unix_experience.owncloud_sms.engine;
* You should have received a copy of the GNU Affero General Public License
*/
-import fr.unix_experience.owncloud_sms.defines.DefaultPrefs;
+import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs;
import android.content.Context;
-import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
-import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
public class ConnectivityMonitor {
@@ -42,21 +40,21 @@ public class ConnectivityMonitor {
// Load the connectivity manager to determine on which network we are connected
NetworkInfo netInfo = _cMgr.getActiveNetworkInfo();
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
+ OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(_context);
// Check
switch (netInfo.getType()) {
case ConnectivityManager.TYPE_WIFI:
- return prefs.getBoolean("sync_wifi", DefaultPrefs.syncWifi);
+ return prefs.syncInWifi();
case ConnectivityManager.TYPE_MOBILE:
switch (netInfo.getSubtype()) {
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
- return prefs.getBoolean("sync_2g", DefaultPrefs.sync2G);
+ return prefs.syncIn2G();
case TelephonyManager.NETWORK_TYPE_GPRS:
- return prefs.getBoolean("sync_gprs", DefaultPrefs.syncGPRS);
+ return prefs.syncInGPRS();
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
@@ -64,14 +62,14 @@ public class ConnectivityMonitor {
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_HSPAP:
- return prefs.getBoolean("sync_3g", DefaultPrefs.sync3G);
+ return prefs.syncIn3G();
case TelephonyManager.NETWORK_TYPE_LTE:
- return prefs.getBoolean("sync_4g", DefaultPrefs.sync3G);
+ return prefs.syncIn4G();
default:
- return prefs.getBoolean("sync_others", DefaultPrefs.syncOthers);
+ return prefs.syncInOtherModes();
}
default:
- return prefs.getBoolean("sync_others", DefaultPrefs.syncOthers);
+ return prefs.syncInOtherModes();
}
diff --git a/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java b/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java
index 9355a15..2f8cb0f 100644
--- a/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java
+++ b/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java
@@ -20,6 +20,7 @@ package fr.unix_experience.owncloud_sms.observers;
import org.json.JSONArray;
import fr.unix_experience.owncloud_sms.engine.ASyncTask;
+import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor;
import fr.unix_experience.owncloud_sms.engine.OCSMSOwnCloudClient;
import fr.unix_experience.owncloud_sms.engine.SmsFetcher;
import fr.unix_experience.owncloud_sms.enums.MailboxID;
@@ -46,7 +47,10 @@ public class SmsObserver extends ContentObserver implements ASyncTask {
SmsFetcher fetcher = new SmsFetcher(_context);
JSONArray smsList = fetcher.getLastMessage(MailboxID.ALL);
- if (smsList != null) {
+ ConnectivityMonitor cMon = new ConnectivityMonitor(_context);
+
+ // Synchronize if network is valid and there are SMS
+ if (cMon.isValid() && smsList != null) {
new SyncTask(_context, smsList).execute();
}
}
diff --git a/src/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java b/src/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java
index 5d4f96a..b118bbf 100644
--- a/src/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java
+++ b/src/fr/unix_experience/owncloud_sms/prefs/OCSMSSharedPrefs.java
@@ -18,8 +18,10 @@ package fr.unix_experience.owncloud_sms.prefs;
*/
import fr.unix_experience.owncloud_sms.R;
+import fr.unix_experience.owncloud_sms.defines.DefaultPrefs;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
public class OCSMSSharedPrefs {
@@ -29,6 +31,12 @@ public class OCSMSSharedPrefs {
_sPrefs = _context.getSharedPreferences(_context.getString(R.string.shared_preference_file), Context.MODE_PRIVATE);
}
+ public void putBoolean(String prefKey, Boolean boolValue) {
+ Editor edit = _sPrefs.edit();
+ edit.putBoolean(prefKey, boolValue);
+ edit.commit();
+ }
+
public void setLastMessageDate(Long msgDate) {
SharedPreferences.Editor editor = _sPrefs.edit();
editor.putLong(_context.getString(R.string.pref_lastmsgdate), msgDate);
@@ -39,6 +47,30 @@ public class OCSMSSharedPrefs {
return _sPrefs.getLong(_context.getString(R.string.pref_lastmsgdate), 0);
}
+ public Boolean syncInWifi() {
+ return _sPrefs.getBoolean("sync_wifi", DefaultPrefs.syncWifi);
+ }
+
+ public Boolean syncIn2G() {
+ return _sPrefs.getBoolean("sync_2g", DefaultPrefs.sync2G);
+ }
+
+ public Boolean syncInGPRS() {
+ return _sPrefs.getBoolean("sync_gprs", DefaultPrefs.syncGPRS);
+ }
+
+ public Boolean syncIn3G() {
+ return _sPrefs.getBoolean("sync_3g", DefaultPrefs.sync3G);
+ }
+
+ public Boolean syncIn4G() {
+ return _sPrefs.getBoolean("sync_4g", DefaultPrefs.sync4G);
+ }
+
+ public Boolean syncInOtherModes() {
+ return _sPrefs.getBoolean("sync_others", DefaultPrefs.syncOthers);
+ }
+
private SharedPreferences _sPrefs;
private Context _context;
}