blob: e677ddfe887f3b666f76004dff246eb18de47aa2 [file] [log] [blame]
/*
* 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);
}
}