merge
authorDa Risk <darisk972@gmail.com>
Tue, 17 Nov 2009 00:27:43 +0100
changeset 526 62a448d5dfe9
parent 521 0444ac5038a0 (current diff)
parent 525 32e700f9f07e (diff)
child 527 d9e22d4c2bb2
merge
default.properties
res/layout/chat.xml
res/layout/preferences.xml
res/values-fr/strings.xml
res/values/strings.xml
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/service/BeemChatManager.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
src/com/beem/project/beem/service/XmppFacade.java
src/com/beem/project/beem/service/aidl/IXmppConnection.aidl
src/com/beem/project/beem/ui/Chat.java
--- a/res/layout/chat.xml	Mon Nov 16 21:51:34 2009 +0100
+++ b/res/layout/chat.xml	Tue Nov 17 00:27:43 2009 +0100
@@ -34,7 +34,7 @@
 		android:background="#222222" android:padding="8px">
 		<EditText android:id="@+id/chat_input" android:layout_width="wrap_content"
 			android:layout_height="fill_parent" android:layout_weight="1"
-			android:ellipsize="end" android:inputType="textAutoComplete|textAutoCorrect"
+			android:ellipsize="end" android:inputType="textShortMessage|textAutoCorrect"
 			android:imeOptions="actionSend" android:cursorVisible="true"
 			android:hint="@string/chat_input_default_value" />
 		<Button android:id="@+id/chat_send_message"
--- a/res/layout/preferences.xml	Mon Nov 16 21:51:34 2009 +0100
+++ b/res/layout/preferences.xml	Tue Nov 17 00:27:43 2009 +0100
@@ -16,6 +16,17 @@
 		<EditTextPreference android:name="password"
 			android:singleLine="true" android:password="true" android:summary="@string/SettingsPassword"
 			android:title="@string/settings_account_password" android:key="settings_key_account_password" />
+		<EditTextPreference
+		    android:key="settings_key_resource"
+		    android:title="@string/SettingsResourceTitle"
+		    android:summary="@string/SettingsResourceSummary"
+		    android:defaultValue="Beem" />
+		<EditTextPreference
+		    android:key="settings_key_priority"
+		    android:title="@string/SettingsPriorityTitle"
+		    android:summary="@string/SettingsPrioritySummary"
+		    android:numeric="integer"
+		    android:defaultValue="0" />
 		<CheckBoxPreference android:title="@string/SettingsCheckboxText"
 			android:defaultValue="false" android:summary="@string/SettingsGmail"
 			android:key="settings_key_gmail" />
--- a/res/values-fr/strings.xml	Mon Nov 16 21:51:34 2009 +0100
+++ b/res/values-fr/strings.xml	Tue Nov 17 00:27:43 2009 +0100
@@ -82,35 +82,32 @@
 	<string name="SettingsText">Saisissez votre identifiant de connexion</string>
 	<string name="SettingsPassword">Saisissez votre mot de passe</string>
 	<string name="SettingsCheckboxText">Utilisation de Gmail</string>
-	<string name="SettingsGmail">Cochez cette option si vous souhaitez utiliser
-		votre compte Gmail</string>
+	<string name="SettingsGmail">Cochez cette option si vous souhaitez utiliser votre compte Gmail</string>
 	<string name="SettingsProxy">Proxy</string>
 	<string name="SettingsProxyProxy">Utiliser un proxy</string>
 	<string name="SettingsProxySummary">Connectez vous à travers un serveur proxy</string>
 	<string name="SettingsProxyType">Protocole</string>
-	<string name="SettingsProxyTypeSummary">Permet de choisir le type de proxy à utiliser
-	</string>
+	<string name="SettingsProxyTypeSummary">Permet de choisir le type de proxy à utiliser</string>
 	<string name="SettingsProxyServer">Saisissez l\'adresse du serveur proxy</string>
-	<string name="SettingsProxyPort">Saisissez le numéro de port du serveur proxy
-	</string>
-	<string name="SettingsProxyUser">Optionnel, permet de s\'authentifier sur le proxy
-	</string>
-	<string name="SettingsProxyPassword">Optionnel, permet de s\'authentifier sur le proxy
-	</string>
+	<string name="SettingsProxyPort">Saisissez le numéro de port du serveur proxy</string>
+	<string name="SettingsProxyUser">Optionnel, permet de s\'authentifier sur le proxy</string>
+	<string name="SettingsProxyPassword">Optionnel, permet de s\'authentifier sur le proxy</string>
 	<string name="SettingsAdvanced">Options avancées</string>
 	<string name="SettingsAdvancedRecoDelay">Modifier le délai de reconnexion</string>
 	<string name="SettingsAdvancedOptions">Options spécifiques</string>
