Loading res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ <item type="id" name="dialog_select_multiple_vcard" /> <item type="id" name="dialog_reading_vcard" /> <item type="id" name="dialog_io_exception" /> <item type="id" name="dialog_error_with_message" /> <!-- For ExportVCard --> <item type="id" name="dialog_confirm_export_vcard" /> Loading src/com/android/contacts/ImportVCardActivity.java +40 −36 Original line number Diff line number Diff line Loading @@ -104,6 +104,25 @@ public class ImportVCardActivity extends Activity { private VCardReadThread mVCardReadThread; private ProgressDialog mProgressDialogForReadVCard; private String mErrorMessage; private class DialogDisplayer implements Runnable { private final int mResId; public DialogDisplayer(int resId) { mResId = resId; } public DialogDisplayer(String errorMessage) { mResId = R.id.dialog_error_with_message; mErrorMessage = errorMessage; } public void run() { // Show the Dialog only when the parent Activity is still alive. if (!ImportVCardActivity.this.isFinishing()) { showDialog(mResId); } } } private class CancelListener implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener { public void onClick(DialogInterface dialog, int which) { Loading @@ -117,27 +136,6 @@ public class ImportVCardActivity extends Activity { private CancelListener mCancelListener = new CancelListener(); private class ErrorDisplayer implements Runnable { private String mErrorMessage; public ErrorDisplayer(String errorMessage) { mErrorMessage = errorMessage; } public void run() { String message = getString(R.string.reading_vcard_failed_message, mErrorMessage); AlertDialog.Builder builder = new AlertDialog.Builder(ImportVCardActivity.this) .setTitle(getString(R.string.reading_vcard_failed_title)) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(message) .setOnCancelListener(mCancelListener) .setPositiveButton(android.R.string.ok, mCancelListener); builder.show(); } } private class VCardReadThread extends Thread implements DialogInterface.OnCancelListener { private ContentResolver mResolver; Loading Loading @@ -263,7 +261,7 @@ public class ImportVCardActivity extends Activity { } finally { mWakeLock.release(); mProgressDialogForReadVCard.dismiss(); // finish() is called via ErrorDisplayer() on failure. // finish() is called via mCancelListener, which is used in DialogDisplayer. if (shouldCallFinish && !isFinishing()) { if (mErrorFileNameList == null || mErrorFileNameList.isEmpty()) { finish(); Loading @@ -279,7 +277,7 @@ public class ImportVCardActivity extends Activity { builder.append(fileName); } mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_failed_to_read_files, builder.toString()))); } Loading Loading @@ -359,7 +357,7 @@ public class ImportVCardActivity extends Activity { if (errorFileNameList != null) { errorFileNameList.add(canonicalPath); } else { mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_io_error, e.getMessage()))); } Loading @@ -371,7 +369,7 @@ public class ImportVCardActivity extends Activity { if (errorFileNameList != null) { errorFileNameList.add(canonicalPath); } else { mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_vcard_not_supported_error) + " (" + e.getMessage() + ")")); } Loading @@ -380,7 +378,7 @@ public class ImportVCardActivity extends Activity { if (errorFileNameList != null) { errorFileNameList.add(canonicalPath); } else { mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_vcard_parse_error) + " (" + e.getMessage() + ")")); } Loading Loading @@ -602,17 +600,9 @@ public class ImportVCardActivity extends Activity { } else if (size == 1) { importOneVCardFromSDCard(mAllVCardFileList.get(0).getCanonicalPath()); } else if (getResources().getBoolean(R.bool.config_allow_users_select_all_vcard_import)) { mHandler.post(new Runnable() { public void run() { showDialog(R.id.dialog_select_import_type); } }); mHandler.post(new DialogDisplayer(R.id.dialog_select_import_type)); } else { mHandler.post(new Runnable() { public void run() { showDialog(R.id.dialog_select_one_vcard); } }); mHandler.post(new DialogDisplayer(R.id.dialog_select_one_vcard)); } } Loading Loading @@ -779,6 +769,20 @@ public class ImportVCardActivity extends Activity { .setPositiveButton(android.R.string.ok, mCancelListener); return builder.create(); } case R.id.dialog_error_with_message: { String message = mErrorMessage; if (TextUtils.isEmpty(message)) { Log.e(LOG_TAG, "Error message is null while it must not."); message = getString(R.string.fail_reason_unknown); } AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle(getString(R.string.reading_vcard_failed_title)) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(message) .setOnCancelListener(mCancelListener) .setPositiveButton(android.R.string.ok, mCancelListener); return builder.create(); } } return super.onCreateDialog(resId); Loading Loading
res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ <item type="id" name="dialog_select_multiple_vcard" /> <item type="id" name="dialog_reading_vcard" /> <item type="id" name="dialog_io_exception" /> <item type="id" name="dialog_error_with_message" /> <!-- For ExportVCard --> <item type="id" name="dialog_confirm_export_vcard" /> Loading
src/com/android/contacts/ImportVCardActivity.java +40 −36 Original line number Diff line number Diff line Loading @@ -104,6 +104,25 @@ public class ImportVCardActivity extends Activity { private VCardReadThread mVCardReadThread; private ProgressDialog mProgressDialogForReadVCard; private String mErrorMessage; private class DialogDisplayer implements Runnable { private final int mResId; public DialogDisplayer(int resId) { mResId = resId; } public DialogDisplayer(String errorMessage) { mResId = R.id.dialog_error_with_message; mErrorMessage = errorMessage; } public void run() { // Show the Dialog only when the parent Activity is still alive. if (!ImportVCardActivity.this.isFinishing()) { showDialog(mResId); } } } private class CancelListener implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener { public void onClick(DialogInterface dialog, int which) { Loading @@ -117,27 +136,6 @@ public class ImportVCardActivity extends Activity { private CancelListener mCancelListener = new CancelListener(); private class ErrorDisplayer implements Runnable { private String mErrorMessage; public ErrorDisplayer(String errorMessage) { mErrorMessage = errorMessage; } public void run() { String message = getString(R.string.reading_vcard_failed_message, mErrorMessage); AlertDialog.Builder builder = new AlertDialog.Builder(ImportVCardActivity.this) .setTitle(getString(R.string.reading_vcard_failed_title)) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(message) .setOnCancelListener(mCancelListener) .setPositiveButton(android.R.string.ok, mCancelListener); builder.show(); } } private class VCardReadThread extends Thread implements DialogInterface.OnCancelListener { private ContentResolver mResolver; Loading Loading @@ -263,7 +261,7 @@ public class ImportVCardActivity extends Activity { } finally { mWakeLock.release(); mProgressDialogForReadVCard.dismiss(); // finish() is called via ErrorDisplayer() on failure. // finish() is called via mCancelListener, which is used in DialogDisplayer. if (shouldCallFinish && !isFinishing()) { if (mErrorFileNameList == null || mErrorFileNameList.isEmpty()) { finish(); Loading @@ -279,7 +277,7 @@ public class ImportVCardActivity extends Activity { builder.append(fileName); } mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_failed_to_read_files, builder.toString()))); } Loading Loading @@ -359,7 +357,7 @@ public class ImportVCardActivity extends Activity { if (errorFileNameList != null) { errorFileNameList.add(canonicalPath); } else { mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_io_error, e.getMessage()))); } Loading @@ -371,7 +369,7 @@ public class ImportVCardActivity extends Activity { if (errorFileNameList != null) { errorFileNameList.add(canonicalPath); } else { mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_vcard_not_supported_error) + " (" + e.getMessage() + ")")); } Loading @@ -380,7 +378,7 @@ public class ImportVCardActivity extends Activity { if (errorFileNameList != null) { errorFileNameList.add(canonicalPath); } else { mHandler.post(new ErrorDisplayer( mHandler.post(new DialogDisplayer( getString(R.string.fail_reason_vcard_parse_error) + " (" + e.getMessage() + ")")); } Loading Loading @@ -602,17 +600,9 @@ public class ImportVCardActivity extends Activity { } else if (size == 1) { importOneVCardFromSDCard(mAllVCardFileList.get(0).getCanonicalPath()); } else if (getResources().getBoolean(R.bool.config_allow_users_select_all_vcard_import)) { mHandler.post(new Runnable() { public void run() { showDialog(R.id.dialog_select_import_type); } }); mHandler.post(new DialogDisplayer(R.id.dialog_select_import_type)); } else { mHandler.post(new Runnable() { public void run() { showDialog(R.id.dialog_select_one_vcard); } }); mHandler.post(new DialogDisplayer(R.id.dialog_select_one_vcard)); } } Loading Loading @@ -779,6 +769,20 @@ public class ImportVCardActivity extends Activity { .setPositiveButton(android.R.string.ok, mCancelListener); return builder.create(); } case R.id.dialog_error_with_message: { String message = mErrorMessage; if (TextUtils.isEmpty(message)) { Log.e(LOG_TAG, "Error message is null while it must not."); message = getString(R.string.fail_reason_unknown); } AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle(getString(R.string.reading_vcard_failed_title)) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(message) .setOnCancelListener(mCancelListener) .setPositiveButton(android.R.string.ok, mCancelListener); return builder.create(); } } return super.onCreateDialog(resId); Loading