/* * Copyright (C) 2014 The Android Open Source 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.android.settings; import com.android.settings.widget.SetupWizardIllustration; import com.android.setupwizard.navigationbar.SetupWizardNavBar; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.view.Gravity; import android.view.Window; import android.widget.TextView; public class SetupWizardUtils { private static final String TAG = "SetupWizardUtils"; // Extra containing the resource name of the theme to be used public static final String EXTRA_THEME = "theme"; public static final String THEME_HOLO = "holo"; public static final String THEME_HOLO_LIGHT = "holo_light"; public static final String THEME_MATERIAL = "material"; public static final String THEME_MATERIAL_LIGHT = "material_light"; public static final String EXTRA_USE_IMMERSIVE_MODE = "useImmersiveMode"; // From WizardManager (must match constants maintained there) public static final String ACTION_NEXT = "com.android.wizard.NEXT"; public static final String EXTRA_SCRIPT_URI = "scriptUri"; public static final String EXTRA_ACTION_ID = "actionId"; public static final String EXTRA_RESULT_CODE = "com.android.setupwizard.ResultCode"; public static final int NEXT_REQUEST = 10000; public static boolean isUsingWizardManager(Activity activity) { return activity.getIntent().hasExtra(EXTRA_SCRIPT_URI); } /** * Send the results of this activity to WizardManager, which will then send out the next * scripted activity. WizardManager does not actually return an activity result, but if we * invoke WizardManager without requesting a result, the framework will choose not to issue a * call to onActivityResult with RESULT_CANCELED when navigating backward. */ public static void sendResultsToSetupWizard(Activity activity, int resultCode) { final Intent intent = activity.getIntent(); final Intent nextIntent = new Intent(ACTION_NEXT); nextIntent.putExtra(EXTRA_SCRIPT_URI, intent.getStringExtra(EXTRA_SCRIPT_URI)); nextIntent.putExtra(EXTRA_ACTION_ID, intent.getStringExtra(EXTRA_ACTION_ID)); nextIntent.putExtra(EXTRA_THEME, intent.getStringExtra(EXTRA_THEME)); nextIntent.putExtra(EXTRA_RESULT_CODE, resultCode); activity.startActivityForResult(nextIntent, NEXT_REQUEST); } public static int getTheme(Intent intent, int defaultResId) { final String themeName = intent.getStringExtra(EXTRA_THEME); int resid = defaultResId; if (THEME_HOLO_LIGHT.equalsIgnoreCase(themeName) || THEME_MATERIAL_LIGHT.equalsIgnoreCase(themeName)) { resid = R.style.SetupWizardTheme_Light; } else if (THEME_HOLO.equalsIgnoreCase(themeName) || THEME_MATERIAL.equalsIgnoreCase(themeName)) { resid = R.style.SetupWizardTheme; } return resid; } /** * Sets the immersive mode related flags based on the extra in the intent which started the * activity. */ public static void setImmersiveMode(Activity activity, SetupWizardNavBar navBar) { final boolean useImmersiveMode = activity.getIntent().getBooleanExtra(EXTRA_USE_IMMERSIVE_MODE, false); navBar.setUseImmersiveMode(useImmersiveMode); if (useImmersiveMode) { final Window window = activity.getWindow(); window.setNavigationBarColor(Color.TRANSPARENT); window.setStatusBarColor(Color.TRANSPARENT); } } public static TextView getHeader(Activity activity) { return (TextView) activity.findViewById(R.id.title); } public static void setHeaderText(Activity activity, int text) { getHeader(activity).setText(text); } public static void setHeaderText(Activity activity, CharSequence text) { getHeader(activity).setText(text); } public static void copySetupExtras(Intent fromIntent, Intent toIntent) { toIntent.putExtra(EXTRA_THEME, fromIntent.getStringExtra(EXTRA_THEME)); toIntent.putExtra(EXTRA_USE_IMMERSIVE_MODE, fromIntent.getBooleanExtra(EXTRA_USE_IMMERSIVE_MODE, false)); } public static void setIllustration(Activity activity, int asset) { SetupWizardIllustration illustration = (SetupWizardIllustration) activity.findViewById(R.id.setup_illustration); if (illustration != null) { Drawable drawable = activity.getDrawable(R.drawable.setup_illustration); Drawable newIllustration = activity.getDrawable(asset); if (drawable instanceof LayerDrawable) { LayerDrawable layers = (LayerDrawable) drawable; Drawable oldIllustration = layers.findDrawableByLayerId(R.id.illustration_image); if (newIllustration instanceof BitmapDrawable && oldIllustration instanceof BitmapDrawable) { final int gravity = ((BitmapDrawable) oldIllustration).getGravity(); ((BitmapDrawable) newIllustration).setGravity(gravity); } layers.setDrawableByLayerId(R.id.illustration_image, newIllustration); illustration.setForeground(layers); } } } }