Merge "Fix the build: use exported panorama values in helper class." into gb-ub-photos-denali
diff --git a/res/layout/filmstrip_bottom_controls.xml b/res/layout/filmstrip_bottom_controls.xml
index d859242..a5dde05 100644
--- a/res/layout/filmstrip_bottom_controls.xml
+++ b/res/layout/filmstrip_bottom_controls.xml
@@ -28,42 +28,70 @@
     <!-- A filler view -->
     <View
         android:layout_width="0dp"
-        android:layout_height="match_parent"
+        android:layout_height="1dp"
         android:layout_weight="1"
         android:visibility="invisible" />
 
-    <FrameLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-
-        <ImageButton
-            android:id="@+id/filmstrip_bottom_control_view"
-            style="@style/FilmstripBottomControlButton"
-            android:layout_gravity="center"
-            android:src="@drawable/ic_view_photosphere"
-            android:visibility="invisible" />
-
-        <ImageButton
-            android:id="@+id/filmstrip_bottom_control_tiny_planet"
-            style="@style/FilmstripBottomControlButton"
-            android:layout_gravity="center"
-            android:src="@drawable/ic_menu_tiny_planet"
-            android:visibility="invisible" />
-    </FrameLayout>
-
-    <ImageButton
-        android:id="@+id/filmstrip_bottom_control_edit"
-        style="@style/FilmstripBottomControlButton"
-        android:src="@drawable/ic_menu_edit_holo_dark"
-        android:visibility="invisible" />
-
-
     <ImageButton
         android:id="@+id/filmstrip_bottom_control_share"
         style="@style/FilmstripBottomControlButton"
         android:src="@drawable/ic_menu_share_holo_light"
         android:visibility="invisible" />
 
+    <LinearLayout
+        android:layout_width="144dp"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:visibility="visible">
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="1dp"
+            android:layout_weight="1"
+            android:visibility="invisible" />
+
+        <FrameLayout
+            android:id="@+id/filmstrip_bottom_control_viewer_wrapper"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:visibility="gone">
+
+            <ImageButton
+                android:id="@+id/filmstrip_bottom_control_view"
+                style="@style/FilmstripBottomControlButton"
+                android:layout_gravity="center"
+                android:src="@drawable/ic_view_photosphere"
+                android:visibility="gone" />
+
+            <ImageButton
+                android:id="@+id/filmstrip_bottom_control_tiny_planet"
+                style="@style/FilmstripBottomControlButton"
+                android:layout_gravity="center"
+                android:src="@drawable/ic_menu_tiny_planet"
+                android:visibility="gone" />
+        </FrameLayout>
+
+        <View
+            android:id="@+id/filmstrip_bottom_control_middle_filler"
+            android:layout_width="0dp"
+            android:layout_height="1dp"
+            android:layout_weight="1"
+            android:visibility="invisible" />
+
+        <ImageButton
+            android:id="@+id/filmstrip_bottom_control_edit"
+            style="@style/FilmstripBottomControlButton"
+            android:src="@drawable/ic_menu_edit_holo_dark"
+            android:visibility="gone" />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="1dp"
+            android:layout_weight="1"
+            android:visibility="invisible" />
+
+    </LinearLayout>
+
     <ImageButton
         android:id="@+id/filmstrip_bottom_control_delete"
         style="@style/FilmstripBottomControlButton"
@@ -73,7 +101,7 @@
     <!-- A filler view -->
     <View
         android:layout_width="0dp"
-        android:layout_height="match_parent"
+        android:layout_height="1dp"
         android:layout_weight="1"
         android:visibility="invisible" />
 
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 99b9152..fff0349 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -159,7 +159,7 @@
 
     <!-- Filmstrip bottom controls -->
     <dimen name="filmstrip_bottom_control_size">48dp</dimen>
-    <dimen name="filmstrip_bottom_control_spacing">8dp</dimen>
+    <dimen name="filmstrip_bottom_control_spacing">16dp</dimen>
 
     <!-- Bottom bar ui -->
     <dimen name="bottom_bar_height_min">80dp</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3f732c5..e94ceef 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -277,7 +277,6 @@
         <item name="android:alpha">1.0</item>
     </style>
     <style name="FilmstripBottomControlButton">
-        <item name="android:layout_margin">@dimen/filmstrip_bottom_control_spacing</item>
         <item name="android:layout_width">@dimen/filmstrip_bottom_control_size</item>
         <item name="android:layout_height">@dimen/filmstrip_bottom_control_size</item>
         <item name="android:background">@drawable/transparent_button_background</item>
