Use toasts to provide feedback on successful user actions

Change-Id: Ic35629e1eda68e27414f6fd244dd61263b4a8719
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/app/src/main/java/com/google/reviewit/AbandonFragment.java b/app/src/main/java/com/google/reviewit/AbandonFragment.java
index ca99768..839617f 100644
--- a/app/src/main/java/com/google/reviewit/AbandonFragment.java
+++ b/app/src/main/java/com/google/reviewit/AbandonFragment.java
@@ -87,6 +87,7 @@
               v.setBackgroundColor(widgetUtil.color(R.color.button));
               widgetUtil.showError(errorMsg);
             } else {
+              widgetUtil.toast(R.string.change_abandoned);
               display(SortChangesFragment.class);
             }
           }
diff --git a/app/src/main/java/com/google/reviewit/AddReviewerFragment.java b/app/src/main/java/com/google/reviewit/AddReviewerFragment.java
index bfffba8..fc3ffcb 100644
--- a/app/src/main/java/com/google/reviewit/AddReviewerFragment.java
+++ b/app/src/main/java/com/google/reviewit/AddReviewerFragment.java
@@ -131,6 +131,8 @@
         if (errorMsg != null) {
           widgetUtil.showError(errorMsg);
         } else {
+          widgetUtil.toast(R.string.reviewer_added);
+
           AddReviewerFragment fragment = new AddReviewerFragment();
           Bundle bundle = new Bundle();
           bundle.putAll(getArguments());
diff --git a/app/src/main/java/com/google/reviewit/DetailedChangeFragment.java b/app/src/main/java/com/google/reviewit/DetailedChangeFragment.java
index 8e0b3a3..27e8cef 100644
--- a/app/src/main/java/com/google/reviewit/DetailedChangeFragment.java
+++ b/app/src/main/java/com/google/reviewit/DetailedChangeFragment.java
@@ -177,6 +177,7 @@
         return true;
       case R.id.action_ignore:
         actionHandler.ignore();
+        widgetUtil.toast(R.string.change_ignored);
         startActivity(new Intent(getActivity(), MainActivity.class));
         return true;
       case R.id.action_restore:
@@ -184,10 +185,12 @@
         return true;
       case R.id.action_skip:
         actionHandler.skip();
+        widgetUtil.toast(R.string.change_skipped);
         startActivity(new Intent(getActivity(), MainActivity.class));
         return true;
       case R.id.action_star:
         actionHandler.star();
+        widgetUtil.toast(R.string.change_starred);
         startActivity(new Intent(getActivity(), MainActivity.class));
         return true;
       default:
diff --git a/app/src/main/java/com/google/reviewit/QuerySettingsFragment.java b/app/src/main/java/com/google/reviewit/QuerySettingsFragment.java
index 61f6186..ce853cb 100644
--- a/app/src/main/java/com/google/reviewit/QuerySettingsFragment.java
+++ b/app/src/main/java/com/google/reviewit/QuerySettingsFragment.java
@@ -113,6 +113,8 @@
             .setQuery(textOf(R.id.queryInput))
             .setLabel(textOf(R.id.labelInput))
             .build());
+    widgetUtil.toast(R.string.query_saved);
+
     switch (getApp().getPrefs().startScreen) {
       case REVIEW_SCREEN:
         display(ReviewChangesFragment.class);
diff --git a/app/src/main/java/com/google/reviewit/RestoreFragment.java b/app/src/main/java/com/google/reviewit/RestoreFragment.java
index e51ebfa..6bbc664 100644
--- a/app/src/main/java/com/google/reviewit/RestoreFragment.java
+++ b/app/src/main/java/com/google/reviewit/RestoreFragment.java
@@ -87,6 +87,7 @@
               v.setBackgroundColor(widgetUtil.color(R.color.button));
               widgetUtil.showError(errorMsg);
             } else {
+              widgetUtil.toast(R.string.change_restored);
               display(SortChangesFragment.class);
             }
           }
diff --git a/app/src/main/java/com/google/reviewit/ServerSettingsFragment.java b/app/src/main/java/com/google/reviewit/ServerSettingsFragment.java
index 52c5532..1f0c35b 100644
--- a/app/src/main/java/com/google/reviewit/ServerSettingsFragment.java
+++ b/app/src/main/java/com/google/reviewit/ServerSettingsFragment.java
@@ -350,6 +350,7 @@
               .build());
       startActivity(new Intent(getContext(), MainActivity.class));
     } else {
+      widgetUtil.toast(R.string.server_settings_saved);
       display(ServerListFragment.class);
     }
   }
diff --git a/app/src/main/java/com/google/reviewit/SortChangesFragment.java b/app/src/main/java/com/google/reviewit/SortChangesFragment.java
index 0079bd7..8603619 100644
--- a/app/src/main/java/com/google/reviewit/SortChangesFragment.java
+++ b/app/src/main/java/com/google/reviewit/SortChangesFragment.java
@@ -243,6 +243,7 @@
         disableButtons();
         getSortActionHandler().skip();
         animate(changeBox, SortActionHandler.Action.SKIP);
+        widgetUtil.toast(R.string.change_skipped);
       }
     });
 
@@ -251,6 +252,7 @@
         disableButtons();
         getSortActionHandler().star();
         animate(changeBox, SortActionHandler.Action.STAR);
+        widgetUtil.toast(R.string.change_starred);
       }
     };
     v(R.id.starButton).setOnClickListener(onStarClickListener);
