summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErica Chang <echang@cyngn.com>2016-05-03 18:20:48 -0700
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-05-09 13:26:38 -0700
commit4242645b8b044c05646a0b49d256967f1fd68cc8 (patch)
treee652232055380df0eb5cf46fe1c66ce3eb64aa20
parent990a3c2ff464fcb0be59987c266b7d6e14bcfe99 (diff)
downloadandroid_packages_apps_Contacts-4242645b8b044c05646a0b49d256967f1fd68cc8.tar.gz
android_packages_apps_Contacts-4242645b8b044c05646a0b49d256967f1fd68cc8.tar.bz2
android_packages_apps_Contacts-4242645b8b044c05646a0b49d256967f1fd68cc8.zip
Contacts : only refresh ENABLED plugins onResume
Since we only request refreshDynamicItems if there are ENABLED plugins, there would not be a callback that calls updatePlugin. In that case we'll manually call updatePlugin to manually check if any plugin related UI components need to be updated (eg. the current UI may show a plugin that's already gone into DISABLED/HIDDEN state) CD-616 Change-Id: I469960212e67844a63661e855daa7097ac186a05
-rw-r--r--src/com/android/contacts/activities/PeopleActivity.java13
-rw-r--r--src/com/android/contacts/quickcontact/QuickContactActivity.java26
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 {