Adding of an 'Auto-Away' option, there is still some more work/translation to do
authornikita@nikita-laptop
Wed, 17 Feb 2010 02:29:11 +0100
changeset 678 d1a599ccf879
parent 673 5884f3bd703a
child 679 47cd386089b3
Adding of an 'Auto-Away' option, there is still some more work/translation to do
.classpath
AndroidManifest.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/XmppConnectionAdapter.java
src/com/beem/project/beem/utils/BeemBroadcastReceiver.java
--- a/.classpath	Mon Feb 15 23:37:25 2010 +0100
+++ b/.classpath	Wed Feb 17 02:29:11 2010 +0100
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
-	<classpathentry kind="lib" path="libs/asmack-jse.jar" sourcepath="/home/nikita/devel/smack/source"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="gen"/>
-	<classpathentry kind="lib" path="libs/jlibrtp.jar"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry kind="lib" path="libs/asmack-jse.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
--- a/AndroidManifest.xml	Mon Feb 15 23:37:25 2010 +0100
+++ b/AndroidManifest.xml	Wed Feb 17 02:29:11 2010 +0100
@@ -76,6 +76,8 @@
 			android:label="Beem Service" android:permission="com.beem.project.beem.BEEM_SERVICE">
 			<intent-filter>
 				<action android:name="com.beem.project.beem.BeemService"></action>
+				<action android:name="android.intent.action.SCREEN_OFF"></action>
+				<action android:name="android.intent.action.SCREEN_ON"></action>
 			</intent-filter>
 		</service>
 	</application>
--- a/res/layout/preferences.xml	Mon Feb 15 23:37:25 2010 +0100
+++ b/res/layout/preferences.xml	Wed Feb 17 02:29:11 2010 +0100
@@ -10,6 +10,13 @@
 			<CheckBoxPreference android:title="@string/CLP_hide_groups"
 				android:defaultValue="false" android:summary="@string/CLP_hide_groups_sum"
 				android:key="settings_key_hide_groups" />
+			<CheckBoxPreference android:title="@string/away_chk_title"
+				android:defaultValue="true" android:summary="@string/away_chk_sum"
+				android:key="settings_away_chk" />
+			<EditTextPreference android:dependency="settings_away_chk" android:singleLine="true"
+			android:summary="@string/away_message_sum" android:title="@string/away_message_title"
+			android:key="settings_away_message"
+			android:hint="@string/away_message_hint" />
 		</PreferenceScreen>
 	</PreferenceCategory>
 	<PreferenceCategory android:title="@string/user_preferences">
--- a/res/values-fr/strings.xml	Mon Feb 15 23:37:25 2010 +0100
+++ b/res/values-fr/strings.xml	Wed Feb 17 02:29:11 2010 +0100
@@ -83,8 +83,6 @@
 	<!-- Settings class -->
 	<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="SettingsProxy">Proxy</string>
 	<string name="SettingsProxyProxy">Utiliser un proxy</string>
 	<string name="SettingsProxySummary">Connectez vous à travers un serveur proxy</string>
@@ -104,6 +102,39 @@
 	<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>
+	<string name="contact_list_preferences">Liste d\'ami(e)s</string>
+	<string name="contact_list_preferences_sum">Une série d\'options d\'affichage de votre liste
+		d\'ami(e)s</string>
+	<string name="CLP_hide_groups">Cachez les groupes</string>	
+	<string name="CLP_hide_groups_sum">Cochez cette option pour cacher les groupes</string>
+	<string name="CLP_hidden_contact">Cachez les contacts</string>
+	<string name="CLP_hidden_contact_sum">Cochez cette option pour cacher les contacts déconnectés</string>
+	<string name="settings_account_username">Nom d\'utilisateur</string>
+	<string name="login_username_info_default">beem@beem-project.com</string>
+	<string name="settings_account_password">Mot de passe</string>
+	<string name="settings_account_server">Serveur</string>
+	<string name="settings_account_port">Port</string>
+	<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_xmpp_server">Serveur</string>
+	<string name="comments_xmpp_server">example.com</string>
+	<string name="settings_xmpp_port">Port</string>
+	<string name="comments_xmpp_port">Default: 5222</string>
+	<string name="settings_xmpp_use_tls">SSL/TLS obligatoire</string>
+	<string name="settings_reco_delay">Délai de reconnexion</string>	
+	<string name="settings_proxy_sum">Paramètrez un serveur proxy</string>
+	<string name="settings_proxy_use">Utiliser un proxy</string>
+	<string name="settings_proxy_type_prompt">Choisir un type de proxy</string>
+	<string name="settings_proxy_server">Serveur</string>
+	<string name="settings_proxy_port">Port</string>
+	<string name="comments_proxy_port">Default: 1080</string>
+	<string name="settings_proxy_username">Nom d\'utilisateur</string>
+	<string name="settings_proxy_password">Mot de passe</string>
+	<string name="away_chk_title">away_chk_title</string>
+	<string name="away_chk_sum">away_chk_sum</string>
+	<string name="away_message_title">away_message_title</string>
+	<string name="away_message_sum">away_message_sum</string>
+	<string name="away_message_hint">away_message_hint</string>
 	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Inscription acceptée</string>
