summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard MacGregor <rmacgregor@cyngn.com>2016-02-22 16:54:14 -0800
committerStephen Bird <sbird@cyngn.com>2016-04-08 10:20:04 -0700
commit24e0a611c2f87930f9c7aa37987e8706e491f8cd (patch)
tree8e679842b96ff7f3ad49326552793a9496978390
parent8bb7a411f00022df23c772ccf9c10598d3047a19 (diff)
downloadandroid_packages_apps_Dialer-24e0a611c2f87930f9c7aa37987e8706e491f8cd.tar.gz
android_packages_apps_Dialer-24e0a611c2f87930f9c7aa37987e8706e491f8cd.tar.bz2
android_packages_apps_Dialer-24e0a611c2f87930f9c7aa37987e8706e491f8cd.zip
[2/2] fix spinner/hint issues
Tickets CD-389 & CD-393 Change-Id: Ia1f2314a45b4e9007d15d79a9cf05a8f01c829ca
-rw-r--r--src/com/android/dialer/DialtactsActivity.java43
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java12
-rw-r--r--src/com/android/dialer/incall/CallMethodSpinnerHelper.java33
-rw-r--r--src/com/android/dialer/widget/SearchEditTextLayout.java9
4 files changed, 68 insertions, 29 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 3001320c7..ca9bd8618 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -303,21 +303,19 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mLastKnownCallMethod = CallMethodSpinnerAdapter.getCallMethodKey(cmi);
if (mCurrentCallMethod == null || !cmi.equals(mCurrentCallMethod)) {
mCurrentCallMethod = cmi;
- mSearchEditTextLayout.updateSpinner(mLastKnownCallMethod, mAvailableProviders);
- if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
- mSmartDialSearchFragment.setCurrentCallMethod(cmi);
- } else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) {
- mRegularSearchFragment.setCurrentCallMethod(cmi);
+ if (mSearchEditTextLayout != null) {
+ mSearchEditTextLayout.setCurrentCallMethod(mCurrentCallMethod);
}
- if (mIsDialpadShown) {
- mDialpadFragment.updateSpinner(mLastKnownCallMethod, mAvailableProviders);
- mDialpadFragment.onCallMethodChanged(cmi);
+ if (mDialpadFragment != null) {
+ mDialpadFragment.setCurrentCallMethod(mCurrentCallMethod);
+ if (mIsDialpadShown) {
+ mDialpadFragment.onCallMethodChanged(mCurrentCallMethod);
+ }
}
- } else if (cmi.mIsAuthenticated == mCurrentCallMethod.mIsAuthenticated ||
- cmi.mProviderCreditInfo == mCurrentCallMethod.mProviderCreditInfo) {
- mCurrentCallMethod = cmi;
- if (mIsDialpadShown) {
- mDialpadFragment.onCallMethodChanged(cmi);
+ if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
+ mSmartDialSearchFragment.setCurrentCallMethod(mCurrentCallMethod);
+ } else if (mRegularSearchFragment != null && mRegularSearchFragment.isVisible()) {
+ mRegularSearchFragment.setCurrentCallMethod(mCurrentCallMethod);
}
}
}
@@ -335,6 +333,16 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mSmartDialSearchFragment.setupEmptyView();
}
break;
+ case TelephonyIntents.ACTION_SUBINFO_CONTENT_CHANGE:
+ case TelephonyIntents.ACTION_SUBINFO_RECORD_UPDATED:
+ if (mSearchEditTextLayout != null) {
+ mSearchEditTextLayout.updateSpinner(mLastKnownCallMethod,
+ mAvailableProviders);
+ }
+ if (mDialpadFragment != null) {
+ mDialpadFragment.updateSpinner(mLastKnownCallMethod, mAvailableProviders);
+ }
+ break;
}
}
};
@@ -626,8 +634,9 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
Trace.endSection();
IntentFilter callStateIntentFilter = new IntentFilter();
- callStateIntentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
callStateIntentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+ callStateIntentFilter.addAction(TelephonyIntents.ACTION_SUBINFO_CONTENT_CHANGE);
+ callStateIntentFilter.addAction(TelephonyIntents.ACTION_SUBINFO_RECORD_UPDATED);
registerReceiver(mCallStateReceiver, callStateIntentFilter);
}
@@ -731,6 +740,12 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
@Override
+ public void onDestroy() {
+ unregisterReceiver(mCallStateReceiver);
+ super.onDestroy();
+ }
+
+ @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_SEARCH_QUERY, mSearchQuery);
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index b36c9c5cb..a67d0d598 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -274,11 +274,6 @@ public class DialpadFragment extends Fragment
showDialpadChooser(false);
break;
}
-
- case TelephonyIntents.ACTION_SUBINFO_CONTENT_CHANGE:
- case TelephonyIntents.ACTION_SUBINFO_RECORD_UPDATED:
- updateSpinner(null, mAllAvailableProviders);
- break;
}
}
}
@@ -369,8 +364,6 @@ public class DialpadFragment extends Fragment
if (mCallStateReceiver == null) {
IntentFilter callStateIntentFilter = new IntentFilter();
callStateIntentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
- callStateIntentFilter.addAction(TelephonyIntents.ACTION_SUBINFO_CONTENT_CHANGE);
- callStateIntentFilter.addAction(TelephonyIntents.ACTION_SUBINFO_RECORD_UPDATED);
mCallStateReceiver = new CallStateReceiver();
((Context) getActivity()).registerReceiver(mCallStateReceiver, callStateIntentFilter);
}
@@ -476,6 +469,11 @@ public class DialpadFragment extends Fragment
}
}
+ public void setCurrentCallMethod(CallMethodInfo callMethodInfo) {
+ mCurrentCallMethodInfo = callMethodInfo;
+ CallMethodSpinnerHelper.setSelectedCallMethod(mCallMethodSpinner, callMethodInfo);
+ }
+
public void providersUpdated(String lastKnownCallMethod, HashMap<ComponentName, CallMethodInfo>
callMethodInfos) {
mAllAvailableProviders.clear();
diff --git a/src/com/android/dialer/incall/CallMethodSpinnerHelper.java b/src/com/android/dialer/incall/CallMethodSpinnerHelper.java
index caf12cb29..595302ed7 100644
--- a/src/com/android/dialer/incall/CallMethodSpinnerHelper.java
+++ b/src/com/android/dialer/incall/CallMethodSpinnerHelper.java
@@ -17,6 +17,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import static com.android.phone.common.incall.CallMethodSpinnerAdapter.POSITION_UNKNOWN;
+
/**
* Helper class for generating and managing multiple provider selection spinners across the
* Dialer UI
@@ -73,6 +75,7 @@ public class CallMethodSpinnerHelper {
availableProviders) {
CallMethodSpinnerAdapter callMethodSpinnerAdapter = (CallMethodSpinnerAdapter)
callMethodSpinner.getAdapter();
+ int lastKnownPosition = callMethodSpinnerAdapter.getPosition(lastKnownCallMethod);
callMethodSpinnerAdapter.clear();
List<CallMethodInfo> sims = new ArrayList<CallMethodInfo>();
@@ -103,11 +106,13 @@ public class CallMethodSpinnerHelper {
changeListener.onCallMethodChangedListener(info);
} else {
// multiple call methods or single provider
- int position = 0;
+ int position = POSITION_UNKNOWN;
callMethodSpinner.setVisibility(View.VISIBLE);
if (!TextUtils.isEmpty(lastKnownCallMethod)) {
position = callMethodSpinnerAdapter.getPosition(lastKnownCallMethod);
- } else {
+ }
+
+ if (position == POSITION_UNKNOWN) {
CallMethodInfo defaultSim = null;
if (TelecomUtil.hasReadPhoneStatus(context)) {
defaultSim = CallMethodUtils.getDefaultSimInfo(context);
@@ -116,10 +121,32 @@ public class CallMethodSpinnerHelper {
position = callMethodSpinnerAdapter.getPosition(
CallMethodSpinnerAdapter.getCallMethodKey(defaultSim));
}
+
+ if (position == POSITION_UNKNOWN) {
+ // If all else fails, first position
+ position = 0;
+ }
}
- callMethodSpinner.setSelection(position);
+ if (position < callMethodSpinnerAdapter.getCount()) {
+ if (lastKnownPosition != position) {
+ callMethodSpinner.setSelection(position);
+ } else {
+ // Adapter doesn't call onChanged if position dosn't change
+ CallMethodInfo info = callMethodSpinnerAdapter.getItem(position);
+ changeListener.onCallMethodChangedListener(info);
+ }
+ }
}
}
+ public static void setSelectedCallMethod(Spinner callMethodSpinner,
+ CallMethodInfo callMethodInfo) {
+ CallMethodSpinnerAdapter callMethodSpinnerAdapter =
+ (CallMethodSpinnerAdapter) callMethodSpinner.getAdapter();
+ int position = callMethodSpinnerAdapter.getPosition(callMethodInfo);
+ if (position > POSITION_UNKNOWN && position < callMethodSpinnerAdapter.getCount()) {
+ callMethodSpinner.setSelection(position);
+ }
+ }
}
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index afebb7836..f694ce1c8 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -363,14 +363,13 @@ public class SearchEditTextLayout extends FrameLayout {
public void updateSpinner(String lastKnownCallMethod, HashMap<ComponentName, CallMethodInfo>
availableProviders) {
if (mCallMethodChangedListener != null) {
- CallMethodSpinnerHelper.setupCallMethodSpinner(
- getContext(),
- mCallMethodSpinner,
- mCallMethodChangedListener);
-
CallMethodSpinnerHelper.updateCallMethodSpinnerAdapter(getContext(),
mCallMethodSpinner, mCallMethodChangedListener, lastKnownCallMethod,
availableProviders);
}
}
+
+ public void setCurrentCallMethod(CallMethodInfo callMethodInfo) {
+ CallMethodSpinnerHelper.setSelectedCallMethod(mCallMethodSpinner, callMethodInfo);
+ }
}