1b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb/*
2b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * Copyright (C) 2012 The Android Open Source Project
3b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb *
4b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * Licensed under the Apache License, Version 2.0 (the "License");
5b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * you may not use this file except in compliance with the License.
6b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * You may obtain a copy of the License at
7b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb *
8b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb *      http://www.apache.org/licenses/LICENSE-2.0
9b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb *
10b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * Unless required by applicable law or agreed to in writing, software
11b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * distributed under the License is distributed on an "AS IS" BASIS,
12b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * See the License for the specific language governing permissions and
14b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb * limitations under the License.
15b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb */
16b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
17b5b59b88683823d70faac7b3454519d53c51180bMichael Kolbpackage com.android.camera;
18b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
192d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolbimport android.content.Context;
20ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Liimport android.hardware.Camera.Parameters;
212d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolbimport android.view.LayoutInflater;
22b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
23f04692066fc7087560248b003c49e0377c056edfDoris Liuimport com.android.camera.ui.AbstractSettingPopup;
24f04692066fc7087560248b003c49e0377c056edfDoris Liuimport com.android.camera.ui.ListPrefSettingPopup;
25f04692066fc7087560248b003c49e0377c056edfDoris Liuimport com.android.camera.ui.MoreSettingPopup;
26b5b59b88683823d70faac7b3454519d53c51180bMichael Kolbimport com.android.camera.ui.PieItem;
273ed120d2204c73ab20d6093f112367de60129eb3John Reckimport com.android.camera.ui.PieItem.OnClickListener;
28b5b59b88683823d70faac7b3454519d53c51180bMichael Kolbimport com.android.camera.ui.PieRenderer;
2954d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liuimport com.android.camera.ui.TimerSettingPopup;
30b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
312d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolbpublic class PhotoController extends PieController
32f04692066fc7087560248b003c49e0377c056edfDoris Liu        implements MoreSettingPopup.Listener,
3354d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu        TimerSettingPopup.Listener,
34f04692066fc7087560248b003c49e0377c056edfDoris Liu        ListPrefSettingPopup.Listener {
35b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    private static String TAG = "CAM_photocontrol";
36b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    private static float FLOAT_PI_DIVIDED_BY_TWO = (float) Math.PI / 2;
37ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    private final String mSettingOff;
38b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
392d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    private PhotoModule mModule;
40b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    private String[] mOtherKeys;
41ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu    // First level popup
42ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu    private MoreSettingPopup mPopup;
43ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu    // Second level popup
44ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu    private AbstractSettingPopup mSecondPopup;
45b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
462d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    public PhotoController(CameraActivity activity, PhotoModule module, PieRenderer pie) {
47b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        super(activity, pie);
482d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb        mModule = module;
49ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        mSettingOff = activity.getString(R.string.setting_off_value);
50b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    }
51b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
52b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    public void initialize(PreferenceGroup group) {
53b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        super.initialize(group);
54aaf27677831ac31d7a55e6faf173a64d6e0c3021Michael Kolb        mPopup = null;
55ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        mSecondPopup = null;
56b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        float sweep = FLOAT_PI_DIVIDED_BY_TWO / 2;
57b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        addItem(CameraSettings.KEY_FLASH_MODE, FLOAT_PI_DIVIDED_BY_TWO - sweep, sweep);
58449badb77342ee5d0ee2852b3cdd5386e456e461Michael Kolb        addItem(CameraSettings.KEY_EXPOSURE, 3 * FLOAT_PI_DIVIDED_BY_TWO - sweep, sweep);
59449badb77342ee5d0ee2852b3cdd5386e456e461Michael Kolb        addItem(CameraSettings.KEY_WHITE_BALANCE, 3 * FLOAT_PI_DIVIDED_BY_TWO + sweep, sweep);
605ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb        if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) {
615ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb            PieItem item = makeItem(R.drawable.ic_switch_photo_facing_holo_light);
625ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb            item.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO + sweep, sweep);
635ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb            item.setOnClickListener(new OnClickListener() {
645ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                @Override
655ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                public void onClick(PieItem item) {
665ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                    // Find the index of next camera.
675ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                    ListPreference camPref = mPreferenceGroup
685ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                            .findPreference(CameraSettings.KEY_CAMERA_ID);
695ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                    if (camPref != null) {
705ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                        int index = camPref.findIndexOfValue(camPref.getValue());
715ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                        CharSequence[] values = camPref.getEntryValues();
725ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                        index = (index + 1) % values.length;
735ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                        int newCameraId = Integer
745ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                                .parseInt((String) values[index]);
755ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                        mListener.onCameraPickerClicked(newCameraId);
765ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb                    }
779667bf4a16d01c58a5b91eebede8df13e95f592dMichael Kolb                }
785ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb            });
795ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb            mRenderer.addItem(item);
805ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb        }
818e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb        if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) {
828e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb            PieItem hdr = makeItem(R.drawable.ic_hdr);
838e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb            hdr.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO, sweep);
843ed120d2204c73ab20d6093f112367de60129eb3John Reck            hdr.setOnClickListener(new OnClickListener() {
858e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                @Override
863ed120d2204c73ab20d6093f112367de60129eb3John Reck                public void onClick(PieItem item) {
878e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                    // Find the index of next camera.
888e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                    ListPreference pref = mPreferenceGroup
898e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                            .findPreference(CameraSettings.KEY_CAMERA_HDR);
908e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                    if (pref != null) {
918e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                        // toggle hdr value
928e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                        int index = (pref.findIndexOfValue(pref.getValue()) + 1) % 2;
938e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                        pref.setValueIndex(index);
948e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                        onSettingChanged(pref);
958e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb                    }
96e1fa2543424be206ed29efa5f0ebcaff3766ed99Michael Kolb                }
978e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb            });
988e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb            mRenderer.addItem(hdr);
998e6490c77d7f6b581dce3a12b60438a0d629d6ebMichael Kolb        }
100b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        mOtherKeys = new String[] {
1012d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb                CameraSettings.KEY_SCENE_MODE,
102b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb                CameraSettings.KEY_RECORD_LOCATION,
103b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb                CameraSettings.KEY_PICTURE_SIZE,
10454d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu                CameraSettings.KEY_FOCUS_MODE,
10554d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu                CameraSettings.KEY_TIMER,
1068e3b1df4fcc770965d0796ac2046ef9e265d4bdbDoris Liu                CameraSettings.KEY_TIMER_SOUND_EFFECTS,
10754d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu                };
1085ee84981bf79e2e86fe050f88c426734fb687eafMichael Kolb        PieItem item = makeItem(R.drawable.ic_settings_holo_light);
109b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        item.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO * 3, sweep);
1103ed120d2204c73ab20d6093f112367de60129eb3John Reck        item.setOnClickListener(new OnClickListener() {
111b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb            @Override
1123ed120d2204c73ab20d6093f112367de60129eb3John Reck            public void onClick(PieItem item) {
113ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu                if (mPopup == null) {
1142d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb                    initializePopup();
1152d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb                }
1162d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb                mModule.showPopup(mPopup);
117b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb            }
118b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        });
119b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        mRenderer.addItem(item);
120b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    }
121b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
122b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    protected void setCameraId(int cameraId) {
123b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CAMERA_ID);
124b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb        pref.setValue("" + cameraId);
125b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb    }
126b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb
1272d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    @Override
1289d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb    public void reloadPreferences() {
1299d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb        super.reloadPreferences();
1309d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb        if (mPopup != null) {
1319d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb            mPopup.reloadPreference();
1329d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb        }
1339d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb    }
1349d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb
1359d8583fc0e14477466ed0e9f69f40ea2863c393fMichael Kolb    @Override
136f04692066fc7087560248b003c49e0377c056edfDoris Liu    // Hit when an item in the second-level popup gets selected
137f04692066fc7087560248b003c49e0377c056edfDoris Liu    public void onListPrefChanged(ListPreference pref) {
138ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        if (mPopup != null && mSecondPopup != null) {
139f04692066fc7087560248b003c49e0377c056edfDoris Liu                mModule.dismissPopup(true);
140ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu                mPopup.reloadPreference();
141f04692066fc7087560248b003c49e0377c056edfDoris Liu        }
142f04692066fc7087560248b003c49e0377c056edfDoris Liu        onSettingChanged(pref);
143f04692066fc7087560248b003c49e0377c056edfDoris Liu    }
144f04692066fc7087560248b003c49e0377c056edfDoris Liu
145f04692066fc7087560248b003c49e0377c056edfDoris Liu    @Override
1462d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    public void overrideSettings(final String ... keyvalues) {
1472d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb        super.overrideSettings(keyvalues);
148ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        if (mPopup == null) initializePopup();
149ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        mPopup.overrideSettings(keyvalues);
1502d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    }
1512d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb
1522d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    protected void initializePopup() {
1532d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb        LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
1542d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb                Context.LAYOUT_INFLATER_SERVICE);
1552d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb
156f04692066fc7087560248b003c49e0377c056edfDoris Liu        MoreSettingPopup popup = (MoreSettingPopup) inflater.inflate(
157f04692066fc7087560248b003c49e0377c056edfDoris Liu                R.layout.more_setting_popup, null, false);
1582d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb        popup.setSettingChangedListener(this);
1592d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb        popup.initialize(mPreferenceGroup, mOtherKeys);
16002fdcaef920cd764cc7c0ab937367475835e9c9bDoris Liu        if (mActivity.isSecureCamera()) {
16102fdcaef920cd764cc7c0ab937367475835e9c9bDoris Liu            // Prevent location preference from getting changed in secure camera mode
16202fdcaef920cd764cc7c0ab937367475835e9c9bDoris Liu            popup.setPreferenceEnabled(CameraSettings.KEY_RECORD_LOCATION, false);
16302fdcaef920cd764cc7c0ab937367475835e9c9bDoris Liu        }
1642d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb        mPopup = popup;
1652d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb    }
1662d3af28f91481d7f3887cb0bb9c5d06375baf787Michael Kolb
167ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu    public void popupDismissed(boolean topPopupOnly) {
168ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        // if the 2nd level popup gets dismissed
169ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        if (mSecondPopup != null) {
170ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu            mSecondPopup = null;
171f04692066fc7087560248b003c49e0377c056edfDoris Liu            if (topPopupOnly) mModule.showPopup(mPopup);
172f04692066fc7087560248b003c49e0377c056edfDoris Liu        }
173f04692066fc7087560248b003c49e0377c056edfDoris Liu    }
174f04692066fc7087560248b003c49e0377c056edfDoris Liu
175ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    // Return true if the preference has the specified key but not the value.
176ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    private static boolean notSame(ListPreference pref, String key, String value) {
177ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        return (key.equals(pref.getKey()) && !value.equals(pref.getValue()));
178ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    }
179ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li
180ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    private void setPreference(String key, String value) {
181ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        ListPreference pref = mPreferenceGroup.findPreference(key);
182ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        if (pref != null && !value.equals(pref.getValue())) {
183ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li            pref.setValue(value);
184ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li            reloadPreferences();
185ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        }
186ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    }
187ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li
188ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    @Override
189ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    public void onSettingChanged(ListPreference pref) {
190ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        // Reset the scene mode if HDR is set to on. Reset HDR if scene mode is
191ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        // set to non-auto.
192ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        if (notSame(pref, CameraSettings.KEY_CAMERA_HDR, mSettingOff)) {
193ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li            setPreference(CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO);
194ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        } else if (notSame(pref, CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO)) {
195ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li            setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff);
196ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        }
197ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li        super.onSettingChanged(pref);
198ad30bda0d0103bd8a93eb834c234341b1ab1e77fWu-cheng Li    }
199f04692066fc7087560248b003c49e0377c056edfDoris Liu
200f04692066fc7087560248b003c49e0377c056edfDoris Liu    @Override
201f04692066fc7087560248b003c49e0377c056edfDoris Liu    // Hit when an item in the first-level popup gets selected, then bring up
202f04692066fc7087560248b003c49e0377c056edfDoris Liu    // the second-level popup
203ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu    public void onPreferenceClicked(ListPreference pref) {
204ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        if (mSecondPopup != null) return;
205f04692066fc7087560248b003c49e0377c056edfDoris Liu
206f04692066fc7087560248b003c49e0377c056edfDoris Liu        LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
207f04692066fc7087560248b003c49e0377c056edfDoris Liu                Context.LAYOUT_INFLATER_SERVICE);
20854d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu        if (CameraSettings.KEY_TIMER.equals(pref.getKey())) {
20954d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            TimerSettingPopup timerPopup = (TimerSettingPopup) inflater.inflate(
21054d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu                    R.layout.timer_setting_popup, null, false);
21154d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            timerPopup.initialize(pref);
21254d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            timerPopup.setSettingChangedListener(this);
21354d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            mModule.dismissPopup(true);
21454d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            mSecondPopup = timerPopup;
21554d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu        } else {
21654d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            ListPrefSettingPopup basic = (ListPrefSettingPopup) inflater.inflate(
21754d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu                    R.layout.list_pref_setting_popup, null, false);
21854d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            basic.initialize(pref);
21954d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            basic.setSettingChangedListener(this);
22054d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            mModule.dismissPopup(true);
22154d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu            mSecondPopup = basic;
22254d2fafcbb85025ea737c56af6df2afbf4bfda96Doris Liu        }
223ccd32dfd9fe67daff7a428c4fc8fb5e67cfef906Doris Liu        mModule.showPopup(mSecondPopup);
224f04692066fc7087560248b003c49e0377c056edfDoris Liu    }
225b5b59b88683823d70faac7b3454519d53c51180bMichael Kolb}
226