@@ -199,44 +230,6 @@
 	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
 	<string name="settings_tab_label_proxy">Proxy</string>
 
-	<!-- EditSettings Activity General Preferences Tabs -->
-	<string name="contact_list_preferences">Liste d\'ami(e)s</string>
-	<string name="contact_list_preferences_sum">Une série d\'options d\'affichage de votre liste
-		d\'ami(e)s</string>
-	
-	<string name="CLP_hide_groups">Cachez les groupes</string>	
-	<string name="CLP_hide_groups_sum">Cochez cette option pour cacher les groupes</string>
-	<string name="CLP_hidden_contact">Cachez les contacts</string>
-	<string name="CLP_hidden_contact_sum">Cochez cette option pour cacher les contacts déconnectés</string>
-	
-	<!-- EditSettings Activity Account tab -->
-	<string name="settings_account_username">Nom d\'utilisateur</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">Mot de passe</string>
-	<string name="settings_account_server">Serveur</string>
-	<string name="settings_account_port">Port</string>
-
-	<!-- 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_xmpp_server">Serveur</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">Port</string>
-	<string name="comments_xmpp_port">Default: 5222</string>
-	<string name="settings_xmpp_use_tls">SSL/TLS obligatoire</string>
-	<string name="settings_reco_delay">Délai de reconnexion</string>
-
-
-	<!-- EditSettings Activity Proxy tab -->
-	<string name="settings_proxy_sum">Paramètrez un serveur proxy</string>
-	<string name="settings_proxy_use">Utiliser un proxy</string>
-	<string name="settings_proxy_type_prompt">Choisir un type de proxy</string>
-	<string name="settings_proxy_server">Serveur</string>
-	<string name="settings_proxy_port">Port</string>
-	<string name="comments_proxy_port">Default: 1080</string>
-	<string name="settings_proxy_username">Nom d\'utilisateur</string>
-	<string name="settings_proxy_password">Mot de passe</string>
-
 	<!--
 		Create an account Activity
 	-->
--- a/res/values/strings.xml	Mon Feb 15 23:37:25 2010 +0100
+++ b/res/values/strings.xml	Wed Feb 17 02:29:11 2010 +0100
@@ -71,7 +71,6 @@
 	<string name="ChangeStatusType">My status</string>
 	<string name="ChangeStatusMessage">My personal message</string>
 	<string name="OpenContactList">Open contact list</string>
-
 	
 	<string name="MenuAddContact">Add new contact</string>
 	<string name="MenuAccountAbout">Beem Project</string>
@@ -83,8 +82,6 @@
 	<!-- Settings class -->
 	<string name="SettingsText">Edit your username</string>
 	<string name="SettingsPassword">Edit your password</string>
-	<string name="SettingsCheckboxText">Using Gmail</string>
-	<string name="SettingsGmail">Use my Gmail account</string>
 	<string name="SettingsProxy">Proxy</string>
 	<string name="SettingsProxyProxy">Use a proxy server</string>
 	<string name="SettingsProxySummary">Login through a proxy server</string>
@@ -104,6 +101,40 @@
 	<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>
+	<string name="contact_list_preferences">Buddy list</string>
+	<string name="contact_list_preferences_sum">A set of display options for your buddy list
+	</string>
+	<string name="CLP_hide_groups">Hide groups</string>	
+	<string name="CLP_hide_groups_sum">Check this option to hide groups</string>
+	<string name="CLP_hidden_contact">Hide buddies</string>
+	<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+	</string>
+	<string name="settings_account_username">Username</string>
+	<string name="login_username_info_default">beem@beem-project.com</string>
+	<string name="settings_account_password">Password</string>
+	<string name="settings_account_server">Server</string>
+	<string name="settings_account_port">Port</string>
+	<string name="settings_advanced_service_behaviour">Service behaviour</string>
+	<string name="settings_advanced_sum">A set of options for advanced users</string>
+	<string name="settings_xmpp_server">Address</string>
+	<string name="comments_xmpp_server">example.com</string>
+	<string name="settings_xmpp_port">Port</string>
+	<string name="settings_xmpp_use_tls">Require SSL/TLS</string>
+	<string name="settings_reco_delay">Reconnection delay</string>
+	<string name="comments_xmpp_port">Default: 5222</string>
+	<string name="settings_proxy_sum">Settings for proxy usage</string>
+	<string name="settings_proxy_use">Connect using a proxy</string>
+	<string name="settings_proxy_type_prompt">Choose a type of proxy</string>
+	<string name="settings_proxy_server">Server</string>
+	<string name="settings_proxy_port">Port</string>
+	<string name="comments_proxy_port">Default: 1080</string>
+	<string name="settings_proxy_username">Username</string>
+	<string name="settings_proxy_password">Password</string>
+	<string name="away_chk_title">away_chk_title</string>
+	<string name="away_chk_sum">away_chk_sum</string>
+	<string name="away_message_title">away_message_title</string>
+	<string name="away_message_sum">away_message_sum</string>
+	<string name="away_message_hint">away_message_hint</string>
 	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Subscription accepted</string>
