1a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang/* 2a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * Copyright (C) 2011 The Android Open Source Project 3a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * 4a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * you may not use this file except in compliance with the License. 6a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * You may obtain a copy of the License at 7a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * 8a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * http://www.apache.org/licenses/LICENSE-2.0 9a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * 10a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * Unless required by applicable law or agreed to in writing, software 11a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * distributed under the License is distributed on an "AS IS" BASIS, 12a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * See the License for the specific language governing permissions and 14a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang * limitations under the License. 15a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang */ 16a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 17a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangpackage com.android.camera.ui; 18a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 1926d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wangimport com.android.camera.ListPreference; 20a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport com.android.camera.R; 21a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 22a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.content.Context; 23a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.util.AttributeSet; 24a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.view.View; 2526d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wangimport android.view.accessibility.AccessibilityEvent; 26a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.widget.Button; 27a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.widget.CompoundButton; 28a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.widget.CompoundButton.OnCheckedChangeListener; 29a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangimport android.widget.Switch; 30a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 31a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang/* A switch setting control which turns on/off the setting. */ 32a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wangpublic class InLineSettingSwitch extends InLineSettingItem { 33a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang private Switch mSwitch; 34a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 35a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang OnCheckedChangeListener mCheckedChangeListener = new OnCheckedChangeListener() { 36a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang public void onCheckedChanged(CompoundButton buttonView, boolean desiredState) { 37a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang changeIndex(desiredState ? 1 : 0); 38a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang } 39a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang }; 40a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 41a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang public InLineSettingSwitch(Context context, AttributeSet attrs) { 42a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang super(context, attrs); 43a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang } 44a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 45a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang @Override 46a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang protected void onFinishInflate() { 47a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang super.onFinishInflate(); 48a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang mSwitch = (Switch) findViewById(R.id.setting_switch); 49a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang mSwitch.setOnCheckedChangeListener(mCheckedChangeListener); 50a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang } 51a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang 5226d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang @Override 5326d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang public void initialize(ListPreference preference) { 5426d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang super.initialize(preference); 5526d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang // Add content descriptions for the increment and decrement buttons. 5626d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang mSwitch.setContentDescription(getContext().getResources().getString( 5726d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang R.string.accessibility_switch, mPreference.getTitle())); 5826d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang } 5926d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang 604da02059e884dbef897f410861329acad96d46d4Wu-cheng Li @Override 61a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang protected void updateView() { 624da02059e884dbef897f410861329acad96d46d4Wu-cheng Li mSwitch.setOnCheckedChangeListener(null); 63a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang if (mOverrideValue == null) { 64a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang mSwitch.setChecked(mIndex == 1); 65a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang } else { 66a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang int index = mPreference.findIndexOfValue(mOverrideValue); 67a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang mSwitch.setChecked(index == 1); 68a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang } 694da02059e884dbef897f410861329acad96d46d4Wu-cheng Li mSwitch.setOnCheckedChangeListener(mCheckedChangeListener); 70a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang } 7126d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang 7226d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang @Override 7326d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { 7426d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang onPopulateAccessibilityEvent(event); 7526d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang return true; 7626d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang } 7726d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang 7826d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang @Override 7926d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang public void onPopulateAccessibilityEvent(AccessibilityEvent event) { 8026d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang super.onPopulateAccessibilityEvent(event); 8126d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang event.getText().add(mPreference.getTitle()); 8226d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang } 83a8b55a9628fa7c073d4f9c97c9a198275194f76aChung-yih Wang} 84