IndicatorIconController.java revision bd1b8f910d6f2c94daac304f4bd1a098939474c3
1e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren/*
2e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * Copyright (C) 2014 The Android Open Source Project
3e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren *
4e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * Licensed under the Apache License, Version 2.0 (the "License");
5e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * you may not use this file except in compliance with the License.
6e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * You may obtain a copy of the License at
7e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren *
8e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren *      http://www.apache.org/licenses/LICENSE-2.0
9e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren *
10e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * Unless required by applicable law or agreed to in writing, software
11e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * distributed under the License is distributed on an "AS IS" BASIS,
12e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * See the License for the specific language governing permissions and
14e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * limitations under the License.
15e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren */
16e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
17e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenpackage com.android.camera.widget;
18e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
19e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.content.Context;
20e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.content.res.TypedArray;
21e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.graphics.drawable.Drawable;
22e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.util.AttributeSet;
23e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.util.Log;
24e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.view.View;
25e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.view.ViewGroup;
26e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport android.widget.ImageView;
27e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
28e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport com.android.camera.ButtonManager;
29e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport com.android.camera.app.AppController;
30e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport com.android.camera.module.ModulesInfo;
31e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport com.android.camera.settings.SettingsManager;
32e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
33e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenimport com.android.camera2.R;
34e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
35e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren/**
36e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * IndicatorIconController sets the visibility and icon state of
37e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * on screen indicators.
38e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren *
39e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * Indicators are only visible if they are in a non-default state.  The
40e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren * visibility of an indicator is set when an indicator's setting changes.
41e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren */
42e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgrenpublic class IndicatorIconController
43e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    implements SettingsManager.OnSettingChangedListener,
44e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren               ButtonManager.ButtonStatusListener {
45e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
46e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private final static String TAG = "IndicatorIconController";
47e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
48e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private ImageView mFlashIndicator;
49e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private ImageView mHdrIndicator;
50e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
51e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private TypedArray mFlashIndicatorPhotoIcons;
52e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private TypedArray mFlashIndicatorVideoIcons;
53e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private TypedArray mHdrIndicatorIcons;
54e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
55e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private AppController mController;
56e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
57e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    public IndicatorIconController(AppController controller, View root) {
58e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        mController = controller;
59e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        Context context = controller.getAndroidContext();
60e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
61e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        mFlashIndicator = (ImageView) root.findViewById(R.id.flash_indicator);
62e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        mHdrIndicator = (ImageView) root.findViewById(R.id.hdr_indicator);
63e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
64e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        mFlashIndicatorPhotoIcons = context.getResources().obtainTypedArray(
65e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            R.array.camera_flashmode_indicator_icons);
66e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        mFlashIndicatorVideoIcons = context.getResources().obtainTypedArray(
67e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            R.array.video_flashmode_indicator_icons);
68e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        mHdrIndicatorIcons = context.getResources().obtainTypedArray(
69e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            R.array.pref_camera_hdr_plus_indicator_icons);
70e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
71e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
72e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    @Override
73e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    public void onButtonVisibilityChanged(ButtonManager buttonManager, int buttonId) {
74e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        syncIndicatorWithButton(buttonId);
75e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
76e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
77e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    @Override
78e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    public void onButtonEnabledChanged(ButtonManager buttonManager, int buttonId) {
79e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        syncIndicatorWithButton(buttonId);
80e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
81e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
82e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    /**
83e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * Syncs a specific indicator's icon and visibility
84e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * based on the enabled state and visibility of a button.
85e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     */
86e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private void syncIndicatorWithButton(int buttonId) {
87e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        switch (buttonId) {
88e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        case ButtonManager.BUTTON_FLASH: {
89e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            if (mController != null) {
90e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                syncFlashIndicator(mController);
91e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
92e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
93e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        case ButtonManager.BUTTON_TORCH: {
94e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            if (mController != null) {
95e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                syncFlashIndicator(mController);
96e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
97e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
98e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        case ButtonManager.BUTTON_HDRPLUS: {
99e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            if (mController != null) {
100e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                syncHdrIndicator(mController);
101e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
102e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
103e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        default:
104e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            // Do nothing.  The indicator doesn't care
105e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            // about button that don't correspond to indicators.
106e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
107e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
108e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
109e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    /**
110e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * Sets all indicators to the correct resource and visibility
111e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * based on the current settings.
112e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     */
113e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    public void syncIndicators(AppController controller) {
114e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        if (mController == null) {
115e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            mController = controller;
116e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
117e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        syncFlashIndicator(mController);
118e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        syncHdrIndicator(mController);
119e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
120e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
121e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    /**
122e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * Sync the icon and visibility of the flash indicator.
123e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     */
124e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private void syncFlashIndicator(AppController controller) {
125e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        ButtonManager buttonManager = controller.getButtonManager();
126e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // Sync the flash indicator.
127e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // If flash isn't an enabled and visible option,
128e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // do not show the indicator.
129e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        if (buttonManager.isEnabled(ButtonManager.BUTTON_FLASH)
130e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                && buttonManager.isVisible(ButtonManager.BUTTON_FLASH)) {
131e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
132e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            int modeIndex = controller.getCurrentModuleIndex();
133bd1b8f910d6f2c94daac304f4bd1a098939474c3Doris Liu            if (modeIndex == controller.getAndroidContext().getResources()
134bd1b8f910d6f2c94daac304f4bd1a098939474c3Doris Liu                    .getInteger(R.integer.camera_mode_video)) {
135e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                setIndicatorState(controller.getSettingsManager(),
136e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                                  SettingsManager.SETTING_VIDEOCAMERA_FLASH_MODE,
137e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                                  mFlashIndicator, mFlashIndicatorVideoIcons);
138e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            } else {
139e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                setIndicatorState(controller.getSettingsManager(),
140e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                                  SettingsManager.SETTING_FLASH_MODE,
141e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                                  mFlashIndicator, mFlashIndicatorPhotoIcons);
142e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
143e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        } else {
144e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            mFlashIndicator.setVisibility(View.GONE);
145e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
146e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
147e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
148e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    /**
149e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * Sync the icon and the visibility of the hdr indicator.
150e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     */
151e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private void syncHdrIndicator(AppController controller) {
152e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        ButtonManager buttonManager = controller.getButtonManager();
153e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // Sync the hdr indicator.
154e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // If hdr isn't an enabled and visible option,
155e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // do not show the indicator.
156e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        if (buttonManager.isEnabled(ButtonManager.BUTTON_HDRPLUS)
157e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                && buttonManager.isVisible(ButtonManager.BUTTON_HDRPLUS)) {
158e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            setIndicatorState(controller.getSettingsManager(),
159e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                              SettingsManager.SETTING_CAMERA_HDR,
160e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                              mHdrIndicator, mHdrIndicatorIcons);
161e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        } else {
162e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            mHdrIndicator.setVisibility(View.GONE);
163e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
164e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
165e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
166e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    /**
167e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * Sets the image resource and visibility of the indicator
168e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     * based on the indicator's corresponding setting state.
169e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren     */
170e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    private void setIndicatorState(SettingsManager settingsManager, int id,
171e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            ImageView imageView, TypedArray iconArray) {
172e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
173e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // Set the correct image src.
174e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        String value = settingsManager.get(id);
175e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        int valueIndex = settingsManager.getStringValueIndex(id);
176e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        if (valueIndex < 0) {
177e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            // This can happen when the setting is camera dependent
178e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            // and the camera is not yet open.  CameraAppUI.onChangeCamera()
179e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            // will call this again when the camera is open.
180e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            Log.w(TAG, "The setting for this indicator is not available.");
181e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            imageView.setVisibility(View.GONE);
182e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            return;
183e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
184e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        Drawable drawable = iconArray.getDrawable(valueIndex);
185e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        if (drawable == null) {
186e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            throw new IllegalStateException("Indicator drawable is null.");
187e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
188e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        imageView.setImageDrawable(drawable);
189e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
190e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        // Set the indicator visible if not in default state.
191e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        if (settingsManager.isDefault(id)) {
192e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            imageView.setVisibility(View.GONE);
193e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        } else {
194e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            imageView.setVisibility(View.VISIBLE);
195e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
196e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
197e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren
198e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    @Override
199e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    public void onSettingChanged(SettingsManager settingsManager, int id) {
200e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        switch (id) {
201e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            case SettingsManager.SETTING_FLASH_MODE: {
202e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                setIndicatorState(settingsManager, id, mFlashIndicator, mFlashIndicatorPhotoIcons);
203e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                break;
204e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
205e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            case SettingsManager.SETTING_VIDEOCAMERA_FLASH_MODE: {
206e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                setIndicatorState(settingsManager, id, mFlashIndicator, mFlashIndicatorVideoIcons);
207e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                break;
208e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
209e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            case SettingsManager.SETTING_CAMERA_HDR: {
210e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                setIndicatorState(settingsManager, id, mHdrIndicator, mHdrIndicatorIcons);
211e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                break;
212e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
213e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            default: {
214e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren                // Do nothing.
215e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren            }
216e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren        }
217e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren    }
218e2a1f54fbf6a8a7beff5b7695654ca21e63643afErin Dahlgren}
219