@@ -190,42 +221,10 @@
 	<string name="settings_tab_label_proxy">Proxy</string>
 
 	<!-- EditSettings Activity General Preferences Tabs -->
-	<string name="contact_list_preferences">Buddy list</string>
-	<string name="contact_list_preferences_sum">A set of display options for your buddy list
-	</string>
-	
-	<string name="CLP_hide_groups">Hide groups</string>	
-	<string name="CLP_hide_groups_sum">Check this option to hide groups</string>
-	<string name="CLP_hidden_contact">Hide buddies</string>
-	<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
-	</string>
-
-	<!-- EditSettings Activity Account tab -->
-	<string name="settings_account_username">Username</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">Password</string>
-	<string name="settings_account_server">Server</string>
-	<string name="settings_account_port">Port</string>
 
-	<!-- EditSettings Activity Advanced Options tab -->
-	<string name="settings_advanced_service_behaviour">Service behaviour</string>
-	<string name="settings_advanced_sum">A set of options for advanced users</string>
-	<string name="settings_xmpp_server">Address</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">Port</string>
-	<string name="settings_xmpp_use_tls">Require SSL/TLS</string>
-	<string name="settings_reco_delay">Reconnection delay</string>
-	<string name="comments_xmpp_port">Default: 5222</string>
+	
 
-	<!-- EditSettings Activity Proxy tab -->
-	<string name="settings_proxy_sum">Settings for proxy usage</string>
-	<string name="settings_proxy_use">Connect using a proxy</string>
-	<string name="settings_proxy_type_prompt">Choose a type of proxy</string>
-	<string name="settings_proxy_server">Server</string>
-	<string name="settings_proxy_port">Port</string>
-	<string name="comments_proxy_port">Default: 1080</string>
-	<string name="settings_proxy_username">Username</string>
-	<string name="settings_proxy_password">Password</string>
+
 
 	<!-- Create an account Activity -->
 	<string name="create_account_instr_dialog_title">Create an account - Instructions</string>
--- a/src/com/beem/project/beem/BeemService.java	Mon Feb 15 23:37:25 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Wed Feb 17 02:29:11 2010 +0100
@@ -40,7 +40,7 @@
     Flavien Astraud, November 26, 2009
     Head of the EIP Laboratory.
 
-*/
+ */
 package com.beem.project.beem;
 
 import org.jivesoftware.smack.ConnectionConfiguration;
@@ -57,6 +57,7 @@
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.Service;
+import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
@@ -72,6 +73,7 @@
 import com.beem.project.beem.service.aidl.IXmppFacade;
 import com.beem.project.beem.utils.BeemBroadcastReceiver;
 import com.beem.project.beem.utils.BeemConnectivity;
