merge
authornikita@nikita-laptop
Fri, 19 Feb 2010 00:31:43 +0100
changeset 681 9ca0e29b386f
parent 680 803a4f1dc590 (diff)
parent 677 b8d5e0378bcb (current diff)
child 682 9a7a89e5e966
merge
beem_key
--- a/.classpath	Thu Feb 18 20:02:01 2010 +0100
+++ b/.classpath	Fri Feb 19 00:31:43 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	Thu Feb 18 20:02:01 2010 +0100
+++ b/AndroidManifest.xml	Fri Feb 19 00:31:43 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	Thu Feb 18 20:02:01 2010 +0100
+++ b/res/layout/preferences.xml	Fri Feb 19 00:31:43 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	Thu Feb 18 20:02:01 2010 +0100
+++ b/res/values-fr/strings.xml	Fri Feb 19 00:31:43 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">Activer l'absence automatique</string>
+	<string name="away_chk_sum">Change votre status en Absent automatiquement quand l\'écran du telephone s\'éteind</string>
+	<string name="away_message_title">Message d'asbence</string>
+	<string name="away_message_sum">Votre Message d'absence</string>
+	<string name="away_message_hint">Je suis absent car mon ecran est éteind</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	Thu Feb 18 20:02:01 2010 +0100
+++ b/res/values/strings.xml	Fri Feb 19 00:31:43 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">Enable Auto-away</string>
+	<string name="away_chk_sum">Change status to Away when the screen is turned off</string>
+	<string name="away_message_title">Away message</string>
+	<string name="away_message_sum">The away message that will be displayed</string>
+	<string name="away_message_hint">I'm away, my cellphone screen is off</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	Thu Feb 18 20:02:01 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Fri Feb 19 00:31:43 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,8 @@
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
@@ -72,6 +74,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 +88,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;
@@ -101,6 +104,10 @@
     private IXmppFacade.Stub mBind;
 
     private BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
+    private BeemServiceBroadcastReceiver mOnOffReceiver = new BeemServiceBroadcastReceiver();
+    private BeemServicePreferenceListener mPreferenceListener = new BeemServicePreferenceListener();
+
+    private boolean mOnOffReceiverIsRegistered;
 
     /**
      * Constructor.
@@ -109,10 +116,9 @@
     }
 
     /**
-     * Initialise la configuration de la connexion.
+     * Initialize the connection.
      */
     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");
@@ -160,6 +166,8 @@
 	return true;
     }
 
+
+
     /**
      * {@inheritDoc}
      */
@@ -168,6 +176,12 @@
 	super.onCreate();
 	registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
 	mSettings = PreferenceManager.getDefaultSharedPreferences(this);
+	mSettings.registerOnSharedPreferenceChangeListener(mPreferenceListener);
+	if (mSettings.getBoolean("settings_away_chk", false)) {
+	    mOnOffReceiverIsRegistered = true;
+	    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+	    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+	}
 	String tmpJid = mSettings.getString("settings_key_account_username", "");
 	mLogin = StringUtils.parseName(tmpJid);
 	mPassword = mSettings.getString("settings_key_account_password", "");
@@ -206,6 +220,9 @@
 	Log.d("Service", "onDestroy");
 	mNotificationManager.cancelAll();
 	unregisterReceiver(mReceiver);
+	mSettings.unregisterOnSharedPreferenceChangeListener(mPreferenceListener);
+	if (mOnOffReceiverIsRegistered)
+	    unregisterReceiver(mOnOffReceiver);
 	if (mConnection.isAuthentificated() && BeemConnectivity.isConnected(this))
 	    mConnection.disconnect();
 	Log.d(TAG, "ONDESTROY");
@@ -243,7 +260,7 @@
     }
 
     /**
-     * Reset the status to online after a deconnection.
+     * Reset the status to online after a disconnect.
      */
     public void resetStatus() {
 	Editor edit = mSettings.edit();
@@ -364,5 +381,42 @@
 	    new AdHocCommandDataProvider.SessionExpiredError());
 	 */
     }
+
+    private class BeemServicePreferenceListener implements SharedPreferences.OnSharedPreferenceChangeListener {
+	@Override
+	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+	    if (key.equals("settings_away_chk")) {
+		if (sharedPreferences.getBoolean("settings_away_chk", false)) {
+		    mOnOffReceiverIsRegistered = true;
+		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
+		} else {
+		    mOnOffReceiverIsRegistered = false;
+		    unregisterReceiver(mOnOffReceiver);
+		}
+	    }	    
+	}	
+    }
+
+    private class BeemServiceBroadcastReceiver extends BroadcastReceiver {
+
+	private String mOldStatus;
+	private int mOldMode;
+
+	public BeemServiceBroadcastReceiver() {
+	}
+
+	@Override
+	public void onReceive(final Context context, final Intent 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	Thu Feb 18 20:02:01 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Fri Feb 19 00:31:43 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	Thu Feb 18 20:02:01 2010 +0100
+++ b/src/com/beem/project/beem/utils/BeemBroadcastReceiver.java	Fri Feb 19 00:31:43 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));
 	    }
 	}