summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard MacGregor <rmacgregor@cyngn.com>2016-03-16 11:32:45 -0700
committerRichard MacGregor <rmacgregor@cyngn.com>2016-04-08 10:42:51 -0700
commitade2cdf6b973a6e9e03a7cacf6f624608c42d7ff (patch)
treecb8902f1f9794f25b024988200e3138a062c5dff
parent5bbda91320c9a00b201dcfd1e82c68aa796bfefc (diff)
downloadandroid_packages_apps_PhoneCommon-ade2cdf6b973a6e9e03a7cacf6f624608c42d7ff.tar.gz
android_packages_apps_PhoneCommon-ade2cdf6b973a6e9e03a7cacf6f624608c42d7ff.tar.bz2
android_packages_apps_PhoneCommon-ade2cdf6b973a6e9e03a7cacf6f624608c42d7ff.zip
Add new method for getting hinttext
Implement getHintText. Stop using attributes for plugin hint texts. getHintText returns all required hints. Tickets CD-446 CD-470 CD-471 CD-514 Change-Id: I76cb1f31e5db632cb21ea283116928dd2559e555
-rw-r--r--src-ambient/incall/CallMethodHelper.java46
-rw-r--r--src-ambient/incall/CallMethodInfo.java67
2 files changed, 104 insertions, 9 deletions
diff --git a/src-ambient/incall/CallMethodHelper.java b/src-ambient/incall/CallMethodHelper.java
index 34ad825..5352c28 100644
--- a/src-ambient/incall/CallMethodHelper.java
+++ b/src-ambient/incall/CallMethodHelper.java
@@ -37,6 +37,7 @@ import com.android.phone.common.ambient.AmbientConnection;
import com.android.phone.common.util.StartInCallCallReceiver;
import com.cyanogen.ambient.analytics.Event;
import com.cyanogen.ambient.common.api.AmbientApiClient;
+import com.cyanogen.ambient.common.api.CommonStatusCodes;
import com.cyanogen.ambient.common.api.PendingResult;
import com.cyanogen.ambient.common.api.Result;
import com.cyanogen.ambient.common.api.ResultCallback;
@@ -48,6 +49,7 @@ import com.cyanogen.ambient.incall.InCallServices;
import com.cyanogen.ambient.incall.extension.CreditBalance;
import com.cyanogen.ambient.incall.extension.CreditInfo;
import com.cyanogen.ambient.incall.extension.GetCreditInfoResult;
+import com.cyanogen.ambient.incall.extension.HintTextResult;
import com.cyanogen.ambient.incall.extension.IAuthenticationListener;
import com.cyanogen.ambient.incall.extension.ICallCreditListener;
import com.cyanogen.ambient.incall.extension.InCallContactInfo;
@@ -55,6 +57,7 @@ import com.cyanogen.ambient.incall.extension.StatusCodes;
import com.cyanogen.ambient.incall.results.AccountHandleResult;
import com.cyanogen.ambient.incall.results.AuthenticationStateResult;
import com.cyanogen.ambient.incall.results.GetCreditInfoResultResult;
+import com.cyanogen.ambient.incall.results.HintTextResultResult;
import com.cyanogen.ambient.incall.results.InCallProviderInfoResult;
import com.cyanogen.ambient.incall.results.InstalledPluginsResult;
import com.cyanogen.ambient.incall.results.MimeTypeResult;
@@ -555,6 +558,7 @@ public class CallMethodHelper {
getCallMethodAuthenticated(cn, apiCallbacks);
getLoginIntent(cn, apiCallbacks);
getSettingsIntent(cn, apiCallbacks);
+ getHintText(cn, apiCallbacks);
getCreditInfo(cn, apiCallbacks);
getManageCreditsIntent(cn, apiCallbacks);
checkLowCreditConfig(cn, apiCallbacks);
@@ -639,7 +643,10 @@ public class CallMethodHelper {
cmi.mColor = NO_COLOR;
cmi.mSubscriptionButtonText = icpi.getSubscriptionButtonText();
cmi.mCreditButtonText = icpi.getCreditsButtonText();
- cmi.mT9HintDescription = icpi.getT9HintDescription();
+ // If present, use the deprecated attribute defined hint text.
+ // These values may be overwritten by getHintText.
+ cmi.mT9HintDescriptionNoCreditOrSub = icpi.getT9HintDescription();
+ cmi.mT9HintDescriptionHasCreditOrSub = icpi.getT9HintDescription();
cmi.mActionOneText = icpi.getActionOneTitle();
cmi.mActionTwoText = icpi.getActionTwoTitle();
cmi.mIsInCallProvider = true;
@@ -876,6 +883,43 @@ public class CallMethodHelper {
apiCallbacks.put(callback, result);
}
+ /**
+ * Get the hint texts for the callmethod
+ * @param cn
+ * @param apiCallbacks keeps track of the target callback counts before broadcast
+ */
+ private static void getHintText(final ComponentName cn,
+ final HashMap<ResultCallback, PendingResult> apiCallbacks) {
+ PendingResult result = getInstance().mInCallApi.getHintText(getInstance().mClient, cn);
+ ResultCallback callback = new ResultCallback<HintTextResultResult>() {
+ @Override
+ public void onResult(HintTextResultResult hintTextResultResult) {
+ if (hintTextResultResult != null) {
+ HintTextResult result = hintTextResultResult.result;
+ if (result != null) {
+ synchronized (mCallMethodInfos) {
+ CallMethodInfo cmi = getCallMethodIfExists(cn);
+ if (cmi != null) {
+ String hintText = result.getNoCreditOrSubscriptionHint();
+ if (!TextUtils.isEmpty(hintText)) {
+ cmi.mT9HintDescriptionNoCreditOrSub = hintText;
+ }
+
+ hintText = result.getHasCreditOrSubscriptionHint();
+ if (!TextUtils.isEmpty(hintText)) {
+ cmi.mT9HintDescriptionHasCreditOrSub = hintText;
+ }
+ mCallMethodInfos.put(cn, cmi);
+ maybeBroadcastToSubscribers(this, apiCallbacks);
+ }
+ }
+ }
+ }
+ }
+ };
+ apiCallbacks.put(callback, result);
+ }
+
private static void getCreditInfo(final ComponentName cn, final
HashMap<ResultCallback, PendingResult> apiCallbacks) {
PendingResult result = getInstance().mInCallApi.getCreditInfo(getInstance().mClient, cn);
diff --git a/src-ambient/incall/CallMethodInfo.java b/src-ambient/incall/CallMethodInfo.java
index a727c3e..7c6ec96 100644
--- a/src-ambient/incall/CallMethodInfo.java
+++ b/src-ambient/incall/CallMethodInfo.java
@@ -60,7 +60,8 @@ public class CallMethodInfo {
public String mImMimeType;
public String mSubscriptionButtonText;
public String mCreditButtonText;
- public String mT9HintDescription;
+ public String mT9HintDescriptionNoCreditOrSub;
+ public String mT9HintDescriptionHasCreditOrSub;
public PendingIntent mSettingsIntent;
/* Plugin's simple brand icon (24dp x 24dp)
Expected format: Vector Drawable (.xml)
@@ -283,15 +284,33 @@ public class CallMethodInfo {
}
}
- public boolean showSubscriptions() {
- // If the user has > 0 credits, we don't want to show the subscription.
- List<SubscriptionInfo> subscriptionInfos = this.mProviderCreditInfo.subscriptions;
- CreditBalance creditBalance = this.mProviderCreditInfo.balance;
+ public boolean hasAvailableCredit() {
+ boolean hasAvailableCredit = false;
+ CreditInfo ci = this.mProviderCreditInfo;
+ if (ci != null) {
+ CreditBalance balance = ci.balance;
+ if (balance != null) {
+ mCurrencyAmount = (int) balance.balance;
+ hasAvailableCredit = mCurrencyAmount > 0;
+ }
+ }
+ return hasAvailableCredit;
+ }
- boolean hasSubscriptions = subscriptionInfos != null && !subscriptionInfos.isEmpty();
+ public boolean hasSubscription() {
+ boolean hasSubscription = false;
+ CreditInfo ci = this.mProviderCreditInfo;
+ if (ci != null) {
+ List<SubscriptionInfo> subscriptionInfos = ci.subscriptions;
+ hasSubscription = subscriptionInfos != null && !subscriptionInfos.isEmpty();
+ }
+ return hasSubscription;
+ }
- boolean hasCredits = creditBalance != null && creditBalance.currencyCode != null
- && creditBalance.balance > 0;
+ public boolean showSubscriptions() {
+ // If the user has > 0 credits, we don't want to show the subscription.
+ boolean hasCredits = hasAvailableCredit();
+ boolean hasSubscriptions = hasSubscription();
return !hasCredits && hasSubscriptions;
}
@@ -299,4 +318,36 @@ public class CallMethodInfo {
public int getCurrencyAmount() {
return mCurrencyAmount;
}
+
+ /**
+ * Returns hint text based on credit and subscription availability.
+ * If either is null or empty, use the non-null/non-empty string.
+ * Null is returned if both are null or empty.
+ * @return hintText String hint text for the current situation
+ */
+ public String getHintText() {
+ String hintText = null;
+ boolean hasAvailableCredit = hasAvailableCredit();
+ boolean usesSubscriptions = hasSubscription();
+ if (!hasAvailableCredit && !usesSubscriptions) {
+ // No credits and no subscription
+ if (!TextUtils.isEmpty(mT9HintDescriptionNoCreditOrSub)) {
+ // Use no credits or subscription hint
+ hintText = mT9HintDescriptionNoCreditOrSub;
+ } else if (!TextUtils.isEmpty(mT9HintDescriptionHasCreditOrSub)) {
+ // If no credit/sub hint empty, but has credit/sub hint valid, use it
+ hintText = mT9HintDescriptionHasCreditOrSub;
+ }
+ } else {
+ // Has credits or subscription
+ if (!TextUtils.isEmpty(mT9HintDescriptionHasCreditOrSub)) {
+ // Use has credits/sub hint text
+ hintText = mT9HintDescriptionHasCreditOrSub;
+ } else if (!TextUtils.isEmpty(mT9HintDescriptionNoCreditOrSub)) {
+ // If has credit/sub hint empty, but no credit/sub hint valid, use it
+ hintText = mT9HintDescriptionNoCreditOrSub;
+ }
+ }
+ return hintText;
+ }
}