diff --git a/src/com/android/camera/app/FilmstripBottomControls.java b/src/com/android/camera/app/FilmstripBottomControls.java
index 400139a..2c09592 100644
--- a/src/com/android/camera/app/FilmstripBottomControls.java
+++ b/src/com/android/camera/app/FilmstripBottomControls.java
@@ -32,12 +32,15 @@
     private ViewGroup mLayout;
     private ImageButton mEditButton;
     private ImageButton mViewButton;
+    private View  mViewerWrapperLayout;
     private ImageButton mTinyPlanetButton;
     private ImageButton mDeleteButton;
     private ImageButton mShareButton;
+    private View mMiddleFiller;
 
     public FilmstripBottomControls(ViewGroup bottomControlsLayout) {
         mLayout = bottomControlsLayout;
+        mMiddleFiller = mLayout.findViewById(R.id.filmstrip_bottom_control_middle_filler);
         setupEditButton();
         setupViewButton();
         setupTinyPlanetButton();
@@ -61,7 +64,8 @@
 
     @Override
     public void setEditButtonVisibility(boolean visible) {
-        setVisibility(mEditButton, visible);
+        mEditButton.setVisibility(visible ? View.VISIBLE : View.GONE);
+        updateMiddleFillerLayoutVisibility();
     }
 
     @Override
@@ -72,12 +76,12 @@
     @Override
     public void setViewerButtonVisibility(int state) {
         if (state == VIEWER_NONE) {
-            setVisibility(mViewButton, false);
-            return;
+            mViewButton.setVisibility(View.GONE);
+        } else {
+            mViewButton.setImageResource(getViewButtonResource(state));
+            mViewButton.setVisibility(View.VISIBLE);
         }
-        mViewButton.setImageResource(getViewButtonResource(state));
-        setVisibility(mViewButton, true);
-
+        updateMiddleFillerLayoutVisibility();
     }
 
     @Override
@@ -87,7 +91,8 @@
 
     @Override
     public void setTinyPlanetButtonVisibility(final boolean visible) {
-        setVisibility(mTinyPlanetButton, visible);
+        mTinyPlanetButton.setVisibility(visible ? View.VISIBLE : View.GONE);
+        updateMiddleFillerLayoutVisibility();
     }
 
     @Override
@@ -97,7 +102,7 @@
 
     @Override
     public void setDeleteButtonVisibility(boolean visible) {
-        setVisibility(mDeleteButton, visible);
+        mDeleteButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
     }
 
     @Override
@@ -107,7 +112,7 @@
 
     @Override
     public void setShareButtonVisibility(boolean visible) {
-        setVisibility(mShareButton, visible);
+        mShareButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
     }
 
     @Override
@@ -115,13 +120,6 @@
         mShareButton.setEnabled(enabled);
     }
 
-    /**
-     * Sets the visibility of the given view.
-     */
-    private static void setVisibility(final View view, final boolean visible) {
-        view.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
-    }
-
     private int getViewButtonResource(int state) {
         switch (state) {
             case VIEWER_REFOCUS:
@@ -146,6 +144,7 @@
     }
 
     private void setupViewButton() {
+        mViewerWrapperLayout = mLayout.findViewById(R.id.filmstrip_bottom_control_viewer_wrapper);
         mViewButton = (ImageButton) mLayout.findViewById(R.id.filmstrip_bottom_control_view);
         mViewButton.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -193,4 +192,28 @@
             }
         });
     }
+
+    /**
+     * Updates the visibility of the middle filler view in the center and the
+     * visibility of wrapper layout of viewer buttons and the tinyplanet button.
+     * The middle filler view should be visible when edit button and viewer
+     * buttons are both visible. The wrapper layout of viewer buttons and
+     * tinyplanet should be gone if no viewer button is shown and the
+     * tinyplanet button is invisible.
+     */
+    private void updateMiddleFillerLayoutVisibility() {
+        if (mViewButton.getVisibility() == View.VISIBLE ||
+                mTinyPlanetButton.getVisibility() == View.VISIBLE) {
+            mViewerWrapperLayout.setVisibility(View.VISIBLE);
+        } else {
+            mViewerWrapperLayout.setVisibility(View.GONE);
+        }
+
+        if (mEditButton.getVisibility() == View.VISIBLE &&
+                mViewerWrapperLayout.getVisibility() == View.VISIBLE) {
+            mMiddleFiller.setVisibility(View.INVISIBLE);
+        } else {
+            mMiddleFiller.setVisibility(View.GONE);
+        }
+    }
 }