Search in sources :

Example 1 with AlertParams

use of com.android.internal.app.AlertController.AlertParams in project platform_frameworks_base by android.

the class GlobalActions method createDialog.

/**
     * Create the global actions dialog.
     * @return A new dialog.
     */
private GlobalActionsDialog createDialog() {
    // Simple toggle style if there's no vibrator, otherwise use a tri-state
    if (!mHasVibrator) {
        mSilentModeAction = new SilentModeToggleAction();
    } else {
        mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);
    }
    mAirplaneModeOn = new ToggleAction(R.drawable.ic_lock_airplane_mode, R.drawable.ic_lock_airplane_mode_off, R.string.global_actions_toggle_airplane_mode, R.string.global_actions_airplane_mode_on_status, R.string.global_actions_airplane_mode_off_status) {

        void onToggle(boolean on) {
            if (mHasTelephony && Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
                mIsWaitingForEcmExit = true;
                // Launch ECM exit dialog
                Intent ecmDialogIntent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null);
                ecmDialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mContext.startActivity(ecmDialogIntent);
            } else {
                changeAirplaneModeSystemSetting(on);
            }
        }

        @Override
        protected void changeStateFromPress(boolean buttonOn) {
            if (!mHasTelephony)
                return;
            // In ECM mode airplane state cannot be changed
            if (!(Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE)))) {
                mState = buttonOn ? State.TurningOn : State.TurningOff;
                mAirplaneState = mState;
            }
        }

        public boolean showDuringKeyguard() {
            return true;
        }

        public boolean showBeforeProvisioning() {
            return false;
        }
    };
    onAirplaneModeChanged();
    mItems = new ArrayList<Action>();
    String[] defaultActions = mContext.getResources().getStringArray(com.android.internal.R.array.config_globalActionsList);
    ArraySet<String> addedKeys = new ArraySet<String>();
    for (int i = 0; i < defaultActions.length; i++) {
        String actionKey = defaultActions[i];
        if (addedKeys.contains(actionKey)) {
            // If we already have added this, don't add it again.
            continue;
        }
        if (GLOBAL_ACTION_KEY_POWER.equals(actionKey)) {
            mItems.add(new PowerAction());
        } else if (GLOBAL_ACTION_KEY_AIRPLANE.equals(actionKey)) {
            mItems.add(mAirplaneModeOn);
        } else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) {
            if (Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserOwner()) {
                mItems.add(new BugReportAction());
            }
        } else if (GLOBAL_ACTION_KEY_SILENT.equals(actionKey)) {
            if (mShowSilentToggle) {
                mItems.add(mSilentModeAction);
            }
        } else if (GLOBAL_ACTION_KEY_USERS.equals(actionKey)) {
            if (SystemProperties.getBoolean("fw.power_user_switcher", false)) {
                addUsersToMenu(mItems);
            }
        } else if (GLOBAL_ACTION_KEY_SETTINGS.equals(actionKey)) {
            mItems.add(getSettingsAction());
        } else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {
            mItems.add(getLockdownAction());
        } else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {
            mItems.add(getVoiceAssistAction());
        } else if (GLOBAL_ACTION_KEY_ASSIST.equals(actionKey)) {
            mItems.add(getAssistAction());
        } else if (GLOBAL_ACTION_KEY_RESTART.equals(actionKey)) {
            mItems.add(new RestartAction());
        } else {
            Log.e(TAG, "Invalid global action key " + actionKey);
        }
        // Add here so we don't add more than one.
        addedKeys.add(actionKey);
    }
    if (mEmergencyAffordanceManager.needsEmergencyAffordance()) {
        mItems.add(getEmergencyAction());
    }
    mAdapter = new MyAdapter();
    AlertParams params = new AlertParams(mContext);
    params.mAdapter = mAdapter;
    params.mOnClickListener = this;
    params.mForceInverseBackground = true;
    GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
    // Handled by the custom class.
    dialog.setCanceledOnTouchOutside(false);
    dialog.getListView().setItemsCanFocus(true);
    dialog.getListView().setLongClickable(true);
    dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            final Action action = mAdapter.getItem(position);
            if (action instanceof LongPressAction) {
                return ((LongPressAction) action).onLongPress();
            }
            return false;
        }
    });
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    dialog.setOnDismissListener(this);
    return dialog;
}
Also used : AlertParams(com.android.internal.app.AlertController.AlertParams) ArraySet(android.util.ArraySet) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) AdapterView(android.widget.AdapterView)