-	<string name="SettingsAdvancedSpecOpt">Cochez cette option pour utiliser un serveur
-		spécifique </string>
+	<string name="SettingsAdvancedSpecOpt">Cochez cette option pour utiliser un serveur spécifique </string>	
 	<string name="SettingsAdvancedAddOpt">Saisissez l\'adresse du serveur à joindre</string>
 	<string name="SettingsAdvancedPortOpt">Saisissez le port du serveur</string>
-
+	<string name="SettingsResourceTitle">Ressource</string>
+	<string name="SettingsPriorityTitle">Priorité</string>
+	<string name="SettingsResourceSummary">Saisissez la resource à partir de laquelle vous vous connectez</string>
+	<string name="SettingsPrioritySummary">Saisissez la priorité de votre client</string>
+	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Inscription acceptée</string>
 	<string name="SubscriptError">Erreur d\'inscription</string>
 	<string name="SubscriptRefused">Inscription refusée</string>
-	<string name="SubscriptText">%s vient de vous ajouter à sa liste de contacts.
-		Souhaitez-vous l\'autoriser ?</string>
+	<string name="SubscriptText">%s vient de vous ajouter à sa liste de contacts. Souhaitez-vous l\'autoriser ?</string>
 	<string name="SubscriptTitle">Autoriser ce contact ?</string>
 
 	<!-- ContactList class -->
@@ -123,8 +120,7 @@
 	<string name="BeemBroadcastReceiverDisconnect">Vous avez été déconnecté(e)</string>
 
 	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s vient de vous ajouter à sa liste d'amis.
-	</string>
+	<string name="AcceptContactRequest">%s vient de vous ajouter à sa liste d\'amis.</string>
 	<string name="AcceptContactRequestFrom">Autoriser %s à vous contacter.</string>
 
 	<!--
@@ -217,9 +213,8 @@
 	<string name="contact_list_preferences_sum">Une série d\'options d\'affichage de votre liste
 		d\'ami(e)s</string>
 	<string name="CLP_hidden_contact">Caché(e)s</string>
-	<string name="CLP_hidden_contact_sum">Cochez cette option pour cacher les ami(e)s
-		déconnecté(e)s</string>
-
+	<string name="CLP_hidden_contact_sum">Cochez cette option pour cacher les ami(e)s déconnecté(e)s</string>
+	
 	<!-- EditSettings Activity Account tab -->
 	<string name="settings_account_username">Nom d\'utilisateur</string>
 	<string name="settings_account_password">Mot de passe</string>
@@ -228,8 +223,7 @@
 
 	<!-- EditSettings Activity Advanced Options tab -->
 	<string name="settings_advanced_service_behaviour">Comportement du service</string>
-	<string name="settings_advanced_sum">Une série d\'options pour les utilisateurs avertis
-	</string>
+	<string name="settings_advanced_sum">Une série d\'options pour les utilisateurs avertis</string>
 	<string name="settings_xmpp_server">Serveur</string>
 	<string name="settings_xmpp_port">Port</string>
 	<string name="settings_xmpp_use_tls">Utiliser SSL/TLS</string>
@@ -277,13 +271,11 @@
 	<string name="userinfo_label_block">Bloquer</string>
 	<string name="userinfo_label_delete">Supprimer</string>
 	<string name="userinfo_resend">Souscription réenvoyée</string>
-	<string name="userinfo_sure2delete">Etes-vous sûr de vouloir supprimer ce contact ?
-	</string>
+	<string name="userinfo_sure2delete">Etes-vous sûr de vouloir supprimer ce contact ?</string>
 	<string name="userinfo_yes">Oui</string>
 	<string name="userinfo_no">Non</string>
-	<string name="userinfo_sureresend">Etes vous sûr de vouloir renvoyer l\'invitation ?
-	</string>
-
+	<string name="userinfo_sureresend">Etes vous sûr de vouloir renvoyer l\'invitation ?</string>
+	
 	<string name="chat_input_default_value">Saisissez votre message</string>
 	<string name="chat_name">Beem - Chat</string>
 	<string name="chat_self">Moi</string>
@@ -302,7 +294,7 @@
 	<string name="contact_status_msg_offline">Hors ligne</string>
 
 	<string name="privacy_list_name">Beem - Gérer mes listes privées</string>
