Merge "syncslides: UI fixes"
diff --git a/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/NavigateFragment.java b/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/NavigateFragment.java
index 8ac2157..46dfc86 100644
--- a/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/NavigateFragment.java
+++ b/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/NavigateFragment.java
@@ -128,16 +128,18 @@
             mFabSync.setVisibility(View.VISIBLE);
         }
 
-        mFabSync.setOnClickListener(new View.OnClickListener() {
+        mFabSync.setOnClickListener(new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 sync();
                 mFabSync.setVisibility(View.INVISIBLE);
             }
         });
-        View.OnClickListener previousSlideListener = new View.OnClickListener() {
+        View.OnClickListener previousSlideListener = new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 previousSlide();
             }
         };
@@ -146,9 +148,10 @@
         mPrevThumb = (ImageView) rootView.findViewById(R.id.prev_thumb);
         mPrevThumb.setOnClickListener(previousSlideListener);
 
-        View.OnClickListener nextSlideListener = new View.OnClickListener() {
+        View.OnClickListener nextSlideListener = new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 nextSlide();
             }
         };
@@ -166,16 +169,18 @@
         mNextThumb.setOnClickListener(nextSlideListener);
         mQuestions = (ImageView) rootView.findViewById(R.id.questions);
         // TODO(kash): Hide the mQuestions button if mRole == BROWSER.
-        mQuestions.setOnClickListener(new View.OnClickListener() {
+        mQuestions.setOnClickListener(new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 questionButton();
             }
         });
         mCurrentSlide = (ImageView) rootView.findViewById(R.id.slide_current_medium);
-        mCurrentSlide.setOnClickListener(new View.OnClickListener() {
+        mCurrentSlide.setOnClickListener(new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 if (mRole == Role.AUDIENCE || mRole == Role.BROWSER) {
                     ((PresentationActivity) getActivity()).showFullscreenSlide(mUserSlideNum);
                 }
@@ -193,6 +198,7 @@
                 unsync();
             }
         });
+
         // The parent of mNotes needs to be focusable in order to clear focus
         // from mNotes when done editing.  We set the attributes in code rather
         // than in XML because it is too easy to add an extra level of layout
@@ -203,9 +209,10 @@
         parent.setFocusableInTouchMode(true);
 
         View slideListIcon = rootView.findViewById(R.id.slide_list);
-        slideListIcon.setOnClickListener(new View.OnClickListener() {
+        slideListIcon.setOnClickListener(new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 if (mRole == Role.AUDIENCE) {
                     ((PresentationActivity) getActivity()).showSlideList();
                 } else {
@@ -299,20 +306,26 @@
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.action_save:
-                Toast.makeText(getContext(), "Saving notes", Toast.LENGTH_SHORT).show();
-                mNotes.clearFocus();
-                InputMethodManager inputManager =
-                        (InputMethodManager) getContext().
-                                getSystemService(Context.INPUT_METHOD_SERVICE);
-                inputManager.hideSoftInputFromWindow(
-                        getActivity().getCurrentFocus().getWindowToken(),
-                        InputMethodManager.HIDE_NOT_ALWAYS);
-                ((PresentationActivity) getActivity()).setUiImmersive(true);
+                saveNotes();
                 return true;
         }
         return false;
     }
 
+    public void saveNotes() {
+        if (mEditing) {
+            Toast.makeText(getContext(), "Saving notes", Toast.LENGTH_SHORT).show();
+            mNotes.clearFocus();
+            InputMethodManager inputManager =
+                    (InputMethodManager) getContext().
+                            getSystemService(Context.INPUT_METHOD_SERVICE);
+            inputManager.hideSoftInputFromWindow(
+                    getActivity().getCurrentFocus().getWindowToken(),
+                    InputMethodManager.HIDE_NOT_ALWAYS);
+            ((PresentationActivity) getActivity()).setUiImmersive(true);
+        }
+    }
+
     private void unsync() {
         if (mRole == Role.AUDIENCE && mSynced) {
             mSynced = false;
@@ -457,9 +470,10 @@
      */
     private void handoffControl() {
         //TODO(afergan): Change slide presenter to the audience member at mQuestionerPosition.
-        View.OnClickListener snackbarClickListener = new View.OnClickListener() {
+        View.OnClickListener snackbarClickListener = new NavigateClickListener() {
             @Override
             public void onClick(View v) {
+                super.onClick(v);
                 //TODO(afergan): End handoff, presenter regains control of presentation.
             }
         };
@@ -505,4 +519,11 @@
             thumbParams.height = (int) ((9 / 16.0) * grandparent.getMeasuredWidth());
         }
     }
-}
+
+    public class NavigateClickListener implements View.OnClickListener {
+        @Override
+        public void onClick(View v) {
+            saveNotes();
+        }
+    }
+}
\ No newline at end of file
diff --git a/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/PresentationActivity.java b/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/PresentationActivity.java
index 3ba5246..9ff1fa9 100644
--- a/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/PresentationActivity.java
+++ b/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/PresentationActivity.java
@@ -223,7 +223,7 @@
             }
         });
         mRole = Role.PRESENTER;
