Powerpack by default, expiration in september, fixed alert dialog so it wouldn't crash

pull/14/head
Tim Su 14 years ago
parent 8ecde7feb4
commit 375bc26423

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid" package="com.timsu.astrid"
android:versionName="3.0.5" android:versionCode="144" android:versionName="3.0.6" android:versionCode="145"
android:installLocation="auto"> android:installLocation="auto">
<!-- ================================================== Used Permissions = --> <!-- ================================================== Used Permissions = -->

@ -41,7 +41,7 @@ public class DialogUtilities {
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.ok, okListener) .setPositiveButton(android.R.string.ok, okListener)
.setNegativeButton(android.R.string.cancel, cancelListener) .setNegativeButton(android.R.string.cancel, cancelListener)
.show(); .show().setOwnerActivity(activity);
} }
}); });
} }
@ -62,7 +62,7 @@ public class DialogUtilities {
.setMessage(text) .setMessage(text)
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.ok, okListener) .setPositiveButton(android.R.string.ok, okListener)
.show(); .show().setOwnerActivity(activity);
} }
}); });
} }
@ -83,7 +83,7 @@ public class DialogUtilities {
.setMessage(text) .setMessage(text)
.setIcon(icon) .setIcon(icon)
.setPositiveButton(android.R.string.ok, okListener) .setPositiveButton(android.R.string.ok, okListener)
.show(); .show().setOwnerActivity(activity);
} }
}); });
} }
@ -108,7 +108,7 @@ public class DialogUtilities {
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.ok, okListener) .setPositiveButton(android.R.string.ok, okListener)
.setNegativeButton(android.R.string.cancel, cancelListener) .setNegativeButton(android.R.string.cancel, cancelListener)
.show(); .show().setOwnerActivity(activity);
} }
}); });
} }
@ -132,7 +132,7 @@ public class DialogUtilities {
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.ok, okListener) .setPositiveButton(android.R.string.ok, okListener)
.setNegativeButton(android.R.string.cancel, cancelListener) .setNegativeButton(android.R.string.cancel, cancelListener)
.show(); .show().setOwnerActivity(activity);
} }
}); });
} }
@ -149,6 +149,7 @@ public class DialogUtilities {
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage(text); dialog.setMessage(text);
dialog.show(); dialog.show();
dialog.setOwnerActivity((Activity)context);
return dialog; return dialog;
} }

