Launch a separate activity for long upgrades

pull/14/head
Sam Bosley 13 years ago
parent d6e466f51a
commit 85e57f10b6

@ -167,12 +167,17 @@
<activity android:name="com.todoroo.astrid.activity.ShareActivity"/>
<activity android:name="com.todoroo.astrid.service.UpdateScreenFlow"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Dialog"/>
<activity android:name="com.todoroo.astrid.service.UpdateMessagePreference"
android:theme="@android:style/Theme" />
<activity android:name="com.todoroo.astrid.service.UpgradeService$UpgradeActivity"
android:screenOrientation="portrait"/>
<!-- Start of Crittercism.com Code -->
<activity android:name="com.crittercism.NewFeedbackSpringboardActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"></activity>

@ -67,7 +67,7 @@ public class AstridActivity extends FragmentActivity
public static final int LAYOUT_DOUBLE = 1;
public static final int LAYOUT_TRIPLE = 2;
public static final int RESULT_RESTART_ACTIVITY = 50;
public static final int REQUEST_REBOOT = 100;
protected int fragmentLayout = LAYOUT_SINGLE;
@ -292,16 +292,6 @@ public class AstridActivity extends FragmentActivity
super.onBackPressed();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_RESTART_ACTIVITY) {
finish();
startActivity(getIntent());
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
// --- fragment helpers
protected void removeFragment(String tag) {
@ -389,6 +379,16 @@ public class AstridActivity extends FragmentActivity
DialogUtilities.okDialog(this, getString(errorStr), null);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_REBOOT && resultCode == RESULT_OK) {
finish();
startActivity(getIntent());
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* @return LAYOUT_SINGLE, LAYOUT_DOUBLE, or LAYOUT_TRIPLE
*/

@ -12,7 +12,6 @@ import android.preference.PreferenceActivity;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.AstridActivity;
public class UpdateMessagePreference extends PreferenceActivity {
@ -64,7 +63,7 @@ public class UpdateMessagePreference extends PreferenceActivity {
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
setResult(AstridActivity.RESULT_RESTART_ACTIVITY);
setResult(RESULT_OK);
return true;
}
});

@ -42,6 +42,7 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Pair;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.StoreObjectDao.StoreObjectCriteria;
import com.todoroo.astrid.data.StoreObject;
@ -227,7 +228,7 @@ public class UpdateMessageService {
public void onClick(View widget) {
Intent prefScreen = new Intent(activity, UpdateMessagePreference.class);
prefScreen.putExtra(UpdateMessagePreference.TOKEN_PREFS_ARRAY, prefArray);
activity.startActivityForResult(prefScreen, 0);
activity.startActivityForResult(prefScreen, AstridActivity.REQUEST_REBOOT);
}
};
} catch (JSONException e) {

@ -15,6 +15,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.Property.LongProperty;
@ -29,6 +30,7 @@ import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.Eula;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.backup.TasksXmlExporter;
@ -41,8 +43,8 @@ import com.todoroo.astrid.helper.DueDateTimeMigrator;
import com.todoroo.astrid.notes.NoteMetadata;
import com.todoroo.astrid.producteev.sync.ProducteevDataService;
import com.todoroo.astrid.service.abtesting.ABChooser;
import com.todoroo.astrid.tags.TagCaseMigrator;
import com.todoroo.astrid.tags.Astrid44SyncMigrator;
import com.todoroo.astrid.tags.TagCaseMigrator;
import com.todoroo.astrid.utility.AstridPreferences;
@ -148,7 +150,7 @@ public final class UpgradeService {
* @param from
* @param to
*/
public void performUpgrade(final Context context, final int from) {
public void performUpgrade(final Activity context, final int from) {
if(from == 135)
AddOnService.recordOem();
@ -159,22 +161,37 @@ public final class UpgradeService {
Preferences.setString(R.string.p_theme, "black"); //$NON-NLS-1$
}
if( from<= V3_9_1_1) {
if(from <= V3_9_1_1) {
actFmPreferenceService.clearLastSyncDate();
}
// long running tasks: pop up a progress dialog
final String lastSetVersionName = AstridPreferences.getCurrentVersionName();
Preferences.setInt(AstridPreferences.P_UPGRADE_FROM, from);
if (from > 0) {
boolean separateActivity = from < V4_4_0 // If from < 4_4_0, launch a new activity to block the UI
&& context instanceof AstridActivity;
if (separateActivity) {
Intent upgrade = new Intent(context, UpgradeActivity.class);
upgrade.putExtra(UpgradeActivity.TOKEN_FROM, from);
upgrade.putExtra(UpgradeActivity.TOKEN_VERSION_NAME, lastSetVersionName);
context.startActivityForResult(upgrade, AstridActivity.REQUEST_REBOOT);
} else {
startUpgradeThread(context, from, lastSetVersionName, null);
}
}
}
private void startUpgradeThread(final Activity context, final int from, final String lastSetVersionName, final Runnable done) {
// long running tasks: pop up a progress dialog
final ProgressDialog dialog;
if(from < V4_4_0 && context instanceof Activity)
if(from < V4_4_0)
dialog = DialogUtilities.progressDialog(context,
context.getString(R.string.DLG_upgrading));
else
dialog = null;
final String lastSetVersionName = AstridPreferences.getCurrentVersionName();
Preferences.setInt(AstridPreferences.P_UPGRADE_FROM, from);
new Thread(new Runnable() {
@Override
public void run() {
@ -203,12 +220,37 @@ public final class UpgradeService {
} finally {
DialogUtilities.dismissDialog((Activity)context, dialog);
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
if (done != null)
context.runOnUiThread(done);
}
}
}).start();
}
private class UpgradeActivity extends Activity {
public static final String TOKEN_FROM = "token_from"; //$NON-NLS-1$
public static final String TOKEN_VERSION_NAME = "token_version"; //$NON-NLS-1$
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
int from = getIntent().getIntExtra(TOKEN_FROM, 0);
String lastSetVersionName = getIntent().getStringExtra(TOKEN_VERSION_NAME);
startUpgradeThread(this, from, lastSetVersionName, new Runnable() {
@Override
public void run() {
setResult(RESULT_OK);
finish();
}
});
}
}
/**
* Return a change log string. Releases occur often enough that we don't
* expect change sets to be localized.

Loading…
Cancel
Save