11f2339bb845c3d94f94ba958024d718848271025Andrew Wilson/* 21f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * Copyright (C) 2014 The Android Open Source Project 31f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * 41f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 51f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * in compliance with the License. You may obtain a copy of the License at 61f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * 71f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * http://www.apache.org/licenses/LICENSE-2.0 81f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * 91f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * Unless required by applicable law or agreed to in writing, software distributed under the License 101f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 111f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * or implied. See the License for the specific language governing permissions and limitations under 121f2339bb845c3d94f94ba958024d718848271025Andrew Wilson * the License. 131f2339bb845c3d94f94ba958024d718848271025Andrew Wilson */ 1430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonpackage com.android.tv.quicksettings; 1530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 1630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.app.Activity; 1730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.app.AlertDialog; 1830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.content.DialogInterface; 1930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.content.Intent; 2030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.os.Bundle; 2130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.os.Parcelable; 2230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.support.v17.leanback.widget.OnChildSelectedListener; 2330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.support.v17.leanback.widget.VerticalGridView; 2430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.support.v7.widget.RecyclerView; 2530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.util.Log; 2630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.animation.AlphaAnimation; 2730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.animation.Animation; 2830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.animation.AnimationSet; 2930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.animation.ScaleAnimation; 3030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.Gravity; 3130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.KeyEvent; 3230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.LayoutInflater; 3330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.View; 3430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.ViewGroup; 3530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.view.WindowManager; 3630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.widget.SeekBar; 3730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport android.widget.TextView; 3830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 3930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport java.util.ArrayList; 4030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport java.util.Arrays; 4130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonimport java.util.List; 4230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 4330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilsonpublic class SettingsDialog extends Activity { 4430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 4530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final String TAG = "SettingsDialog"; 4630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final boolean DEBUG = true; 4730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 4830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson static final String EXTRA_START_POS = "com.android.tv.quicksettings.START_POS"; 4930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson static final String EXTRA_SETTINGS = "com.android.tv.quicksettings.SETTINGS"; 5030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson static final String 5130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson RESULT_EXTRA_NEW_SETTINGS_VALUES = "com.android.tv.quicksettings.NEW_SETTINGS_VALUES"; 5230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final int SETTING_INT_VALUE_MIN = 0; 5330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final int SETTING_INT_VALUE_STEP = 10; 5430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 5530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private VerticalGridView mPanelList; 5630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private SeekBar mSeekBar; 5730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private TextView mSettingValue; 5830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private DialogAdapter mAdapter; 5930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private SettingSelectedListener mSettingSelectedListener = new SettingSelectedListener(); 6030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private Setting mFocusedSetting; 6130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private ArrayList<Setting> mSettings; 6230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 6330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson @Override 6430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson public void onCreate(Bundle savedInstanceState) { 6530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson super.onCreate(savedInstanceState); 6630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 6730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson WindowManager.LayoutParams lp = getWindow().getAttributes(); 6830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson lp.height = WindowManager.LayoutParams.MATCH_PARENT; 6930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson lp.gravity = Gravity.BOTTOM | Gravity.CENTER; 7030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson lp.y = getResources().getDimensionPixelSize(R.dimen.panel_y_offset); 7130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson getWindow().setAttributes(lp); 7230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 7330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson setContentView(R.layout.main_quicksettings); 7430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 7530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson Intent intent = getIntent(); 7630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int startPos = intent.getIntExtra(EXTRA_START_POS, -1); 7730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson if (DEBUG) 7830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson Log.d(TAG, "startPos=" + startPos); 7930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 8030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mPanelList = (VerticalGridView) findViewById(R.id.main_panel_list); 8130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mPanelList.setWindowAlignment(VerticalGridView.WINDOW_ALIGN_NO_EDGE); 8230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mPanelList.setOnChildSelectedListener(mSettingSelectedListener); 8330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 8430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettings = getIntent().getParcelableArrayListExtra(EXTRA_SETTINGS); 8530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int pivotX = getResources().getDimensionPixelSize( 8630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson R.dimen.main_panel_text_width_minus_padding); 8730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int pivotY = getResources().getDimensionPixelSize(R.dimen.main_panel_text_height_half); 8830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 8930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mAdapter = new DialogAdapter(mSettings, pivotX, pivotY, new SettingClickedListener() { 9030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson @Override 9130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson public void onSettingClicked(Setting s) { 9230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson if (s.getType() != Setting.TYPE_UNKNOWN) { 9330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson setResult(RESULT_OK, new Intent().putExtra(RESULT_EXTRA_NEW_SETTINGS_VALUES, 9430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettings)); 9530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson finish(); 9630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } else { 9730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson new AlertDialog.Builder(SettingsDialog.this).setPositiveButton( 9830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson android.R.string.ok, new DialogInterface.OnClickListener() { 9930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson @Override 10030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson public void onClick(DialogInterface dialog, int id) { 10130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson // User clicked OK button 10230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson String[] presetSettingChoices = getResources().getStringArray( 10330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson R.array.setting_preset_choices); 10430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettings.get(QuickSettings.PRESET_SETTING_INDEX).setValue( 10530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson presetSettingChoices[getResources().getInteger( 10630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson R.integer.standard_setting_index)]); 10730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int[] newSettingValues = getResources().getIntArray( 10830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson R.array.standard_setting_values); 10930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson for (int i = 0; i < newSettingValues.length; i++) { 11030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettings.get(i + QuickSettings.INTEGER_SETTING_START_INDEX) 11130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson .setValue( 11230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson newSettingValues[i]); 11330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 11430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 11530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson }).setNegativeButton(android.R.string.cancel, 11630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson new DialogInterface.OnClickListener() { 11730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson @Override 11830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson public void onClick(DialogInterface dialog, int id) { 11930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson // User cancelled the dialog - do nothing 12030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 12130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson }).setTitle(R.string.reset_dialog_message).create().show(); 12230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 12330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 12430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson }); 12530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 12630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mPanelList.setAdapter(mAdapter); 12730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mPanelList.setSelectedPosition(startPos); 12830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mPanelList.requestFocus(); 12930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 13030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar = (SeekBar) findViewById(R.id.main_slider); 13130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 13230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue = (TextView) findViewById(R.id.setting_value); 13330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 13430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 13530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private class SettingSelectedListener implements OnChildSelectedListener { 13630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final float ALPHA_UNSELECTED = 0.3f; 13730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final float ALPHA_SELECTED = 1.0f; 13830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final float SCALE_UNSELECTED = 1.0f; 13930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private static final float SCALE_SELECTED = 1.3f; 14030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 14130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson @Override 14230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson public void onChildSelected(ViewGroup parent, View view, int position, long id) { 14330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting = mSettings.get(position); 14430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson switch (mFocusedSetting.getType()) { 14530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case Setting.TYPE_STRING: 14630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setVisibility(View.VISIBLE); 14730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setText(mFocusedSetting.getStringValue()); 14830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar.setVisibility(View.GONE); 14930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson break; 15030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case Setting.TYPE_INT: 15130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setVisibility(View.VISIBLE); 15230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setText(Integer.toString(mFocusedSetting.getIntValue())); 15330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar.setMax(mFocusedSetting.getMaxValue()); 15430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar.setProgress(mFocusedSetting.getIntValue()); 15530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar.setVisibility(View.VISIBLE); 15630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson break; 15730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson default: 15830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setVisibility(View.GONE); 15930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar.setVisibility(View.GONE); 16030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson break; 16130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 16230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 16330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 16430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 16530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson @Override 16630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson public boolean onKeyUp(int keyCode, KeyEvent event) { 16730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson if (mFocusedSetting == null) { 16830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return super.onKeyUp(keyCode, event); 16930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 17030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson switch (mFocusedSetting.getType()) { 17130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case Setting.TYPE_INT: 17230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return integerSettingHandleKeyCode(keyCode, event); 17330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case Setting.TYPE_STRING: 17430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return stringSettingHandleKeyCode(keyCode, event); 17530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson default: 17630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return super.onKeyUp(keyCode, event); 17730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 17830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 17930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 18030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private boolean integerSettingHandleKeyCode(int keyCode, KeyEvent event) { 18130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson switch (keyCode) { 18230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case KeyEvent.KEYCODE_DPAD_RIGHT: 18330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson setFocusedSettingToValue(Math.min( 18430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting.getIntValue() + SETTING_INT_VALUE_STEP, 18530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting.getMaxValue())); 18630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return true; 18730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case KeyEvent.KEYCODE_DPAD_LEFT: 18830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson setFocusedSettingToValue(Math.max( 18930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting.getIntValue() - SETTING_INT_VALUE_STEP, 19030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson SETTING_INT_VALUE_MIN)); 19130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return true; 19230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson default: 19330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return super.onKeyUp(keyCode, event); 19430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 19530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 19630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 19730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private void setFocusedSettingToValue(int value) { 19830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting.setValue(value); 19930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSeekBar.setProgress(mFocusedSetting.getIntValue()); 20030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setText(Integer.toString(mFocusedSetting.getIntValue())); 20130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson String[] presetSettingChoices = getResources().getStringArray( 20230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson R.array.setting_preset_choices); 20330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettings.get(QuickSettings.PRESET_SETTING_INDEX).setValue( 20430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson presetSettingChoices[getResources().getInteger(R.integer.custom_setting_index)]); 20530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 20630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 20730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson private boolean stringSettingHandleKeyCode(int keyCode, KeyEvent event) { 20830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson if (!mFocusedSetting.getTitle().equals(getString(R.string.setting_preset_name))) { 20930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return super.onKeyUp(keyCode, event); 21030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 21130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 21230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson String[] presetSettingChoices = getResources().getStringArray( 21330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson R.array.setting_preset_choices); 21430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson 21530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int currentIndex = Arrays.asList(presetSettingChoices).indexOf( 21630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting.getStringValue()); 21730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson switch (keyCode) { 21830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case KeyEvent.KEYCODE_DPAD_RIGHT: 21930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson currentIndex++; 22030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson break; 22130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson case KeyEvent.KEYCODE_DPAD_LEFT: 22230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson currentIndex--; 22330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson break; 22430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson default: 22530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return super.onKeyUp(keyCode, event); 22630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 22730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int newIndex = (currentIndex + presetSettingChoices.length) % presetSettingChoices.length; 22830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mFocusedSetting.setValue(presetSettingChoices[newIndex]); 22930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettingValue.setText(mFocusedSetting.getStringValue()); 23030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson int[] newSettingValues = null; 23130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson if (newIndex == getResources().getInteger(R.integer.standard_setting_index)) { 23230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson newSettingValues = getResources().getIntArray(R.array.standard_setting_values); 23330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } else if (newIndex == getResources().getInteger(R.integer.cinema_setting_index)) { 23430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson newSettingValues = getResources().getIntArray(R.array.cinema_setting_values); 23530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } else if (newIndex == getResources().getInteger(R.integer.vivid_setting_index)) { 23630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson newSettingValues = getResources().getIntArray(R.array.vivid_setting_values); 23730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } else if (newIndex == getResources().getInteger(R.integer.game_setting_index)) { 23830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson newSettingValues = getResources().getIntArray(R.array.game_setting_values); 23930736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 24030736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson if (newSettingValues != null) { 24130736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson for (int i = 0; i < newSettingValues.length; i++) { 24230736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson mSettings.get(i + QuickSettings.INTEGER_SETTING_START_INDEX).setValue( 24330736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson newSettingValues[i]); 24430736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 24530736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 24630736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson return true; 24730736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson } 24830736d506c12af7aa9d0266f1ea389cc9abf29b8Andrew Wilson} 249