blob: fa5fc6f7b5e4c8ec9e9c214c8222885035f1a3f1 [file] [log] [blame]
cretin450328b872015-01-15 16:04:44 -08001/*
2 * Copyright (C) 2013 The CyanogenMod Project
cretin45d4cea552016-04-25 11:00:04 -07003 * Copyright (C) 2017 The LineageOS Project
cretin450328b872015-01-15 16:04:44 -08004 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package com.cyanogenmod.setupwizard;
19
20
21import android.app.Application;
cretin453593f032016-04-20 16:21:05 -070022import android.os.Bundle;
cretin45f654deb2015-04-14 17:28:37 -070023import android.os.Handler;
cretin45d4cea552016-04-25 11:00:04 -070024import android.util.Log;
cretin450328b872015-01-15 16:04:44 -080025
cretin45d4cea552016-04-25 11:00:04 -070026import com.cyanogenmod.setupwizard.util.NetworkMonitor;
27import com.cyanogenmod.setupwizard.util.PhoneMonitor;
cretin450d31b312015-03-09 14:49:31 -070028import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
cretin45d4cea552016-04-25 11:00:04 -070029import com.cyanogenmod.setupwizard.wizardmanager.WizardManager;
cretin450d31b312015-03-09 14:49:31 -070030
cretin450328b872015-01-15 16:04:44 -080031public class SetupWizardApp extends Application {
32
33 public static final String TAG = SetupWizardApp.class.getSimpleName();
34 // Leave this off for release
35 public static final boolean DEBUG = false;
cretin45d4cea552016-04-25 11:00:04 -070036 /* Verbose Logging */
37 public static final boolean LOGV = Log.isLoggable(TAG, Log.VERBOSE);
cretin450328b872015-01-15 16:04:44 -080038
cretin4548ca24e2015-01-19 14:29:43 -080039 public static final String ACTION_FINISHED = "com.cyanogenmod.setupwizard.SETUP_FINISHED";
Abhisek Devkotaaadbc732018-01-31 01:33:59 -080040 public static final String ACTION_SETUP_WIFI = "android.net.wifi.PICK_WIFI_NETWORK";
d34d68d2ba72015-12-03 16:52:30 -080041 public static final String ACTION_SETUP_FINGERPRINT = "android.settings.FINGERPRINT_SETUP";
Ricardo Cerqueira83316022016-08-10 12:33:05 +010042 public static final String ACTION_SETUP_LOCKSCREEN = "com.android.settings.SETUP_LOCK_SCREEN";
cretin45d4cea552016-04-25 11:00:04 -070043 public static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL";
44 public static final String ACTION_NEXT = "com.android.wizard.NEXT";
45 public static final String ACTION_LOAD = "com.android.wizard.LOAD";
46
d34db28f9c02015-07-07 17:30:20 -070047
cretin450328b872015-01-15 16:04:44 -080048 public static final String EXTRA_FIRST_RUN = "firstRun";
49 public static final String EXTRA_ALLOW_SKIP = "allowSkip";
50 public static final String EXTRA_AUTO_FINISH = "wifi_auto_finish_on_connect";
cretin4530af3272015-01-23 10:14:07 -080051 public static final String EXTRA_USE_IMMERSIVE = "useImmersiveMode";
cretin45d4cea552016-04-25 11:00:04 -070052 public static final String EXTRA_HAS_MULTIPLE_USERS = "hasMultipleUsers";
cretin453441abd2015-02-02 16:44:52 -080053 public static final String EXTRA_THEME = "theme";
54 public static final String EXTRA_MATERIAL_LIGHT = "material_light";
d34db28f9c02015-07-07 17:30:20 -070055 public static final String EXTRA_TITLE = "title";
56 public static final String EXTRA_DETAILS = "details";
cretin45d4cea552016-04-25 11:00:04 -070057 public static final String EXTRA_SCRIPT_URI = "scriptUri";
58 public static final String EXTRA_ACTION_ID = "actionId";
59 public static final String EXTRA_RESULT_CODE = "com.android.setupwizard.ResultCode";
Abhisek Devkotaaadbc732018-01-31 01:33:59 -080060 public static final String EXTRA_PREFS_SHOW_BUTTON_BAR = "extra_prefs_show_button_bar";
61 public static final String EXTRA_PREFS_SET_BACK_TEXT = "extra_prefs_set_back_text";
cretin450328b872015-01-15 16:04:44 -080062
cretin45c5e926d2015-06-17 13:56:09 -070063 public static final String KEY_DETECT_CAPTIVE_PORTAL = "captive_portal_detection_enabled";
cretin453593f032016-04-20 16:21:05 -070064 public static final String KEY_SEND_METRICS = "send_metrics";
65 public static final String DISABLE_NAV_KEYS = "disable_nav_keys";
66 public static final String KEY_APPLY_DEFAULT_THEME = "apply_default_theme";
67 public static final String KEY_BUTTON_BACKLIGHT = "pre_navbar_button_backlight";
68 public static final String KEY_PRIVACY_GUARD = "privacy_guard_default";
cretin45e001f972015-02-19 13:01:28 -080069
d34d88aba002015-03-13 18:35:34 -070070 private static final String[] THEME_PACKAGES = {
71 "org.cyanogenmod.theme.chooser",
Joey Rizzoli52a78fd2016-12-29 17:28:02 +010072 "org.cyanogenmod.theme.chooser2",
d34d88aba002015-03-13 18:35:34 -070073 "com.cyngn.theme.chooser",
74 "com.cyngn.themestore"
75 };
76
cretin450328b872015-01-15 16:04:44 -080077 public static final int REQUEST_CODE_SETUP_WIFI = 0;
cretin45e001f972015-02-19 13:01:28 -080078 public static final int REQUEST_CODE_SETUP_CAPTIVE_PORTAL= 4;
dhacker29218deb92015-04-23 22:54:36 -040079 public static final int REQUEST_CODE_SETUP_BLUETOOTH= 5;
d34db28f9c02015-07-07 17:30:20 -070080 public static final int REQUEST_CODE_SETUP_FINGERPRINT = 7;
Ricardo Cerqueira83316022016-08-10 12:33:05 +010081 public static final int REQUEST_CODE_SETUP_LOCKSCREEN = 9;
cretin450328b872015-01-15 16:04:44 -080082
cretin45f654deb2015-04-14 17:28:37 -070083 public static final int RADIO_READY_TIMEOUT = 10 * 1000;
84
85 private boolean mIsRadioReady = false;
cretin453593f032016-04-20 16:21:05 -070086 private boolean mIgnoreSimLocale = false;
cretin4577108552015-05-07 16:21:10 -070087
cretin453593f032016-04-20 16:21:05 -070088 private final Bundle mSettingsBundle = new Bundle();
cretin45f654deb2015-04-14 17:28:37 -070089 private final Handler mHandler = new Handler();
90
91 private final Runnable mRadioTimeoutRunnable = new Runnable() {
92 @Override
93 public void run() {
94 mIsRadioReady = true;
95 }
96 };
97
cretin450328b872015-01-15 16:04:44 -080098 @Override
99 public void onCreate() {
100 super.onCreate();
cretin45d4cea552016-04-25 11:00:04 -0700101 if (LOGV) {
102 Log.v(TAG, "onCreate()");
103 }
104 NetworkMonitor.initInstance(this);
105 PhoneMonitor.initInstance(this);
cretin45d4cea552016-04-25 11:00:04 -0700106 SetupWizardUtils.disableComponentsForMissingFeatures(this);
cretin45f654deb2015-04-14 17:28:37 -0700107 mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
108 }
109
110 public boolean isRadioReady() {
111 return mIsRadioReady;
112 }
113
114 public void setRadioReady(boolean radioReady) {
115 if (!mIsRadioReady && radioReady) {
116 mHandler.removeCallbacks(mRadioTimeoutRunnable);
117 }
118 mIsRadioReady = radioReady;
cretin450328b872015-01-15 16:04:44 -0800119 }
120
cretin453593f032016-04-20 16:21:05 -0700121 public boolean ignoreSimLocale() {
122 return mIgnoreSimLocale;
cretin450328b872015-01-15 16:04:44 -0800123 }
124
cretin453593f032016-04-20 16:21:05 -0700125 public void setIgnoreSimLocale(boolean ignoreSimLocale) {
126 mIgnoreSimLocale = ignoreSimLocale;
127 }
128
129 public Bundle getSettingsBundle() {
130 return mSettingsBundle;
cretin450328b872015-01-15 16:04:44 -0800131 }
cretin450328b872015-01-15 16:04:44 -0800132}