replicant-packages_apps_Set.../src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java

252 lines
8.9 KiB
Java

/*
* Copyright (C) 2013 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cyanogenmod.setupwizard.ui;
import android.app.Activity;
import android.app.AppGlobals;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.setup.AbstractSetupData;
import com.cyanogenmod.setupwizard.setup.CMSetupWizardData;
import com.cyanogenmod.setupwizard.setup.CyanogenServicesPage;
import com.cyanogenmod.setupwizard.setup.CyanogenSettingsPage;
import com.cyanogenmod.setupwizard.setup.Page;
import com.cyanogenmod.setupwizard.setup.SetupDataCallbacks;
import com.cyanogenmod.setupwizard.util.EnableAccessibilityController;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
import com.cyanogenmod.setupwizard.util.WhisperPushUtils;
public class SetupWizardActivity extends Activity implements SetupDataCallbacks {
private static final String TAG = SetupWizardActivity.class.getSimpleName();
private View mRootView;
private Button mNextButton;
private Button mPrevButton;
private AbstractSetupData mSetupData;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.setup_main);
getWindow().setWindowAnimations(android.R.anim.fade_in);
mRootView = findViewById(R.id.root);
((SetupWizardApp)getApplicationContext()).disableStatusBar();
mSetupData = (AbstractSetupData)getLastNonConfigurationInstance();
if (mSetupData == null) {
mSetupData = new CMSetupWizardData(this);
}
mNextButton = (Button) findViewById(R.id.next_button);
mPrevButton = (Button) findViewById(R.id.prev_button);
mSetupData.registerListener(this);
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSetupData.onNextPage();
}
});
mPrevButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSetupData.onPreviousPage();
}
});
if (savedInstanceState == null) {
Page page = mSetupData.getCurrentPage();
page.doLoadAction(this, Page.ACTION_NEXT);
}
if (savedInstanceState != null && savedInstanceState.containsKey("data")) {
mSetupData.load(savedInstanceState.getBundle("data"));
}
final EnableAccessibilityController acc = new EnableAccessibilityController(this);
mRootView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return acc.onInterceptTouchEvent(event);
}
});
// Since this is a new component, we need to disable here if the user
// has already been through setup on a previous version.
try {
if (Settings.Secure.getInt(getContentResolver(),
Settings.Secure.USER_SETUP_COMPLETE) == 1) {
finishSetup();
}
} catch (Settings.SettingNotFoundException e) {
// Continue with setup
}
}
@Override
protected void onResume() {
super.onResume();
onPageTreeChanged();
}
@Override
protected void onDestroy() {
super.onDestroy();
mSetupData.unregisterListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mSetupData.getCurrentPage().onActivityResult(requestCode, resultCode, data);
}
@Override
public Object onRetainNonConfigurationInstance() {
return mSetupData;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBundle("data", mSetupData.save());
}
@Override
public void onBackPressed() {
if (!mSetupData.isFirstPage()) {
mSetupData.onPreviousPage();
}
}
@Override
public void onNextPage() {
Page page = mSetupData.getCurrentPage();
page.doLoadAction(this, Page.ACTION_NEXT);
}
@Override
public void onPreviousPage() {
Page page = mSetupData.getCurrentPage();
page.doLoadAction(this, Page.ACTION_PREVIOUS);
}
@Override
public void onPageLoaded(Page page) {
if (getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE &&
mSetupData.isFirstPage()) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN);
} else {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
updateButtonBar();
}
@Override
public void onPageTreeChanged() {
updateButtonBar();
}
private void updateButtonBar() {
Page page = mSetupData.getCurrentPage();
mNextButton.setText(page.getNextButtonTitleResId());
if (page.getPrevButtonTitleResId() != -1) {
mPrevButton.setText(page.getPrevButtonTitleResId());
} else {
mPrevButton.setText("");
}
if (mSetupData.isFirstPage()) {
mPrevButton.setCompoundDrawables(null, null, null, null);
} else {
mPrevButton.setCompoundDrawablesWithIntrinsicBounds(
getDrawable(R.drawable.ic_chevron_left_dark),
null, null, null);
}
final Resources resources = getResources();
if (mSetupData.isLastPage()) {
mPrevButton.setVisibility(View.INVISIBLE);
mRootView.setBackgroundColor(resources.getColor(R.color.primary));
mNextButton.setCompoundDrawablesWithIntrinsicBounds(null, null,
getDrawable(R.drawable.ic_chevron_right_wht), null);
mNextButton.setTextColor(resources.getColor(R.color.white));
} else {
mPrevButton.setVisibility(View.VISIBLE);
mRootView.setBackgroundColor(resources.getColor(R.color.window_background));
mNextButton.setCompoundDrawablesWithIntrinsicBounds(null, null,
getDrawable(R.drawable.ic_chevron_right_dark), null);
mNextButton.setTextColor(resources.getColor(R.color.primary_text));
}
}
@Override
public Page getPage(String key) {
return mSetupData.getPage(key);
}
@Override
public Page getPage(int key) {
return mSetupData.getPage(key);
}
@Override
public void onFinish() {
finishSetup();
}
private void handleWhisperPushRegistration() {
Page page = getPage(CyanogenServicesPage.TAG);
if (page == null) {
return;
}
Bundle privacyData = page.getData();
if (privacyData != null && privacyData.getBoolean(CyanogenSettingsPage.KEY_REGISTER_WHISPERPUSH)) {
Log.d(TAG, "Registering with WhisperPush");
WhisperPushUtils.startRegistration(this);
}
}
public void handleEnableMetrics() {
Page page = getPage(CyanogenServicesPage.TAG);
if (page == null) {
return;
}
Bundle privacyData = page.getData();
if (privacyData != null
&& privacyData.getBoolean(CyanogenSettingsPage.KEY_SEND_METRICS)) {
Settings.System.putInt(getContentResolver(), CyanogenSettingsPage.SETTING_METRICS,
privacyData.getBoolean(CyanogenSettingsPage.KEY_SEND_METRICS) ? 1 : 0);
}
}
private void finishSetup() {
getApplication().sendBroadcast(new Intent(SetupWizardApp.ACTION_FINISHED));
handleWhisperPushRegistration();
handleEnableMetrics();
Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
((SetupWizardApp)AppGlobals.getInitialApplication()).enableStatusBar();
SetupWizardUtils.disableSetupWizards(this);
finish();
}
}