TODOs: Change Presence Icon to a switch

To better match the mocks, I've switched the presence icon to
a switch. I also added a toast to indicate changes when the
presence switch is toggled (as well as at the start of the app)

Thanks to David for getting the icons.

Change-Id: I315cc7452e2c12ef252e18db25ae764563fd77a5
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 2fe96f5..657054b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -4,4 +4,6 @@
     <color name="colorPrimaryDark">#303F9F</color>
     <color name="colorPrimaryLight">#9FA8DA</color>
     <color name="colorAccent">#FF4081</color>
+    <color name="colorWhite">#FFFFFF</color>
+    <color name="colorBlack">#000000</color>
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 545b9c6..ecd7ca1 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -17,4 +17,10 @@
 
     <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
 
+    <style name="SwitchCompat" parent="Theme.AppCompat.Light">
+        <!-- Used to control the color of the SwitchCompat's track -->
+        <item name="colorControlActivated">@color/colorWhite</item>
+        <item name="android:colorForeground">@color/colorBlack</item>
+    </style>
+
 </resources>
diff --git a/app/src/syncbase/java/io/v/todos/sharing/NeighborhoodFragment.java b/app/src/syncbase/java/io/v/todos/sharing/NeighborhoodFragment.java
index f850b8c..be75c39 100644
--- a/app/src/syncbase/java/io/v/todos/sharing/NeighborhoodFragment.java
+++ b/app/src/syncbase/java/io/v/todos/sharing/NeighborhoodFragment.java
@@ -2,14 +2,19 @@
 
 
 import android.app.Fragment;
+import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.v7.widget.SwitchCompat;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.widget.CompoundButton;
+import android.widget.Switch;
+import android.widget.Toast;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -113,7 +118,7 @@
         return sPrefs.getBoolean(PREF_ADVERTISE_NEIGHBORHOOD, true);
     }
 
-    private MenuItem mAdvertiseNeighborhoodMenuItem;
+    private SwitchCompat mSwitch;
 
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -124,7 +129,15 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         inflater.inflate(R.menu.neighborhood, menu);
-        mAdvertiseNeighborhoodMenuItem = menu.findItem(R.id.advertise_neighborhood);
+        MenuItem menuItem = menu.findItem(R.id.advertise_neighborhood);
+        mSwitch = (SwitchCompat) menuItem.getActionView().
+                findViewById(R.id.neighborhood_switch);
+        mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                setAdvertiseNeighborhood(isChecked);
+            }
+        });
         sPrefs = sPrefs != null ? sPrefs : PreferenceManager.getDefaultSharedPreferences
                 (getActivity());
         sPrefs.registerOnSharedPreferenceChangeListener(this);
@@ -143,21 +156,20 @@
         }
     }
 
+    private static Boolean sLastToastCheck; // Used to track the last toasted value.
+
     private void updateAdvertiseNeighborhoodChecked() {
         boolean value = isAdvertising();
-        mAdvertiseNeighborhoodMenuItem.setChecked(value);
-        mAdvertiseNeighborhoodMenuItem.setIcon(value ?
-                R.drawable.ic_advertise_neighborhood_on_white_24dp :
-                R.drawable.ic_advertise_neighborhood_off_white_24dp);
-    }
+        mSwitch.setChecked(value);
+        mSwitch.setThumbResource(value ?
+                R.drawable.sharing_activated_0_5x :
+                R.drawable.sharing_deactivated_0_5x);
 
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.advertise_neighborhood) {
-            setAdvertiseNeighborhood(!item.isChecked());
-            return true;
-        } else {
-            return super.onOptionsItemSelected(item);
+        // If this was a change, then toast information to the user.
+        if (sLastToastCheck == null || sLastToastCheck != value) {
+            sLastToastCheck = value;
+            Toast.makeText(getActivity(), value ?
+                    R.string.presence_on : R.string.presence_off, Toast.LENGTH_SHORT).show();
         }
     }
 }