@@ -261,6 +263,7 @@
         disableButtons();
         getSortActionHandler().ignore();
         animate(changeBox, SortActionHandler.Action.IGNORE);
+        widgetUtil.toast(R.string.change_ignored);
       }
     };
     v(R.id.ignoreButton).setOnClickListener(onIgnoreClickListener);
@@ -362,16 +365,19 @@
             switch (action) {
               case STAR:
                 getSortActionHandler().star();
+                widgetUtil.toast(R.string.change_starred);
                 resultBox.removeView(changeBox);
                 display();
                 break;
               case IGNORE:
                 getSortActionHandler().ignore();
+                widgetUtil.toast(R.string.change_ignored);
                 resultBox.removeView(changeBox);
                 display();
                 break;
               case SKIP:
                 getSortActionHandler().skip();
+                widgetUtil.toast(R.string.change_skipped);
                 resultBox.removeView(changeBox);
                 display();
                 break;
diff --git a/app/src/main/java/com/google/reviewit/util/WidgetUtil.java b/app/src/main/java/com/google/reviewit/util/WidgetUtil.java
index 270230d..e21b110 100644
--- a/app/src/main/java/com/google/reviewit/util/WidgetUtil.java
+++ b/app/src/main/java/com/google/reviewit/util/WidgetUtil.java
@@ -33,6 +33,7 @@
 import android.widget.ImageView;
 import android.widget.TableRow;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.google.gerrit.extensions.common.AccountInfo;
 import com.google.reviewit.AvatarTask;
@@ -96,6 +97,14 @@
         | Paint.UNDERLINE_TEXT_FLAG);
   }
 
+  public void toast(@StringRes int stringId) {
+    Toast.makeText(
+        context,
+        context.getString(stringId),
+        Toast.LENGTH_SHORT
+    ).show();
+  }
+
   public void showError(@StringRes int id) {
     showError(context.getString(id));
   }
diff --git a/app/src/main/java/com/google/reviewit/widget/PostReviewView.java b/app/src/main/java/com/google/reviewit/widget/PostReviewView.java
index 47e7aae..3f9b07e 100644
--- a/app/src/main/java/com/google/reviewit/widget/PostReviewView.java
+++ b/app/src/main/java/com/google/reviewit/widget/PostReviewView.java
@@ -128,6 +128,7 @@
                   v.setBackgroundColor(widgetUtil.color(R.color.button));
                   widgetUtil.showError(errorMsg);
                 } else {
+                  widgetUtil.toast(R.string.review_posted);
                   origin.display(target);
                 }
               }
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5ad8715..b11a66c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -20,6 +20,9 @@
 
   <!-- SortChangesFragment -->
   <string name="branch">branch:</string>
+  <string name="change_ignored">Change Ignored</string>
+  <string name="change_skipped">Change Skipped</string>
+  <string name="change_starred">Change Starred</string>
   <string name="help">Help</string>
   <string name="project">project:</string>
   <string name="reload_error">Reloading change failed with %1$d %2$s</string>
@@ -127,6 +130,7 @@
   <string name="title_activity_add_reviewer">Add Reviewer</string>
   <string name="add_reviewer_error">Add reviewer failed with %1$d %2$s</string>
   <string name="ccs">CC\'s:</string>
+  <string name="reviewer_added">Reviewer Added</string>
   <string name="reviewer_hint">Fullname or Email</string>
   <string name="reviewers">Reviewers:</string>
   <string name="no_reviewers">No Reviewers</string>
@@ -165,8 +169,9 @@
   <string name="servers">Servers:</string>
   <string name="server_remove_message">Are you sure you want to delete server \'%1$s\'</string>
   <string name="server_remove_title">Delete Server</string>
-    <string name="storage_info">The server configuration is stored in the application preferences.
-        All values are encrypted.</string>
+  <string name="server_settings_saved">Server Settings Saved</string>
+  <string name="storage_info">The server configuration is stored in the application preferences.
+      All values are encrypted.</string>
   <string name="test_server_connection">Testing connection to the server ...</string>
   <string name="test_server_connection_ok">OK</string>
   <string name="test_server_connection_failed">FAILED</string>
@@ -182,6 +187,7 @@
   <string name="user_hint">Gerrit User</string>
   <string name="query">Query*:</string>
   <string name="query_hint">Change Query</string>
+  <string name="query_saved">Query Saved</string>
 
   <!-- SettingsFragment - menu -->
   <string name="action_clean_avatar_cache">Clean avatar cache</string>
@@ -223,10 +229,12 @@
   <string name="abandon_change_title">Abandon Change %1$d</string>
   <string name="abandon">Abandon</string>
   <string name="abandon_error">Abandon failed with %1$d %2$s</string>
+  <string name="change_abandoned">Change Abandoned</string>
   <string name="reason">Reason:</string>
 
   <!-- RestoreFragment -->
   <string name="title_activity_restore">Restore Change</string>
+  <string name="change_restored">Change Restored</string>
   <string name="restore_change_title">Restore Change %1$d</string>
   <string name="restore">Restore</string>
   <string name="restore_error">Restore failed with %1$d %2$s</string>
@@ -245,6 +253,7 @@
   <string name="publish">Publish</string>
   <string name="publishAndSubmit">Publish and Submit</string>
   <string name="review_error">Posting review failed with %1$d %2$s</string>
+  <string name="review_posted">Review Posted</string>
   <string name="submit_error">Submit failed with %1$d %2$s</string>
 
   <!-- PagedChangeDetailsFragment -->