--- 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);
}
});