If a migration is required, launch a separate activity to deal with it

pull/14/head
Sam Bosley 13 years ago
parent e5ff5188eb
commit 688f9053a4

@ -6,8 +6,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="4.4.1-subtasks" android:versionName="4.4.2-subtasks"
android:versionCode="286"> android:versionCode="287">
<!-- widgets, alarms, and services will break if Astrid is installed on SD card --> <!-- widgets, alarms, and services will break if Astrid is installed on SD card -->
<!-- android:installLocation="internalOnly"> --> <!-- android:installLocation="internalOnly"> -->
@ -174,6 +174,10 @@
<activity android:name="com.todoroo.astrid.service.UpdateMessagePreference" <activity android:name="com.todoroo.astrid.service.UpdateMessagePreference"
android:theme="@android:style/Theme" /> android:theme="@android:style/Theme" />
<activity android:name="com.todoroo.astrid.service.UpgradeService$UpgradeActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme" />
<!-- Start of Crittercism.com Code --> <!-- Start of Crittercism.com Code -->
<activity android:name="com.crittercism.NewFeedbackSpringboardActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"></activity> <activity android:name="com.crittercism.NewFeedbackSpringboardActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"></activity>
<activity android:name="com.crittercism.NewFeedbackIssueListActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"></activity> <activity android:name="com.crittercism.NewFeedbackIssueListActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"></activity>

@ -15,6 +15,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
@ -40,12 +41,14 @@ import com.todoroo.astrid.helper.DueDateTimeMigrator;
import com.todoroo.astrid.notes.NoteMetadata; import com.todoroo.astrid.notes.NoteMetadata;
import com.todoroo.astrid.producteev.sync.ProducteevDataService; import com.todoroo.astrid.producteev.sync.ProducteevDataService;
import com.todoroo.astrid.service.abtesting.ABChooser; import com.todoroo.astrid.service.abtesting.ABChooser;
import com.todoroo.astrid.subtasks.SubtasksMetadataMigration;
import com.todoroo.astrid.tags.TagCaseMigrator; import com.todoroo.astrid.tags.TagCaseMigrator;
import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.AstridPreferences;
public final class UpgradeService { public final class UpgradeService {
public static final int V4_4_2 = 287;
public static final int V4_4_1 = 286; public static final int V4_4_1 = 286;
public static final int V4_4 = 285; public static final int V4_4 = 285;
public static final int V4_3_4_2 = 284; public static final int V4_3_4_2 = 284;
@ -149,7 +152,7 @@ public final class UpgradeService {
* @param from * @param from
* @param to * @param to
*/ */
public void performUpgrade(final Context context, final int from) { public void performUpgrade(final Activity context, final int from) {
if(from == 135) if(from == 135)
AddOnService.recordOem(); AddOnService.recordOem();
@ -160,37 +163,54 @@ public final class UpgradeService {
Preferences.setString(R.string.p_theme, "black"); //$NON-NLS-1$ Preferences.setString(R.string.p_theme, "black"); //$NON-NLS-1$
} }
if( from<= V3_9_1_1) { if(from <= V3_9_1_1) {
actFmPreferenceService.clearLastSyncDate(); actFmPreferenceService.clearLastSyncDate();
} }
// long running tasks: pop up a progress dialog // long running tasks: pop up a progress dialog
final ProgressDialog dialog; final ProgressDialog dialog;
if(from < V4_0_6 && context instanceof Activity)
dialog = DialogUtilities.progressDialog(context, int maxWithUpgrade = V4_4_2; // The last version that required a migration
context.getString(R.string.DLG_upgrading));
else
dialog = null;
final String lastSetVersionName = AstridPreferences.getCurrentVersionName(); final String lastSetVersionName = AstridPreferences.getCurrentVersionName();
Preferences.setInt(AstridPreferences.P_UPGRADE_FROM, from); Preferences.setInt(AstridPreferences.P_UPGRADE_FROM, from);
new Thread(new Runnable() { if(from < maxWithUpgrade) {
Intent upgrade = new Intent(context, UpgradeActivity.class);
upgrade.putExtra(UpgradeActivity.TOKEN_FROM_VERSION, from);
context.startActivity(upgrade);
}
}
private static class UpgradeActivity extends Activity {
@Autowired
private TaskService taskService;
private ProgressDialog dialog;
public static final String TOKEN_FROM_VERSION = "from_version"; //$NON-NLS-1$
private int from;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DependencyInjectionService.getInstance().inject(this);
from = getIntent().getIntExtra(TOKEN_FROM_VERSION, -1);
if (from > 0) {
dialog = DialogUtilities.progressDialog(this,
getString(R.string.DLG_upgrading));
new Thread() {
@Override @Override
public void run() { public void run() {
try { try {
// NOTE: This line should be uncommented whenever any new version requires a data migration
// TasksXmlExporter.exportTasks(context, TasksXmlExporter.ExportType.EXPORT_TYPE_ON_UPGRADE, null, null, lastSetVersionName);
if(from < V3_0_0) if(from < V3_0_0)
new Astrid2To3UpgradeHelper().upgrade2To3(context, from); new Astrid2To3UpgradeHelper().upgrade2To3(UpgradeActivity.this, from);
if(from < V3_1_0) if(from < V3_1_0)
new Astrid2To3UpgradeHelper().upgrade3To3_1(context, from); new Astrid2To3UpgradeHelper().upgrade3To3_1(UpgradeActivity.this, from);
if(from < V3_8_3_1) if(from < V3_8_3_1)
new TagCaseMigrator().performTagCaseMigration(context); new TagCaseMigrator().performTagCaseMigration(UpgradeActivity.this);
if(from < V3_8_4 && Preferences.getBoolean(R.string.p_showNotes, false)) if(from < V3_8_4 && Preferences.getBoolean(R.string.p_showNotes, false))
taskService.clearDetails(Task.NOTES.neq("")); //$NON-NLS-1$ taskService.clearDetails(Task.NOTES.neq("")); //$NON-NLS-1$
@ -198,13 +218,20 @@ public final class UpgradeService {
if (from < V4_0_6) if (from < V4_0_6)
new DueDateTimeMigrator().migrateDueTimes(); new DueDateTimeMigrator().migrateDueTimes();
if (from < V4_4_2)
new SubtasksMetadataMigration().performMigration();
} finally { } finally {
DialogUtilities.dismissDialog((Activity)context, dialog); DialogUtilities.dismissDialog(UpgradeActivity.this, dialog);
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH)); sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
finish();
}
};
}.start();
} else {
finish();
} }
} }
}).start();
} }
/** /**

Loading…
Cancel
Save