Merge
authorDa Risk <darisk972@gmail.com>
Tue, 10 Aug 2010 20:36:16 +0200
changeset 796 e85bccf2d817
parent 795 b2572c048dd7 (current diff)
parent 792 310796265f15 (diff)
child 797 fbd3585af53e
child 799 b2a796654230
Merge
--- a/res/layout/chat.xml	Tue Aug 10 01:46:51 2010 +0200
+++ b/res/layout/chat.xml	Tue Aug 10 20:36:16 2010 +0200
@@ -35,8 +35,8 @@
 		android:layout_width="fill_parent" android:layout_height="0dip"
 		android:layout_weight="1" android:transcriptMode="normal"
 		android:stackFromBottom="true"
+		android:fadingEdge="none" android:padding="4px"
 		android:fastScrollEnabled="true" android:smoothScrollbar="false"
-		android:layout_marginBottom="20sp" android:padding="4px"
 		android:focusable="true"/>
 	<LinearLayout android:layout_width="fill_parent"
 		android:layout_height="wrap_content" android:orientation="horizontal"
--- a/res/menu/contact_list.xml	Tue Aug 10 01:46:51 2010 +0200
+++ b/res/menu/contact_list.xml	Tue Aug 10 20:36:16 2010 +0200
@@ -6,6 +6,9 @@
 	<item android:id="@+id/menu_change_status"
 	    android:visible="true"
 	    android:title="@string/contact_list_menu_status"/>
