From 375bc264237307582031e2f0f2ae873800d3145d Mon Sep 17 00:00:00 2001 From: Tim Su Date: Wed, 4 Aug 2010 02:57:06 -0700 Subject: [PATCH] Powerpack by default, expiration in september, fixed alert dialog so it wouldn't crash --- astrid/AndroidManifest.xml | 2 +- .../andlib/utility/DialogUtilities.java | 11 ++--- .../astrid/backup/BackupPreferences.java | 2 +- .../astrid/timers/TimerActionExposer.java | 2 +- .../astrid/activity/TaskEditActivity.java | 2 +- .../astrid/activity/TaskListActivity.java | 5 ++- .../todoroo/astrid/service/AddOnService.java | 40 ++++++++++++++----- .../service/Astrid2To3UpgradeHelper.java | 9 +++-- .../com/todoroo/astrid/utility/Constants.java | 2 +- .../upgrade/Astrid2To3UpgradeTests.java | 3 +- 10 files changed, 51 insertions(+), 27 deletions(-) diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 4c4d0001b..885ffd3ce 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -1,7 +1,7 @@ diff --git a/astrid/common-src/com/todoroo/andlib/utility/DialogUtilities.java b/astrid/common-src/com/todoroo/andlib/utility/DialogUtilities.java index e25fc496f..f0e69e976 100644 --- a/astrid/common-src/com/todoroo/andlib/utility/DialogUtilities.java +++ b/astrid/common-src/com/todoroo/andlib/utility/DialogUtilities.java @@ -41,7 +41,7 @@ public class DialogUtilities { .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(android.R.string.ok, okListener) .setNegativeButton(android.R.string.cancel, cancelListener) - .show(); + .show().setOwnerActivity(activity); } }); } @@ -62,7 +62,7 @@ public class DialogUtilities { .setMessage(text) .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(android.R.string.ok, okListener) - .show(); + .show().setOwnerActivity(activity); } }); } @@ -83,7 +83,7 @@ public class DialogUtilities { .setMessage(text) .setIcon(icon) .setPositiveButton(android.R.string.ok, okListener) - .show(); + .show().setOwnerActivity(activity); } }); } @@ -108,7 +108,7 @@ public class DialogUtilities { .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(android.R.string.ok, okListener) .setNegativeButton(android.R.string.cancel, cancelListener) - .show(); + .show().setOwnerActivity(activity); } }); } @@ -132,7 +132,7 @@ public class DialogUtilities { .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(android.R.string.ok, okListener) .setNegativeButton(android.R.string.cancel, cancelListener) - .show(); + .show().setOwnerActivity(activity); } }); } @@ -149,6 +149,7 @@ public class DialogUtilities { dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setMessage(text); dialog.show(); + dialog.setOwnerActivity((Activity)context); return dialog; } diff --git a/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java b/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java index f5777dd0a..00a3f5de6 100644 --- a/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java +++ b/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java @@ -60,7 +60,7 @@ public class BackupPreferences extends TodorooPreferences { } }); - if(!PluginServices.getAddOnService().isPowerPack()) { + if(!PluginServices.getAddOnService().hasPowerPack()) { Preference restorePreference = new Preference(this); restorePreference.setTitle(R.string.backup_BPr_how_to_restore); restorePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { diff --git a/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionExposer.java b/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionExposer.java index 81748fdff..b530b6a3b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionExposer.java @@ -31,7 +31,7 @@ public class TimerActionExposer extends BroadcastReceiver { if(taskId == -1) return; - if(!PluginServices.getAddOnService().isPowerPack()) + if(!PluginServices.getAddOnService().hasPowerPack()) return; Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TIMER_START, diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index 0ca7f11ef..d8bbc2085 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -215,7 +215,7 @@ public final class TaskEditActivity extends TabActivity { controls.add(new RepeatControlSet(this, extrasAddons)); LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons); - if(addOnService.isPowerPack()) { + if(addOnService.hasPowerPack()) { controls.add(new GCalControlSet(this, addonsAddons)); separator(addonsAddons); controls.add(new TimerControlSet(this, addonsAddons)); diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index cc138eb16..e7076dba6 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -56,6 +56,7 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.TaskAction; import com.todoroo.astrid.api.TaskDecoration; +import com.todoroo.astrid.backup.BackupActivity; import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; @@ -213,9 +214,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener { if(!Constants.SYNC && MilkPreferences.class.getName().equals(resolveInfo.activityInfo.name)) continue; - /*if(!addOnService.isPowerPack() && + if(!addOnService.hasPowerPack() && BackupActivity.class.getName().equals(resolveInfo.activityInfo.name)) - continue;*/ + continue; item = menu.add(Menu.NONE, MENU_ADDON_INTENT_ID, Menu.NONE, resolveInfo.loadLabel(pm)); diff --git a/astrid/src/com/todoroo/astrid/service/AddOnService.java b/astrid/src/com/todoroo/astrid/service/AddOnService.java index 51686b57a..49d703033 100644 --- a/astrid/src/com/todoroo/astrid/service/AddOnService.java +++ b/astrid/src/com/todoroo/astrid/service/AddOnService.java @@ -6,6 +6,7 @@ import java.util.concurrent.atomic.AtomicInteger; import android.app.Activity; import android.app.AlertDialog; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -14,6 +15,7 @@ import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; +import android.widget.Button; import com.timsu.astrid.R; import com.todoroo.andlib.service.ContextManager; @@ -44,7 +46,7 @@ public class AddOnService { public static final String POWER_PACK_LABEL = "Astrid Power Pack"; /** Checks whether power pack should be enabled */ - public boolean isPowerPack() { + public boolean hasPowerPack() { if (Preferences.getBoolean(PREF_OEM, false)) return true; else if(isInstalled(POWER_PACK_PACKAGE, true)) @@ -87,38 +89,48 @@ public class AddOnService { }; public static void checkForUpgrades(final Activity activity) { - final AtomicInteger countdown = new AtomicInteger(10); if(DateUtilities.now() > Constants.UPGRADE.getTime()) { - + final AtomicInteger countdown = new AtomicInteger(10); final AlertDialog dialog = new AlertDialog.Builder(activity) .setTitle(R.string.DLG_information_title) .setMessage(R.string.DLG_please_update) .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(R.string.DLG_to_market, new MarketClickListener(activity, activity.getPackageName())) - .setNegativeButton(countdown.toString(), null) + .setNegativeButton(countdown.toString(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface myDialog, int which) { + // do nothing! + } + }) .setCancelable(false) .show(); - dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false); + dialog.setOwnerActivity(activity); + dialog.getButton(Dialog.BUTTON_NEGATIVE).setEnabled(false); final Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { final int number = countdown.addAndGet(-1); - if(number == 0) - timer.cancel(); activity.runOnUiThread(new Runnable() { public void run() { + Button negativeButton = + dialog.getButton(AlertDialog.BUTTON_NEGATIVE); + if(negativeButton == null) + return; + if(number == 0) + timer.cancel(); + if(number == 0) { dialog.setCancelable(true); - dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setText( + negativeButton.setText( android.R.string.ok); - dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(true); + negativeButton.setEnabled(true); } else { - dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setText( - Integer.toString(number)); + negativeButton.setEnabled(false); + negativeButton.setText(Integer.toString(number)); } } }); @@ -149,6 +161,11 @@ public class AddOnService { * @return */ private boolean isInstalled(String packageName, boolean internal) { + if(POWER_PACK_PACKAGE.equals(packageName)) + return true; + if(LOCALE_PACKAGE.equals(packageName)) + return true; + Context context = ContextManager.getContext(); PackageInfo packageInfo; try { @@ -162,6 +179,7 @@ public class AddOnService { return false; if(!internal) return true; + return "30820265308201cea00302010202044954bd9c300d06092a864886f70d01010505003076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d2053753020170d3038313232363131313835325a180f32303633303932393131313835325a3076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d20537530819f300d06092a864886f70d010101050003818d00308189028181008b8f39e02a50e5f50723bb71208e99bd72dd3cb6266054809cce0dc33a38ebf79c2a1ab74264cc6c88d44a5092e34f45fc28c53188ebe5b7511f0e14862598a82e1a84b0c99e62b0603737c09501b92f723d9e561a0eedbc16ab494e93a513d170135e0e55af6bb40a9af1186df4cfe53ec3a6144336f9f8a338341656c5a3bd0203010001300d06092a864886f70d01010505000381810016352860629e5e17d2d747943170ddb8c01f014932cb4462f52295c2f764970e93fa461c73b44a678ecf8ab8480702fb746221a98ade8ab7562cae151be78973dfa47144d70b8d0b73220dd741755f62cc9230264f570ec21a4ab1f11b0528d799d3662d06354b56d0d7d28d05c260876a98151fb4e89b6ce2a5010c52b3e365".equals(packageInfo.signatures[0].toCharsString()); } diff --git a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java index 14961af5d..04555dbf9 100644 --- a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java +++ b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java @@ -1,6 +1,5 @@ package com.todoroo.astrid.service; -import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.StringTokenizer; @@ -118,11 +117,15 @@ public class Astrid2To3UpgradeHelper { public void upgrade2To3(final Context context, final UpgradeService upgradeService, final int from) { // if from < 1 (we don't know what version, and database exists, leave it alone) - if(from < 1 && Arrays.asList(context.databaseList()).contains(database.getName())) + if(from < 1 && checkIfDatabaseExists(context, database.getName())) + return; + + // if you don't have a legacy task table, skip this step + if(!checkIfDatabaseExists(context, tasksTable)) return; // else, if there's already a database table, clear it out (!!!) - if(Arrays.asList(context.databaseList()).contains(database.getName())) + if(checkIfDatabaseExists(context, database.getName())) context.deleteDatabase(database.getName()); database.openForWriting(); diff --git a/astrid/src/com/todoroo/astrid/utility/Constants.java b/astrid/src/com/todoroo/astrid/utility/Constants.java index c3aae847f..e700e0eaa 100644 --- a/astrid/src/com/todoroo/astrid/utility/Constants.java +++ b/astrid/src/com/todoroo/astrid/utility/Constants.java @@ -40,7 +40,7 @@ public final class Constants { /** * Upgrade time */ - public static final Date UPGRADE = new Date(110, 10, 1); + public static final Date UPGRADE = new Date(110, 8, 1); // --- notification id's diff --git a/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java b/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java index f695646b7..e30b1edac 100644 --- a/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java +++ b/tests/src/com/todoroo/astrid/upgrade/Astrid2To3UpgradeTests.java @@ -31,6 +31,7 @@ import com.todoroo.astrid.model.Metadata; import com.todoroo.astrid.model.Task; import com.todoroo.astrid.rmilk.data.MilkTask; import com.todoroo.astrid.service.Astrid2To3UpgradeHelper; +import com.todoroo.astrid.service.UpgradeService; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService.Tag; import com.todoroo.astrid.test.DatabaseTestCase; @@ -88,7 +89,7 @@ public class Astrid2To3UpgradeTests extends DatabaseTestCase { // --- helper methods public void upgrade2To3() { - new Astrid2To3UpgradeHelper().upgrade2To3(125); + new Astrid2To3UpgradeHelper().upgrade2To3(getContext(), new UpgradeService(), 125); } public static void assertDatesEqual(Date old, long newDate) {