Show "Device" in account filter if no writable accounts. (1/2)

BUG 29879881

Change-Id: I62e70b0250866b0cfe21179b9bed2f3231192775
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 1dc7092..28816f5 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -354,9 +354,11 @@
 
         for (int i = 0; i < accountFilterItems.size(); i++) {
             final ContactListFilter filter = accountFilterItems.get(i);
-            final String accountName = filter.accountName;
+            final String menuName =
+                    filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS
+                            ? getString(R.string.account_phone) : filter.accountName;
             final MenuItem menuItem = subMenu.add(R.id.nav_filters_items, Menu.NONE, Menu.NONE,
-                    accountName);
+                    menuName);
             mFilterMenuMap.put(filter, menuItem);
             final Intent intent = new Intent();
             intent.putExtra(AccountFilterUtil.EXTRA_CONTACT_LIST_FILTER, filter);
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 7b5f3e6..31c047a 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -489,7 +489,9 @@
         final ContactListFilter currentFilter = mContactListFilterController.getFilter();
         final AccountWithDataSet accountOfCurrentFilter = new AccountWithDataSet(
                 currentFilter.accountName, currentFilter.accountType, currentFilter.dataSet);
-        return mWritableAccounts != null && mWritableAccounts.contains(accountOfCurrentFilter);
+        return accountOfCurrentFilter.isLocalAccount()
+                || (mWritableAccounts != null
+                && mWritableAccounts.contains(accountOfCurrentFilter));
     }
 
     private void showFabWithAnimation(boolean showFab) {
@@ -1350,7 +1352,7 @@
                     // If we are in account view, we pass the account explicitly in order to
                     // create contact in the account. This will prevent the default account dialog
                     // from being displayed.
-                    if (!isAllContactsFilter(filter)) {
+                    if (!isAllContactsFilter(filter) && !isDeviceContactsFilter(filter)) {
                         final Account account = new Account(filter.accountName, filter.accountType);
                         extras.putParcelable(Intents.Insert.EXTRA_ACCOUNT, account);
                         extras.putString(Intents.Insert.EXTRA_DATA_SET, filter.dataSet);
@@ -1392,8 +1394,14 @@
         updateFilterMenu(filter);
 
         if (getSupportActionBar() != null) {
-            final String actionBarTitle = TextUtils.isEmpty(filter.accountName) ?
-                    getString(R.string.contactsList) : filter.accountName;
+            String actionBarTitle = null;
+            if (filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS) {
+                actionBarTitle = getString(R.string.account_phone);
+            } else if (!TextUtils.isEmpty(filter.accountName)) {
+                actionBarTitle = filter.accountName;
+            } else {
+                actionBarTitle = getString(R.string.contactsList);
+            }
             getSupportActionBar().setTitle(actionBarTitle);
         }
     }
@@ -1408,6 +1416,10 @@
         return filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS;
     }
 
+    private boolean isDeviceContactsFilter(ContactListFilter filter) {
+        return filter.filterType == ContactListFilter.FILTER_TYPE_DEVICE_CONTACTS;
+    }
+
     @Override
     protected boolean shouldFinish() {
         return false;