SimpleAlertHandler.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:4k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007-2008 Esmertec AG.
  3.  * Copyright (C) 2007-2008 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.app;
  18. import android.app.Activity;
  19. import android.app.AlertDialog;
  20. import android.content.res.Resources;
  21. import android.os.Handler;
  22. import android.os.Looper;
  23. import android.os.Message;
  24. import android.widget.Toast;
  25. import com.android.im.R;
  26. import com.android.im.engine.Contact;
  27. import com.android.im.engine.ContactListListener;
  28. import com.android.im.engine.ImErrorInfo;
  29. public class SimpleAlertHandler extends Handler {
  30.     Activity mActivity;
  31.     Resources mRes;
  32.     public SimpleAlertHandler(Activity activity) {
  33.         mActivity = activity;
  34.         mRes = mActivity.getResources();
  35.     }
  36.     protected void promptDisconnectedEvent(Message msg) {
  37.         long providerId = ((long)msg.arg1 << 32) | msg.arg2;
  38.         ImApp app = ImApp.getApplication(mActivity);
  39.         ProviderDef provider = app.getProvider(providerId);
  40.         ImErrorInfo error = (ImErrorInfo) msg.obj;
  41.         String promptMsg;
  42.         if (error != null) {
  43.             promptMsg = mActivity.getString(R.string.signed_out_prompt_with_error,
  44.                     provider.mName, ErrorResUtils.getErrorRes(mRes, error.getCode()));
  45.         } else {
  46.             promptMsg = mActivity.getString(R.string.signed_out_prompt, provider.mName);
  47.         }
  48.         Toast.makeText(mActivity, promptMsg, Toast.LENGTH_SHORT).show();
  49.     }
  50.     public void registerForBroadcastEvents() {
  51.          ImApp.getApplication(mActivity).registerForBroadcastEvent(
  52.                 ImApp.EVENT_CONNECTION_DISCONNECTED,
  53.                 this);
  54.     }
  55.     public void unregisterForBroadcastEvents() {
  56.         ImApp.getApplication(mActivity).unregisterForBroadcastEvent(
  57.                 ImApp.EVENT_CONNECTION_DISCONNECTED,
  58.                 this);
  59.     }
  60.     public void showAlert(int titleId, int messageId) {
  61.         showAlert(mRes.getString(titleId), mRes.getString(messageId));
  62.     }
  63.     public void showAlert(int titleId, CharSequence message) {
  64.         showAlert(mRes.getString(titleId), message);
  65.     }
  66.     public void showAlert(CharSequence title, int messageId) {
  67.         showAlert(title, mRes.getString(messageId));
  68.     }
  69.     public void showAlert(final CharSequence title, final CharSequence message) {
  70.         if (Looper.myLooper() == getLooper()) {
  71.             new AlertDialog.Builder(mActivity)
  72.                     .setTitle(title)
  73.                     .setMessage(message)
  74.                     .setPositiveButton(R.string.ok, null)
  75.                     .show();
  76.         } else {
  77.             post(new Runnable() {
  78.                 public void run() {
  79.                     new AlertDialog.Builder(mActivity)
  80.                             .setTitle(title)
  81.                             .setMessage(message)
  82.                             .setPositiveButton(R.string.ok, null)
  83.                             .show();
  84.                 }
  85.             });
  86.         }
  87.     }
  88.     public void showServiceErrorAlert() {
  89.         showAlert(R.string.error, R.string.service_error);
  90.     }
  91.     public void showContactError(int errorType, ImErrorInfo error,
  92.             String listName, Contact contact) {
  93.         int id = 0;
  94.         switch (errorType) {
  95.         case ContactListListener.ERROR_LOADING_LIST:
  96.             id = R.string.load_contact_list_failed;
  97.             break;
  98.         case ContactListListener.ERROR_CREATING_LIST:
  99.             id = R.string.add_list_failed;
  100.             break;
  101.         case ContactListListener.ERROR_BLOCKING_CONTACT:
  102.             id = R.string.block_contact_failed;
  103.             break;
  104.         case ContactListListener.ERROR_UNBLOCKING_CONTACT:
  105.             id = R.string.unblock_contact_failed;
  106.             break;
  107.         }
  108.         String errorInfo = ErrorResUtils.getErrorRes(mRes, error.getCode());
  109.         if (id != 0) {
  110.             errorInfo = mRes.getText(id) + "n" + errorInfo;
  111.         }
  112.         showAlert(R.string.error, errorInfo);
  113.     }
  114. }