summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2016-03-17 13:58:26 -0700
committerAdnan Begovic <adnan@cyngn.com>2016-03-17 14:04:25 -0700
commit57080c360c7dc36fd6094f143b31f3cad36f4998 (patch)
tree82676f015e93cba551ed5fe6708e2cfa47bb318d
parent744827989c78d85bb7874cefc606b39d8647c351 (diff)
downloadpackages_apps_SetupWizard-57080c360c7dc36fd6094f143b31f3cad36f4998.zip
packages_apps_SetupWizard-57080c360c7dc36fd6094f143b31f3cad36f4998.tar.gz
packages_apps_SetupWizard-57080c360c7dc36fd6094f143b31f3cad36f4998.tar.bz2
SetupWizard: Restore last page on setup wizard death.
Since the restore process (or any external setup wizard process) can take a long time to finish execution, save the current page and restore it on recreation when necessary. Change-Id: I575cf58047eb307c95408a0955dd7e5b50a62107 TICKET: CYNGNOS-2233
-rw-r--r--src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java15
-rw-r--r--src/com/cyanogenmod/setupwizard/setup/PageList.java13
-rw-r--r--src/com/cyanogenmod/setupwizard/setup/SetupDataCallbacks.java1
-rw-r--r--src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java36
4 files changed, 65 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java b/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java
index 105facf..edae5c6 100644
--- a/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java
+++ b/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java
@@ -135,6 +135,21 @@ public abstract class AbstractSetupData extends BroadcastReceiver implements Set
doPreviousNext(runnable);
}
+ @Override
+ public void setCurrentPage(String key) {
+ if (mPageList.getPage(key) != null) {
+ mCurrentPageIndex = mPageList.getPageIndex(key);
+ }
+ }
+
+ public Page getNextPage(String key) {
+ if (mPageList.getPage(key) != null) {
+ int currentPageIndex = mPageList.getPageIndex(key);
+ return mPageList.getPage(currentPageIndex + 1);
+ }
+ return null;
+ }
+
private boolean advanceToNextUnhidden() {
while (mCurrentPageIndex < mPageList.size()) {
mCurrentPageIndex++;
diff --git a/src/com/cyanogenmod/setupwizard/setup/PageList.java b/src/com/cyanogenmod/setupwizard/setup/PageList.java
index 6709d47..dcb5bc1 100644
--- a/src/com/cyanogenmod/setupwizard/setup/PageList.java
+++ b/src/com/cyanogenmod/setupwizard/setup/PageList.java
@@ -16,6 +16,8 @@
package com.cyanogenmod.setupwizard.setup;
+import android.text.TextUtils;
+
import java.util.LinkedHashMap;
public class PageList extends LinkedHashMap<String, Page> {
@@ -30,6 +32,17 @@ public class PageList extends LinkedHashMap<String, Page> {
return get(key);
}
+ public int getPageIndex(String key) {
+ int i=0;
+ for (Page page : values()) {
+ if (TextUtils.equals(page.getKey(), key)) {
+ return i;
+ }
+ i++;
+ }
+ return i;
+ }
+
public Page getPage(int index) {
int i=0;
for (Page page : values()) {
diff --git a/src/com/cyanogenmod/setupwizard/setup/SetupDataCallbacks.java b/src/com/cyanogenmod/setupwizard/setup/SetupDataCallbacks.java
index 6b4982b..338c838 100644
--- a/src/com/cyanogenmod/setupwizard/setup/SetupDataCallbacks.java
+++ b/src/com/cyanogenmod/setupwizard/setup/SetupDataCallbacks.java
@@ -26,5 +26,6 @@ public interface SetupDataCallbacks {
boolean isCurrentPage(Page page);
Page getPage(String key);
Page getPage(int key);
+ void setCurrentPage(String key);
void addFinishRunnable(Runnable runnable);
}
diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
index 4a53c17..b3f2db4 100644
--- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
+++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java
@@ -20,6 +20,7 @@ import android.animation.Animator;
import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
@@ -28,7 +29,9 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.UserHandle;
+import android.preference.PreferenceManager;
import android.provider.Settings;
+import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewAnimationUtils;
@@ -42,6 +45,7 @@ import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
+import com.cyanogenmod.setupwizard.setup.GmsAccountPage;
import com.cyanogenmod.setupwizard.setup.Page;
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
import com.cyanogenmod.setupwizard.util.EnableAccessibilityController;
@@ -56,6 +60,7 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
ThemeManager.ThemeChangeListener {
private static final String TAG = SetupWizardActivity.class.getSimpleName();
+ private static final String KEY_LAST_PAGE_TAG = "last_page_tag";
private static final int UI_FLAGS = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
@@ -143,6 +148,27 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
if (savedInstanceState != null && savedInstanceState.containsKey("data")) {
mSetupData.load(savedInstanceState.getBundle("data"));
}
+
+ final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+ if (sharedPreferences.contains(KEY_LAST_PAGE_TAG)) {
+ final String lastPage = sharedPreferences.getString(KEY_LAST_PAGE_TAG,
+ mSetupData.getCurrentPage().getKey());
+ final boolean backupEnabled = (Settings.Secure.getInt(getContentResolver(),
+ Settings.Secure.BACKUP_AUTO_RESTORE, 0) == 1) ||
+ (Settings.Secure.getInt(getContentResolver(),
+ Settings.Secure.BACKUP_ENABLED, 0) == 1);
+ if (TextUtils.equals(lastPage, GmsAccountPage.TAG) && backupEnabled) {
+ // We probably already restored, skip ahead!
+ mSetupData.setCurrentPage(mSetupData.getNextPage(lastPage).getKey());
+ } else {
+ // else just restore
+ mSetupData.setCurrentPage(sharedPreferences.getString(KEY_LAST_PAGE_TAG,
+ mSetupData.getCurrentPage().getKey()));
+ }
+ Page page = mSetupData.getCurrentPage();
+ page.doLoadAction(getFragmentManager(), Page.ACTION_NEXT);
+ }
+
mEnableAccessibilityController =
EnableAccessibilityController.getInstance(getApplicationContext());
mRootView.setOnTouchListener(new View.OnTouchListener() {
@@ -190,6 +216,8 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
protected void onDestroy() {
super.onDestroy();
if (mSetupData != null) {
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ prefs.edit().putString(KEY_LAST_PAGE_TAG, mSetupData.getCurrentPage().getKey()).apply();
mSetupData.onDestroy();
mSetupData.unregisterListener(this);
unregisterReceiver(mSetupData);
@@ -231,6 +259,14 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks,
}
@Override
+ public void setCurrentPage(String key) {
+ Page page = mSetupData.getCurrentPage();
+ if (!isFinishing()) {
+ page.doLoadAction(getFragmentManager(), Page.ACTION_NEXT);
+ }
+ }
+
+ @Override
public void onPageLoaded(Page page) {
updateButtonBar();
enableButtonBar(true);