InLineSettingMenu.java revision 8e963a5a6016d246184ed65906f9d103e92b17e2
18872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb/* 28872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * Copyright (C) 2011 The Android Open Source Project 38872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * 48872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * Licensed under the Apache License, Version 2.0 (the "License"); 58872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * you may not use this file except in compliance with the License. 68872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * You may obtain a copy of the License at 78872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * 88872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * http://www.apache.org/licenses/LICENSE-2.0 98872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * 108872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * Unless required by applicable law or agreed to in writing, software 118872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * distributed under the License is distributed on an "AS IS" BASIS, 128872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * See the License for the specific language governing permissions and 148872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb * limitations under the License. 158872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb */ 168872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 178872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbpackage com.android.camera.ui; 188872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 198872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbimport android.content.Context; 208872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbimport android.util.AttributeSet; 218872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbimport android.util.Log; 228872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbimport android.view.accessibility.AccessibilityEvent; 238872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbimport android.widget.TextView; 248872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 258872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbimport com.android.camera.ListPreference; 268e963a5a6016d246184ed65906f9d103e92b17e2Sascha Haeberlingimport com.android.camera2.R; 278872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 288872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb/* Setting menu item that will bring up a menu when you click on it. */ 298872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolbpublic class InLineSettingMenu extends InLineSettingItem { 308872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb private static final String TAG = "InLineSettingMenu"; 318872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb // The view that shows the current selected setting. Ex: 5MP 328872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb private TextView mEntry; 338872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 348872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb public InLineSettingMenu(Context context, AttributeSet attrs) { 358872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb super(context, attrs); 368872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 378872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 388872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb @Override 398872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb protected void onFinishInflate() { 408872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb super.onFinishInflate(); 418872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb mEntry = (TextView) findViewById(R.id.current_setting); 428872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 438872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 448872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb @Override 458872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb public void initialize(ListPreference preference) { 468872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb super.initialize(preference); 478872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb //TODO: add contentDescription 488872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 498872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 508872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb @Override 518872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb protected void updateView() { 528872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb if (mOverrideValue == null) { 538872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb mEntry.setText(mPreference.getEntry()); 548872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } else { 558872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb int index = mPreference.findIndexOfValue(mOverrideValue); 568872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb if (index != -1) { 578872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb mEntry.setText(mPreference.getEntries()[index]); 588872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } else { 598872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb // Avoid the crash if camera driver has bugs. 608872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb Log.e(TAG, "Fail to find override value=" + mOverrideValue); 618872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb mPreference.print(); 628872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 638872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 648872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 658872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 668872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb @Override 678872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { 688872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb event.getText().add(mPreference.getTitle() + mPreference.getEntry()); 698872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb return true; 708872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 718872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb 728872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb @Override 738872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb public void setEnabled(boolean enable) { 748872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb super.setEnabled(enable); 758872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb if (mTitle != null) mTitle.setEnabled(enable); 768872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb if (mEntry != null) mEntry.setEnabled(enable); 778872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb } 788872c23e739de38d74f04a8c852ebb5199c905f6Michael Kolb} 79