diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index dcea7127..115bc4f4 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -23,7 +23,8 @@ android:installLocation="auto"> - + @@ -63,7 +64,7 @@ - + diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index 3ff6a6ee..4674ad62 100644 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -233,6 +233,8 @@ Show torrent counter in ADW Launcher Count only downloads ADW counter only includes downloading torrents +Check for updates +Check transdroid.org for latest app version Waiting to check... Verifying local data... diff --git a/android/src/org/transdroid/preferences/Preferences.java b/android/src/org/transdroid/preferences/Preferences.java index ae69231f..1948670e 100644 --- a/android/src/org/transdroid/preferences/Preferences.java +++ b/android/src/org/transdroid/preferences/Preferences.java @@ -141,6 +141,7 @@ public class Preferences { public static final String KEY_PREF_ALARMCOLOUR = "transdroid_alarm_colour"; public static final String KEY_PREF_ADWNOTIFY = "transdroid_alarm_adwnotify"; public static final String KEY_PREF_ADWONLYDL = "transdroid_alarm_adwonlydl"; + public static final String KEY_PREF_CHECKUPDATES = "transdroid_alarm_checkupdates"; public static final String KEY_WIDGET_DAEMON = "transdroid_widget_daemon"; public static final String KEY_WIDGET_REFRESH = "transdroid_widget_refresh"; @@ -1030,7 +1031,8 @@ public class Preferences { prefs.getBoolean(KEY_PREF_ALARMVIBRATE, false), prefs.getInt(KEY_PREF_ALARMCOLOUR, 0xff7dbb21), prefs.getBoolean(KEY_PREF_ADWNOTIFY, false), - prefs.getBoolean(KEY_PREF_ADWONLYDL, false)); + prefs.getBoolean(KEY_PREF_ADWONLYDL, false), + prefs.getBoolean(KEY_PREF_CHECKUPDATES, true)); } /** diff --git a/android/src/org/transdroid/preferences/PreferencesAlarm.java b/android/src/org/transdroid/preferences/PreferencesAlarm.java index 5429cafe..c5638d13 100644 --- a/android/src/org/transdroid/preferences/PreferencesAlarm.java +++ b/android/src/org/transdroid/preferences/PreferencesAlarm.java @@ -44,6 +44,7 @@ public class PreferencesAlarm extends PreferenceActivity { private ColorPickerPreference alarmColour; private TransdroidCheckBoxPreference adwNotify; private TransdroidCheckBoxPreference adwOnlyDl; + private TransdroidCheckBoxPreference checkForUpdates; @Override protected void onCreate(Bundle savedInstanceState) { @@ -128,6 +129,13 @@ public class PreferencesAlarm extends PreferenceActivity { adwOnlyDl.setKey(Preferences.KEY_PREF_ADWONLYDL); adwOnlyDl.setEnabled(isEnabled && isAdwEnabled); getPreferenceScreen().addItemFromInflater(adwOnlyDl); + // Enable + checkForUpdates = new TransdroidCheckBoxPreference(this); + checkForUpdates.setTitle(R.string.pref_checkforupdates); + checkForUpdates.setSummary(R.string.pref_checkforupdates_info); + checkForUpdates.setKey(Preferences.KEY_PREF_CHECKUPDATES); + checkForUpdates.setDefaultValue(true); + getPreferenceScreen().addItemFromInflater(checkForUpdates); prefs.registerOnSharedPreferenceChangeListener(changesHandler); } @@ -149,6 +157,16 @@ public class PreferencesAlarm extends PreferenceActivity { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (key.equals(Preferences.KEY_PREF_CHECKUPDATES)) { + // Only the update checker setting changed + BootReceiver.cancelUpdateCheck(); + boolean shouldCheckForUpdates = sharedPreferences.getBoolean(Preferences.KEY_PREF_CHECKUPDATES, true); + if (shouldCheckForUpdates) { + BootReceiver.startUpdateCheck(getApplicationContext()); + } + return; + } + // First cancel the alarm BootReceiver.cancelAlarm(); diff --git a/android/src/org/transdroid/service/AlarmSettings.java b/android/src/org/transdroid/service/AlarmSettings.java index a10059a0..7754129a 100644 --- a/android/src/org/transdroid/service/AlarmSettings.java +++ b/android/src/org/transdroid/service/AlarmSettings.java @@ -34,8 +34,9 @@ public class AlarmSettings{ private int alarmColour; private boolean adwNotify; private boolean adwOnlyDl; + private boolean checkForUpdates; - public AlarmSettings(boolean enableAlarm, int alarmInterval, boolean checkRssFeeds, boolean alarmPlaySound, String alarmSoundURI, boolean alarmVibrate, int alarmColour, boolean adwNotify, boolean adwOnlyDl) { + public AlarmSettings(boolean enableAlarm, int alarmInterval, boolean checkRssFeeds, boolean alarmPlaySound, String alarmSoundURI, boolean alarmVibrate, int alarmColour, boolean adwNotify, boolean adwOnlyDl, boolean checkForUpdates) { this.enableAlarm = enableAlarm; this.alarmInterval = alarmInterval; this.checkRssFeeds = checkRssFeeds; @@ -45,6 +46,7 @@ public class AlarmSettings{ this.alarmColour = alarmColour; this.adwNotify = adwNotify; this.adwOnlyDl = adwOnlyDl; + this.checkForUpdates = checkForUpdates; } public boolean isAlarmEnabled() { @@ -86,6 +88,10 @@ public class AlarmSettings{ public boolean showOnlyDownloadsInAdw() { return adwOnlyDl; } + + public boolean shouldCheckForUpdates() { + return checkForUpdates; + } } diff --git a/android/src/org/transdroid/service/BootReceiver.java b/android/src/org/transdroid/service/BootReceiver.java index 8256373b..5cad3929 100644 --- a/android/src/org/transdroid/service/BootReceiver.java +++ b/android/src/org/transdroid/service/BootReceiver.java @@ -71,6 +71,12 @@ public class BootReceiver extends BroadcastReceiver { } } + public static void cancelUpdateCheck() { + if (mgr != null) { + mgr.cancel(pui); + } + } + public static void startUpdateCheck(Context context) { // Set up PendingIntent for the alarm service if (mgr == null) diff --git a/android/src/org/transdroid/service/UpdateService.java b/android/src/org/transdroid/service/UpdateService.java index 89526170..284dc38c 100644 --- a/android/src/org/transdroid/service/UpdateService.java +++ b/android/src/org/transdroid/service/UpdateService.java @@ -77,6 +77,14 @@ public class UpdateService extends IntentService { return; } + // Check if the update service should run + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + AlarmSettings settings = Preferences.readAlarmSettings(prefs); + if (!settings.shouldCheckForUpdates()) { + TLog.d(LOG_NAME, "The user disabled the update checker service."); + return; + } + DefaultHttpClient httpclient = new DefaultHttpClient(); try {