summaryrefslogtreecommitdiff
path: root/src/com/android/im/app/SimpleAlertHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/im/app/SimpleAlertHandler.java')
-rw-r--r--src/com/android/im/app/SimpleAlertHandler.java135
1 files changed, 135 insertions, 0 deletions
diff --git a/src/com/android/im/app/SimpleAlertHandler.java b/src/com/android/im/app/SimpleAlertHandler.java
new file mode 100644
index 0000000..e677ddf
--- /dev/null
+++ b/src/com/android/im/app/SimpleAlertHandler.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2007-2008 Esmertec AG.
+ * Copyright (C) 2007-2008 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.im.app;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.res.Resources;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.widget.Toast;
+
+import com.android.im.R;
+import com.android.im.engine.Contact;
+import com.android.im.engine.ContactListListener;
+import com.android.im.engine.ImErrorInfo;
+
+public class SimpleAlertHandler extends Handler {
+
+ Activity mActivity;
+ Resources mRes;
+
+ public SimpleAlertHandler(Activity activity) {
+ mActivity = activity;
+ mRes = mActivity.getResources();
+ }
+
+ protected void promptDisconnectedEvent(Message msg) {
+ long providerId = ((long)msg.arg1 << 32) | msg.arg2;
+ ImApp app = ImApp.getApplication(mActivity);
+ ProviderDef provider = app.getProvider(providerId);
+ ImErrorInfo error = (ImErrorInfo) msg.obj;
+ String promptMsg;
+ if (error != null) {
+ promptMsg = mActivity.getString(R.string.signed_out_prompt_with_error,
+ provider.mName, ErrorResUtils.getErrorRes(mRes, error.getCode()));
+ } else {
+ promptMsg = mActivity.getString(R.string.signed_out_prompt, provider.mName);
+ }
+ Toast.makeText(mActivity, promptMsg, Toast.LENGTH_SHORT).show();
+ }
+
+ public void registerForBroadcastEvents() {
+ ImApp.getApplication(mActivity).registerForBroadcastEvent(
+ ImApp.EVENT_CONNECTION_DISCONNECTED,
+ this);
+ }
+
+ public void unregisterForBroadcastEvents() {
+ ImApp.getApplication(mActivity).unregisterForBroadcastEvent(
+ ImApp.EVENT_CONNECTION_DISCONNECTED,
+ this);
+ }
+
+ public void showAlert(int titleId, int messageId) {
+ showAlert(mRes.getString(titleId), mRes.getString(messageId));
+ }
+
+ public void showAlert(int titleId, CharSequence message) {
+ showAlert(mRes.getString(titleId), message);
+ }
+
+ public void showAlert(CharSequence title, int messageId) {
+ showAlert(title, mRes.getString(messageId));
+ }
+
+ public void showAlert(final CharSequence title, final CharSequence message) {
+ if (Looper.myLooper() == getLooper()) {
+ new AlertDialog.Builder(mActivity)
+ .setTitle(title)
+ .setMessage(message)
+ .setPositiveButton(R.string.ok, null)
+ .show();
+ } else {
+ post(new Runnable() {
+ public void run() {
+ new AlertDialog.Builder(mActivity)
+ .setTitle(title)
+ .setMessage(message)
+ .setPositiveButton(R.string.ok, null)
+ .show();
+ }
+ });
+ }
+ }
+
+ public void showServiceErrorAlert() {
+ showAlert(R.string.error, R.string.service_error);
+ }
+
+ public void showContactError(int errorType, ImErrorInfo error,
+ String listName, Contact contact) {
+ int id = 0;
+ switch (errorType) {
+ case ContactListListener.ERROR_LOADING_LIST:
+ id = R.string.load_contact_list_failed;
+ break;
+
+ case ContactListListener.ERROR_CREATING_LIST:
+ id = R.string.add_list_failed;
+ break;
+
+ case ContactListListener.ERROR_BLOCKING_CONTACT:
+ id = R.string.block_contact_failed;
+ break;
+
+ case ContactListListener.ERROR_UNBLOCKING_CONTACT:
+ id = R.string.unblock_contact_failed;
+ break;
+ }
+
+ String errorInfo = ErrorResUtils.getErrorRes(mRes, error.getCode());
+ if (id != 0) {
+ errorInfo = mRes.getText(id) + "\n" + errorInfo;
+ }
+
+ showAlert(R.string.error, errorInfo);
+ }
+
+}