--- a/.classpath Fri Feb 19 02:21:35 2010 +0100
+++ b/.classpath Fri Feb 19 02:26:21 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 Fri Feb 19 02:21:35 2010 +0100
+++ b/AndroidManifest.xml Fri Feb 19 02:26:21 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 Fri Feb 19 02:21:35 2010 +0100
+++ b/res/layout/preferences.xml Fri Feb 19 02:26:21 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 Fri Feb 19 02:21:35 2010 +0100
+++ b/res/values-fr/strings.xml Fri Feb 19 02:26:21 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 Fri Feb 19 02:21:35 2010 +0100
+++ b/res/values/strings.xml Fri Feb 19 02:26:21 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 Fri Feb 19 02:21:35 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java Fri Feb 19 02:26:21 2010 +0100
@@ -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", "");
@@ -180,7 +194,7 @@
if ("".equals(mHost))
mHost = StringUtils.parseServer(tmpJid);
String tmpPort = mSettings.getString("settings_key_xmpp_port", "5222");
- mPort = ("".equals(tmpPort)) ? DEFAULT_XMPP_PORT : Integer.parseInt(tmpPort) ;
+ mPort = ("".equals(tmpPort)) ? DEFAULT_XMPP_PORT : Integer.parseInt(tmpPort);
}
if ("gmail.com".equals(mService) || "googlemail.com".equals(mService)) {
mLogin = tmpJid;
@@ -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,64 @@
new AdHocCommandDataProvider.SessionExpiredError());
*/
}
+
+ /**
+ * Listen on preference changes.
+ */
+ private class BeemServicePreferenceListener implements SharedPreferences.OnSharedPreferenceChangeListener {
+
+ /**
+ * ctor.
+ */
+ public BeemServicePreferenceListener() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if ("settings_away_chk".equals(key)) {
+ 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);
+ }
+ }
+ }
+ }
+
+ /**
+ * Listen on some Intent broadcast, ScreenOn and ScreenOff.
+ */
+ private class BeemServiceBroadcastReceiver extends BroadcastReceiver {
+
+ private String mOldStatus;
+ private int mOldMode;
+
+ /**
+ * ctor.
+ */
+ public BeemServiceBroadcastReceiver() {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @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 Fri Feb 19 02:21:35 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java Fri Feb 19 02:26:21 2010 +0100
@@ -99,6 +99,8 @@
private String mErrorMsg;
private RosterAdapter mRoster;
private int mPreviousPriority;
+ private int mPreviousMode;
+ private String mPreviousStatus;
private PrivacyListManagerAdapter mPrivacyListManager;
private final BeemService mService;
private BeemApplication mApplication;
@@ -184,7 +186,7 @@
mService.getResources().getIdentifier(
e.getXMPPError().getCondition().replace("-", "_"), "string", "com.beem.project.beem"));
mErrorMsg = str;
- } catch(NullPointerException e2) {
+ } catch (NullPointerException e2) {
if (!"".equals(e.getMessage()))
mErrorMsg = e.getMessage();
else
@@ -277,11 +279,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;
@@ -298,19 +305,23 @@
*/
@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);
+ }
+
+ /**
+ * get the previous status.
+ * @return previous status.
+ */
+ public String getPreviousStatus() {
+ return mPreviousStatus;
+ }
+
+ /**
+ * get the previous mode.
+ * @return previous mode.
+ */
+ public int getPreviousMode() {
+ return mPreviousMode;
}
/**
@@ -356,14 +367,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 Fri Feb 19 02:21:35 2010 +0100
+++ b/src/com/beem/project/beem/utils/BeemBroadcastReceiver.java Fri Feb 19 02:26:21 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));
}
}