@ -60,7 +60,7 @@ public class BackupPreferences extends TodorooPreferences {
} }
}); });
if(!PluginServices.getAddOnService().isPowerPack()) { if(!PluginServices.getAddOnService().hasPowerPack()) {
Preference restorePreference = new Preference(this); Preference restorePreference = new Preference(this);
restorePreference.setTitle(R.string.backup_BPr_how_to_restore); restorePreference.setTitle(R.string.backup_BPr_how_to_restore);
restorePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { restorePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {

@ -31,7 +31,7 @@ public class TimerActionExposer extends BroadcastReceiver {
if(taskId == -1) if(taskId == -1)
return; return;
if(!PluginServices.getAddOnService().isPowerPack()) if(!PluginServices.getAddOnService().hasPowerPack())
return; return;
Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TIMER_START, Task task = PluginServices.getTaskService().fetchById(taskId, Task.ID, Task.TIMER_START,

@ -215,7 +215,7 @@ public final class TaskEditActivity extends TabActivity {
controls.add(new RepeatControlSet(this, extrasAddons)); controls.add(new RepeatControlSet(this, extrasAddons));
LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons); LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons);
if(addOnService.isPowerPack()) { if(addOnService.hasPowerPack()) {
controls.add(new GCalControlSet(this, addonsAddons)); controls.add(new GCalControlSet(this, addonsAddons));
separator(addonsAddons); separator(addonsAddons);
controls.add(new TimerControlSet(this, addonsAddons)); controls.add(new TimerControlSet(this, addonsAddons));

@ -56,6 +56,7 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.TaskAction; import com.todoroo.astrid.api.TaskAction;
import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.api.TaskDecoration;
import com.todoroo.astrid.backup.BackupActivity;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
@ -213,9 +214,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener {
if(!Constants.SYNC && if(!Constants.SYNC &&
MilkPreferences.class.getName().equals(resolveInfo.activityInfo.name)) MilkPreferences.class.getName().equals(resolveInfo.activityInfo.name))
continue; continue;
/*if(!addOnService.isPowerPack() && if(!addOnService.hasPowerPack() &&
BackupActivity.class.getName().equals(resolveInfo.activityInfo.name)) BackupActivity.class.getName().equals(resolveInfo.activityInfo.name))
continue;*/ continue;
item = menu.add(Menu.NONE, MENU_ADDON_INTENT_ID, Menu.NONE, item = menu.add(Menu.NONE, MENU_ADDON_INTENT_ID, Menu.NONE,
resolveInfo.loadLabel(pm)); resolveInfo.loadLabel(pm));

@ -6,6 +6,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
@ -14,6 +15,7 @@ import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.net.Uri; import android.net.Uri;
import android.widget.Button;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
@ -44,7 +46,7 @@ public class AddOnService {
public static final String POWER_PACK_LABEL = "Astrid Power Pack"; public static final String POWER_PACK_LABEL = "Astrid Power Pack";
/** Checks whether power pack should be enabled */ /** Checks whether power pack should be enabled */
public boolean isPowerPack() { public boolean hasPowerPack() {
if (Preferences.getBoolean(PREF_OEM, false)) if (Preferences.getBoolean(PREF_OEM, false))
return true; return true;
else if(isInstalled(POWER_PACK_PACKAGE, true)) else if(isInstalled(POWER_PACK_PACKAGE, true))
@ -87,38 +89,48 @@ public class AddOnService {
}; };
public static void checkForUpgrades(final Activity activity) { public static void checkForUpgrades(final Activity activity) {
final AtomicInteger countdown = new AtomicInteger(10);
if(DateUtilities.now() > Constants.UPGRADE.getTime()) { if(DateUtilities.now() > Constants.UPGRADE.getTime()) {
final AtomicInteger countdown = new AtomicInteger(10);
final AlertDialog dialog = new AlertDialog.Builder(activity) final AlertDialog dialog = new AlertDialog.Builder(activity)
.setTitle(R.string.DLG_information_title) .setTitle(R.string.DLG_information_title)
.setMessage(R.string.DLG_please_update) .setMessage(R.string.DLG_please_update)
.setIcon(android.R.drawable.ic_dialog_alert) .setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(R.string.DLG_to_market, .setPositiveButton(R.string.DLG_to_market,
new MarketClickListener(activity, activity.getPackageName())) 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) .setCancelable(false)
.show(); .show();
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false); dialog.setOwnerActivity(activity);
dialog.getButton(Dialog.BUTTON_NEGATIVE).setEnabled(false);
final Timer timer = new Timer(); final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() { timer.scheduleAtFixedRate(new TimerTask() {
@Override @Override
public void run() { public void run() {
final int number = countdown.addAndGet(-1); final int number = countdown.addAndGet(-1);
if(number == 0)
timer.cancel();
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
public void run() { public void run() {
Button negativeButton =
dialog.getButton(AlertDialog.BUTTON_NEGATIVE);
if(negativeButton == null)
return;
if(number == 0)
timer.cancel();
if(number == 0) { if(number == 0) {
dialog.setCancelable(true); dialog.setCancelable(true);
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setText( negativeButton.setText(
android.R.string.ok); android.R.string.ok);
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(true); negativeButton.setEnabled(true);
} else { } else {
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setText( negativeButton.setEnabled(false);
Integer.toString(number)); negativeButton.setText(Integer.toString(number));
} }
} }
}); });
@ -149,6 +161,11 @@ public class AddOnService {
* @return * @return
*/ */
private boolean isInstalled(String packageName, boolean internal) { 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(); Context context = ContextManager.getContext();
PackageInfo packageInfo; PackageInfo packageInfo;
try { try {
@ -162,6 +179,7 @@ public class AddOnService {
return false; return false;
if(!internal) if(!internal)
return true; return true;
return "30820265308201cea00302010202044954bd9c300d06092a864886f70d01010505003076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d2053753020170d3038313232363131313835325a180f32303633303932393131313835325a3076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d20537530819f300d06092a864886f70d010101050003818d00308189028181008b8f39e02a50e5f50723bb71208e99bd72dd3cb6266054809cce0dc33a38ebf79c2a1ab74264cc6c88d44a5092e34f45fc28c53188ebe5b7511f0e14862598a82e1a84b0c99e62b0603737c09501b92f723d9e561a0eedbc16ab494e93a513d170135e0e55af6bb40a9af1186df4cfe53ec3a6144336f9f8a338341656c5a3bd0203010001300d06092a864886f70d01010505000381810016352860629e5e17d2d747943170ddb8c01f014932cb4462f52295c2f764970e93fa461c73b44a678ecf8ab8480702fb746221a98ade8ab7562cae151be78973dfa47144d70b8d0b73220dd741755f62cc9230264f570ec21a4ab1f11b0528d799d3662d06354b56d0d7d28d05c260876a98151fb4e89b6ce2a5010c52b3e365".equals(packageInfo.signatures[0].toCharsString()); return "30820265308201cea00302010202044954bd9c300d06092a864886f70d01010505003076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d2053753020170d3038313232363131313835325a180f32303633303932393131313835325a3076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d20537530819f300d06092a864886f70d010101050003818d00308189028181008b8f39e02a50e5f50723bb71208e99bd72dd3cb6266054809cce0dc33a38ebf79c2a1ab74264cc6c88d44a5092e34f45fc28c53188ebe5b7511f0e14862598a82e1a84b0c99e62b0603737c09501b92f723d9e561a0eedbc16ab494e93a513d170135e0e55af6bb40a9af1186df4cfe53ec3a6144336f9f8a338341656c5a3bd0203010001300d06092a864886f70d01010505000381810016352860629e5e17d2d747943170ddb8c01f014932cb4462f52295c2f764970e93fa461c73b44a678ecf8ab8480702fb746221a98ade8ab7562cae151be78973dfa47144d70b8d0b73220dd741755f62cc9230264f570ec21a4ab1f11b0528d799d3662d06354b56d0d7d28d05c260876a98151fb4e89b6ce2a5010c52b3e365".equals(packageInfo.signatures[0].toCharsString());
} }

@ -1,6 +1,5 @@
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.StringTokenizer; import java.util.StringTokenizer;
@ -118,11 +117,15 @@ public class Astrid2To3UpgradeHelper {
public void upgrade2To3(final Context context, final UpgradeService upgradeService, final int from) { 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 (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; return;
// else, if there's already a database table, clear it out (!!!) // 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()); context.deleteDatabase(database.getName());
database.openForWriting(); database.openForWriting();

@ -40,7 +40,7 @@ public final class Constants {
/** /**
* Upgrade time * 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 // --- notification id's

@ -31,6 +31,7 @@ import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task; import com.todoroo.astrid.model.Task;
import com.todoroo.astrid.rmilk.data.MilkTask; import com.todoroo.astrid.rmilk.data.MilkTask;
import com.todoroo.astrid.service.Astrid2To3UpgradeHelper; import com.todoroo.astrid.service.Astrid2To3UpgradeHelper;
import com.todoroo.astrid.service.UpgradeService;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TagService.Tag; import com.todoroo.astrid.tags.TagService.Tag;
import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.test.DatabaseTestCase;
@ -88,7 +89,7 @@ public class Astrid2To3UpgradeTests extends DatabaseTestCase {
// --- helper methods // --- helper methods
public void upgrade2To3() { public void upgrade2To3() {
new Astrid2To3UpgradeHelper().upgrade2To3(125); new Astrid2To3UpgradeHelper().upgrade2To3(getContext(), new UpgradeService(), 125);
} }
public static void assertDatesEqual(Date old, long newDate) { public static void assertDatesEqual(Date old, long newDate) {

Loading…
Cancel
Save