Move flash settings from on-scren control to preference settings.

Change-Id: Id45c7321c1e60cc7e29a7e9c601082624d93c9e8
diff --git a/res/layout/camera.xml b/res/layout/camera.xml
index d6fa9a9..64ad273 100644
--- a/res/layout/camera.xml
+++ b/res/layout/camera.xml
@@ -57,15 +57,6 @@
                         android:focusable="false"
                         android:layout_marginLeft="5dp"
                         android:layout_marginTop="5dp"/>
-                <com.android.camera.FlashButton
-                        android:id="@+id/flash_button"
-                        android:layout_width="64dp"
-                        android:layout_height="64dp"
-                        android:layout_gravity="left|bottom"
-                        android:visibility="invisible"
-                        android:clickable="true"
-                        android:focusable="false"
-                        android:layout_marginBottom="5dp"/>
             </FrameLayout>
         </LinearLayout>
     </RelativeLayout>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index a12b51f..0b7c9e0 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -79,6 +79,19 @@
         <item>@string/pref_camera_focusmode_value_infinity</item>
     </string-array>
 
+    <!-- Camera Preferences flash mode dialog box entries -->
+    <string-array name="pref_camera_flashmode_entries" translatable="false">
+        <item>@string/pref_camera_flashmode_entry_auto</item>
+        <item>@string/pref_camera_flashmode_entry_on</item>
+        <item>@string/pref_camera_flashmode_entry_off</item>
+    </string-array>
+
+    <string-array name="pref_camera_flashmode_entryvalues" translatable="false">
+        <item>@string/pref_camera_flashmode_value_auto</item>
+        <item>@string/pref_camera_flashmode_value_on</item>
+        <item>@string/pref_camera_flashmode_value_off</item>
+    </string-array>
+
     <!-- Camera Preferences White Balance dialog box entries -->
     <string-array name="pref_camera_whitebalance_entries" translatable="false">
         <item>@string/pref_camera_whitebalance_entry_auto</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index eb12c3e..7ba4664 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -402,6 +402,25 @@
     <!-- Settings screen, focus mode dialog title -->
     <string name="pref_camera_focusmode_dialogtitle">Focus mode</string>
 
+    <!-- Default flash mode setting.-->
+    <string name="pref_camera_flashmode_default" translatable="false">auto</string>
+
+    <!-- Settings screen, Flash mode title -->
+    <string name="pref_camera_flashmode_title">Flash mode</string>
+
+    <!-- Settings screen, Focue mode dialog radio button choices -->
+    <string name="pref_camera_flashmode_entry_auto">Auto</string>
+    <string name="pref_camera_flashmode_entry_on">On</string>
+    <string name="pref_camera_flashmode_entry_off">Off</string>
+
+    <!-- Flash mode entry values.-->
+    <string name="pref_camera_flashmode_value_auto" translatable="false">auto</string>
+    <string name="pref_camera_flashmode_value_on" translatable="false">on</string>
+    <string name="pref_camera_flashmode_value_off" translatable="false">off</string>
+
+    <!-- Settings screen, flash mode dialog title -->
+    <string name="pref_camera_flashmode_dialogtitle">Flash mode</string>
+
     <!-- Default white balance setting. -->
     <string name="pref_camera_whitebalance_default" translatable="false">auto</string>
 
diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml
index 92ade83..7531df3 100644
--- a/res/xml/camera_preferences.xml
+++ b/res/xml/camera_preferences.xml
@@ -23,6 +23,13 @@
                 android:summary="@string/pref_camera_recordlocation_summary"
                 android:defaultValue="false"/>
         <ListPreference
+                android:key="pref_camera_flashmode_key"
+                android:defaultValue="@string/pref_camera_flashmode_default"
+                android:title="@string/pref_camera_flashmode_title"
+                android:entries="@array/pref_camera_flashmode_entries"
+                android:entryValues="@array/pref_camera_flashmode_entryvalues"
+                android:dialogTitle="@string/pref_camera_flashmode_dialogtitle" />
+        <ListPreference
                 android:key="pref_camera_scenemode_key"
                 android:defaultValue="@string/pref_camera_scenemode_default"
                 android:title="@string/pref_camera_scenemode_title"
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 96d735b..23ec351 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -84,8 +84,7 @@
  */
 public class Camera extends Activity implements View.OnClickListener,
         ShutterButton.OnShutterButtonListener, SurfaceHolder.Callback,
