diff options
author | Nancy Chen <nancychen@google.com> | 2014-10-08 12:27:16 -0700 |
---|---|---|
committer | Nancy Chen <nancychen@google.com> | 2014-10-08 13:57:44 -0700 |
commit | 7e2ade1c5f23678de800df837d4ae9179d29d5e9 (patch) | |
tree | 588ecebedc4a3004c7dee97b4c53c4ab0d6d5b7c | |
parent | ff4300e39752693a7c0b45cdf757987a7b725677 (diff) |
Generalize select account dialog for usage anywhere in dialer (1/2)
Currently the select account dialog is specific to InCallUI, but there
are other places in the dialer app that will need the user to select an
account (e.g. MMI pin) so we want to reuse this dialog.
+ Move dialog to ContactsCommon
+ Add a listener to the SelectPhoneAccountDialogFragment class
Bug: 17917937
Change-Id: I872dba36f0f53737398861ff5376cc07f0e11c7b
-rw-r--r-- | InCallUI/res/layout/select_account_list_item.xml | 38 | ||||
-rw-r--r-- | InCallUI/res/values/strings.xml | 3 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/InCallActivity.java | 16 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java | 149 |
4 files changed, 14 insertions, 192 deletions
diff --git a/InCallUI/res/layout/select_account_list_item.xml b/InCallUI/res/layout/select_account_list_item.xml deleted file mode 100644 index 1999fced7..000000000 --- a/InCallUI/res/layout/select_account_list_item.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2014 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!-- Layout of a single item in the InCallUI Account Chooser Dialog. --> -<view class="com.android.contacts.common.widget.ActivityTouchLinearLayout" - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="4dp" > - - <ImageView android:id="@+id/icon" - android:layout_width="48dp" - android:layout_height="48dp" - android:tint="@color/dialtacts_secondary_text_color" - android:scaleType="center" /> - - <TextView android:id="@+id/text" - android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="start|center_vertical" - android:layout_marginLeft="8dp" - android:layout_width="0dp" - android:layout_weight="1" - android:layout_height="match_parent" /> -</view> diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml index 8e8a8e2bd..320da1964 100644 --- a/InCallUI/res/values/strings.xml +++ b/InCallUI/res/values/strings.xml @@ -546,7 +546,4 @@ <!-- This can be used in any application wanting to disable the text "Emergency number" --> <string name="emergency_call_dialog_number_for_display">Emergency number</string> - - <!-- Title for Select Account Dialog [CHAR LIMIT=30] --> - <string name="select_account_dialog_title">Select Account</string> </resources> diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index 2fcfda549..a6917c86a 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -46,6 +46,8 @@ import android.view.accessibility.AccessibilityEvent; import com.android.phone.common.animation.AnimUtils; import com.android.phone.common.animation.AnimationListenerAdapter; import com.android.contacts.common.interactions.TouchPointManager; +import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment; +import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener; import com.android.incallui.Call.State; import java.util.ArrayList; @@ -488,7 +490,6 @@ public class InCallActivity extends Activity { extras = new Bundle(); } - Point touchPoint = null; if (TouchPointManager.getInstance().hasValidPoint()) { // Use the most immediate touch point in the InCallUi if available @@ -532,8 +533,19 @@ public class InCallActivity extends Activity { phoneAccountHandles = new ArrayList<>(); } + SelectPhoneAccountListener listener = new SelectPhoneAccountListener() { + @Override + public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle) { + InCallPresenter.getInstance().handleAccountSelection(selectedAccountHandle); + } + @Override + public void onDialogDismissed() { + InCallPresenter.getInstance().cancelAccountSelection(); + } + }; + SelectPhoneAccountDialogFragment.showAccountDialog(getFragmentManager(), - phoneAccountHandles); + phoneAccountHandles, listener); } else { mCallCardFragment.setVisible(true); } diff --git a/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java b/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java deleted file mode 100644 index 49f23b72b..000000000 --- a/InCallUI/src/com/android/incallui/SelectPhoneAccountDialogFragment.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.incallui; - -import android.telecom.PhoneAccount; -import android.telecom.PhoneAccountHandle; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.app.FragmentManager; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.telecom.TelecomManager; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.ListAdapter; -import android.widget.TextView; - -import com.android.contacts.common.R; - -import java.util.List; - -/** - * Dialog that allows the user to switch between default SIM cards - */ -public class SelectPhoneAccountDialogFragment extends DialogFragment { - private List<PhoneAccountHandle> mAccountHandles; - private boolean mIsSelected; - private TelecomManager mTelecomManager; - - /** - * Shows the account selection dialog. - * This is the preferred way to show this dialog. - * - * @param fragmentManager The fragment manager. - * @param accountHandles The {@code PhoneAccountHandle}s available to select from. - */ - public static void showAccountDialog(FragmentManager fragmentManager, - List<PhoneAccountHandle> accountHandles) { - SelectPhoneAccountDialogFragment fragment = - new SelectPhoneAccountDialogFragment(accountHandles); - fragment.show(fragmentManager, "selectAccount"); - } - - public SelectPhoneAccountDialogFragment(List<PhoneAccountHandle> accountHandles) { - super(); - mAccountHandles = accountHandles; - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - mIsSelected = false; - mTelecomManager = - (TelecomManager) getActivity().getSystemService(Context.TELECOM_SERVICE); - - final DialogInterface.OnClickListener selectionListener = - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mIsSelected = true; - PhoneAccountHandle selectedAccountHandle = mAccountHandles.get(which); - InCallPresenter.getInstance().handleAccountSelection(selectedAccountHandle); - } - }; - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - - ListAdapter selectAccountListAdapter = new SelectAccountListAdapter( - builder.getContext(), - R.layout.select_account_list_item, - mAccountHandles); - - return builder.setTitle(R.string.select_account_dialog_title) - .setAdapter(selectAccountListAdapter, selectionListener) - .create(); - } - - private class SelectAccountListAdapter extends ArrayAdapter<PhoneAccountHandle> { - private Context mContext; - private int mResId; - - public SelectAccountListAdapter( - Context context, int resource, List<PhoneAccountHandle> accountHandles) { - super(context, resource, accountHandles); - mContext = context; - mResId = resource; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - LayoutInflater inflater = (LayoutInflater) - mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - View rowView; - final ViewHolder holder; - - if (convertView == null) { - // Cache views for faster scrolling - rowView = inflater.inflate(mResId, null); - holder = new ViewHolder(); - holder.textView = (TextView) rowView.findViewById(R.id.text); - holder.imageView = (ImageView) rowView.findViewById(R.id.icon); - rowView.setTag(holder); - } - else { - rowView = convertView; - holder = (ViewHolder) rowView.getTag(); - } - - PhoneAccountHandle accountHandle = getItem(position); - PhoneAccount account = mTelecomManager.getPhoneAccount(accountHandle); - holder.textView.setText(account.getLabel()); - holder.imageView.setImageDrawable(account.getIcon(mContext)); - return rowView; - } - - private class ViewHolder { - TextView textView; - ImageView imageView; - } - } - - @Override - public void onPause() { - if (!mIsSelected) { - InCallPresenter.getInstance().cancelAccountSelection(); - } - super.onPause(); - } -}
\ No newline at end of file |