diff --git a/app/src/syncbase/res/drawable-hdpi/ic_advertise_neighborhood_off_white_24dp.png b/app/src/syncbase/res/drawable-hdpi/ic_advertise_neighborhood_off_white_24dp.png
deleted file mode 100644
index 6e61f95..0000000
--- a/app/src/syncbase/res/drawable-hdpi/ic_advertise_neighborhood_off_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-hdpi/ic_advertise_neighborhood_on_white_24dp.png b/app/src/syncbase/res/drawable-hdpi/ic_advertise_neighborhood_on_white_24dp.png
deleted file mode 100644
index 6c0314a..0000000
--- a/app/src/syncbase/res/drawable-hdpi/ic_advertise_neighborhood_on_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-mdpi/ic_advertise_neighborhood_off_white_24dp.png b/app/src/syncbase/res/drawable-mdpi/ic_advertise_neighborhood_off_white_24dp.png
deleted file mode 100644
index ab03ab5..0000000
--- a/app/src/syncbase/res/drawable-mdpi/ic_advertise_neighborhood_off_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-mdpi/ic_advertise_neighborhood_on_white_24dp.png b/app/src/syncbase/res/drawable-mdpi/ic_advertise_neighborhood_on_white_24dp.png
deleted file mode 100644
index 8dec6e0..0000000
--- a/app/src/syncbase/res/drawable-mdpi/ic_advertise_neighborhood_on_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-xhdpi/ic_advertise_neighborhood_off_white_24dp.png b/app/src/syncbase/res/drawable-xhdpi/ic_advertise_neighborhood_off_white_24dp.png
deleted file mode 100644
index e21ea70..0000000
--- a/app/src/syncbase/res/drawable-xhdpi/ic_advertise_neighborhood_off_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-xhdpi/ic_advertise_neighborhood_on_white_24dp.png b/app/src/syncbase/res/drawable-xhdpi/ic_advertise_neighborhood_on_white_24dp.png
deleted file mode 100644
index cb07640..0000000
--- a/app/src/syncbase/res/drawable-xhdpi/ic_advertise_neighborhood_on_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-xxhdpi/ic_advertise_neighborhood_off_white_24dp.png b/app/src/syncbase/res/drawable-xxhdpi/ic_advertise_neighborhood_off_white_24dp.png
deleted file mode 100644
index 8735faa..0000000
--- a/app/src/syncbase/res/drawable-xxhdpi/ic_advertise_neighborhood_off_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-xxhdpi/ic_advertise_neighborhood_on_white_24dp.png b/app/src/syncbase/res/drawable-xxhdpi/ic_advertise_neighborhood_on_white_24dp.png
deleted file mode 100644
index 9e9560c..0000000
--- a/app/src/syncbase/res/drawable-xxhdpi/ic_advertise_neighborhood_on_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-xxxhdpi/ic_advertise_neighborhood_off_white_24dp.png b/app/src/syncbase/res/drawable-xxxhdpi/ic_advertise_neighborhood_off_white_24dp.png
deleted file mode 100644
index e28418e..0000000
--- a/app/src/syncbase/res/drawable-xxxhdpi/ic_advertise_neighborhood_off_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable-xxxhdpi/ic_advertise_neighborhood_on_white_24dp.png b/app/src/syncbase/res/drawable-xxxhdpi/ic_advertise_neighborhood_on_white_24dp.png
deleted file mode 100644
index f992b16..0000000
--- a/app/src/syncbase/res/drawable-xxxhdpi/ic_advertise_neighborhood_on_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/app/src/syncbase/res/drawable/sharing_activated_0_5x.png b/app/src/syncbase/res/drawable/sharing_activated_0_5x.png
new file mode 100644
index 0000000..9d52b8d
--- /dev/null
+++ b/app/src/syncbase/res/drawable/sharing_activated_0_5x.png
Binary files differ
diff --git a/app/src/syncbase/res/drawable/sharing_deactivated_0_5x.png b/app/src/syncbase/res/drawable/sharing_deactivated_0_5x.png
new file mode 100644
index 0000000..7fad11c
--- /dev/null
+++ b/app/src/syncbase/res/drawable/sharing_deactivated_0_5x.png
Binary files differ
diff --git a/app/src/syncbase/res/layout/neighborhood.xml b/app/src/syncbase/res/layout/neighborhood.xml
new file mode 100644
index 0000000..b63875f
--- /dev/null
+++ b/app/src/syncbase/res/layout/neighborhood.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:orientation="horizontal"
+                android:layout_width="fill_parent"
+                android:layout_height="match_parent">
+
+    <android.support.v7.widget.SwitchCompat
+        android:id="@+id/neighborhood_switch"
+        android:layout_gravity="center_vertical"
+        android:layout_width="wrap_content"
+        android:layout_height="fill_parent"
+        android:theme="@style/SwitchCompat" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/syncbase/res/menu/neighborhood.xml b/app/src/syncbase/res/menu/neighborhood.xml
index b7d77d8..3ae819a 100644
--- a/app/src/syncbase/res/menu/neighborhood.xml
+++ b/app/src/syncbase/res/menu/neighborhood.xml
@@ -3,8 +3,7 @@
       xmlns:app="http://schemas.android.com/apk/res-auto">
     <item android:id="@+id/advertise_neighborhood"
           android:orderInCategory="103"
-          android:checkable="true"
-          android:icon="@drawable/ic_advertise_neighborhood_off_white_24dp"
+          android:actionLayout="@layout/neighborhood"
           android:title="@string/share_location"
           android:showAsAction="always"/>
 </menu>
\ No newline at end of file
diff --git a/app/src/syncbase/res/values/strings.xml b/app/src/syncbase/res/values/strings.xml
index b0e644b..f9c200f 100644
--- a/app/src/syncbase/res/values/strings.xml
+++ b/app/src/syncbase/res/values/strings.xml
@@ -1,6 +1,9 @@
 <resources>
     <string name="app_name">Syncbase Todos</string>
     <string name="share_location">Share Presence</string>
+    <!-- For Sharing Presence Toasts -->
+    <string name="presence_on">Sharing Presence: ON</string>
+    <string name="presence_off">Sharing Presence: OFF</string>
     <!-- For Sharing Menu -->
     <string name="sharing_already">Shared With</string>
     <string name="sharing_possible">Available</string>