Example 2 with AlertParams

use of com.android.internal.app.AlertController.AlertParams in project android_frameworks_base by crdroidandroid.

the class GlobalActions method createDialog.

/**
     * Create the global actions dialog.
     * @return A new dialog.
     */
private GlobalActionsDialog createDialog() {
    // Simple toggle style if there's no vibrator, otherwise use a tri-state
    if (!mHasVibrator) {
        mSilentModeAction = new SilentModeToggleAction();
    } else {
        mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);
    }
    mAirplaneModeOn = new ToggleAction(R.drawable.ic_lock_airplane_mode, R.drawable.ic_lock_airplane_mode_off, R.string.global_actions_toggle_airplane_mode, R.string.global_actions_airplane_mode_on_status, R.string.global_actions_airplane_mode_off_status) {

        void onToggle(boolean on) {
            if (mHasTelephony && Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
                mIsWaitingForEcmExit = true;
                // Launch ECM exit dialog
                Intent ecmDialogIntent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null);
                ecmDialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mContext.startActivity(ecmDialogIntent);
            } else {
                changeAirplaneModeSystemSetting(on);
            }
        }

        @Override
        protected void changeStateFromPress(boolean buttonOn) {
            if (!mHasTelephony)
                return;
            // In ECM mode airplane state cannot be changed
            if (!(Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE)))) {
                mState = buttonOn ? State.TurningOn : State.TurningOff;
                mAirplaneState = mState;
            }
        }

        public boolean showDuringKeyguard() {
            return true;
        }

        public boolean showBeforeProvisioning() {
            return false;
        }
    };
    onAirplaneModeChanged();
    mItems = new ArrayList<Action>();
    String[] actionsArray;
    if (mActions == null) {
        actionsArray = mContext.getResources().getStringArray(com.android.internal.R.array.config_globalActionsList);
    } else {
        actionsArray = mActions.split("\\|");
    }
    // Always add the power off option
    mItems.add(new PowerAction());
    ArraySet<String> addedKeys = new ArraySet<String>();
    for (int i = 0; i < actionsArray.length; i++) {
        String actionKey = actionsArray[i];
        if (addedKeys.contains(actionKey)) {
            // If we already have added this, don't add it again.
            continue;
        }
        if (GLOBAL_ACTION_KEY_POWER.equals(actionKey)) {
            continue;
        } else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) {
            mItems.add(new ScreenshotAction());
        } else if (GLOBAL_ACTION_KEY_AIRPLANE.equals(actionKey)) {
            mItems.add(mAirplaneModeOn);
        } else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) {
            if (Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserOwner()) {
                mItems.add(new BugReportAction());
            }
        } else if (GLOBAL_ACTION_KEY_SILENT.equals(actionKey)) {
            if (mShowSilentToggle) {
                mItems.add(mSilentModeAction);
            }
        } else if (GLOBAL_ACTION_KEY_USERS.equals(actionKey)) {
            List<UserInfo> users = ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).getUsers();
            if (users.size() > 1) {
                addUsersToMenu(mItems);
            }
        } else if (GLOBAL_ACTION_KEY_SETTINGS.equals(actionKey)) {
            mItems.add(getSettingsAction());
        } else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {
            mItems.add(getLockdownAction());
        } else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {
            mItems.add(getVoiceAssistAction());
        } else if (GLOBAL_ACTION_KEY_ASSIST.equals(actionKey)) {
            mItems.add(getAssistAction());
        } else if (GLOBAL_ACTION_KEY_RESTART.equals(actionKey)) {
            mItems.add(new RestartAction());
        } else {
            Log.e(TAG, "Invalid global action key " + actionKey);
        }
        // Add here so we don't add more than one.
        addedKeys.add(actionKey);
    }
    if (mEmergencyAffordanceManager.needsEmergencyAffordance()) {
        mItems.add(getEmergencyAction());
    }
    // next: On-The-Go, if enabled
    ContentResolver resolver = mContext.getContentResolver();
    boolean showOnTheGo = Settings.System.getInt(resolver, Settings.System.POWER_MENU_ONTHEGO_ENABLED, 0) == 1;
    if (showOnTheGo) {
        mItems.add(new SinglePressAction(com.android.internal.R.drawable.ic_lock_onthego, R.string.global_action_onthego) {

            public void onPress() {
                OnTheGoActions.processAction(mContext, OnTheGoActions.ACTION_ONTHEGO_TOGGLE);
            }

            public boolean onLongPress() {
                return false;
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return true;
            }
        });
    }
    mAdapter = new MyAdapter();
    AlertParams params = new AlertParams(mContext);
    params.mAdapter = mAdapter;
    params.mOnClickListener = this;
    params.mForceInverseBackground = true;
    GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
    // Handled by the custom class.
    dialog.setCanceledOnTouchOutside(false);
    dialog.getListView().setItemsCanFocus(true);
    dialog.getListView().setLongClickable(true);
    dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            final Action action = mAdapter.getItem(position);
            if (action instanceof LongPressAction) {
                return ((LongPressAction) action).onLongPress();
            }
            return false;
        }
    });
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    dialog.setOnDismissListener(this);
    return dialog;
}
Also used : ContentResolver(android.content.ContentResolver) AlertParams(com.android.internal.app.AlertController.AlertParams) List(java.util.List) ArrayList(java.util.ArrayList) ArraySet(android.util.ArraySet) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) Paint(android.graphics.Paint) AdapterView(android.widget.AdapterView)