-	<string name="privacy_list_no_data">Il n'existe aucune liste privée enregistrée.</string>
+	<string name="privacy_list_no_data">Il n\'existe aucune liste privée enregistrée.</string>
 	<string name="privacy_list_menu_create">Créer une liste privée</string>
 	<string name="privacy_list_create_dialog_title">Créer une liste privée</string>
 	<string name="privacy_list_create_dialog_list_name_label">Titre</string>
--- a/res/values/strings.xml	Mon Nov 16 21:51:34 2009 +0100
+++ b/res/values/strings.xml	Tue Nov 17 00:27:43 2009 +0100
@@ -90,24 +90,24 @@
 	<string name="SettingsProxyTypeSummary">Choose the proxy server type</string>
 	<string name="SettingsProxyServer">Edit proxy server address</string>
 	<string name="SettingsProxyPort">Edit proxy server port</string>
-	<string name="SettingsProxyUser">Optional, allow to authenticate yourself on the
-		proxy server</string>
-	<string name="SettingsProxyPassword">Optional, allow to authenticate yourself on the
-		proxy server</string>
+	<string name="SettingsProxyUser">Optional, allow to authenticate yourself on the proxy server</string>
+	<string name="SettingsProxyPassword">Optional, allow to authenticate yourself on the proxy server</string>
 	<string name="SettingsAdvanced">Advanced</string>
 	<string name="SettingsAdvancedOptions">Specific server option</string>
 	<string name="SettingsAdvancedRecoDelay">Modify reconnection delay</string>
-	<string name="SettingsAdvancedSpecOpt">Check this box if you want to use a specific server
-		for your connection</string>
+	<string name="SettingsAdvancedSpecOpt">Check this box if you want to use a specific server for your connection</string>
 	<string name="SettingsAdvancedAddOpt">Edit the server address</string>
 	<string name="SettingsAdvancedPortOpt">Edit the server port</string>
-
+	<string name="SettingsResourceTitle">Resource</string>
+	<string name="SettingsPriorityTitle">Priority</string>
+	<string name="SettingsResourceSummary">Set the XMPP resource of your client </string>
+	<string name="SettingsPrioritySummary">Set the priority of your client</string>
+	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Subscription accepted</string>
 	<string name="SubscriptError">Subscription error</string>
 	<string name="SubscriptRefused">Subscription refused</string>
-	<string name="SubscriptText">%s wants to add you to his/her buddy list. Do you
-		want to authorize him/her ?</string>
+	<string name="SubscriptText">%s wants to add you to his/her buddy list. Do you want to authorize him/her ?</string>
 	<string name="SubscriptTitle">Authorize buddy ?</string>
 
 	<!-- ContactList class -->
@@ -120,8 +120,7 @@
 	<string name="BeemBroadcastReceiverDisconnect">You have been disconnected</string>
 
 	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s has just added you to his/her buddy list.
-	</string>
+	<string name="AcceptContactRequest">%s has just added you to his/her buddy list.</string>
 	<string name="AcceptContactRequestFrom">Authorize %s to contact you.</string>
 
 	<!-- Activities -->
@@ -276,7 +275,7 @@
 	<string name="contact_status_msg_offline">Disconnected</string>
 
 	<string name="privacy_list_name">Beem - Manage my privacy lists</string>
-	<string name="privacy_list_no_data">There aren't any privacy list registered.</string>
+	<string name="privacy_list_no_data">There aren\'t any privacy list registered.</string>
 	<string name="privacy_list_menu_create">Create a privacy list</string>
 	<string name="privacy_list_create_dialog_title">Create a privacy list</string>
 	<string name="privacy_list_create_dialog_list_name_label">Title</string>
--- a/src/com/beem/project/beem/BeemService.java	Mon Nov 16 21:51:34 2009 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Tue Nov 17 00:27:43 2009 +0100
@@ -212,4 +212,12 @@
     public IXmppFacade getBind() {
 	return mBind;
     }
+
+    /**
+     * Get the preference of the service.
+     * @return the preference
+     */
+    public SharedPreferences getServicePreference() {
+	return mSettings;
+    }
 }
--- a/src/com/beem/project/beem/service/BeemChatManager.java	Mon Nov 16 21:51:34 2009 +0100
+++ b/src/com/beem/project/beem/service/BeemChatManager.java	Tue Nov 17 00:27:43 2009 +0100
@@ -254,7 +254,7 @@
 	IRoster mRoster = mService.getBind().getRoster();
 
 	for (ChatAdapter chat : mChats.values()) {
-	    if (!chat.isOpen())
+	    if (chat.getMessages().size() > 0) //TODO check plutot le nombre de messages dans l'historique
 		openedChats.add(mRoster.getContact(chat.getParticipant().getJID()));
 	}
 	return openedChats;
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Mon Nov 16 21:51:34 2009 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Tue Nov 17 00:27:43 2009 +0100
@@ -17,6 +17,7 @@
 import android.app.Notification;
 import android.app.PendingIntent;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.util.Log;
