summaryrefslogtreecommitdiffstats
path: root/src/com/android/contacts/common/util/AccountSelectionUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/contacts/common/util/AccountSelectionUtil.java')
-rw-r--r--src/com/android/contacts/common/util/AccountSelectionUtil.java97
1 files changed, 95 insertions, 2 deletions
diff --git a/src/com/android/contacts/common/util/AccountSelectionUtil.java b/src/com/android/contacts/common/util/AccountSelectionUtil.java
index ab327369..ac6b8cc0 100644
--- a/src/com/android/contacts/common/util/AccountSelectionUtil.java
+++ b/src/com/android/contacts/common/util/AccountSelectionUtil.java
@@ -1,5 +1,7 @@
/*
* Copyright (C) 2009 The Android Open Source Project
+ * Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ * Not a Contribution.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +24,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
+import android.telephony.MSimTelephonyManager;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
@@ -46,6 +49,11 @@ public class AccountSelectionUtil {
private static final String LOG_TAG = "AccountSelectionUtil";
public static boolean mVCardShare = false;
+ private static int SIM_ID_INVALID = -1;
+ private static int mSelectedSim = SIM_ID_INVALID;
+ private static final String SIM_INDEX = "sim_index";
+ // Constant value to know option is import from all SIM's
+ private static int IMPORT_FROM_ALL = 8;
public static Uri mPath;
@@ -152,8 +160,13 @@ public class AccountSelectionUtil {
public static void doImport(Context context, int resId, AccountWithDataSet account) {
switch (resId) {
- case R.string.import_from_sim: {
- doImportFromSim(context, account);
+ case R.string.manage_sim_contacts: {
+ if (MSimTelephonyManager.getDefault().isMultiSimEnabled()) {
+ SimSelectedListener simSelListner = new SimSelectedListener(context, account);
+ displaySelectSimDialog(context, simSelListner);
+ } else {
+ doImportFromSim(context, account);
+ }
break;
}
case R.string.import_from_sdcard: {
@@ -175,6 +188,20 @@ public class AccountSelectionUtil {
context.startActivity(importIntent);
}
+ public static void doImportFromMultiSim(Context context, AccountWithDataSet account,
+ int selectedSim) {
+ Intent importIntent = new Intent(Intent.ACTION_VIEW);
+ importIntent.setType("vnd.android.cursor.item/sim-contact");
+ if (account != null) {
+ importIntent.putExtra("account_name", account.name);
+ importIntent.putExtra("account_type", account.type);
+ importIntent.putExtra("data_set", account.dataSet);
+ }
+ importIntent.setClassName("com.android.phone", "com.android.phone.MSimContacts");
+ importIntent.putExtra(SIM_INDEX, selectedSim);
+ context.startActivity(importIntent);
+ }
+
public static void doImportFromSdCard(Context context, AccountWithDataSet account) {
Intent importIntent = new Intent(context, ImportVCardActivity.class);
if (account != null) {
@@ -191,4 +218,70 @@ public class AccountSelectionUtil {
mPath = null;
context.startActivity(importIntent);
}
+
+ public static class SimSelectedListener
+ implements DialogInterface.OnClickListener {
+
+ final private Context mContext;
+ final private AccountWithDataSet mAccount;
+
+ public SimSelectedListener(Context context, AccountWithDataSet account) {
+ mContext = context;
+ mAccount = account;
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ Log.d(LOG_TAG, "onClick OK: mSelectedSim = " + mSelectedSim);
+ if (mSelectedSim != SIM_ID_INVALID) {
+ doImportFromMultiSim(mContext, mAccount, mSelectedSim);
+ }
+ }
+ }
+
+ private static void displaySelectSimDialog(Context context,
+ SimSelectedListener simSelListner) {
+ Log.d(LOG_TAG, "displaySelectSimDialog");
+
+ mSelectedSim = SIM_ID_INVALID;
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle(R.string.select_sim);
+ final int numPhones = MSimTelephonyManager.getDefault().getPhoneCount();
+ CharSequence[] sub_list = new CharSequence[numPhones + 1];
+ int i;
+ for (i = 1; i <= numPhones; i++) {
+ sub_list[i-1] = "SIM" + i;
+ }
+ sub_list[i-1] = context.getString(R.string.Import_All);
+ builder.setSingleChoiceItems(sub_list, -1, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Log.d(LOG_TAG, "onClicked Dialog on which = " + which);
+ mSelectedSim = which;
+ if (mSelectedSim == numPhones) {
+ mSelectedSim = IMPORT_FROM_ALL;
+ }
+ }
+ });
+
+ AlertDialog dialog = builder.create();
+ dialog.setButton(DialogInterface.BUTTON_POSITIVE, context.getString(R.string.ok),
+ simSelListner);
+ dialog.setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.cancel),
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Log.d(LOG_TAG, "onClicked Cancel");
+ }
+ });
+
+ dialog.setOnDismissListener(new DialogInterface.OnDismissListener () {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ Log.d(LOG_TAG, "onDismiss");
+ Log.d(LOG_TAG, "Selected SUB = " + mSelectedSim);
+ }
+ });
+ dialog.show();
+ }
}