Example 3 with AlertParams

use of com.android.internal.app.AlertController.AlertParams in project android_frameworks_base by ParanoidAndroid.

the class GlobalActions method createDialog.

/**
     * Create the global actions dialog.
     * @return A new dialog.
     */
private GlobalActionsDialog createDialog() {
    if (mRebootMenu) {
        createRebootMenuItems();
    } else {
        // Simple toggle style if there's no vibrator, otherwise use a tri-state
        if (!mHasVibrator) {
            mSilentModeAction = new SilentModeToggleAction();
        } else {
            mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);
        }
        mExpandDesktopModeOn = new ToggleAction(R.drawable.ic_lock_expanded_desktop, R.drawable.ic_lock_expanded_desktop_off, R.string.global_action_expanded_desktop, R.string.global_action_expanded_desktop_on, R.string.global_action_expanded_desktop_off) {

            void onToggle(boolean on) {
                changeExpandDesktopModeSystemSetting(on);
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return false;
            }
        };
        onExpandDesktopModeChanged();
        mAirplaneModeOn = new ToggleAction(R.drawable.ic_lock_airplane_mode, R.drawable.ic_lock_airplane_mode_off, R.string.global_actions_toggle_airplane_mode, R.string.global_actions_airplane_mode_on_status, R.string.global_actions_airplane_mode_off_status) {

            void onToggle(boolean on) {
                if (mHasTelephony && Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
                    mIsWaitingForEcmExit = true;
                    // Launch ECM exit dialog
                    Intent ecmDialogIntent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null);
                    ecmDialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    mContext.startActivity(ecmDialogIntent);
                } else {
                    changeAirplaneModeSystemSetting(on);
                }
            }

            @Override
            protected void changeStateFromPress(boolean buttonOn) {
                if (!mHasTelephony)
                    return;
                // In ECM mode airplane state cannot be changed
                if (!(Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE)))) {
                    mState = buttonOn ? State.TurningOn : State.TurningOff;
                    mAirplaneState = mState;
                }
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return false;
            }
        };
        onAirplaneModeChanged();
        mItems = new ArrayList<Action>();
        // first: power off
        mItems.add(new SinglePressAction(com.android.internal.R.drawable.ic_lock_power_off, R.string.global_action_power_off) {

            public void onPress() {
                // shutdown by making sure radio and power are handled accordingly.
                mWindowManagerFuncs.shutdown(true);
            }

            public boolean onLongPress() {
                mWindowManagerFuncs.rebootSafeMode(true);
                return true;
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return true;
            }
        });
        // next: reboot
        mItems.add(new SinglePressAction(R.drawable.ic_lock_reboot, R.string.global_action_reboot) {

            public void onPress() {
                showDialog(mKeyguardShowing, mDeviceProvisioned, true);
            }

            public boolean onLongPress() {
                return true;
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return true;
            }
        });
        // next: screenshot
        mItems.add(new SinglePressAction(R.drawable.ic_lock_screenshot, R.string.global_action_screenshot) {

            public void onPress() {
                takeScreenshot();
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return true;
            }
        });
        // next: expanded desktop
        mItems.add(mExpandDesktopModeOn);
        // next: airplane mode
        mItems.add(mAirplaneModeOn);
        // next: bug report, if enabled
        if (Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.BUGREPORT_IN_POWER_MENU, 0) != 0) {
            mItems.add(new SinglePressAction(com.android.internal.R.drawable.stat_sys_adb, R.string.global_action_bug_report) {

                public void onPress() {
                    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                    builder.setTitle(com.android.internal.R.string.bugreport_title);
                    builder.setMessage(com.android.internal.R.string.bugreport_message);
                    builder.setNegativeButton(com.android.internal.R.string.cancel, null);
                    builder.setPositiveButton(com.android.internal.R.string.report, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // Add a little delay before executing, to give the
                            // dialog a chance to go away before it takes a
                            // screenshot.
                            mHandler.postDelayed(new Runnable() {

                                @Override
                                public void run() {
                                    try {
                                        ActivityManagerNative.getDefault().requestBugReport();
                                    } catch (RemoteException e) {
                                    }
                                }
                            }, 500);
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
                    dialog.show();
                }

                public boolean onLongPress() {
                    return false;
                }

                public boolean showDuringKeyguard() {
                    return true;
                }

                public boolean showBeforeProvisioning() {
                    return false;
                }
            });
        }
        // last: silent mode
        if (SHOW_SILENT_TOGGLE) {
            mItems.add(mSilentModeAction);
        }
        // one more thing: optionally add a list of users to switch to
        if (SystemProperties.getBoolean("fw.power_user_switcher", false)) {
            addUsersToMenu(mItems);
        }
    }
    mAdapter = new MyAdapter();
    AlertParams params = new AlertParams(getUiContext());
    params.mAdapter = mAdapter;
    params.mOnClickListener = this;
    params.mForceInverseBackground = true;
    GlobalActionsDialog dialog = new GlobalActionsDialog(getUiContext(), params);
    // Handled by the custom class.
    dialog.setCanceledOnTouchOutside(false);
    dialog.getListView().setItemsCanFocus(true);
    dialog.getListView().setLongClickable(true);
    dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            return mAdapter.getItem(position).onLongPress();
        }
    });
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    dialog.setOnDismissListener(this);
    return dialog;
}
Also used : AlertDialog(android.app.AlertDialog) DialogInterface(android.content.DialogInterface) AlertParams(com.android.internal.app.AlertController.AlertParams) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) AdapterView(android.widget.AdapterView) RemoteException(android.os.RemoteException)