@@ -29,6 +30,8 @@
 import com.beem.project.beem.service.aidl.IXmppConnection;
 import com.beem.project.beem.ui.Subscription;
 import com.beem.project.beem.utils.BeemBroadcastReceiver;
+import com.beem.project.beem.ui.ChangeStatus;
+import com.beem.project.beem.utils.Status;
 
 /**
  * This class implements an adapter for XMPPConnection.
@@ -47,7 +50,9 @@
     private IChatManager mChatManager;
     private final String mLogin;
     private final String mPassword;
+    private String mResource;
     private RosterAdapter mRoster;
+    private int mPreviousPriority;
     private PrivacyListManagerAdapter mPrivacyListManager;
     private final BeemService mService;
     private final RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
@@ -92,6 +97,13 @@
 	mLogin = login;
 	mPassword = password;
 	mService = service;
+	SharedPreferences pref = mService.getServicePreference();
+	try {
+	    mPreviousPriority = Integer.parseInt(pref.getString("settings_key_priority", "0"));
+	    mResource = pref.getString("settings_key_resource", "BEEM");
+	} catch (NumberFormatException ex) {
+	    mPreviousPriority = 0;
+	}
     }
 
     /**
@@ -130,7 +142,7 @@
 	try {
 	    mAdaptee.connect();
 	    mAdaptee.addConnectionListener(mConListener);
-	    mAdaptee.login(mLogin, mPassword, "BEEM");
+	    mAdaptee.login(mLogin, mPassword, mResource);
 
 	    mChatManager = new BeemChatManager(mAdaptee.getChatManager(), mService);
 	    mPrivacyListManager = new PrivacyListManagerAdapter(mAdaptee);
@@ -140,10 +152,7 @@
 	    ChatStateManager.getInstance(mAdaptee);
 
 	    triggerAsynchronousConnectEvent();
-	    // Priority between -128 and 128
-	    Presence p = new Presence(Presence.Type.available, "Beem : http://www.beem-project.com",
-		PRESENCE_PRIORITY, Presence.Mode.available);
-	    mAdaptee.sendPacket(p);
+	    changeStatus(Status.CONTACT_STATUS_AVAILABLE, mService.getServicePreference().getString("status_text", ""));
 	    return true;
 	} catch (XMPPException e) {
 	    Log.d(TAG, "Error while connecting", e);
@@ -163,6 +172,59 @@
      * {@inheritDoc}
      */
     @Override