-        showNavigateFragment(0);
+        showNavigateFragmentWithBackStack(0);
     }
 
     /**
diff --git a/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/QuestionDialogFragment.java b/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/QuestionDialogFragment.java
index 1a4a9c5..539e081 100644
--- a/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/QuestionDialogFragment.java
+++ b/projects/syncslides/app/src/main/java/io/v/android/apps/syncslides/QuestionDialogFragment.java
@@ -43,6 +43,12 @@
         return builder.create();
     }
 
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        ((PresentationActivity) getActivity()).setUiImmersive(true);
+    }
+
     // Send back the position of the questioner to the NavigateFragment.
     private void sendResult(int position) {
         Intent intent = new Intent();
diff --git a/projects/syncslides/app/src/main/res/layout-land/fragment_navigate.xml b/projects/syncslides/app/src/main/res/layout-land/fragment_navigate.xml
index e751d5f..41119a1 100644
--- a/projects/syncslides/app/src/main/res/layout-land/fragment_navigate.xml
+++ b/projects/syncslides/app/src/main/res/layout-land/fragment_navigate.xml
@@ -18,10 +18,10 @@
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_weight="1"
+            android:background="@color/blue_grey_50"
             android:gravity="left"
             android:hint="@string/notes_hint"
-            android:textSize="18sp"
-            android:background="@color/blue_grey_50"/>
+            android:textSize="18sp" />
 
         <RelativeLayout
             android:layout_width="wrap_content"
@@ -33,6 +33,7 @@
                 android:layout_height="wrap_content"
                 android:layout_centerInParent="true"
                 android:adjustViewBounds="true"
+                android:background="@color/blue_grey_50"
                 android:scaleType="fitCenter" />
 
             <TextView
@@ -60,6 +61,7 @@
                 android:layout_height="wrap_content"
                 android:layout_centerInParent="true"
                 android:adjustViewBounds="true"
+                android:background="@color/blue_grey_50"
                 android:scaleType="fitCenter" />
 
             <TextView
diff --git a/projects/syncslides/app/src/main/res/layout/fragment_navigate.xml b/projects/syncslides/app/src/main/res/layout/fragment_navigate.xml
index b821dfc..a4d2556 100644
--- a/projects/syncslides/app/src/main/res/layout/fragment_navigate.xml
+++ b/projects/syncslides/app/src/main/res/layout/fragment_navigate.xml
@@ -27,7 +27,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:adjustViewBounds="true"
-                    android:scaleType="fitCenter"/>
+                    android:scaleType="fitCenter" />
 
                 <TextView
                     android:id="@+id/slide_num_text"
@@ -39,7 +39,7 @@
                     android:background="@drawable/nav_hint"
                     android:paddingLeft="@dimen/nav_hint_padding"
                     android:paddingRight="@dimen/nav_hint_padding"
-                    android:textColor="@color/nav_hint_text"/>
+                    android:textColor="@color/nav_hint_text" />
 
             </RelativeLayout>
 
@@ -86,10 +86,10 @@
                         android:layout_height="wrap_content"
                         android:layout_alignRight="@id/questions"
                         android:layout_alignTop="@id/questions"
-                        android:gravity="center"
-                        android:textSize="@dimen/nav_question_num_size"
                         android:background="@drawable/orange_circle"
-                        android:textColor="@color/nav_question_num_text"/>
+                        android:gravity="center"
+                        android:textColor="@color/nav_question_num_text"
+                        android:textSize="@dimen/nav_question_num_size" />
                 </RelativeLayout>
 
 
@@ -140,12 +140,12 @@
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="1"
+        android:background="@color/blue_grey_50"
         android:gravity="left"
         android:hint="@string/notes_hint"
-        android:textSize="18sp"
-        android:scrollbars="vertical"
         android:inputType="textMultiLine|textAutoComplete|textCapSentences"
-        android:background="@color/blue_grey_50"/>
+        android:scrollbars="vertical"
+        android:textSize="18sp" />
 
     <!-- Display the next and previous slide thumbnails. -->
     <LinearLayout
@@ -166,6 +166,7 @@
                 android:layout_height="wrap_content"
                 android:layout_centerInParent="true"
                 android:adjustViewBounds="true"
+                android:background="@color/blue_grey_50"
                 android:scaleType="fitCenter" />
 
             <TextView
@@ -193,6 +194,7 @@
                 android:layout_height="wrap_content"
                 android:layout_centerInParent="true"
                 android:adjustViewBounds="true"
+                android:background="@color/blue_grey_50"
                 android:scaleType="fitCenter" />
 
             <TextView