am ce77e8b9: Merge "Added unread counts to account in drawer" into jb-ub-mail-ur9

* commit 'ce77e8b923f801e72aa3ea1bba68993c6bc3ec65':
  Added unread counts to account in drawer
diff --git a/src/com/android/mail/adapter/DrawerItem.java b/src/com/android/mail/adapter/DrawerItem.java
index f013a03..84b6540 100644
--- a/src/com/android/mail/adapter/DrawerItem.java
+++ b/src/com/android/mail/adapter/DrawerItem.java
@@ -103,12 +103,12 @@
      * Creates an item from an account.
      * @param account an account that this item represents.
      */
-    public DrawerItem(ControllableActivity activity, Account account) {
+    public DrawerItem(ControllableActivity activity, Account account, int count) {
         mActivity = activity;
         mInflater = LayoutInflater.from(mActivity.getActivityContext());
         mFolder = null;
         mType = VIEW_ACCOUNT;
-        mResource = -1;
+        mResource = count;
         mFolderType = ACCOUNT;
         mAccount = account;
         mIsExpandForAccount = false;
@@ -244,7 +244,7 @@
                     (FolderItemView) mInflater.inflate(R.layout.folder_item, null, false);
         }
         // Temporary. Ideally we want a totally different item.
-        folderItemView.bind(mAccount, mActivity);
+        folderItemView.bind(mAccount, mActivity, mResource);
         View v = folderItemView.findViewById(R.id.color_block);
         v.setBackgroundColor(mAccount.color);
         v = folderItemView.findViewById(R.id.folder_icon);
diff --git a/src/com/android/mail/ui/FolderItemView.java b/src/com/android/mail/ui/FolderItemView.java
index 13f0aee..8235602 100644
--- a/src/com/android/mail/ui/FolderItemView.java
+++ b/src/com/android/mail/ui/FolderItemView.java
@@ -132,13 +132,14 @@
         }
     }
 
-    public void bind(Account account, DropHandler dropHandler) {
+    public void bind(Account account, DropHandler dropHandler, int count) {
         mFolder = null;
         mDropHandler = dropHandler;
         mFolderTextView.setText(account.name);
         mFolderParentIcon.setVisibility(View.GONE);
         mUnreadCountTextView.setVisibility(View.GONE);
         setUnseenCount(Color.BLACK, 0);
+        setUnreadCount(count);
     }
 
     /**
diff --git a/src/com/android/mail/ui/FolderListFragment.java b/src/com/android/mail/ui/FolderListFragment.java
index eab850d..fb1947a 100644
--- a/src/com/android/mail/ui/FolderListFragment.java
+++ b/src/com/android/mail/ui/FolderListFragment.java
@@ -456,6 +456,8 @@
         private final List<DrawerItem> mItemList = new ArrayList<DrawerItem>();
         /** Cursor into the folder list. This might be null. */
         private Cursor mCursor = null;
+        /** Watcher for tracking and receiving unread counts for mail */
+        private FolderWatcher mFolderWatcher = null;
         private boolean mShowLessFolders;
         private boolean mShowLessAccounts;
 
@@ -473,8 +475,13 @@
             } else {
                 mRecentFolders = null;
             }
+            mFolderWatcher = new FolderWatcher(mActivity, this);
             mShowLessFolders = showLess;
             mShowLessAccounts = showLessAccounts;
+            for (int i=0; i < mAllAccounts.length; i++) {
+                final Uri uri = mAllAccounts[i].settings.defaultInbox;
+                mFolderWatcher.startWatching(uri);
+            }
         }
 
         @Override
@@ -605,17 +612,24 @@
                 // TODO(shahrk): The logic here is messy and will be changed
                 //               to properly add/reflect on LRU/MRU account
                 //               changes similar to RecentFoldersList
-                if(mShowLessAccounts && mAllAccounts.length > MAX_ACCOUNTS) {
-                    mItemList.add(new DrawerItem(mActivity,
-                            R.string.folder_list_show_all_accounts, true));
-                    mItemList.add(new DrawerItem(mActivity, mCurrentAccount));
+                int unreadCount;
+                if (mShowLessAccounts && mAllAccounts.length > MAX_ACCOUNTS) {
+                    mItemList.add(new DrawerItem(
+                            mActivity, R.string.folder_list_show_all_accounts, true));
+                    unreadCount = mFolderWatcher.get(
+                            mCurrentAccount.settings.defaultInbox).unreadCount;
+                    mItemList.add(new DrawerItem(mActivity, mCurrentAccount, unreadCount));
                 } else {
                     Uri currentAccountUri = getCurrentAccountUri();
-                    for (final Account c: mAllAccounts){
-                        if(!currentAccountUri.equals(c.uri))
-                            mItemList.add(new DrawerItem(mActivity, c));
+                    for (final Account c : mAllAccounts) {
+                        if (!currentAccountUri.equals(c.uri)) {
+                            unreadCount = mFolderWatcher.get(c.settings.defaultInbox).unreadCount;
+                            mItemList.add(new DrawerItem(mActivity, c, unreadCount));
+                        }
                     }
-                    mItemList.add(new DrawerItem(mActivity, mCurrentAccount));
+                    unreadCount = mFolderWatcher.get(
+                            mCurrentAccount.settings.defaultInbox).unreadCount;
+                    mItemList.add(new DrawerItem(mActivity, mCurrentAccount, unreadCount));
                 }
             }
             if (!mIsSectioned) {