Convert menu options to tabs
Add new tab for apps on sd
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ede0eaa..60f4ebd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1585,6 +1585,9 @@
     <!-- Text for filter option in ManageApps screen to display list of running
     packages only. -->
     <string name="filter_apps_running">Running</string>
+    <!-- Text for filter option in ManageApps screen to display list of
+    packages installed on sdcard. -->
+    <string name="filter_apps_onsdcard">On SD card</string>
     <string name="loading">Loading\u2026</string>
     <!-- Manage app screen, shown when the activity is busy recomputing the size of each app -->
     <string name="recompute_size">Recomputing size\u2026</string>
diff --git a/src/com/android/settings/ManageApplications.java b/src/com/android/settings/ManageApplications.java
index a5dff9a..96459c1 100644
--- a/src/com/android/settings/ManageApplications.java
+++ b/src/com/android/settings/ManageApplications.java
@@ -140,7 +140,8 @@
     public static final int FILTER_APPS_ALL = MENU_OPTIONS_BASE + 0;
     public static final int FILTER_APPS_RUNNING = MENU_OPTIONS_BASE + 1;
     public static final int FILTER_APPS_THIRD_PARTY = MENU_OPTIONS_BASE + 2;
-    public static final int FILTER_OPTIONS = MENU_OPTIONS_BASE + 3;
+    public static final int FILTER_APPS_SDCARD = MENU_OPTIONS_BASE + 3;
+
     public static final int SORT_ORDER_ALPHA = MENU_OPTIONS_BASE + 4;
     public static final int SORT_ORDER_SIZE = MENU_OPTIONS_BASE + 5;
     // sort order
@@ -612,7 +613,16 @@
         if (installedAppList == null) {
             return new ArrayList<ApplicationInfo> ();
         }
-        if (filterOption == FILTER_APPS_THIRD_PARTY) {
+        if (filterOption == FILTER_APPS_SDCARD) {
+            List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
+            for (ApplicationInfo appInfo : installedAppList) {
+                if ((appInfo.flags & ApplicationInfo.FLAG_ON_SDCARD) != 0) {
+                    // App on sdcard
+                    appList.add(appInfo);
+                }
+            }
+            return appList;
+        } else if (filterOption == FILTER_APPS_THIRD_PARTY) {
             List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
             for (ApplicationInfo appInfo : installedAppList) {
                 boolean flag = false;
@@ -680,7 +690,21 @@
         if(pAppList == null) {
             return retList;
         }
-        if (filterOption == FILTER_APPS_THIRD_PARTY) {
+        if (filterOption == FILTER_APPS_SDCARD) {
+            for (ApplicationInfo appInfo : pAppList) {
+                boolean flag = false;
+                if ((appInfo.flags & ApplicationInfo.FLAG_ON_SDCARD) != 0) {
+                    // App on sdcard
+                    flag = true;
+                }
+                if (flag) {
+                    if (matchFilter(filter, filterMap, appInfo.packageName)) {
+                        retList.add(appInfo);
+                    }
+                }
+            }
+            return retList;
+        } else if (filterOption == FILTER_APPS_THIRD_PARTY) {
             for (ApplicationInfo appInfo : pAppList) {
                 boolean flag = false;
                 if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
@@ -1243,6 +1267,10 @@
                 } else if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
                     return true;
                 }
+            } else if (filterOption == FILTER_APPS_SDCARD) {
+                if ((info.flags & ApplicationInfo.FLAG_ON_SDCARD) != 0) {
+                    return true;
+                }
             } else {
                 return true;
             }
@@ -1557,6 +1585,7 @@
     static final String TAB_DOWNLOADED = "Downloaded";
     static final String TAB_RUNNING = "Running";
     static final String TAB_ALL = "All";
+    static final String TAB_SDCARD = "OnSdCard";
     private View mRootView;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -1623,6 +1652,10 @@
         tabHost.addTab(tabHost.newTabSpec(TAB_ALL)
                 .setIndicator(getString(R.string.filter_apps_all))
                 .setContent(this));
+        tabHost.addTab(tabHost.newTabSpec(TAB_SDCARD)
+                .setIndicator(getString(R.string.filter_apps_onsdcard))
+                .setContent(this));
+
         tabHost.setCurrentTabByTag(defaultTabTag);
         tabHost.setOnTabChangedListener(this);
     }
@@ -1986,6 +2019,8 @@
             newOption = FILTER_APPS_RUNNING;
         } else if (TAB_ALL.equalsIgnoreCase(tabId)) {
             newOption = FILTER_APPS_ALL;
+        } else if (TAB_SDCARD.equalsIgnoreCase(tabId)) {
+            newOption = FILTER_APPS_SDCARD;
         } else {
             // Invalid option. Do nothing
             return;