Example 4 with AlertParams

use of com.android.internal.app.AlertController.AlertParams in project android_frameworks_base by DirtyUnicorns.

the class GlobalActions method createDialog.

/**
     * Create the global actions dialog.
     * @return A new dialog.
     */
private GlobalActionsDialog createDialog() {
    // Simple toggle style if there's no vibrator, otherwise use a tri-state
    if (!mHasVibrator) {
        mSilentModeAction = new SilentModeToggleAction();
    } else {
        mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);
    }
    mAirplaneModeOn = new ToggleAction(R.drawable.ic_lock_airplane_mode, R.drawable.ic_lock_airplane_mode_off, R.string.global_actions_toggle_airplane_mode, R.string.global_actions_airplane_mode_on_status, R.string.global_actions_airplane_mode_off_status) {

        void onToggle(boolean on) {
            if (mHasTelephony && Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
                mIsWaitingForEcmExit = true;
                // Launch ECM exit dialog
                Intent ecmDialogIntent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null);
                ecmDialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mContext.startActivity(ecmDialogIntent);
            } else {
                changeAirplaneModeSystemSetting(on);
            }
        }

        @Override
        protected void changeStateFromPress(boolean buttonOn) {
            if (!mHasTelephony)
                return;
            // In ECM mode airplane state cannot be changed
            if (!(Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE)))) {
                mState = buttonOn ? State.TurningOn : State.TurningOff;
                mAirplaneState = mState;
            }
        }

        public boolean showDuringKeyguard() {
            return true;
        }

        public boolean showBeforeProvisioning() {
            return false;
        }
    };
    onAirplaneModeChanged();
    mItems = new ArrayList<Action>();
    String[] defaultActions = mContext.getResources().getStringArray(com.android.internal.R.array.config_globalActionsList);
    ArraySet<String> addedKeys = new ArraySet<String>();
    for (int i = 0; i < defaultActions.length; i++) {
        String actionKey = defaultActions[i];
        if (addedKeys.contains(actionKey)) {
            // If we already have added this, don't add it again.
            continue;
        }
        if (GLOBAL_ACTION_KEY_POWER.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_POWER, 1) == 1) {
                mItems.add(getPowerAction());
            }
        } else if (GLOBAL_ACTION_KEY_REBOOT.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_REBOOT, 1) == 1) {
                mItems.add(new RebootAction());
            }
        } else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_SCREENSHOT, 1) == 1) {
                mItems.add(ScreenshotAction());
            }
        } else if (GLOBAL_ACTION_KEY_SCREENRECORD.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_SCREENRECORD, 0) != 0) {
                mItems.add(ScreenrecordAction());
            }
        } else if (GLOBAL_ACTION_KEY_TORCH.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_TORCH, 0) != 0) {
                mItems.add(getTorchToggleAction());
            }
        } else if (GLOBAL_ACTION_KEY_AIRPLANE.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_AIRPLANE, 1) == 1) {
                mItems.add(mAirplaneModeOn);
            }
        } else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) {
            if (Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserOwner()) {
                mItems.add(new BugReportAction());
            }
        } else if (GLOBAL_ACTION_KEY_SILENT.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_SOUNDPANEL, 1) == 1) {
                mItems.add(mSilentModeAction);
            }
        } else if (GLOBAL_ACTION_KEY_USERS.equals(actionKey)) {
            if (SystemProperties.getBoolean("fw.power_user_switcher", false)) {
                addUsersToMenu(mItems);
            }
        } else if (GLOBAL_ACTION_KEY_SETTINGS.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_SETTINGS, 0) != 0) {
                mItems.add(getSettingsAction());
            }
        } else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {
            if (Settings.System.getInt(mContext.getContentResolver(), Settings.System.POWERMENU_LOCKDOWN, 0) != 0) {
                mItems.add(getLockdownAction());
            }
        } else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {
            mItems.add(getVoiceAssistAction());
        } else if (GLOBAL_ACTION_KEY_ASSIST.equals(actionKey)) {
            mItems.add(getAssistAction());
        } else {
            Log.e(TAG, "Invalid global action key " + actionKey);
        }
        // Add here so we don't add more than one.
        addedKeys.add(actionKey);
    }
    if (mEmergencyAffordanceManager.needsEmergencyAffordance()) {
        mItems.add(getEmergencyAction());
    }
    mAdapter = new MyAdapter();
    AlertParams params = new AlertParams(mContext);
    params.mAdapter = mAdapter;
    params.mOnClickListener = this;
    params.mForceInverseBackground = true;
    GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
    // Handled by the custom class.
    dialog.setCanceledOnTouchOutside(false);
    dialog.getListView().setItemsCanFocus(true);
    dialog.getListView().setLongClickable(true);
    dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            final Action action = mAdapter.getItem(position);
            if (action instanceof LongPressAction) {
                return ((LongPressAction) action).onLongPress();
            }
            return false;
        }
    });
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    dialog.setOnDismissListener(this);
    return dialog;
}
Also used : ArraySet(android.util.ArraySet) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) AlertParams(com.android.internal.app.AlertController.AlertParams) AdapterView(android.widget.AdapterView)

