diff options
-rw-r--r-- | src/com/android/contacts/activities/PeopleActivity.java | 13 | ||||
-rw-r--r-- | src/com/android/contacts/quickcontact/QuickContactActivity.java | 26 |
2 files changed, 25 insertions, 14 deletions
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java index 1f4a00dd1..4528eab98 100644 --- a/src/com/android/contacts/activities/PeopleActivity.java +++ b/src/com/android/contacts/activities/PeopleActivity.java @@ -556,9 +556,15 @@ public class PeopleActivity extends ContactsActivity implements super.onResume(); onResumeInit(); - if (ContactsDataSubscription.get(this).subscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID, + ContactsDataSubscription dataSubscription = ContactsDataSubscription.get(this); + if (dataSubscription.subscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { - ContactsDataSubscription.get(this).refreshDynamicItems(); + if (CallMethodFilters.getAllEnabledCallMethods(dataSubscription).size() > 0) { + dataSubscription.refreshDynamicItems(); + } else { + // double check if the UI needs to update in case of plugin state changes + updatePlugins(null); + } } } @@ -1892,8 +1898,7 @@ public class PeopleActivity extends ContactsActivity implements } } - private synchronized void updatePlugins(HashMap<ComponentName, CallMethodInfo> - callMethodInfo) { + private synchronized void updatePlugins(HashMap<ComponentName, CallMethodInfo> callMethodInfo) { HashMap<ComponentName, CallMethodInfo> newCmMap = (HashMap<ComponentName, CallMethodInfo>) CallMethodFilters.getAllEnabledCallMethods( ContactsDataSubscription.get(this)); diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index f0885273c..a655329f2 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -1292,10 +1292,17 @@ public class QuickContactActivity extends ContactsActivity implements @Override protected void onResume() { super.onResume(); - if (ContactsDataSubscription.get(this) - .subscribe(CALL_METHOD_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { + ContactsDataSubscription dataSubscription = ContactsDataSubscription.get(this); + if (dataSubscription.subscribe(CALL_METHOD_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { if (DEBUG) Log.d(TAG, "ContactsDataSubscription infoReady"); - ContactsDataSubscription.get(this).refreshDynamicItems(); + if (CallMethodFilters.getAllEnabledCallMethods(dataSubscription).size() > 0) { + // only refresh if there are ENABLED plugins + dataSubscription.refreshDynamicItems(); + } else { + // double check if UI needs update in case plugin status changes between + // ENABLED and DISABLED or ENABLED and HIDDEN or DISABLED and HIDDEN + updatePlugins(null); + } } else { if (DEBUG) Log.d(TAG, "ContactsDataSubscription info NOT Ready"); } @@ -1503,13 +1510,11 @@ public class QuickContactActivity extends ContactsActivity implements final ResolveCache cache = ResolveCache.getInstance(this); Set<String> pluginMimeExcluded; Set<String> pluginMimeIncluded; + ContactsDataSubscription subscription = ContactsDataSubscription.get(this); if (ContactsDataSubscription.infoReady()) { - mCallMethodMap = CallMethodFilters.getAllEnabledAndHiddenCallMethods( - ContactsDataSubscription.get(this)); - pluginMimeExcluded = MimeTypeUtils.getAllEnabledVideoImMimeSet( - ContactsDataSubscription.get(this)); - pluginMimeIncluded = MimeTypeUtils.getAllEnabledVoiceMimeSet( - ContactsDataSubscription.get(this)); + mCallMethodMap = CallMethodFilters.getAllEnabledAndHiddenCallMethods(subscription); + pluginMimeExcluded = MimeTypeUtils.getAllEnabledVideoImMimeSet(subscription); + pluginMimeIncluded = MimeTypeUtils.getAllEnabledVoiceMimeSet(subscription); if (DEBUG) { Log.d(TAG, "plugins size:" + mCallMethodMap.size()); @@ -3782,7 +3787,8 @@ public class QuickContactActivity extends ContactsActivity implements if (newCmMap.containsKey(cn)) { // Check if update needed CallMethodInfo newCmi = newCmMap.remove(cn); - if (newCmi.mIsAuthenticated != cmi.mIsAuthenticated) { + if (newCmi.mStatus != cmi.mStatus || + newCmi.mIsAuthenticated != cmi.mIsAuthenticated) { updateNeeded = true; } } else { |