-        Switcher.OnSwitchListener, FlashButton.ModeChangeListener,
-        OnScreenSettings.OnVisibilityChangedListener,
+        Switcher.OnSwitchListener, OnScreenSettings.OnVisibilityChangedListener,
         OnSharedPreferenceChangeListener {
 
     private static final String TAG = "camera";
@@ -136,7 +135,6 @@
     private SurfaceHolder mSurfaceHolder = null;
     private ShutterButton mShutterButton;
     private FocusRectangle mFocusRectangle;
-    private FlashButton mFlashButton;
     private ImageView mGpsIndicator;
     private ToneGenerator mFocusToneGenerator;
     private ZoomButtonsController mZoomButtons;
@@ -289,16 +287,6 @@
         mFocusRectangle = (FocusRectangle) findViewById(R.id.focus_rectangle);
         updateFocusIndicator();
 
-        // Initialize flash button
-        if (mParameters.getSupportedFlashModes() != null) {
-            mFlashButton = (FlashButton) findViewById(R.id.flash_button);
-            String flashMode = mPreferences.getString(
-                    CameraSettings.KEY_FLASH_MODE, "auto");
-            mFlashButton.setMode(flashMode);
-            mFlashButton.setVisibility(View.VISIBLE);
-            mFlashButton.setListener(this);
-        }
-
         // Initialize GPS indicator.
         mGpsIndicator = (ImageView) findViewById(R.id.gps_indicator);
         mGpsIndicator.setImageResource(R.drawable.ic_camera_sym_gps);
@@ -1823,16 +1811,6 @@
         return true;
     }
 
-    public void onFlashModeChanged(String modeString) {
-        SharedPreferences.Editor editor = mPreferences.edit();
-        editor.putString(CameraSettings.KEY_FLASH_MODE, modeString);
-        editor.commit();
-        if (!mPausing) {
-            mParameters.setFlashMode(modeString);
-            mCameraDevice.setParameters(mParameters);
-        }
-    }
-
     private void setCameraPictureSizeIfSupported(String sizeString) {
         List<Size> pictureSizes = mParameters.getSupportedPictureSizes();
         if (pictureSizes != null) {
@@ -1941,70 +1919,3 @@
         setBackgroundDrawable(null);
     }
 }
-
-// FlashButton changes state every time it is clicked.
-// The ModeChangeListener notifies that event.
-class FlashButton extends ImageView implements View.OnClickListener {
-    private static final String TAG = "FlashButton";
-
-    private static final int MODE_OFF = 0;
-    private static final int MODE_ON = 1;
-    private static final int MODE_AUTO = 2;
-
-    private static final String[] MODE_STRINGS = new String[] {
-        "off", "on", "auto"
-    };
-
-    private static final int[] FLASH_IMAGES = new int[] {
-        R.drawable.flash_off,
-        R.drawable.flash_on,
-        R.drawable.flash_auto
-    };
-
-    private int mCurrentMode;
-    private ModeChangeListener mListener;
-
-    public interface ModeChangeListener {
-        public void onFlashModeChanged(String modeString);
-    }
-    public FlashButton(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        updateMode(MODE_AUTO);
-        setOnClickListener(this);
-    }
-
-    public void setMode(String modeString) {
-        for (int i = 0; i < MODE_STRINGS.length; i++) {
-            if (MODE_STRINGS[i].equals(modeString)) {
-                updateModeIfNecessary(i);
-                return;
-            }
-        }
-        Log.w(TAG, "Unknown mode: " + modeString);
-    }
-
-    public void setListener(ModeChangeListener listener) {
-        mListener = listener;
-    }
-
-    public void onClick(View v) {
-        int nextMode = (mCurrentMode + 1) % FLASH_IMAGES.length;
-        updateMode(nextMode);
-    }
-
-    private void updateModeIfNecessary(int mode) {
-        if (mode == mCurrentMode) return;
-        if (mode < 0 || mode >= FLASH_IMAGES.length) {
-            return;
-        }
-        updateMode(mode);
-    }
-
-    private void updateMode(int mode) {
-        mCurrentMode = mode;
-        setImageResource(FLASH_IMAGES[mode]);
-        if (mListener != null) {
-            mListener.onFlashModeChanged(MODE_STRINGS[mode]);
-        }
-    }
-}