+import com.beem.project.beem.utils.Status;
 
 /**
  * This class is for the Beem service. The connection to the xmpp server will be made asynchronously when the service
@@ -85,7 +87,7 @@
 
     private static final String TAG = "BeemService";
     private static final int DEFAULT_XMPP_PORT = 5222;
-    private static final String COMMAND_NAMESPACE = "http://jabber.org/protocol/commands";
+    //private static final String COMMAND_NAMESPACE = "http://jabber.org/protocol/commands";
 
     private NotificationManager mNotificationManager;
     private XmppConnectionAdapter mConnection;
@@ -100,7 +102,7 @@
     private boolean mUseProxy;
     private IXmppFacade.Stub mBind;
 
-    private BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
+    private BeemServiceBroadcastReceiver mReceiver = new BeemServiceBroadcastReceiver();
 
     /**
      * Constructor.
@@ -112,7 +114,6 @@
      * Initialise la configuration de la connexion.
      */
     private void initConnectionConfig() {
-	//java.security.Security.addProvider(new com.sun.security.sasl.Provider());
 	mUseProxy = mSettings.getBoolean("settings_key_proxy_use", false);
 	if (mUseProxy) {
 	    String stype = mSettings.getString("settings_key_proxy_type", "HTTP");
@@ -167,6 +168,9 @@
     public void onCreate() {
 	super.onCreate();
 	registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
+	registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+	registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+
 	mSettings = PreferenceManager.getDefaultSharedPreferences(this);
 	String tmpJid = mSettings.getString("settings_key_account_username", "");
 	mLogin = StringUtils.parseName(tmpJid);
@@ -364,5 +368,27 @@
 	    new AdHocCommandDataProvider.SessionExpiredError());
 	 */
     }
+
+    private class BeemServiceBroadcastReceiver extends BeemBroadcastReceiver {
+	
+	private String mOldStatus;
+	private int mOldMode;
+	
+	public BeemServiceBroadcastReceiver() {
+	}
+
+	@Override
+	public void onReceive(final Context context, final Intent intent) {
+	    super.onReceive(context, intent);
+	    String intentAction = intent.getAction();
+	    if (intentAction.equals(Intent.ACTION_SCREEN_OFF)) {
+		mOldMode = mConnection.getPreviousMode();
+		mOldStatus = mConnection.getPreviousStatus();
+		mConnection.changeStatus(Status.CONTACT_STATUS_AWAY, mSettings.getString("settings_away_message", "Away"));
+	    } else if (intentAction.equals(Intent.ACTION_SCREEN_ON)) {
+		mConnection.changeStatus(mOldMode, mOldStatus);
+	    }
+	}
+    }
 }
 
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Mon Feb 15 23:37:25 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Wed Feb 17 02:29:11 2010 +0100
@@ -97,12 +97,16 @@
     private String mErrorMsg;
     private RosterAdapter mRoster;
     private int mPreviousPriority;
+    private int mPreviousMode;
+    private String mPreviousStatus;
     private PrivacyListManagerAdapter mPrivacyListManager;
     private final BeemService mService;
     private final RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
     private final SubscribePacketListener mSubscribePacketListener = new SubscribePacketListener();
 
     private final ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
+    
+   
 
     /**
      * Constructor.
@@ -270,11 +274,16 @@
 	if (msg != null)
 	    m = msg;
 	else
-	    m = "";
+	    m = mPreviousStatus;
 	pres.setStatus(m);
+	mPreviousStatus = m;
 	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
-	if (mode != null)
+	if (mode != null) {
 	    pres.setMode(mode);
+	    mPreviousMode = status;
+	} else {
+	    pres.setMode(Status.getPresenceModeFromStatus(mPreviousMode));
+	}
 	int p = priority;
 	if (priority < SMACK_PRIORITY_MIN)
 	    p = SMACK_PRIORITY_MIN;
@@ -285,25 +294,21 @@
 	mAdaptee.sendPacket(pres);
 	updateNotification(m);
     }
-
+    
     /**
      * {@inheritDoc}
      */
     @Override
     public void changeStatus(int status, String msg) {
-	Presence pres = new Presence(Presence.Type.available);
-	String m;
-	if (msg != null)
-	    m = msg;
-	else
-	    m = "";
-	pres.setStatus(m);
-	Presence.Mode mode = Status.getPresenceModeFromStatus(status);
-	if (mode != null)
-	    pres.setMode(mode);
-	pres.setPriority(mPreviousPriority);
-	mAdaptee.sendPacket(pres);
-	updateNotification(msg);
+	changeStatusAndPriority(status, msg, mPreviousPriority);
+    }
+    
+    public String getPreviousStatus() {
+	return mPreviousStatus;
+    }
+    
+    public int getPreviousMode() {
+	return mPreviousMode;
     }
 
     /**
@@ -349,14 +354,6 @@
     }
 
     /**
-     * Get the context of the adapter.
-     * @return The context of the adapter
-     */
-    public BeemService getContext() {
-	return mService;
-    }
-
-    /**
      * {@inheritDoc}
      */
     @Override
--- a/src/com/beem/project/beem/utils/BeemBroadcastReceiver.java	Mon Feb 15 23:37:25 2010 +0100
+++ b/src/com/beem/project/beem/utils/BeemBroadcastReceiver.java	Wed Feb 17 02:29:11 2010 +0100
@@ -51,6 +51,7 @@
 import android.widget.Toast;
 
 import com.beem.project.beem.BeemService;
+import com.beem.project.beem.R;
 
 /**
  * Manage broadcast disconnect intent.
@@ -83,6 +84,7 @@
 	    }
 	} else if (intentAction.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
 	    if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
+		Toast.makeText(context, context.getString(R.string.BeemBroadcastReceiverDisconnect), Toast.LENGTH_SHORT).show();
 		context.stopService(new Intent(context, BeemService.class));
 	    }
 	}