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