+	<item android:id="@+id/contact_list_menu_chatlist"
+	    android:visible="true" android:icon="@drawable/ic_menu_chat_dashboard"
+	    android:title="@string/chat_menu_change_chat"/>
 	<item android:id="@+id/contact_list_menu_settings"
 		android:visible="true"
 		android:title="@string/contact_list_menu_settings"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/values-es/strings.xml	Tue Aug 10 20:36:16 2010 +0200
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">Aceptar</string>
+<string name="ClearButton">Limpiar</string>
+<string name="CancelButton">Cancelar</string>
+<string name="AcceptButton">Autorizar</string>
+<string name="RefuseButton">Denegar</string>
+<string name="JabberID">JabberID</string>
+<string name="Password">Contraseña</string>
+<string name="Continue">Continuar</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">Configuración manual</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">JabberID</string>
+
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">Conectando...</string>
+
+<!--  BeemService class -->
+<string name="BeemServiceDescription">Usa el servicio Beem</string>
+<string name="BeemServiceCreated">Servicio Beem creado</string>
+<string name="BeemServiceDestroyed">Servicio Beem suprimido</string>
+
+<!--  ContactDialog class -->
+<string name="CDChat">Chat</string>
+<string name="CDCall">Llamada</string>
+<string name="CDInfos">Gestión de usuario</string>
+
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - Añadir contacto</string>
+
+<string name="AddCLogin">Usuario</string>
+<string name="AddCAlias">Alias</string>
+<string name="AddCGroup">Grupo</string>
+<string name="AddCOkButton">Añadir</string>
+<string name="AddCContactAdded">Contacto añadido</string>
+<string name="AddCContactAddedError">Error añadiendo contacto</string>
+<string name="AddCContactAddedLoginError">Error en el login</string>
+<string name="AddCBadForm">Formulario incorrecto</string>
+<string name="AddCContactAlready">Contacto ya existe</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - Cambiar mi estado</string>
+<string name="ChangeStatusType">Mi estado</string>
+<string name="ChangeStatusMessage">Mi mensaje personal</string>
+<string name="OpenContactList">Abrir lista de contactos</string>
+
+<string name="MenuAddContact">Añadir contacto</string>
+<string name="MenuAccountAbout">Proyecto Beem</string>
+<string name="MenuAccountCreate">Crear cuenta</string>
+<string name="MenuConnection">Editar cuenta</string>
+<string name="ChangeStatusOk">Actualizando estado</string>
+<string name="ChangeStatusNoChange">Nada que cambiar</string>
+
+<!-- Settings class -->
+<string name="SettingsText">Editar su usuario</string>
+<string name="SettingsPassword">Editar su contraseña</string>
+<string name="SettingsProxy">Proxy</string>
+<string name="SettingsProxyProxy">Usar un servidor proxy</string>
+<string name="SettingsProxySummary">Iniciar a traves de un servidor proxy</string>
+<string name="SettingsProxyType">Protocolo</string>
+<string name="SettingsProxyTypeSummary">Escoja el tipo de servidor proxy</string>
+<string name="SettingsProxyServer">Editar direccion del servidor proxy</string>
+<string name="SettingsProxyPort">Editar puerto del servidor proxy</string>
+<string name="SettingsProxyUser">Opcional, permitir auto-autentificarse en el server proxy.</string>
+<string name="SettingsProxyPassword">Opcional, permitir auto-autentificarse en el server proxy.</string>
+<string name="SettingsAdvanced">Avanzado</string>
+<string name="SettingsAdvancedOptions">Opciones especificas del server</string>
+<string name="SettingsAdvancedRecoDelay">Modificar retraso de conexion</string>
+<string name="SettingsAdvancedSpecOpt">Marca esta casilla si deseas usar un servidor especifico para esta conexion</string>
+<string name="SettingsAdvancedAddOpt">Editar direccion del server</string>
+<string name="SettingsAdvancedPortOpt">Editar puerto del server</string>
+<string name="SettingsResourceTitle">Recurso</string>
+<string name="SettingsPriorityTitle">Prioridad</string>
+<string name="SettingsResourceSummary">Establecer recursosXMPP</string>
+<string name="SettingsPrioritySummary">Establecer prioridades</string>
+<string name="contact_list_preferences">Lista de Amigos</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">Ocultar grupos</string>
+<string name="CLP_hide_groups_sum">Opciones de ocultar grupos</string>
+<string name="CLP_hidden_contact">Ocultar amigos</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">Nombre de usuario</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">Contraseña</string>
+<string name="settings_account_server">Servidor</string>
+<string name="settings_account_port">Puerto</string>
+<string name="settings_advanced_service_behaviour">Servicio de comportamiento</string>
+<string name="settings_advanced_sum">Opciones de usuarios abanzados</string>
+<string name="settings_xmpp_server">Dirección del servidor XMPP</string>
+<string name="comments_xmpp_server">Comentgarios del servidor XMPP</string>
+<string name="settings_xmpp_port">Puerto XMPP</string>
+<string name="settings_xmpp_use_tls">Establecer SSL/TTL en XMPP</string>
+<string name="settings_reco_delay">Tiempo de reconexión</string>
+<string name="comments_xmpp_port">Puerto por defecto: 5222</string>
+<string name="settings_proxy_sum">Establecer uso de servidor Proxy</string>
+<string name="settings_proxy_use">Conectar mediante servidor proxy</string>
+<string name="settings_proxy_type_prompt">Seleccionar tipo de servidor proxy</string>
+<string name="settings_proxy_server">Servidor proxy</string>
+<string name="settings_proxy_port">Puerto proxy</string>
+<string name="comments_proxy_port">Puerto proxy por defecto 1080</string>
+<string name="settings_proxy_username">Nombre de usuario proxy</string>
+<string name="settings_proxy_password">Contraseña de usuario proxy</string>
+<string name="away_chk_title">Habilitar auto-ausente</string>
+<string name="away_chk_sum">Cambiar estado a ausente cuando la pantalla se apage</string>
+<string name="away_message_title">Mensaje ausente</string>
+<string name="away_message_sum">El mensaje de ausente que sera mostrado</string>
+<string name="away_message_hint">Ausente, my pantalla esta apagada</string>
+<string name="notification_preferences">Configuracion de notificaciones</string>
+<string name="notification_enable_vibrate_title">Habilitar vibracion</string>
+<string name="notification_enable_vibrate_sum">Habilitar vibracion en mensajes entrantes</string>
+<string name="notification_snd_title">Tono de mensaje entrante</string>
+<string name="notification_snd_sum">Configurar tono de mensaje entrante</string>
+
+
+<!-- Subscription class -->
+<string name="SubscriptAccept">Suscripcion aceptada</string>
+<string name="SubscriptError">Error de suscripcion</string>
+<string name="SubscriptRefused">Suscripcion rechazada</string>
+<string name="SubscriptText">%s desea agregarlo a su lista de contactos. Desea autorizarlo/a ?</string>
+<string name="SubscriptTitle">Autorizar contacto ?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">Tienes un nuevo mensaje</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM: Ha sido desconectado</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s le agrego en su lista de contactos.</string>
+<string name="AcceptContactRequestFrom">Autoriza %s para que lo contacte.</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - Actividad inicio</string>
+<string name="edit_settings_name">Beem - Configuracion</string>
+<string name="edit_settings_tag">Beem - Actividad editar configuracion</string>
+<string name="create_account_name">Beem - Crear una cuenta</string>
+<string name="create_account_tag"></string>
+<string name="contact_list_name">Beem - Contactos</string>
+<string name="contact_list_tag">Beem - Actividad lista contactos</string>
+<string name="user_info_name">Beem - Informacion usuario</string>
+
+<!-- Buttons -->
+<string name="button_create_account">Crear esta cuenta</string>
+<string name="button_create_login_account">Crear y usar esta cuenta</string>
+
+<!-- LogAs Activity -->
+<string name="login_username">Usuario</string>
+<string name="login_password">Contraseña</string>
+<string name="login_error_dialog_title">Inicio sesion - Error</string>
+<string name="login_close_dialog_button">Cerrar</string>
+<string name="login_menu_create_account">Crear una cuenta</string>
+<string name="login_menu_settings">Configuracion</string>
+<string name="login_menu_about">Acerca</string>
+<string name="login_about_title">Beem %s - Acerca</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">Cerrar</string>
+<string name="login_settings_button">Configuracion</string>
+<string name="login_login_button">Inicio</string>
+<string name="login_login_progress">Conectando. Espere por favor ...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">Iniciar sesion</string>
+<string name="login_no_connectivity">No se detecto conexion a internet</string>
+<string name="login_start_msg">Configuracion de parametros en menu</string>
+
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">Conectando ...</string>
+<string name="loganim_authenticating">Autentificando ...</string>
+<string name="loganim_login_success">Inicio correcto</string>
+<string name="loganim_login_failed">Inicio fallido</string>
+
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">Crear una cuenta</string>
+<string name="settings_menu_privacy_lists">Administrar mis listas de privacidad</string>
+<string name="settings_saved_ok">Los cambios han sido guardados correctamente.</string>
+
+
+
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">Preferencias generales</string>
+<string name="user_preferences">Configuracion de usuario (requerido)</string>
+<string name="user_preferences_advanced">Configuracion avanzada de usuario (opcional)</string>
+<string name="network_preferences">Opciones de red</string>
+<string name="proxy_proxy_settings">Configuracion Proxy</string>
+<string name="proxy_user_settings">Configuracion Proxy</string>
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">editar_configuracion_pestaña_cuenta</string>
+<string name="settings_tab_label_account">Cuenta</string>
+<string name="settings_tab_tag_xmpp">editar_configuracion_pestaña_xmpp</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">editar_configuracion_pestaña_proxy</string>
+<string name="settings_tab_label_proxy">Proxy</string>
+
+
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>Bienvenido a BEEM.</b>\n\nNo ha configurado su cuenta XMPP(Jabber) todavia.\nEscoja una de las siguientes opciones:</string>
+<string name="account_wizard_configure_text"><b>Por favor complete con su cuenta existente</b></string>
+<string name="account_wizard_configure_account">Ya tengo una cuenta y deseo usarla</string>
+<string name="account_wizard_create_account">Deseo crear una nueva cuenta</string>
+
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">Instrucciones - Crear una cuenta</string>
+<string name="create_account_err_dialog_title">Error - Creando una cuenta</string>
+<string name="create_account_err_dialog_settings_button">Cambiar mi configuracion</string>
+<string name="create_account_close_dialog_button">Cerrar</string>
+<string name="create_account_successfull_after">cuenta %s fue creada correctamente</string>
+<string name="create_account_err_username">Incorrecto JabberID</string>
+<string name="create_account_err_passwords">La clave no coincide</string>
+<string name="create_account_username">Usuario</string>
+<string name="create_account_password">Contraseña</string>
+<string name="create_account_confirm_password">Confirmar Contraseña</string>
+
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">Añadir a Contacto</string>
+<string name="contact_list_menu_status">Cambiar Estado</string>
+<string name="contact_list_menu_settings">Configuracion</string>
+<string name="contact_list_menu_disconnect">Desconectar</string>
+<string name="contact_list_all_contact">Todos Contactos</string>
+<string name="contact_list_no_group">Sin Grupo</string>
+
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">Alias</string>
+<string name="userinfo_label_chg_group">Manten. Grupos</string>
+<string name="userinfo_label_re_subscription">Reenviar Invitacion</string>
+<string name="userinfo_label_block">Bloquear</string>
+<string name="userinfo_label_delete">Borrar</string>
+<string name="userinfo_resend">Reenviar Suscripcion</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+</string>
+<string name="userinfo_yes">Sí</string>
+<string name="userinfo_no">No</string>
+<string name="userinfo_sureresend">Estas Seguro de Reenviar Invitacion?</string>
+
+<string name="chat_name">Beem - Chat</string>
+<string name="chat_input_default_value">Escribe tu Mensaje</string>
+<string name="chat_self">Yo</string>
+<string name="chat_error">Error</string>
+<string name="chat_send_message">Enviar</string>
+<string name="chat_menu_contacts_list">Lista de Contactos</string>
+<string name="chat_menu_change_chat">Cambiar chat</string>
+<string name="chat_dialog_change_chat_title">Chats abiertos</string>
+<string name="chat_menu_close_chat">Cerrar Chat</string>
+<string name="chat_no_more_chats">No más chats activos</string>
+<string name="chat_state_composing">componiendo un mensaje</string>
+<string name="chat_state_gone">ha dejado la conversación</string>
+<string name="chat_state_active">presta atención a la conversación</string>
+<string name="chat_state_inactive">esta haciendo otra cosa</string>
+
+<string name="contact_status_msg_available">Disponible</string>
+<string name="contact_status_msg_available_chat">Disponible para chatear</string>
+<string name="contact_status_msg_dnd">No interumpir</string>
+<string name="contact_status_msg_away">Fuera</string>
+<string name="contact_status_msg_xa">No Disponibles</string>
+<string name="contact_status_msg_offline">Desconectado</string>
+
+<string name="privacy_list_name">Beem - Manten. mi lista privada</string>
+<string name="privacy_list_no_data">No existe ninguna lista privada registrada</string>
+<string name="privacy_list_menu_create">Crear lista privada</string>
+<string name="privacy_list_create_dialog_title">Crear lista privada</string>
+<string name="privacy_list_create_dialog_list_name_label">Titulo</string>
+<string name="privacy_list_create_dialog_create_button">Crear</string>
+<string name="privacy_list_select_dialog_buddies">Contactos</string>
+<string name="privacy_list_select_dialog_groups">Grupos</string>
+<string name="privacy_list_select_dialog_delete">Borrar</string>
+<string name="privacy_list_delete_dialog_msg">Borrar la lista privada \'%s\' ?</string>
+<string name="privacy_list_delete_dialog_yes">Sí</string>
+<string name="privacy_list_delete_dialog_no">No</string>
+
+<string name="UpdateButton">Actualizar</string>
+
+<!-- Error messages -->
+
+<string name="error_login_authentication">Error Autenticando, mal usuario y contraseña.</string>
+
+<string name="interna_server_error">Error Servidor remoto</string>
+<string name="bad_request">mala  pregunta</string>
+<string name="forbidden">prohibido</string>
+<string name="item_not_found">elemento no encontrado</string>
+<string name="conflict">conflicto</string>
+<string name="feature_not_implemented">caracteristica no implementada</string>
+<string name="gone">ir</string>
+<string name="jid_malformed">jid-malformado</string>
+<string name="no_acceptable">no-aceptable</string>
+<string name="not_allowed">no permitido</string>
+<string name="not_authorized">no autorizado</string>
+<string name="payment_required">pago requerido</string>
+<string name="recipient_unavailable">recibidor no disponible</string>
+<string name="redirect">redireccionar</string>
+<string name="registration_required">registro requerido</string>
+<string name="remote_server_not_found">servidor remoto no encontrado</string>
+<string name="remote_server_timeout">Sin respuesta del servidor</string>
+<string name="remote_server_error">Error en servidor remoto</string>
+<string name="resource_constraint">restriccion en recurso</string>
+<string name="service_unavailable">servicio no disponible</string>
+<string name="subscription_required">suscripcion requerida</string>
+<string name="undefined_condition">condicion indefinida</string>
+<string name="unexpected_condition">condicion inesperada</string>
+<string name="request_timeout">tiempo de espera de solicitud </string>
+</resources>
--- a/src/com/beem/project/beem/ui/Chat.java	Tue Aug 10 01:46:51 2010 +0200
+++ b/src/com/beem/project/beem/ui/Chat.java	Tue Aug 10 20:36:16 2010 +0200
@@ -43,19 +43,18 @@
 */
 package com.beem.project.beem.ui;
 