Example 5 with AlertParams

use of com.android.internal.app.AlertController.AlertParams in project android_frameworks_base by ResurrectionRemix.

the class GlobalActions method createDialog.

/**
     * Create the global actions dialog.
     * @return A new dialog.
     */
private GlobalActionsDialog createDialog() {
    // Simple toggle style if there's no vibrator, otherwise use a tri-state
    if (!mHasVibrator) {
        mSilentModeAction = new SilentModeToggleAction();
    } else {
        mSilentModeAction = new SilentModeTriStateAction(mContext, mAudioManager, mHandler);
    }
    mAirplaneModeOn = new ToggleAction(R.drawable.ic_lock_airplane_mode, R.drawable.ic_lock_airplane_mode_off, R.string.global_actions_toggle_airplane_mode, R.string.global_actions_airplane_mode_on_status, R.string.global_actions_airplane_mode_off_status) {

        void onToggle(boolean on) {
            if (mHasTelephony && Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
                mIsWaitingForEcmExit = true;
                // Launch ECM exit dialog
                Intent ecmDialogIntent = new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null);
                ecmDialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mContext.startActivity(ecmDialogIntent);
            } else {
                changeAirplaneModeSystemSetting(on);
            }
        }

        @Override
        protected void changeStateFromPress(boolean buttonOn) {
            if (!mHasTelephony)
                return;
            // In ECM mode airplane state cannot be changed
            if (!(Boolean.parseBoolean(SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE)))) {
                mState = buttonOn ? State.TurningOn : State.TurningOff;
                mAirplaneState = mState;
            }
        }

        public boolean showDuringKeyguard() {
            return true;
        }

        public boolean showBeforeProvisioning() {
            return false;
        }
    };
    onAirplaneModeChanged();
    mItems = new ArrayList<Action>();
    // next: On-The-Go, if enabled
    ContentResolver resolver = mContext.getContentResolver();
    boolean showOnTheGo = Settings.System.getInt(resolver, Settings.System.POWER_MENU_ONTHEGO_ENABLED, 0) == 1;
    if (showOnTheGo) {
        mItems.add(new SinglePressAction(com.android.internal.R.drawable.ic_lock_onthego, R.string.global_action_onthego) {

            public void onPress() {
                OnTheGoActions.processAction(mContext, OnTheGoActions.ACTION_ONTHEGO_TOGGLE);
            }

            public boolean onLongPress() {
                return false;
            }

            public boolean showDuringKeyguard() {
                return true;
            }

            public boolean showBeforeProvisioning() {
                return true;
            }
        });
    }
    String[] actionsArray;
    if (mActions == null) {
        actionsArray = mContext.getResources().getStringArray(com.android.internal.R.array.config_globalActionsList);
    } else {
        actionsArray = mActions.split("\\|");
    }
    // Always add the power off option
    mItems.add(new PowerAction());
    ArraySet<String> addedKeys = new ArraySet<String>();
    for (int i = 0; i < actionsArray.length; i++) {
        String actionKey = actionsArray[i];
        if (addedKeys.contains(actionKey)) {
            // If we already have added this, don't add it again.
            continue;
        }
        if (GLOBAL_ACTION_KEY_POWER.equals(actionKey)) {
            continue;
        } else if (GLOBAL_ACTION_KEY_RESTART.equals(actionKey)) {
            mItems.add(new RestartAction());
        } else if (GLOBAL_ACTION_KEY_SCREENSHOT.equals(actionKey)) {
            mItems.add(getScreenshotAction());
        } else if (GLOBAL_ACTION_KEY_SCREENRECORD.equals(actionKey)) {
            mItems.add(getScreenrecordAction());
        } else if (GLOBAL_ACTION_KEY_AIRPLANE.equals(actionKey)) {
            mItems.add(mAirplaneModeOn);
        } else if (GLOBAL_ACTION_KEY_TORCH.equals(actionKey)) {
            mItems.add(getTorchToggleAction());
        } else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) {
            if (Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserOwner()) {
                mItems.add(new BugReportAction());
            }
        } else if (GLOBAL_ACTION_KEY_SETTINGS.equals(actionKey)) {
            mItems.add(getSettingsAction());
        } else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {
            mItems.add(getLockdownAction());
        } else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {
            mItems.add(getVoiceAssistAction());
        } else if (GLOBAL_ACTION_KEY_ASSIST.equals(actionKey)) {
            mItems.add(getAssistAction());
        } else if (GLOBAL_ACTION_KEY_SILENT.equals(actionKey)) {
            if (mShowSilentToggle) {
                mItems.add(mSilentModeAction);
            }
        } else if (GLOBAL_ACTION_KEY_EMERGENCY.equals(actionKey)) {
            mItems.add(getEmergencyAction());
        } else if (GLOBAL_ACTION_KEY_USERS.equals(actionKey)) {
            List<UserInfo> users = ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).getUsers();
            if (users.size() > 1) {
                addUsersToMenu(mItems);
            }
        } else {
            Log.e(TAG, "Invalid global action key " + actionKey);
        }
        // Add here so we don't add more than one.
        addedKeys.add(actionKey);
    }
    mAdapter = new MyAdapter();
    AlertParams params = new AlertParams(mContext);
    params.mAdapter = mAdapter;
    params.mOnClickListener = this;
    params.mForceInverseBackground = true;
    GlobalActionsDialog dialog = new GlobalActionsDialog(mContext, params);
    // Handled by the custom class.
    dialog.setCanceledOnTouchOutside(false);
    dialog.getListView().setItemsCanFocus(true);
    dialog.getListView().setLongClickable(true);
    dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            final Action action = mAdapter.getItem(position);
            if (action instanceof LongPressAction) {
                return ((LongPressAction) action).onLongPress();
            }
            return false;
        }
    });
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
    dialog.setOnDismissListener(this);
    return dialog;
}
Also used : ContentResolver(android.content.ContentResolver) AlertParams(com.android.internal.app.AlertController.AlertParams) List(java.util.List) ArrayList(java.util.ArrayList) ArraySet(android.util.ArraySet) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) Paint(android.graphics.Paint) AdapterView(android.widget.AdapterView)

Aggregations

Intent (android.content.Intent)5 View (android.view.View)5 AdapterView (android.widget.AdapterView)5 ImageView (android.widget.ImageView)5 ListView (android.widget.ListView)5 TextView (android.widget.TextView)5 AlertParams (com.android.internal.app.AlertController.AlertParams)5 ArraySet (android.util.ArraySet)4 ContentResolver (android.content.ContentResolver)2 Paint (android.graphics.Paint)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 AlertDialog (android.app.AlertDialog)1 DialogInterface (android.content.DialogInterface)1 RemoteException (android.os.RemoteException)1