Add support for "manage folders"

Change-Id: Id05e10fcf0d3f1446160c85f0a103f62f2323c27
diff --git a/res/menu/folder_list_menu.xml b/res/menu/folder_list_menu.xml
index 6f5e375..002fd8f 100644
--- a/res/menu/folder_list_menu.xml
+++ b/res/menu/folder_list_menu.xml
@@ -18,11 +18,6 @@
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- Always available -->
-    <item android:id="@+id/folder_options"
-        android:title="@string/menu_manage_folders"
-        android:showAsAction="ifRoom" />
-
-    <!-- Always available -->
     <item android:id="@+id/settings"
         android:title="@string/menu_settings"
         android:showAsAction="never" />
diff --git a/res/values/constants.xml b/res/values/constants.xml
index e00c550..562f681 100644
--- a/res/values/constants.xml
+++ b/res/values/constants.xml
@@ -44,7 +44,4 @@
     <integer name="swipeScrollSlop">2</integer>
    <!-- <integer name="widget_refresh_delay_ms">4000</integer>-->
     <integer name="widget_folder_refresh_delay_ms">500</integer>
-    <item type="id" name="folder"/>
-    <item type="id" name="personal_level"/>
-    <item type="id" name="reply_state" />
 </resources>
diff --git a/res/values/ids.xml b/res/values/ids.xml
new file mode 100644
index 0000000..1443e92
--- /dev/null
+++ b/res/values/ids.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2012 Google Inc.
+     Licensed to The Android Open Source Project.
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <item type="id" name="folder"/>
+    <item type="id" name="personal_level"/>
+    <item type="id" name="reply_state" />
+    <item type="id" name="manage_folders_item"/>
+</resources>
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index 2433814..5f29e03 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -1372,5 +1372,10 @@
          * modify settings
          */
         public static final String EXTRA_FOLDER = "extra_folder";
+
+        /**
+         * Boolean extra which is set true if the user wants to "manage folders"
+         */
+        public static final String EXTRA_MANAGE_FOLDERS = "extra_manage_folders";
     }
 }
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index a9356aa..63ee61e 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -534,6 +534,9 @@
             case R.id.feedback_menu_item:
                 Utils.sendFeedback(mActivity.getActivityContext(), mAccount);
                 break;
+            case R.id.manage_folders_item:
+                Utils.showManageFolder(mActivity.getActivityContext(), mAccount);
+                break;
             default:
                 handled = false;
                 break;
diff --git a/src/com/android/mail/utils/Utils.java b/src/com/android/mail/utils/Utils.java
index a372c96..b4543f9 100644
--- a/src/com/android/mail/utils/Utils.java
+++ b/src/com/android/mail/utils/Utils.java
@@ -720,6 +720,22 @@
     }
 
     /**
+     * Show the settings screen for managing all folders.
+     */
+     public static void showManageFolder(Context context, Account account) {
+         if (account == null) {
+             LogUtils.e(LOG_TAG, "Invalid attempt to the manage folders screen with null account");
+             return;
+         }
+         final Intent settingsIntent = new Intent(Intent.ACTION_EDIT, account.settingsIntentUri);
+
+         settingsIntent.putExtra(EditSettingsExtras.EXTRA_ACCOUNT, account);
+         settingsIntent.putExtra(EditSettingsExtras.EXTRA_MANAGE_FOLDERS, true);
+
+         context.startActivity(settingsIntent);
+    }
+
+    /**
      * Show the feedback screen for the supplied account.
      */
     public static void sendFeedback(Context context, Account account) {