+import java.text.DateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Date;
-import java.text.DateFormat;
 
 import org.jivesoftware.smack.util.StringUtils;
 
 import android.app.Activity;
-import android.app.AlertDialog;
+import android.app.Dialog;
 import android.content.ComponentName;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
@@ -74,9 +73,9 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.View.OnClickListener;
 import android.view.View.OnKeyListener;
+import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.Button;
 import android.widget.EditText;
@@ -91,10 +90,11 @@
 import com.beem.project.beem.service.aidl.IBeemRosterListener;
 import com.beem.project.beem.service.aidl.IChat;
 import com.beem.project.beem.service.aidl.IChatManager;
+import com.beem.project.beem.service.aidl.IChatManagerListener;
 import com.beem.project.beem.service.aidl.IMessageListener;
-import com.beem.project.beem.service.aidl.IChatManagerListener;
 import com.beem.project.beem.service.aidl.IRoster;
 import com.beem.project.beem.service.aidl.IXmppFacade;
+import com.beem.project.beem.ui.dialogs.builders.ChatList;
 import com.beem.project.beem.utils.BeemBroadcastReceiver;
 import com.beem.project.beem.utils.Status;
 
@@ -272,10 +272,8 @@
 		try {
 		    final List<Contact> openedChats = mChatManager.getOpenedChatList();
 		    Log.d(TAG, "opened chats = " + openedChats);
-		    if (openedChats.size() > 0)
-			createChatSwitcherDialog(openedChats);
-		    else
-			createNoActiveChatsDialog();
+		    Dialog chatList = new ChatList(Chat.this, openedChats).create();
+		    chatList.show();
 		} catch (RemoteException e) {
 		    Log.e(TAG, e.getMessage());
 		}