+    public void changeStatusAndPriority(int status, String msg, int priority) {
+	Presence pres = new Presence(Presence.Type.available);
+	if (msg != null)
+	    pres.setStatus(msg);
+	else
+	    msg = "";
+	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
+	if (mode != null)
+	    pres.setMode(mode);
+	// Smack limit : Priority between -128 and 128
+	if (priority < -128) priority = -128;
+	if (priority > 128) priority = 128;
+	mPreviousPriority = priority;
+	pres.setPriority(priority);
+	mAdaptee.sendPacket(pres);
+	updateNotification(msg);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void changeStatus(int status, String msg) {
+	Presence pres = new Presence(Presence.Type.available);
+	if (msg != null)
+	    pres.setStatus(msg);
+	else
+	    msg = "";
+	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
+	if (mode != null)
+	    pres.setMode(mode);
+	pres.setPriority(mPreviousPriority);
+	mAdaptee.sendPacket(pres);
+	updateNotification(msg);
+    }
+
+    private void updateNotification(String text) {
+ 	Notification mStatusNotification;
+	mStatusNotification = new Notification(com.beem.project.beem.R.drawable.beem_status_icon, text, System
+	    .currentTimeMillis());
+	mStatusNotification.defaults = Notification.DEFAULT_LIGHTS;
+	mStatusNotification.flags = Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;
+
+	mStatusNotification.setLatestEventInfo(mService, "Beem Status", text, PendingIntent.getActivity(
+	    mService, 0, new Intent(mService, ChangeStatus.class), 0));
+	mService.sendNotification(BeemService.NOTIFICATION_STATUS_ID, mStatusNotification);
+   
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public boolean disconnect() {
 	if (mAdaptee != null && mAdaptee.isConnected())
 	    mAdaptee.disconnect();
@@ -343,8 +405,8 @@
 		@Override
 		public void processPacket(Packet packet) {
 		    String from = packet.getFrom();
-		    Notification notif = new Notification(android.R.drawable.stat_notify_more, mService.getString(
-			R.string.AcceptContactRequest, from), System.currentTimeMillis());
+		    Notification notif = new Notification(android.R.drawable.stat_notify_more, mService
+			.getString(R.string.AcceptContactRequest, from), System.currentTimeMillis());
 		    notif.defaults = Notification.DEFAULT_ALL;
 		    notif.flags = Notification.FLAG_AUTO_CANCEL;
 		    Intent intent = new Intent(mService, Subscription.class);
@@ -443,8 +505,8 @@
 		@Override
 		public void processPacket(Packet packet) {
 		    String from = packet.getFrom();
-		    Notification notif = new Notification(android.R.drawable.stat_notify_more, mService.getString(
-			R.string.AcceptContactRequest, from), System.currentTimeMillis());
+		    Notification notif = new Notification(android.R.drawable.stat_notify_more, mService
+			.getString(R.string.AcceptContactRequest, from), System.currentTimeMillis());
 		    notif.defaults = Notification.DEFAULT_ALL;
 		    notif.flags = Notification.FLAG_AUTO_CANCEL;
 		    Intent intent = new Intent(mService, Subscription.class);
--- a/src/com/beem/project/beem/service/XmppFacade.java	Mon Nov 16 21:51:34 2009 +0100
+++ b/src/com/beem/project/beem/service/XmppFacade.java	Tue Nov 17 00:27:43 2009 +0100
@@ -47,26 +47,7 @@
      */
     @Override
     public void changeStatus(int status, String msg) {
-	Presence pres = new Presence(Presence.Type.available);
-	if (msg != null)
-	    pres.setStatus(msg);
-	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
-	if (mode != null)
-	    pres.setMode(mode);
-	mConnexion.getAdaptee().sendPacket(pres);
-
-	Notification mStatusNotification;
-	String text = "";
-	if (msg != null)
-	    text = msg;
-	mStatusNotification = new Notification(com.beem.project.beem.R.drawable.beem_status_icon, text, System
-	    .currentTimeMillis());
-	mStatusNotification.defaults = Notification.DEFAULT_ALL;
-	mStatusNotification.flags = Notification.FLAG_NO_CLEAR;
-
-	mStatusNotification.setLatestEventInfo(mBeemService, "Beem Status", text, PendingIntent.getActivity(
-	    mBeemService, 0, new Intent(mBeemService, ChangeStatus.class), 0));
-	mBeemService.sendNotification(BeemService.NOTIFICATION_STATUS_ID, mStatusNotification);
+	mConnexion.changeStatus(status, msg);
     }
 
     /**
--- a/src/com/beem/project/beem/service/aidl/IXmppConnection.aidl	Mon Nov 16 21:51:34 2009 +0100
+++ b/src/com/beem/project/beem/service/aidl/IXmppConnection.aidl	Tue Nov 17 00:27:43 2009 +0100
@@ -6,21 +6,25 @@
 import  com.beem.project.beem.service.aidl.IPrivacyListManager;
 
 interface IXmppConnection {
-    
+
     boolean connectSync();
-    
+
     void connectAsync();
-    
+
     boolean disconnect();
-    
+
     IRoster getRoster();
 
     void addConnectionListener(in IBeemConnectionListener listen);
     void removeConnectionListener(in IBeemConnectionListener listen);
-    
+
     boolean isAuthentificated();
-    
+
     IChatManager getChatManager();
-    
+
+    void changeStatusAndPriority(in int status, in String msg, in int priority);
+
+    void changeStatus(in int status, in String msg);
+
     IPrivacyListManager getPrivacyListManager();
 }
--- a/src/com/beem/project/beem/ui/Chat.java	Mon Nov 16 21:51:34 2009 +0100
+++ b/src/com/beem/project/beem/ui/Chat.java	Tue Nov 17 00:27:43 2009 +0100
@@ -307,11 +307,7 @@
 	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);
-		try {
-		    chatIntent.setData(mRoster.getContact(openedChats.get(item).getJID()).toUri());
-		} catch (RemoteException e) {
-		    Log.e(TAG, e.getMessage());
-		}
+		chatIntent.setData((openedChats.get(item)).toUri());
 		Chat.this.onNewIntent(chatIntent);
 	    }
 	});