@@ -295,41 +293,6 @@
     }
 
     /**
-     * Create the change chat dialog.
-     * @param openedChats A list containing the JID of participants of the opened chats.
-     */
-    private void createChatSwitcherDialog(final List<Contact> openedChats) {
-	CharSequence[] items = new CharSequence[openedChats.size()];
-
-	int i = 0;
-	for (Contact c : openedChats) {
-	    items[i++] = c.getName();
-	}
-
-	AlertDialog.Builder builder = new AlertDialog.Builder(this);
-	builder.setTitle(getString(R.string.chat_dialog_change_chat_title));
-	builder.setItems(items, new DialogInterface.OnClickListener() {
-	    public void onClick(DialogInterface dialog, int item) {
-		Intent chatIntent = new Intent(getApplicationContext(), com.beem.project.beem.ui.Chat.class);
-		chatIntent.setData((openedChats.get(item)).toUri());
-		startActivity(chatIntent);
-	    }
-	});
-	AlertDialog chatSwitcherDialog = builder.create();
-	chatSwitcherDialog.show();
-    }
-
-    /**
-     * Create a dialog which notify the user that there're not another one active chat.
-     */
-    private void createNoActiveChatsDialog() {
-	AlertDialog.Builder builder = new AlertDialog.Builder(this);
-	builder.setMessage(getString(R.string.chat_no_more_chats));
-	AlertDialog noActiveChatsDialog = builder.create();
-	noActiveChatsDialog.show();
-    }
-
-    /**
      * Change the displayed chat.
      * @param contact the targeted contact of the new chat
      * @throws RemoteException If a Binder remote-invocation error occurred.
--- a/src/com/beem/project/beem/ui/ContactList.java	Tue Aug 10 01:46:51 2010 +0200
+++ b/src/com/beem/project/beem/ui/ContactList.java	Tue Aug 10 20:36:16 2010 +0200
@@ -43,13 +43,12 @@
 package com.beem.project.beem.ui;
 
 import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 
 import org.jivesoftware.smack.util.StringUtils;
 
@@ -76,6 +75,8 @@
 import android.view.ViewGroup;
 import android.view.ViewStub;
 import android.widget.AdapterView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.AdapterView.OnItemClickListener;
 import android.widget.BaseAdapter;
 import android.widget.Filter;
 import android.widget.Filterable;
@@ -83,21 +84,21 @@
 import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.TextView;
-import android.widget.AdapterView.AdapterContextMenuInfo;
-import android.widget.AdapterView.OnItemClickListener;
 
 import com.beem.project.beem.R;
 import com.beem.project.beem.service.Contact;
 import com.beem.project.beem.service.PresenceAdapter;
 import com.beem.project.beem.service.aidl.IBeemRosterListener;
+import com.beem.project.beem.service.aidl.IChatManager;
 import com.beem.project.beem.service.aidl.IRoster;
 import com.beem.project.beem.service.aidl.IXmppFacade;
 import com.beem.project.beem.ui.dialogs.builders.Alias;
+import com.beem.project.beem.ui.dialogs.builders.ChatList;
 import com.beem.project.beem.ui.dialogs.builders.DeleteContact;
 import com.beem.project.beem.ui.dialogs.builders.ResendSubscription;
 import com.beem.project.beem.utils.BeemBroadcastReceiver;
+import com.beem.project.beem.utils.SortedList;
 import com.beem.project.beem.utils.Status;
-import com.beem.project.beem.utils.SortedList;
 
 /**
  * The contact list activity displays the roster of the user.
@@ -130,6 +131,7 @@
     private IRoster mRoster;
     private Contact mSelectedContact;
     private IXmppFacade mXmppFacade;
+    private IChatManager mChatManager;
     private SharedPreferences mSettings;
     private LayoutInflater mInflater;
     private BeemBanner mAdapterBanner;
@@ -166,10 +168,20 @@
 	    case R.id.menu_change_status:
 		startActivity(new Intent(ContactList.this, ChangeStatus.class));
 		return true;
+	    case R.id.contact_list_menu_chatlist:
+		List<Contact> openedChats;
+		try {
+		    openedChats = mChatManager.getOpenedChatList();
+		    Log.d(TAG, "opened chats = " + openedChats);
+		    Dialog chatList = new ChatList(ContactList.this, openedChats).create();
+		    chatList.show();
+		} catch (RemoteException e) {
+		    e.printStackTrace();
+		}
+		return true;
 	    case R.id.menu_disconnect:
 		stopService(SERVICE_INTENT);
 		finish();
-		return true;
 	    default:
 		return false;
 	}
@@ -235,7 +247,7 @@
 		    break;
 		case R.id.contact_list_context_menu_userinfo_subscription:
 		    Dialog subscription = new ResendSubscription(ContactList.this,
-			    mXmppFacade, mSelectedContact).create();
+			mXmppFacade, mSelectedContact).create();
 		    subscription.show();
 		    result = true;
 		    break;
@@ -456,7 +468,7 @@
 			    if (!mListGroup.contains(group)) {
 				mListGroup.add(mListGroup.size() - 1, group);
 				List<Contact> tmplist = new SortedList<Contact>(
-					new LinkedList<Contact>(), mComparator);
+				    new LinkedList<Contact>(), mComparator);
 				mContactOnGroup.put(group, tmplist);
 			    }
 			    mContactOnGroup.get(group).remove(contact);
@@ -539,11 +551,11 @@
 	    String noGroup = getString(R.string.contact_list_no_group);
 	    String allGroup = getString(R.string.contact_list_all_contact);
 	    final boolean add = ((!hideDisconnected || Status.statusOnline(contact.getStatus())) &&	// must show and
-		    (
-		     (listName.equals(noGroup) && groups.isEmpty()) ||			// in no group
-		     groups.contains(listName) ||					// or in current
-		     listName.equals(allGroup)						// or in all
-		    ));
+		(
+		    (listName.equals(noGroup) && groups.isEmpty()) ||			// in no group
+		    groups.contains(listName) ||					// or in current
+		    listName.equals(allGroup)						// or in all
+		));
 	    mHandler.post(new Runnable() {
 		public void run() {
 		    mListContact.remove(contact);
@@ -642,7 +654,7 @@
 	    if (curContact != null) {
 		TextView v = (TextView) view.findViewById(R.id.contactlistpseudo);
 		LevelListDrawable mStatusDrawable = (LevelListDrawable) getResources()
-		    .getDrawable(R.drawable.status_icon);
+		.getDrawable(R.drawable.status_icon);
 		mStatusDrawable.setLevel(curContact.getStatus());
 		v.setCompoundDrawablesWithIntrinsicBounds(mStatusDrawable, null, null, null);
 		v.setText(curContact.getName());
@@ -748,7 +760,6 @@
 	    try {
 		mRoster = mXmppFacade.getRoster();
 		if (mRoster != null) {
-		    List<Contact> tmpContactList = mRoster.getContactList();
 		    List<String> tmpGroupList = mRoster.getGroupsNames();
 		    Collections.sort(tmpGroupList);
 		    mListGroup.clear();
@@ -764,7 +775,8 @@
 		    String group = getString(R.string.contact_list_all_contact);
 		    buildContactList(group);
 		    mRoster.addRosterListener(mBeemRosterListener);
-		    Log.d(TAG, "add rester listneer");
+		    Log.d(TAG, "add roster listener");
+		    mChatManager = mXmppFacade.getChatManager();
 		}
 	    } catch (RemoteException e) {
 		e.printStackTrace();
@@ -779,6 +791,7 @@
 		e.printStackTrace();
 	    }
 	    mXmppFacade = null;
+	    mChatManager = null;
 	    mRoster = null;
 	    mListContact.clear();
 	    mListGroup.clear();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/ui/dialogs/builders/ChatList.java	Tue Aug 10 20:36:16 2010 +0200
@@ -0,0 +1,90 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+package com.beem.project.beem.ui.dialogs.builders;
+
+import java.util.List;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+
+import com.beem.project.beem.R;
+import com.beem.project.beem.service.Contact;
+
+/**
+ * Create the change chat dialog.
+ */
+public class ChatList extends AlertDialog.Builder {
+
+    //private static final String TAG = "Dialogs.Builders > Chat list";
+
+    /**
+     * Constructor.
+     * @param context context activity.
+     * @param openedChats A list containing the JID of participants of the opened chats.
+     */
+    public ChatList(final Context context, final List<Contact> openedChats) {
+	super(context);
+
+	if (openedChats.size() > 0) {
+	    CharSequence[] items = new CharSequence[openedChats.size()];
+
+	    int i = 0;
+	    for (Contact c : openedChats) {
+		items[i++] = c.getName();
+	    }
+	    setTitle(R.string.chat_dialog_change_chat_title);
+	    setItems(items, new DialogInterface.OnClickListener() {
+		public void onClick(DialogInterface dialog, int item) {
+		    Intent chatIntent = new Intent(context, com.beem.project.beem.ui.Chat.class);
+		    chatIntent.setData((openedChats.get(item)).toUri());
+		    context.startActivity(chatIntent);
+		}
+	    });
+	} else {
+	    setMessage(R.string.chat_no_more_chats);
+	}
+    }
+}