merge + new lcrypto
authorNikita Kozlov <nikita@beem-project.com>
Fri, 15 Apr 2011 03:01:09 +0200
changeset 895 b2e1b45382a4
parent 894 5315a5713dd5 (diff)
parent 819 3e4fb7a4c39f (current diff)
child 896 244d0cb7d8cb
merge + new lcrypto
.hgtags
AndroidManifest.xml
CREDITS
build.xml
res/layout/changestatus.xml
res/layout/chat.xml
res/layout/preferences.xml
res/values-de/strings.xml
res/values-fr/strings.xml
res/values-ru/strings.xml
res/values-zh-rCN/strings.xml
res/values-zh-rTW/strings.xml
res/values/arrays.xml
res/values/strings.xml
res/values/styles.xml
src/com/beem/project/beem/BeemApplication.java
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/service/BeemChatManager.java
src/com/beem/project/beem/service/ChatAdapter.java
src/com/beem/project/beem/service/Contact.java
src/com/beem/project/beem/service/XmppConnectionAdapter.java
src/com/beem/project/beem/service/XmppFacade.java
src/com/beem/project/beem/service/aidl/IXmppFacade.aidl
src/com/beem/project/beem/smack/caps/CapsManager.java
src/com/beem/project/beem/ui/ChangeStatus.java
src/com/beem/project/beem/ui/Chat.java
src/com/beem/project/beem/ui/ContactList.java
src/com/beem/project/beem/ui/LoginAnim.java
src/com/beem/project/beem/ui/Settings.java
src/com/beem/project/beem/ui/Subscription.java
src/net/java/otr4j/OtrKeyManagerImpl.java
src/net/java/otr4j/crypto/OtrCryptoEngineImpl.java
src/net/java/otr4j/io/OtrOutputStream.java
src/net/java/otr4j/io/SerializationUtils.java
tools/JavaHeaderCheck.regex
tools/LicenseHeader.txt
tools/checkstyle.xml
--- a/.hgtags	Tue Dec 28 16:33:33 2010 +0100
+++ b/.hgtags	Fri Apr 15 03:01:09 2011 +0200
@@ -6,3 +6,5 @@
 1b88edb34d96acb5795b8d28e58b974f1bf2c1d6 0.1.4_rc
 887b6a1fd9662312bf1ec271f9735369ead04cad 0.1.4
 cf5db8d24b2a28ca501cc3e076abc55b38b41d90 0.1.4
+7b54215139deae5ba9307b7a165f24d65f926938 0.1.5_rc1
+8d19f91dd64c7f29f137b3236fb38c2cbcf98a36 0.1.5
--- a/AndroidManifest.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/AndroidManifest.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-	package="com.beem.project.beem" android:versionCode="5"
-	android:versionName="0.1.4">
+	package="com.beem.project.beem" android:versionCode="7"
+	android:versionName="0.1.5">
 	<application android:label="@string/app_name"
 		android:icon="@drawable/beem_launcher_icon_silver" android:theme="@style/Theme.BEEM.Default"
-		android:debuggable="true" android:name=".BeemApplication">
+		android:name="BeemApplication">
 		<activity android:name=".ui.Login" android:label="@string/app_name"
 			android:launchMode="standard">
 			<intent-filter>
@@ -16,59 +16,22 @@
 		<activity android:name=".ui.wizard.AccountConfigure" android:label="Account wizard" />
 		<activity android:name=".ui.LoginAnim" android:label="@string/login_login_progress"
 			android:launchMode="singleTop" android:screenOrientation="portrait" />
-		<activity android:name=".ui.Settings" android:label="@string/edit_settings_name">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		<activity android:name=".ui.Settings" android:label="@string/edit_settings_name" />
 		<activity android:name=".ui.Chat" android:label="@string/chat_name"
-			android:launchMode="singleTop">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		    android:launchMode="singleTop" />
 		<activity android:name=".ui.ChangeStatus" android:label="@string/ChangeStatusActTitle"
-		    android:launchMode="singleTask"
-		    android:windowSoftInputMode="stateHidden" >
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.AddContact" android:label="@string/AddCActTitle">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.Subscription" android:label="@string/app_name">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		    android:launchMode="singleTop"
+		    android:windowSoftInputMode="stateHidden" />
+		<activity android:name=".ui.AddContact" android:label="@string/AddCActTitle" />
+		<activity android:name=".ui.Subscription" android:label="@string/app_name" />
 		<activity android:name=".ui.CreateAccount" android:label="@string/create_account_name" />
+
 		<activity android:name=".ui.ContactList" android:label="@string/contact_list_name"
-			android:launchMode="singleTask">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.GroupList" android:label="GroupList">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
-		<activity android:name=".ui.PrivacyList" android:label="@string/privacy_list_name">
-			<intent-filter android:label="Beem Connection">
-				<action
-					android:name="com.beem.project.beem.service.XmppConnectionAdapter.CONNECTION_CLOSED" />
-			</intent-filter>
-		</activity>
+		    android:launchMode="singleTask" />
+
+		<activity android:name=".ui.GroupList" android:label="GroupList" />
+		<activity android:name="ui.PrivacyList" android:label="@string/privacy_list_name" />
+
 		<!--
 			Could be interesting if we would launch beem at startup <receiver
 			android:name=".tool.BeemBroadcastReceiver" android:enabled="true">
@@ -76,23 +39,27 @@
 			android:name="android.intent.action.BOOT_COMPLETED" />
 			</intent-filter> </receiver>
 		-->
+		<provider android:name="providers.AvatarProvider"
+		    android:authorities="com.beem.project.beem.providers.avatarprovider"
+		    android:exported="false" />
+
 		<service android:name="BeemService" android:enabled="true"
 			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>
 	<permission android:permissionGroup="android.permission-group.NETWORK"
 		android:label="BeemService" android:description="@string/BeemServiceDescription"
-		android:name="com.beem.project.beem.BEEM_SERVICE"></permission>
-	<uses-permission android:name="android.permission.INTERNET"></uses-permission>
-	<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
-	<uses-permission android:name="com.beem.project.beem.BEEM_SERVICE"></uses-permission>
-	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
-	<uses-sdk android:minSdkVersion="3" />
+		android:name="com.beem.project.beem.BEEM_SERVICE"/>
+	<uses-permission android:name="android.permission.INTERNET"/>
+	<uses-permission android:name="android.permission.VIBRATE"/>
+	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+	<uses-permission android:name="com.beem.project.beem.BEEM_SERVICE"/>
+	<uses-feature name="android.hardware.touchscreen" required="false" />
+	<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="7" />
 	<supports-screens android:largeScreens="true"
 		android:normalScreens="true" android:smallScreens="true" android:anyDensity="true" />
 </manifest>
--- a/CREDITS	Tue Dec 28 16:33:33 2010 +0100
+++ b/CREDITS	Fri Apr 15 03:01:09 2011 +0200
@@ -16,6 +16,9 @@
 Tranlators :
 GoApk http://goapk.com for chinese translations
 Daniel Hofmann for german translations
+Andrea Selva for italian translations
+Erik Lindström for swedish translations
+
 
 Thanks to all !
 
--- a/build.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/build.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -73,6 +73,8 @@
 	<delete verbose="false" dir="gen"/>
     </target>
 
+    <target name="all" depends="clean,debug,javadoc"/>
+
     <target name="javadoc">
 	<javadoc author="true" destdir="${javadoc.output}" doctitle="Beem javadoc" source="1.6" sourcepath="${source.dir}" use="true" version="false" bootclasspathref="android.target.classpath">
 	    <classpath>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/drawable/avatar_status.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Layer Level list drawable for Avatar and status icon
+    See src/com/beem/project/beem/utils/Status.java
+    for level values to change the status.
+    The status icon must be resized using method
+    LayerDrawable.setLayerInset();
+    The drawable with id @id/avatar must be replace by the real
+    avatar using the method LayerDrawable.setDrawableByLayerId()
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/avatar">
+	<shape/>
+    </item>
+    <item android:drawable="@drawable/status_icon" />
+</layer-list>
Binary file res/drawable/background.png has changed
--- a/res/layout/changestatus.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/layout/changestatus.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -5,8 +5,21 @@
 	<RelativeLayout android:orientation="vertical"
 		android:layout_width="fill_parent" android:layout_height="fill_parent"
 		android:padding="10dip">
+		<LinearLayout android:id="@+id/avatar_panel"
+		    android:orientation="vertical"
+		    android:gravity="center"
+		    android:layout_alignParentTop="true"
+		    android:layout_width="fill_parent" android:layout_height="fill_parent" >
+		    <TextView android:text="@string/my_avatar" style="@style/Label"
+			android:layout_width="wrap_content" android:layout_height="wrap_content" />
+
+		    <ImageButton android:id="@+id/avatarButton"
+			android:layout_width="120dip" android:layout_height="120dip"
+			android:scaleType="fitCenter" />
+		</LinearLayout>
 		<TextView android:id="@+id/ChangeStatusTypeLabel"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
+			android:layout_below="@id/avatar_panel"
 			android:text="@string/ChangeStatusType" style="@style/Label" />
 		<Spinner android:id="@+id/ChangeStatusSpinner"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
--- a/res/layout/chat.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/layout/chat.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -7,9 +7,10 @@
 		android:orientation="horizontal" android:gravity="center_vertical"
 		android:background="#222222" android:padding="4px">
 		<ImageView android:id="@+id/chat_contact_status_icon"
-			android:src="@drawable/status_icon"
-			android:adjustViewBounds="true" android:layout_width="wrap_content"
-			android:layout_height="wrap_content" android:gravity="center_vertical" />
+			android:src="@drawable/avatar_status"
+			android:layout_width="48dip"
+			android:layout_height="48dip"
+			/>
 		<LinearLayout android:orientation="vertical"
 			android:layout_width="fill_parent" android:layout_height="wrap_content"
 			android:paddingLeft="15sp">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/layout/chat_compact.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	android:layout_width="fill_parent" android:layout_height="fill_parent"
+	android:orientation="vertical">
+	<View android:layout_width="fill_parent" android:layout_height="2dp"
+		android:fadingEdge="horizontal" android:background="#222222" />
+	<ListView android:id="@+id/chat_messages"
+		android:layout_width="fill_parent" android:layout_height="0dip"
+		android:layout_weight="1" android:transcriptMode="normal"
+		android:stackFromBottom="true"
+		android:fadingEdge="none" android:padding="4px"
+		android:fastScrollEnabled="true" android:smoothScrollbar="false"
+		android:focusable="true"/>
+	<LinearLayout android:layout_width="fill_parent"
+		android:layout_height="wrap_content" android:orientation="horizontal"
+		android:background="#222222" android:padding="8px">
+		<EditText android:id="@+id/chat_input" android:layout_width="0dip"
+			android:layout_height="fill_parent" android:layout_weight="1"
+			android:maxLines="5"
+			android:inputType="textShortMessage|textAutoCorrect|textMultiLine"
+			android:imeOptions="actionSend" android:cursorVisible="true"
+			android:hint="@string/chat_input_default_value" />
+		<Button android:id="@+id/chat_send_message"
+			android:layout_width="wrap_content" android:layout_height="fill_parent"
+			android:text="@string/chat_send_message" />
+	</LinearLayout>
+</LinearLayout>
--- a/res/layout/preferences.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/layout/preferences.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -24,14 +24,30 @@
 				android:title="@string/away_message_title" android:key="settings_away_message"
 				android:hint="@string/away_message_hint" />
 		</PreferenceScreen>
+		<PreferenceScreen android:key="chat"
+			android:title="@string/chat_preferences" android:summary="@string/chat_preferences_sum">
+			<PreferenceCategory android:title="@string/history_preferences">
+				<CheckBoxPreference android:id="@+id/chat_history"
+					android:title="@string/history" android:summary="@string/history_sum"
+					 android:defaultValue="false" android:key="settings_key_history" />
+				<EditTextPreference android:dependency="settings_key_history"
+					android:singleLine="true" android:title="@string/chat_history_path"
+					android:summary="@string/chat_history_path_sum" android:key="settings_chat_history_path"
+					android:hint="/Android/data/com.beem.project.beem/chat/" />
+			</PreferenceCategory>
+			<PreferenceCategory android:title="@string/chat_layout_option">
+				<CheckBoxPreference android:title="@string/settings_chat_compact"
+					android:defaultValue="false" android:summary="@string/settings_chat_compact_sum"
+					android:key="settings_chat_compact_key" />
+			</PreferenceCategory>
+			</PreferenceScreen>
 		<PreferenceScreen android:title="@string/notification_preferences">
 			<CheckBoxPreference android:title="@string/notification_enable_vibrate_title"
 				android:defaultValue="false" android:summary="@string/notification_enable_vibrate_sum"
 				android:key="notification_vibrate" />
-			<RingtonePreference
-				android:title="@string/notification_snd_title" android:key="notification_sound"
-				android:summary="@string/notification_snd_sum" android:ringtoneType="notification"
-				android:showDefault="true" />
+			<RingtonePreference android:title="@string/notification_snd_title"
+				android:key="notification_sound" android:summary="@string/notification_snd_sum"
+				android:ringtoneType="notification" android:showDefault="true" />
 		</PreferenceScreen>
 	</PreferenceCategory>
 	<PreferenceCategory android:title="@string/user_preferences">
@@ -70,7 +86,8 @@
 				<EditTextPreference android:singleLine="true"
 					android:dependency="proxy_use" android:name="port"
 					android:summary="@string/SettingsProxyPort" android:title="@string/settings_proxy_port"
-					android:key="proxy_port" android:numeric="signed" android:hint="@string/comments_proxy_port" />
+					android:key="proxy_port" android:numeric="signed"
+					android:hint="@string/comments_proxy_port" />
 			</PreferenceCategory>
 			<PreferenceCategory android:title="@string/proxy_user_settings">
 				<EditTextPreference android:singleLine="true"
@@ -83,11 +100,14 @@
 					android:title="@string/settings_proxy_password" android:key="proxy_password" />
 			</PreferenceCategory>
 		</PreferenceScreen>
+
 		<PreferenceScreen android:key="advanced"
 			android:title="@string/SettingsAdvanced" android:summary="@string/settings_advanced_sum">
 			<PreferenceCategory android:title="@string/settings_advanced_service_behaviour">
 				<CheckBoxPreference android:title="@string/settings_xmpp_use_tls"
 					android:defaultValue="false" android:key="settings_key_xmpp_tls_use" />
+				<CheckBoxPreference android:title="@string/settings_smack_debug"
+					android:defaultValue="false" android:key="smack_debug" />
 				<EditTextPreference android:singleLine="true"
 					android:title="@string/settings_reco_delay" android:name="Reconnect delay"
 					android:summary="@string/SettingsAdvancedRecoDelay" android:key="settings_key_reco_delay"
@@ -105,6 +125,9 @@
 				android:summary="@string/SettingsAdvancedPortOpt" android:title="@string/settings_xmpp_port"
 				android:defaultValue="5222" android:numeric="signed" android:key="settings_key_xmpp_port"
 				android:hint="@string/comments_xmpp_port" />
+			<CheckBoxPreference android:title="@string/settings_full_jid_login"
+				android:defaultValue="false" android:summary="@string/settings_full_jid_login_sum"
+				android:key="full_jid_login" />
 		</PreferenceScreen>
 	</PreferenceCategory>
 </PreferenceScreen>
--- a/res/values-de/strings.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values-de/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -1,298 +1,317 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-	<!-- Generic terms -->
-	<string name="app_name">Beem</string>
-	<string name="OkButton">Ok</string>
-	<string name="ClearButton">Löschen</string>
-	<string name="CancelButton">Abbrechen</string>
-	<string name="AcceptButton">Authorisieren</string>
-	<string name="RefuseButton">Ablehnen</string>
-	<string name="Password">Passwort</string>
-
-	<!--  Beem class -->
-	<string name="BeemJabberID">Jabber ID</string>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">Ok</string>
+<string name="ClearButton">Löschen</string>
+<string name="CancelButton">Abbrechen</string>
+<string name="AcceptButton">Authorisieren</string>
+<string name="RefuseButton">Ablehnen</string>
+<string name="JabberID">Jabber ID</string>
+<string name="Password">Passwort</string>
+<string name="Continue">Fortfahren</string>
 
-	<!--  BeemApplication class -->
-	<string name="BeemApplicationConnect">Verbinden...</string>
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">Manuelle Konfiguration</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber ID</string>
 
-	<!--  BeemService class -->
-	<string name="BeemServiceDescription">Benutze Beem Service</string>
-	<string name="BeemServiceCreated">Beem Service erstellt</string>
-	<string name="BeemServiceDestroyed">Beem Service verworfen</string>
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">Verbinden...</string>
 
-	<!--  ContactDialog class -->
-	<string name="CDChat">Chatten</string>
-	<string name="CDCall">Anrufen</string>
-	<string name="CDInfos">Kontakt bearbeiten</string>
+<!--  BeemService class -->
+<string name="BeemServiceDescription">Benutze Beem Service</string>
+<string name="BeemServiceCreated">Beem Service erstellt</string>
+<string name="BeemServiceDestroyed">Beem Service verworfen</string>
 
-	<!-- AddContact class -->
-	<string name="AddCActTitle">Beem - Kontakt hinzufügen</string>
+<!--  ContactDialog class -->
+<string name="CDChat">Chatten</string>
+<string name="CDCall">Anrufen</string>
+<string name="CDInfos">Kontakt bearbeiten</string>
 
-	<string name="AddCLogin">Benutzername</string>
-	<string name="AddCAlias">Alias</string>
-	<string name="AddCGroup">Gruppe</string>
-	<string name="AddCOkButton">Hinzufügen</string>
-	<string name="AddCContactAdded">Kontakt hinzugefügt</string>
-	<string name="AddCContactAddedError">Fehler, Benutzer nicht hinzugefügt</string>
-	<string name="AddCContactAddedLoginError">Fehler bei der Anmeldung</string>
-	<string name="AddCBadForm">Mangelhafte Form</string>
-	<string name="AddCContactAlready">Kontakt existiert bereits</string>
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - Kontakt hinzufügen</string>
 
-	<!--  ChangeStatus class -->
-	<string name="ChangeStatusActTitle">Beem - Meinen Status ändern</string>
-	<string name="ChangeStatusType">Mein Status</string>
-	<string name="ChangeStatusMessage">Meine persönliche Nachricht</string>
-	<string name="OpenContactList">Kontaktliste öffnen</string>
+<string name="AddCLogin">Benutzername</string>
+<string name="AddCAlias">Alias</string>
+<string name="AddCGroup">Gruppe</string>
+<string name="AddCOkButton">Hinzufügen</string>
+<string name="AddCContactAdded">Kontakt hinzugefügt</string>
+<string name="AddCContactAddedError">Fehler, Benutzer nicht hinzugefügt</string>
+<string name="AddCContactAddedLoginError">Fehler bei der Anmeldung</string>
+<string name="AddCBadForm">Mangelhafte Form</string>
+<string name="AddCContactAlready">Kontakt existiert bereits</string>
 
-	<string name="MenuAddContact">Kontakt hinzufügen</string>
-	<string name="MenuAccountAbout">Beem Project</string>
-	<string name="MenuAccountCreate">Konto erstellen</string>
-	<string name="MenuConnection">Konto bearbeiten</string>
-	<string name="ChangeStatusOk">Aktualisiere Status</string>
-	<string name="ChangeStatusNoChange">Nichts zu ändern</string>
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - Meinen Status ändern</string>
+<string name="ChangeStatusType">Mein Status</string>
+<string name="ChangeStatusMessage">Meine persönliche Nachricht</string>
+<string name="OpenContactList">Kontaktliste öffnen</string>
+
+<string name="MenuAddContact">Kontakt hinzufügen</string>
+<string name="MenuAccountAbout">Beem Project</string>
+<string name="MenuAccountCreate">Konto erstellen</string>
+<string name="MenuConnection">Konto bearbeiten</string>
+<string name="ChangeStatusOk">Aktualisiere Status</string>
+<string name="ChangeStatusNoChange">Nichts zu ändern</string>
 
-	<!-- Settings class -->
-	<string name="SettingsText">Benutzername bearbeiten</string>
-	<string name="SettingsPassword">Passwort bearbeiten</string>
-	<string name="SettingsProxy">Proxy</string>
-	<string name="SettingsProxyProxy">Benutze einen Proxyserver</string>
-	<string name="SettingsProxySummary">Anmeldung über einen Proxyserver</string>
-	<string name="SettingsProxyType">Protokoll</string>
-	<string name="SettingsProxyTypeSummary">Art des Proxyservers wählen</string>
-	<string name="SettingsProxyServer">Adresse des Proxyservers bearbeiten</string>
-	<string name="SettingsProxyPort">Port des Proxyservers bearbeiten</string>
-	<string name="SettingsProxyUser">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
-	<string name="SettingsProxyPassword">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
-	<string name="SettingsAdvanced">Erweitert</string>
-	<string name="SettingsAdvancedOptions">Spezifische Server Optionen</string>
-	<string name="SettingsAdvancedRecoDelay">Bearbeite die Verzögerung bei der Wiederverbindung</string>
-	<string name="SettingsAdvancedSpecOpt">Aktivieren, um einen spezifischen Server für die Verbindung zu benutzen</string>
-	<string name="SettingsAdvancedAddOpt">Adresse des Servers bearbeiten</string>
-	<string name="SettingsAdvancedPortOpt">Port des Servers bearbeiten</string>
-	<string name="SettingsResourceTitle">Ressource</string>
-	<string name="SettingsPriorityTitle">Priorität</string>
-	<string name="SettingsResourceSummary">XMPP Ressource des Clients einstellen</string>
-	<string name="SettingsPrioritySummary">Priorität des Clients einstellen</string>
-	<string name="contact_list_preferences">Kontaktliste</string>
-	<string name="contact_list_preferences_sum">Anzeigeoptionen der Kontaktliste</string>
-	<string name="CLP_hide_groups">Gruppen verstecken</string>
-	<string name="CLP_hide_groups_sum">Aktivieren, um Gruppen zu verstecken</string>
-	<string name="CLP_hidden_contact">Kontakte verstecken</string>
-	<string name="CLP_hidden_contact_sum">Aktivieren, um Kontakte zu verstecken, die offline sind</string>
-	<string name="settings_account_username">Benutzername</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">Passwort</string>
-	<string name="settings_account_server">Server</string>
-	<string name="settings_account_port">Port</string>
-	<string name="settings_advanced_service_behaviour">Verhalten des Dienstes</string>
-	<string name="settings_advanced_sum">Erweiterte Einstellungen für fortgeschrittene Benutzer</string>
-	<string name="settings_xmpp_server">Adresse</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">Port</string>
-	<string name="settings_xmpp_use_tls">Verwende SSL/TLS</string>
-	<string name="settings_reco_delay">Verzögerung bei der Wiederverbindung</string>
-	<string name="comments_xmpp_port">Standard: 5222</string>
-	<string name="settings_proxy_sum">Einstellungen für das Benutzen eines Proxyservers</string>
-	<string name="settings_proxy_use">Benutze einen Proxyserver</string>
-	<string name="settings_proxy_type_prompt">Art des Proxyservers wählen</string>
-	<string name="settings_proxy_server">Server</string>
-	<string name="settings_proxy_port">Port</string>
-	<string name="comments_proxy_port">Standard: 1080</string>
-	<string name="settings_proxy_username">Benutzername</string>
-	<string name="settings_proxy_password">Passwort</string>
-	<string name="away_chk_title">Aktiviere automatische Abwesenheit</string>
-	<string name="away_chk_sum">Status auf Abwesend wenn Bildschirm ausgeschaltet ist</string>
-	<string name="away_message_title">Abwesenheitsnachricht</string>
-	<string name="away_message_sum">Angezeigte Abwesenheitsnachricht</string>
-	<string name="away_message_hint">Ich bin abwesend, mein Telefonbildschirm ist ausgeschaltet</string>
-	<string name="notification_preferences">Benachrichtigungseinstellungen</string>
-	<string name="notification_enable_vibrate_title">Vibrieren</string>
-	<string name="notification_enable_vibrate_sum">Vibriere bei eingehenden Nachrichten</string>
-	<string name="notification_snd_title">Nachrichtensignalton</string>
-	<string name="notification_snd_sum">Lege den Signalton für eingehende Nachrichten fest</string>
-
+<!-- Settings class -->
+<string name="SettingsText">Benutzername bearbeiten</string>
+<string name="SettingsPassword">Passwort bearbeiten</string>
+<string name="SettingsProxy">Proxy</string>
+<string name="SettingsProxyProxy">Benutze einen Proxyserver</string>
+<string name="SettingsProxySummary">Anmeldung über einen Proxyserver</string>
+<string name="SettingsProxyType">Protokoll</string>
+<string name="SettingsProxyTypeSummary">Art des Proxyservers wählen</string>
+<string name="SettingsProxyServer">Adresse des Proxyservers bearbeiten</string>
+<string name="SettingsProxyPort">Port des Proxyservers bearbeiten</string>
+<string name="SettingsProxyUser">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
+<string name="SettingsProxyPassword">Optional, erlaubt das Authentifizieren mit dem Proxyserver</string>
+<string name="SettingsAdvanced">Erweitert</string>
+<string name="SettingsAdvancedOptions">Spezifische Server Optionen</string>
+<string name="SettingsAdvancedRecoDelay">Bearbeite die Verzögerung bei der Wiederverbindung</string>
+<string name="SettingsAdvancedSpecOpt">Aktivieren, um einen spezifischen Server für die Verbindung zu benutzen</string>
+<string name="SettingsAdvancedAddOpt">Adresse des Servers bearbeiten</string>
+<string name="SettingsAdvancedPortOpt">Port des Servers bearbeiten</string>
+<string name="SettingsResourceTitle">Ressource</string>
+<string name="SettingsPriorityTitle">Priorität</string>
+<string name="SettingsResourceSummary">XMPP Ressource des Clients einstellen</string>
+<string name="SettingsPrioritySummary">Priorität des Clients einstellen</string>
+<string name="contact_list_preferences">Kontaktliste</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">Gruppen ausblenden</string>
+<string name="CLP_hide_groups_sum">Aktivieren, um Gruppen auszublenden</string>
+<string name="CLP_hidden_contact">Kontakte ausblenden</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">Benutzername (JID)</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">Passwort</string>
+<string name="settings_account_server">Server</string>
+<string name="settings_account_port">Port</string>
+<string name="settings_advanced_service_behaviour">Verhalten des Dienstes</string>
+<string name="settings_advanced_sum">Erweiterte Einstellungen für fortgeschrittene Benutzer</string>
+<string name="settings_xmpp_server">Adresse</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">Port</string>
+<string name="settings_xmpp_use_tls">Verwende SSL/TLS</string>
+<string name="settings_reco_delay">Verzögerung bei der Wiederverbindung</string>
+<string name="comments_xmpp_port">Standard: 5222</string>
+<string name="settings_proxy_sum">Einstellungen für das Benutzen eines Proxyservers</string>
+<string name="settings_proxy_use">Benutze einen Proxyserver</string>
+<string name="settings_proxy_type_prompt">Art des Proxyservers wählen</string>
+<string name="settings_proxy_server">Server</string>
+<string name="settings_proxy_port">Port</string>
+<string name="comments_proxy_port">Standard: 1080</string>
+<string name="settings_proxy_username">Benutzername</string>
+<string name="settings_proxy_password">Passwort</string>
+<string name="away_chk_title">Aktiviere automatische Abwesenheit</string>
+<string name="away_chk_sum">Status auf Abwesend wenn Bildschirm aus</string>
+<string name="away_message_title">Abwesenheitsnachricht</string>
+<string name="away_message_sum">Angezeigte Abwesenheitsnachricht</string>
+<string name="away_message_hint">Ich bin abwesend, mein Telefonbildschirm ist aus</string>
+<string name="notification_preferences">Benachrichtigungseinstellungen</string>
+<string name="notification_enable_vibrate_title">Aktiviere Vibration</string>
+<string name="notification_enable_vibrate_sum">Aktiviere Vibration für eingehende Nachrichten</string>
+<string name="notification_snd_title">Nachrichtensignalton</string>
+<string name="notification_snd_sum">Lege den Signalton für eingehende Nachrichten fest</string>
+<string name="settings_chat_compact">Kompakter Chat</string>
+<string name="settings_chat_compact_sum">Benutze kompakte Chatfenster</string>
+<string name="history">Chronik</string>
+<string name="history_mount">Die Speicherkarte muss eingehängt und beschreibbar sein, um die Chronik zu aktivieren</string>
+<string name="history_on_off">Aktiviere Nachrichtenchronik</string>
+<string name="settings_smack_debug">Aktiviere XMPP Debug Modus</string>
+<string name="settings_full_jid_login">Benutze meine vollständige JID als Benutzername</string>
+<string name="settings_full_jid_login_sum">Wird von einigen Servern, z.b. Google Talk, vorausgesetzt</string>
 
-	<!-- Subscription class -->
-	<string name="SubscriptAccept">Zustimmung angenommen</string>
-	<string name="SubscriptError">Zustimmungsfehler</string>
-	<string name="SubscriptRefused">Zustimmung abgelehnt</string>
-	<string name="SubscriptText">%s will dich zu seiner/ihrer Kontaktliste hinzufügen. Willst du ihn/sie authorisieren ?</string>
-	<string name="SubscriptTitle">Kontakt authorisieren ?</string>
+<!-- Subscription class -->
+<string name="SubscriptAccept">Zustimmung angenommen</string>
+<string name="SubscriptError">Zustimmungsfehler</string>
+<string name="SubscriptRefused">Zustimmung abgelehnt</string>
+<string name="SubscriptText">%s will dich zu seiner/ihrer Kontaktliste hinzufügen. Willst du ihn/sie authorisieren?</string>
+<string name="SubscriptTitle">Kontakt authorisieren?</string>
 
-	<!--  BeemChatManager -->
-	<string name="BeemChatManagerNewMessage">Du hast eine neue Nachricht</string>
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">Du hast eine neue Nachricht</string>
 
-	<!--  BeemBroadcastReceiver class -->
-	<string name="BeemBroadcastReceiverDisconnect">BEEM: Die Verbindung wurde getrennt</string>
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM: Die Verbindung wurde getrennt</string>
 
-	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s hat dich gerade zu seiner/ihrer Kontaktliste hinzugefügt.</string>
-	<string name="AcceptContactRequestFrom">Authorisiere %s dich zu kontaktieren.</string>
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s hat dich gerade zu seiner/ihrer Kontaktliste hinzugefügt.</string>
+<string name="AcceptContactRequestFrom">Authorisiere %s dich zu kontaktieren.</string>
 
-	<!-- Activities -->
-	<string name="login_tag">Beem - Anmeldung</string>
-	<string name="edit_settings_name">Beem - Einstellungen</string>
-	<string name="edit_settings_tag">Beem - Einstellungen bearbeiten</string>
-	<string name="create_account_name">Beem - Konto erstellen</string>
-	<string name="create_account_tag">Beem - Konto erstellen</string>
-	<string name="contact_list_name">Beem - Kontakte</string>
-	<string name="contact_list_tag">Beem - Kontaktliste</string>
-	<string name="user_info_name">Beem - Benutzerinformation</string>
+<!-- Activities -->
+<string name="login_tag">Beem - Anmeldung</string>
+<string name="edit_settings_name">Beem - Einstellungen</string>
+<string name="edit_settings_tag">Beem - Einstellungen bearbeiten</string>
+<string name="create_account_name">Beem - Konto erstellen</string>
+<string name="create_account_tag">Beem - Konto erstellen</string>
+<string name="contact_list_name">Beem - Kontakte</string>
+<string name="contact_list_tag">Beem - Kontaktliste</string>
+<string name="user_info_name">Beem - Benutzerinformation</string>
+
+<!-- Buttons -->
+<string name="button_create_account">Dieses Konto erstellen</string>
+<string name="button_create_login_account">Dieses Konto erstellen und benutzen</string>
 
-	<!-- Buttons -->
-	<string name="button_create_account">Dieses Konto erstellen</string>
-	<string name="button_create_login_account">Dieses Konto erstellen und benutzen</string>
+<!-- LogAs Activity -->
+<string name="login_username">Benutzername</string>
+<string name="login_password">Passwort</string>
+<string name="login_error_dialog_title">Anmeldung - Fehler</string>
+<string name="login_close_dialog_button">Schließen</string>
+<string name="login_menu_create_account">Konto erstellen</string>
+<string name="login_menu_settings">Einstellungen</string>
+<string name="login_menu_about">Über</string>
+<string name="login_about_title">Beem %s - Über</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">Schließen</string>
+<string name="login_settings_button">Einstellungen</string>
+<string name="login_login_button">Anmelden</string>
+<string name="login_login_progress">Verbinden. Bitte warten...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">Anmelden</string>
+<string name="login_no_connectivity">Keine Internetverbindung gefunden</string>
+<string name="login_start_msg">Konfiguration der Einstellungen im Menü</string>
 
-	<!-- LogAs Activity -->
-	<string name="login_username">Benutzername</string>
-	<string name="login_password">Passwort</string>
-	<string name="login_error_dialog_title">Anmeldung - Fehler</string>
-	<string name="login_close_dialog_button">Schließen</string>
-	<string name="login_menu_create_account">Konto erstellen</string>
-	<string name="login_menu_settings">Einstellungen</string>
-	<string name="login_menu_about">Über</string>
-	<string name="login_about_title">Beem %s - Über</string>
-	<string name="login_about_msg">Beem ist ein EPITECH Innovative Project. Besuche uns auf	http://www.beem-project.com !</string>
-	<string name="login_about_button">Schließen</string>
-	<string name="login_settings_button">Einstellungen</string>
-	<string name="login_login_button">Anmelden</string>
-	<string name="login_login_progress">Verbinden. Bitte warten...</string>
-	<string name="login_error_msg">Leider trat ein Fehler auf.\n\nFehler Detail:\n%s</string>
-	<string name="login_menu_login">Anmelden</string>
-	<string name="login_no_connectivity">Keine Internetverbindung gefunden</string>
-	<string name="login_start_msg">Konfiguration der Einstellungen im Menü</string>
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">Verbinden...</string>
+<string name="loganim_authenticating">Authentifizieren...</string>
+<string name="loganim_login_success">Erfolgreich angemeldet</string>
+<string name="loganim_login_failed">Anmeldung gescheitert</string>
 
-	<!-- LoginAnim activity -->
-	<string name="loganim_connecting">Verbinden ...</string>
-	<string name="loganim_authenticating">Authentifizieren ...</string>
-	<string name="loganim_login_success">Erfolgreich angemeldet</string>
-	<string name="loganim_login_failed">Anmeldung gescheitert</string>
-
-	<!-- EditSettings Activity -->
-	<string name="settings_menu_create_account">Konto erstellen</string>
-	<string name="settings_menu_privacy_lists">Meine Privatsphärenliste verwalten</string>
-	<string name="settings_saved_ok">Die Einstellungen wurden erfolgreich gespeichert.</string>
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">Konto erstellen</string>
+<string name="settings_menu_privacy_lists">Meine Privatsphärenliste verwalten</string>
+<string name="settings_saved_ok">Die Einstellungen wurden erfolgreich gespeichert.</string>
 
 
 
-	<!-- EditSettings Activity Categories -->
-	<string name="general_preferences">Allgemeine Einstellungen</string>
-	<string name="user_preferences">Benutzereinstellungen (notwendig)</string>
-	<string name="user_preferences_advanced">Zusätzliche Benutzereinstellungen (optional)</string>
-	<string name="network_preferences">Netzwerk Einstellungen</string>
-	<string name="proxy_proxy_settings">Proxy Einstellungen</string>
-	<string name="proxy_user_settings">Proxy Einstellungen</string>
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">Allgemeine Einstellungen</string>
+<string name="user_preferences">Benutzereinstellungen (notwendig)</string>
+<string name="user_preferences_advanced">Zusätzliche Benutzereinstellungen (optional)</string>
+<string name="network_preferences">Netzwerk Einstellungen</string>
+<string name="proxy_proxy_settings">Proxy Einstellungen</string>
+<string name="proxy_user_settings">Proxy Einstellungen</string>
 
-	<!-- EditSettings Activity Tabs -->
-	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
-	<string name="settings_tab_label_account">Konto</string>
-	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
-	<string name="settings_tab_label_xmpp">XMPP</string>
-	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
-	<string name="settings_tab_label_proxy">Proxy</string>
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+<string name="settings_tab_label_account">Konto</string>
+<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+<string name="settings_tab_label_proxy">Proxy</string>
 
 
-	<!-- wizard activities -->
-	<string name="account_wizard_text1"><b>Willkommen bei BEEM.</b>\n\nDu hast noch kein XMPPP (Jabber) Konto konfiguriert.\nWähle eine der folgenden Optionen :</string>
-	<string name="account_wizard_configure_text"><b>Bitte gib die Daten deines bestehenden Kontos ein</b></string>
-	<string name="account_wizard_configure_account">Ich habe bereits ein Konto, das ich benutzen möchte</string>
-	<string name="account_wizard_create_account">Ich möchte ein neues Konto registrieren</string>
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>Willkommen bei BEEM.</b>\n\nDu hast noch kein XMPP (Jabber) Konto konfiguriert. Wähle eine der folgenden Optionen:</string>
+<string name="account_wizard_configure_text"><b>Bitte trage die Zugangsdaten für dein vorhandenes Konto ein</b></string>
+<string name="account_wizard_configure_account">Ich habe bereits ein Konto, das ich benutzen will</string>
+<string name="account_wizard_create_account">Ich möchte ein neues Konto registrieren</string>
 
-	<!-- Create an account Activity -->
-	<string name="create_account_instr_dialog_title">Konto erstellen - Anweisungen</string>
-	<string name="create_account_err_dialog_title">Konto erstellen - Fehler</string>
-	<string name="create_account_err_dialog_settings_button">Einstellungen ändern</string>
-	<string name="create_account_close_dialog_button">Schließen</string>
-	<string name="create_account_successfull_after">Das Konto %s wurde erfolgreich erstellt</string>
-	<string name="create_account_err_username">Mangelhafte Jabber ID</string>
-	<string name="create_account_err_passwords">Passwörter stimmen nicht überein.</string>
-	<string name="create_account_username">Benutzername</string>
-	<string name="create_account_password">Passwort</string>
-	<string name="create_account_confirm_password">Passwort bestätigen</string>
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">Konto erstellen - Anweisungen</string>
+<string name="create_account_err_dialog_title">Konto erstellen - Fehler</string>
+<string name="create_account_err_dialog_settings_button">Einstellungen ändern</string>
+<string name="create_account_close_dialog_button">Schließen</string>
+<string name="create_account_successfull_after">Das Konto %s wurde erfolgreich erstellt</string>
+<string name="create_account_err_username">Mangelhafte Jabber ID</string>
+<string name="create_account_err_passwords">Passwörter stimmen nicht überein.</string>
+<string name="create_account_username">Benutzername</string>
+<string name="create_account_password">Passwort</string>
+<string name="create_account_confirm_password">Passwort bestätigen</string>
 
-	<!-- ContactList Activity  -->
-	<string name="contact_list_menu_add_contact">Kontakt hinzufügen</string>
-	<string name="contact_list_menu_status">Status ändern</string>
-	<string name="contact_list_menu_settings">Einstellungen</string>
-	<string name="contact_list_menu_disconnect">Verbindung trennen</string>
-	<string name="contact_list_all_contact">Alle Kontakte</string>
-	<string name="contact_list_no_group">Keine Gruppe</string>
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">Kontakt hinzufügen</string>
+<string name="contact_list_menu_status">Status ändern</string>
+<string name="contact_list_menu_settings">Einstellungen</string>
+<string name="contact_list_menu_disconnect">Verbindung trennen</string>
+<string name="contact_list_all_contact">Alle Kontakte</string>
+<string name="contact_list_no_group">Keine Gruppe</string>
 
-	<!-- UserInfo dialog -->
-	<string name="userinfo_label_alias">Alias</string>
-	<string name="userinfo_label_chg_group">Gruppen verwalten</string>
-	<string name="userinfo_label_re_subscription">Einladung erneut senden</string>
-	<string name="userinfo_label_block">Blockieren</string>
-	<string name="userinfo_label_delete">Löschen</string>
-	<string name="userinfo_resend">Zustimmung erneut senden</string>
-	<string name="userinfo_sure2delete">Bist du sicher, dass du diesen Kontakt löschen willst ?</string>
-	<string name="userinfo_yes">Ja</string>
-	<string name="userinfo_no">Nein</string>
-	<string name="userinfo_sureresend">Bist du sicher, dass du die Einladung erneut senden willst ?</string>
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">Alias</string>
+<string name="userinfo_label_chg_group">Gruppen verwalten</string>
+<string name="userinfo_label_re_subscription">Einladung erneut senden</string>
+<string name="userinfo_label_block">Sperren</string>
+<string name="userinfo_label_delete">Löschen</string>
+<string name="userinfo_resend">Zustimmung erneut senden</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact?
+</string>
+<string name="userinfo_yes">Ja</string>
+<string name="userinfo_no">Nein</string>
+<string name="userinfo_sureresend">Bist du sicher, dass du die Einladung erneut senden willst?</string>
 
-	<string name="chat_name">Beem - Chat</string>
-	<string name="chat_input_default_value">Nachricht eingeben</string>
-	<string name="chat_self">Ich</string>
-	<string name="chat_error">Fehler</string>
-	<string name="chat_send_message">Senden</string>
-	<string name="chat_menu_contacts_list">Kontaktliste</string>
-	<string name="chat_menu_change_chat">Chat wechseln</string>
-	<string name="chat_dialog_change_chat_title">Offene Chats</string>
-	<string name="chat_menu_close_chat">Diesen Chat schließen</string>
-	<string name="chat_no_more_chats">Keine weiteren aktiven Chats</string>
-	<string name="chat_state_composing">schreibt gerade</string>
-	<string name="chat_state_gone">hat die Unterhaltung verlassen</string>
-	<string name="chat_state_active">verfolgt die Unterhaltung</string>
-	<string name="chat_state_inactive">macht etwas anderes</string>
+<string name="chat_name">Beem - Chat</string>
+<string name="chat_input_default_value">Nachricht eingeben</string>
+<string name="chat_self">Ich</string>
+<string name="chat_error">Fehler</string>
+<string name="chat_send_message">Senden</string>
+<string name="chat_menu_contacts_list">Kontaktliste</string>
+<string name="chat_menu_change_chat">Chat wechseln</string>
+<string name="chat_dialog_change_chat_title">Offene Chats</string>
+<string name="chat_menu_close_chat">Diesen Chat schließen</string>
+<string name="chat_no_more_chats">Keine weiteren aktiven Chats</string>
+<string name="chat_state_composing">schreibt gerade</string>
+<string name="chat_state_gone">hat die Unterhaltung verlassen</string>
+<string name="chat_state_active">verfolgt die Unterhaltung</string>
+<string name="chat_state_inactive">macht etwas anderes</string>
 
-	<string name="contact_status_msg_available">Online</string>
-	<string name="contact_status_msg_available_chat">Bereit zum Chatten</string>
-	<string name="contact_status_msg_dnd">Beschäftigt</string>
-	<string name="contact_status_msg_away">Abwesend</string>
-	<string name="contact_status_msg_xa">N/A</string>
-	<string name="contact_status_msg_offline">Offline</string>
+<string name="contact_status_msg_available">Online</string>
+<string name="contact_status_msg_available_chat">Bereit zum Chatten</string>
+<string name="contact_status_msg_dnd">Beschäftigt</string>
+<string name="contact_status_msg_away">Abwesend</string>
+<string name="contact_status_msg_xa">N/A</string>
+<string name="contact_status_msg_offline">Offline</string>
 
-	<string name="privacy_list_name">Beem - Meine Privatsphärenliste verwalten</string>
-	<string name="privacy_list_no_data">Keine Privatsphärenliste vorhanden.</string>
-	<string name="privacy_list_menu_create">Privatsphärenliste erstellen</string>
-	<string name="privacy_list_create_dialog_title">Privatsphärenliste erstellen</string>
-	<string name="privacy_list_create_dialog_list_name_label">Titel</string>
-	<string name="privacy_list_create_dialog_create_button">Erstellen</string>
-	<string name="privacy_list_select_dialog_buddies">Kontakte</string>
-	<string name="privacy_list_select_dialog_groups">Gruppen</string>
-	<string name="privacy_list_select_dialog_delete">Löschen</string>
-	<string name="privacy_list_delete_dialog_msg">Bist du sicher, dass du die Privatsphärenliste mit dem Titel \'%s\' löschen willst ?</string>
-	<string name="privacy_list_delete_dialog_yes">Ja</string>
-	<string name="privacy_list_delete_dialog_no">Nein</string>
+<string name="privacy_list_name">Beem - Meine Privatsphärenliste verwalten</string>
+<string name="privacy_list_no_data">Keine Privatsphärenliste vorhanden.</string>
+<string name="privacy_list_menu_create">Privatsphärenliste erstellen</string>
+<string name="privacy_list_create_dialog_title">Privatsphärenliste erstellen</string>
+<string name="privacy_list_create_dialog_list_name_label">Titel</string>
+<string name="privacy_list_create_dialog_create_button">Erstellen</string>
+<string name="privacy_list_select_dialog_buddies">Kontakte</string>
+<string name="privacy_list_select_dialog_groups">Gruppen</string>
+<string name="privacy_list_select_dialog_delete">Löschen</string>
+<string name="privacy_list_delete_dialog_msg">Bist du sicher, dass du die Privatsphärenliste mit dem Titel \'%s\' löschen willst?</string>
+<string name="privacy_list_delete_dialog_yes">Ja</string>
+<string name="privacy_list_delete_dialog_no">Nein</string>
 
-	<string name="UpdateButton">Aktualisierung</string>
+<string name="UpdateButton">Aktualisieren</string>
 
-	<!-- Error messages -->
+<!-- Error messages -->
 
-	<string name="error_login_authentication">Ein Fehler ist während der Authentifizierung aufgetreten: mangelhafter Benutzer oder Passwort.</string>
+<string name="error_login_authentication">Ein Fehler ist während der Authentifizierung aufgetreten: mangelhafter Benutzername oder Passwort.</string>
 
-	<string name="interna_server_error">Remoteserver Fehler</string>
-	<string name="bad_request">Mangelhafte Anfrage</string>
-	<string name="forbidden">Verboten</string>
-	<string name="item_not_found">Eintrag nicht gefunden</string>
-	<string name="conflict">Konflikt</string>
-	<string name="feature_not_implemented">Feature nicht vorhanden</string>
-	<string name="gone">verloren</string>
-	<string name="jid_malformed">JID mangelhaft</string>
-	<string name="no_acceptable">nicht akzeptabel</string>
-	<string name="not_allowed">nicht erlaubt</string>
-	<string name="not_authorized">nicht authorisiert</string>
-	<string name="payment_required">Bezahlung erforderlich</string>
-	<string name="recipient_unavailable">Empfänger unerreichbar</string>
-	<string name="redirect">weiterleiten</string>
-	<string name="registration_required">Anmeldung wird benötigt</string>
-	<string name="remote_server_not_found">Remoteserver nicht gefunden</string>
-	<string name="remote_server_timeout">Keine Antwort vom Server</string>
-	<string name="remote_server_error">Remoteserver Fehler</string>
-	<string name="resource_constraint">Ressourceneinschränkung</string>
-	<string name="service_unavailable">Dienst unerreichbar</string>
-	<string name="subscription_required">Zustimmung wird benötigt</string>
-	<string name="undefined_condition">Undefinierte Bedingung</string>
-	<string name="unexpected_condition">Unerwartete Bedingung</string>
-	<string name="request_timeout">Zeitüberschreitung bei der Anfrage</string>
+<string name="interna_server_error">Remoteserver Fehler</string>
+<string name="bad_request">Mangelhafte Anfrage</string>
+<string name="forbidden">Verboten</string>
+<string name="item_not_found">Eintrag nicht gefunden</string>
+<string name="conflict">Konflikt</string>
+<string name="feature_not_implemented">Feature nicht vorhanden</string>
+<string name="gone">verloren</string>
+<string name="jid_malformed">JID mangelhaft</string>
+<string name="no_acceptable">nicht akzeptabel</string>
+<string name="not_allowed">nicht erlaubt</string>
+<string name="not_authorized">nicht authorisiert</string>
+<string name="payment_required">Bezahlung erforderlich</string>
+<string name="recipient_unavailable">Empfänger unerreichbar</string>
+<string name="redirect">weiterleiten</string>
+<string name="registration_required">Anmeldung wird benötigt</string>
+<string name="remote_server_not_found">Remoteserver nicht gefunden</string>
+<string name="remote_server_timeout">Keine Antwort vom Server</string>
+<string name="remote_server_error">Remoteserver Fehler</string>
+<string name="resource_constraint">Ressourcen Einschränkung</string>
+<string name="service_unavailable">Dienst unerreichbar</string>
+<string name="subscription_required">Zustimmung wird benötigt</string>
+<string name="undefined_condition">Undefinierte Bedingung</string>
+<string name="unexpected_condition">Unerwartete Bedingung</string>
+<string name="request_timeout">Zeitüberschreitung bei der Anfrage</string>
 </resources>
--- a/res/values-fr/strings.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values-fr/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -56,6 +56,12 @@
 	<string name="MenuConnection">Modifier un compte</string>
 	<string name="ChangeStatusOk">Mise à jour du statut</string>
 	<string name="ChangeStatusNoChange">Rien à changer</string>
+	<string name="my_avatar">Mon avatar</string>
+	<string name="select_avatar">Choisissez votre avatar</string>
+	<string name="take_photo">Prendre une photo</string>
+	<string name="pick_photo">Choisir une image</string>
+	<string name="delete_avatar">Pas d\'avatar</string>
+	<string name="photoPickerNotFoundText">Sélecteur d\'image non disponible</string>
 
 	<!-- Settings class -->
 	<string name="SettingsText">Saisissez votre identifiant de connexion</string>
@@ -86,7 +92,7 @@
 	<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="settings_account_username">Nom d\'utilisateur (JID)</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>
@@ -117,6 +123,19 @@
 	<string name="notification_enable_vibrate_sum">Activer le vibreur pour les messages entrants</string>
 	<string name="notification_snd_title">Sonnerie des messages</string>
 	<string name="notification_snd_sum">Configurer la sonnerie des messages entrants</string>
+	<string name="settings_chat_compact">Chat compact</string>
+	<string name="settings_chat_compact_sum">Activer la fenetre Chat compact</string>
+	<string name="history">Historique</string>
+	<string name="history_sum">Cochez cette option pour enregistrer les discussions sur la SDCard</string>
+	<string name="history_mount">Il vous faut avoir une SDcard utilisable en écriture pour activer l\'historique</string>
+	<string name="history_on_off">Activer la l\'historique des messages</string>
+	<string name="chat_preferences">Chat</string>
+	<string name="chat_preferences_sum">Historique, taille de la fenêtre ...</string>
+	<string name="chat_history_path">Répertoire d\'historique</string>
+	<string name="chat_history_path_sum">Les conversations sont enregistrées dans un dossier sur la SDCard</string>
+	<string name="settings_smack_debug">Activer le debugger XMPP</string>
+	<string name="settings_full_jid_login">Utiliser le JID entier en tant que login</string>
+	<string name="settings_full_jid_login_sum">Nécessaire pour certains serveurs (Google Talk)</string>
 	
 	<!-- Subscription class -->
 	<string name="SubscriptAccept">Inscription acceptée</string>
@@ -209,6 +228,9 @@
 	<string name="settings_tab_label_xmpp">XMPP</string>
 	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
 	<string name="settings_tab_label_proxy">Proxy</string>
+	<string name="history_preferences">Historique</string>
+	<string name="chat_layout_option">Fenêtre de chat</string>
+	
 
 	<!-- wizard activities -->
 	<string name="account_wizard_text1"><b>Bienvenue sur BEEM.</b>\n\nVous n\'avez pas encore configuré de compte XMPP (Jabber).\nChoisissez une des options suivantes :</string>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/values-it/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+	<!-- Generic terms -->
+	<string name="app_name">Beem</string>
+	<string name="OkButton">Ok</string>
+	<string name="ClearButton">Pulisci</string>
+	<string name="CancelButton">Annulla</string>
+	<string name="AcceptButton">Autorizza</string>
+	<string name="RefuseButton">Proibisci</string>
+	<string name="JabberID">Jabber ID</string>
+	<string name="Password">Password</string>
+	<string name="Continue">Continua</string>
+
+	<!--  AccountConfigure class -->
+	<string name="AccountConfigureManualConfiguration">Configurazione Manuale</string>
+
+	<!--  Beem class -->
+	<string name="BeemJabberID">Jabber ID</string>
+
+	<!--  BeemApplication class -->
+	<string name="BeemApplicationConnect">Connessione...</string>
+
+	<!--  BeemService class -->
+	<string name="BeemServiceDescription">Usa il sservizio Beem</string>
+	<string name="BeemServiceCreated">Create il servizio Bemm</string>
+	<string name="BeemServiceDestroyed">Rimosso il servizio Beem</string>
+
+	<!--  ContactDialog class -->
+	<string name="CDChat">Chat</string>
+	<string name="CDCall">Chiamate</string>
+	<string name="CDInfos">Gestisci Utente</string>
+
+	<!-- AddContact class -->
+	<string name="AddCActTitle">Beem - Aggiungi un contatto</string>
+
+	<string name="AddCLogin">Username</string>
+	<string name="AddCAlias">Alias</string>
+	<string name="AddCGroup">Gruppo</string>
+	<string name="AddCOkButton">Aggiungi</string>
+	<string name="AddCContactAdded">Aggiunto contatto</string>
+	<string name="AddCContactAddedError">Errore Contatto non aggiunto</string>
+	<string name="AddCContactAddedLoginError">Errore di accesso</string>
+	<string name="AddCBadForm">Forma errata</string>
+	<string name="AddCContactAlready">Contatto già esistente</string>
+
+	<!--  ChangeStatus class -->
+	<string name="ChangeStatusActTitle">Beem - Cambia il mio stato</string>
+	<string name="ChangeStatusType">Il mio stato</string>
+	<string name="ChangeStatusMessage">Messaggio personale</string>
+	<string name="OpenContactList">Apri lista contatti</string>
+	
+	<string name="MenuAddContact">Aggiungi un nuovo cotatto</string>
+	<string name="MenuAccountAbout">Progetto Beem</string>
+	<string name="MenuAccountCreate">Crea un account</string>
+	<string name="MenuConnection">Modifica account</string>
+	<string name="ChangeStatusOk">Aggiornamento stato</string>
+	<string name="ChangeStatusNoChange">Nessun cambiamento</string>
+
+	<!-- Settings class -->
+	<string name="SettingsText">Modifica il tuo username</string>
+	<string name="SettingsPassword">Modifica la tua password</string>
+	<string name="SettingsProxy">Proxy</string>
+	<string name="SettingsProxyProxy">Usa un server proxy</string>
+	<string name="SettingsProxySummary">Accedi attraverso un server proxy</string>
+	<string name="SettingsProxyType">Protocollo</string>
+	<string name="SettingsProxyTypeSummary">Scegli il tipo del server proxy</string>
+	<string name="SettingsProxyServer">Modifica l\'indirizzo del server proxy</string>
+	<string name="SettingsProxyPort">Modifica la porta del server proxy</string>
+	<string name="SettingsProxyUser">Opzionale, permetti l\'autenticazione di te stesso sul server proxy</string>
+	<string name="SettingsProxyPassword">Opzionale, permetti l\'autenticazione di te stesso sul server proxy</string>
+	<string name="SettingsAdvanced">Avanzate</string>
+	<string name="SettingsAdvancedOptions">Opzioni specifiche del server</string>
+	<string name="SettingsAdvancedRecoDelay">Modifica ritardo di ri-connessione</string>
+	<string name="SettingsAdvancedSpecOpt">Abilita se vuoi usare un server specifico per la tua connessione</string>
+	<string name="SettingsAdvancedAddOpt">Modifica l\'indirizzo del server</string>
+	<string name="SettingsAdvancedPortOpt">Modifica la porta del server</string>
+	<string name="SettingsResourceTitle">Risorsa</string>
+	<string name="SettingsPriorityTitle">Priorità</string>
+	<string name="SettingsResourceSummary">Imposta la risorsa XMPP del tuo client </string>
+	<string name="SettingsPrioritySummary">Imposta la priorità del tuo client</string>
+	<string name="contact_list_preferences">Lista amici</string>
+	<string name="contact_list_preferences_sum">Un insieme di opzioni di visualizzazione per la tua lista amizie
+	</string>
+	<string name="CLP_hide_groups">Nascondi gruppi</string>	
+	<string name="CLP_hide_groups_sum">Abilita quest\'opzione per nascondere i gruppi</string>
+	<string name="CLP_hidden_contact">Nascondi le amizie</string>
+	<string name="CLP_hidden_contact_sum">Abilita quest\'opzione per nascondere gli amici non connessi
+	</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">Porta</string>
+	<string name="settings_advanced_service_behaviour">Funzionamento del servizio</string>
+	<string name="settings_advanced_sum">Un insieme di opzioni per gli utenti avanzati</string>
+	<string name="settings_xmpp_server">Indirizzo</string>
+	<string name="comments_xmpp_server">example.com</string>
+	<string name="settings_xmpp_port">Porta</string>
+	<string name="settings_xmpp_use_tls">Usa SSL/TLS</string>
+	<string name="settings_reco_delay">Ritardo di ri-connessione</string>
+	<string name="comments_xmpp_port">Predefinita: 5222</string>
+	<string name="settings_proxy_sum">Impostazioni per l\'utilizzo del proxy</string>
+	<string name="settings_proxy_use">Connetti utilizzando un proxy</string>
+	<string name="settings_proxy_type_prompt">Scegli un tipo di proxy</string>
+	<string name="settings_proxy_server">Server</string>
+	<string name="settings_proxy_port">Porta</string>
+	<string name="comments_proxy_port">Predefinita: 1080</string>
+	<string name="settings_proxy_username">Username</string>
+	<string name="settings_proxy_password">Password</string>
+	<string name="away_chk_title">Abilita Auto-away</string>
+	<string name="away_chk_sum">Cambia lo stato ad Away quando lo schermo è spento</string>
+	<string name="away_message_title">Messaggio Away</string>
+	<string name="away_message_sum">Il messaggio Away che verrà mostrato</string>
+	<string name="away_message_hint">Non sono disponibile, il mio schermo è spento</string>
+	<string name="notification_preferences">Impostazioni di notifica</string>
+	<string name="notification_enable_vibrate_title">Abilita vibrazione</string>
+	<string name="notification_enable_vibrate_sum">Abilita vibrazione per i messaggi in arrivo</string>
+	<string name="notification_snd_title">Suoneria messaggi</string>
+	<string name="notification_snd_sum">Imposta la suoneria per i messaggi in arrivo</string>
+
+	
+	<!-- Subscription class -->
+	<string name="SubscriptAccept">Sottoscrizione accettata</string>
+	<string name="SubscriptError">Errore nella sottoscrizione</string>
+	<string name="SubscriptRefused">Sottoscrizione refiutata</string>
+	<string name="SubscriptText">%s desidera aggiungerti nella sua lista di amicizie. Vuoi autorizzarlo/a?</string>
+	<string name="SubscriptTitle">Autorizza amicizia ?</string>
+
+	<!--  BeemChatManager -->
+	<string name="BeemChatManagerNewMessage">Hai un nuovo messaggio</string>
+
+	<!--  BeemBroadcastReceiver class -->
+	<string name="BeemBroadcastReceiverDisconnect">BEEM: sei stato disconnesso</string>
+
+	<!--  XmppConnectionAdapter class -->
+	<string name="AcceptContactRequest">%s ti ha appena aggiunto alla sue lista di amicizie.</string>
+	<string name="AcceptContactRequestFrom">Autorizza %s a contattarti.</string>
+
+	<!-- Activities -->
+	<string name="login_tag">Beem - Login Activity</string>
+	<string name="edit_settings_name">Beem - Settings</string>
+	<string name="edit_settings_tag">Beem - EditSettings Activity</string>
+	<string name="create_account_name">Beem - Create an account</string>
+	<string name="create_account_tag">Beem - CreateAccount Activity</string>
+	<string name="contact_list_name">Beem - Contacts</string>
+	<string name="contact_list_tag">Beem - ContactList Activity</string>
+	<string name="user_info_name">Beem - User Info</string>
+
+	<!-- Buttons -->
+	<string name="button_create_account">Crea questo account</string>
+	<string name="button_create_login_account">Crea ed usa questo account</string>
+
+	<!-- LogAs Activity -->
+	<string name="login_username">Username</string>
+	<string name="login_password">Password</string>
+	<string name="login_error_dialog_title">Accesso - Errore</string>
+	<string name="login_close_dialog_button">Chiudi</string>
+	<string name="login_menu_create_account">Crea un account</string>
+	<string name="login_menu_settings">Impostazioni</string>
+	<string name="login_menu_about">Informazioni su</string>
+	<string name="login_about_title">Beem %s - Informazioni</string>
+	<string name="login_about_msg">
+		Beem è un progetto innovativo EPITECH. Visitaci su
+		http://www.beem-project.com !
+	</string>
+	<string name="login_about_button">Chiudi</string>
+	<string name="login_settings_button">Impostazioni</string>
+	<string name="login_login_button">Accedi</string>
+	<string name="login_login_progress">Connessione in corso. Attendere...</string>
+	<string name="login_error_msg">Purtroppo, si è verificato un errore.\n\nDettagli
+		errore:\n%s</string>
+	<string name="login_menu_login">Accedi</string>
+	<string name="login_no_connectivity">Non è stata trovata la connessione internet</string>
+	<string name="login_start_msg">Impostazioni di configurazione nel menuSettings configuration in menu</string>
+
+	<!-- LoginAnim activity -->
+	<string name="loganim_connecting">Connessione in corso ...</string>
+	<string name="loganim_authenticating">Autenticazione ...</string>
+	<string name="loganim_login_success">Accesso riuscito</string>
+	<string name="loganim_login_failed">Accesso fallito</string>
+
+	<!-- EditSettings Activity -->
+	<string name="settings_menu_create_account">Crea un account</string>
+	<string name="settings_menu_privacy_lists">Gestisci le mie liste di privacy</string>
+	<string name="settings_saved_ok">Le impostazioni sono state salvate con successo.</string>
+
+
+
+	<!-- EditSettings Activity Categories -->
+	<string name="general_preferences">Preferenze generali</string>
+	<string name="user_preferences">Impostazioni utente (richiste)</string>
+	<string name="user_preferences_advanced">Impostazioni utente avanzate (opzionali)</string>
+	<string name="network_preferences">Opzioni rete</string>
+	<string name="proxy_proxy_settings">Impostazioni Proxy</string>
+	<string name="proxy_user_settings">Impostazioni Proxy</string>
+
+	<!-- EditSettings Activity Tabs -->
+	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+	<string name="settings_tab_label_account">Account</string>
+	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+	<string name="settings_tab_label_xmpp">XMPP</string>
+	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+	<string name="settings_tab_label_proxy">Proxy</string>
+
+
+	<!-- wizard activities -->
+	<string name="account_wizard_text1"><b>Benvenuto su BEEM.</b>\n\nNon hai ancora configurato un account XMPP (Jabber).\nScegli una delle seguenti opzioni :</string>
+	<string name="account_wizard_configure_text"><b>Si prega di compilare i dati per il vostro account esistente</b></string>
+	<string name="account_wizard_configure_account">Possiedo già un account che voglio</string>
+	<string name="account_wizard_create_account">Voglio registrare un nuovo account</string>
+
+	<!-- Create an account Activity -->
+	<string name="create_account_instr_dialog_title">Crea un account - Istruzioni</string>
+	<string name="create_account_err_dialog_title">Crea un account - Errore</string>
+	<string name="create_account_err_dialog_settings_button">Cambia le mie impostazioni</string>
+	<string name="create_account_close_dialog_button">Chiudi</string>
+	<string name="create_account_successfull_after">account %s è stato creato con successo</string>
+	<string name="create_account_err_username">Errato JabberID</string>
+	<string name="create_account_err_passwords">Le password non coincidono.</string>
+	<string name="create_account_username">Username</string>
+	<string name="create_account_password">Password</string>
+	<string name="create_account_confirm_password">Conferma password</string>
+
+	<!-- ContactList Activity  -->
+	<string name="contact_list_menu_add_contact">Aggiungi un contatto</string>
+	<string name="contact_list_menu_status">Cambia stato</string>
+	<string name="contact_list_menu_settings">Impsotazioni</string>
+	<string name="contact_list_menu_disconnect">Disconnetti</string>
+	<string name="contact_list_all_contact">Tutti i contatti</string>
+	<string name="contact_list_no_group">Nessun gruppo</string>
+
+	<!-- UserInfo dialog -->
+	<string name="userinfo_label_alias">Alias</string>
+	<string name="userinfo_label_chg_group">Gestisci gruppi</string>
+	<string name="userinfo_label_re_subscription">Rimanda invito</string>
+	<string name="userinfo_label_block">Blocco</string>
+	<string name="userinfo_label_delete">Elimina</string>
+	<string name="userinfo_resend">Rimanda sottoscrizione</string>
+	<string name="userinfo_sure2delete">Sei sicuro di voler eliminare questo contatto?
+	</string>
+	<string name="userinfo_yes">Sì</string>
+	<string name="userinfo_no">No</string>
+	<string name="userinfo_sureresend">Sei sicuro di voler rispedire l\'invito ?</string>
+
+	<string name="chat_name">Beem - Chat</string>
+	<string name="chat_input_default_value">Scrivi il tuo messaggio</string>
+	<string name="chat_self">Io</string>
+	<string name="chat_error">Errore</string>
+	<string name="chat_send_message">Invia</string>
+	<string name="chat_menu_contacts_list">Lista contatti</string>
+	<string name="chat_menu_change_chat">Cambia conversazione</string>
+	<string name="chat_dialog_change_chat_title">Conversazioni aperte</string>
+	<string name="chat_menu_close_chat">Chiudi questa conversazione</string>
+	<string name="chat_no_more_chats">nessuna conversazione attiva</string>
+	<string name="chat_state_composing">sta componendo un messaggio</string>
+	<string name="chat_state_gone">ha abbandonato la conversazione</string>
+	<string name="chat_state_active">presta attenzione alla conversazione</string>
+	<string name="chat_state_inactive">sta facendo qualcos\'altro</string>
+
+	<string name="contact_status_msg_available">Disponibile</string>
+	<string name="contact_status_msg_available_chat">Disponibile a conversare</string>
+	<string name="contact_status_msg_dnd">Non disturbare</string>
+	<string name="contact_status_msg_away">Away</string>
+	<string name="contact_status_msg_xa">Non disponibile</string>
+	<string name="contact_status_msg_offline">Disconnesso</string>
+
+	<string name="privacy_list_name">Beem - Gestisci le mie liste di privacy</string>
+	<string name="privacy_list_no_data">Non c\'è alcuna lista di provacy registrata.</string>
+	<string name="privacy_list_menu_create">Crea una lista di privacy</string>
+	<string name="privacy_list_create_dialog_title">Crea una lista di privacy</string>
+	<string name="privacy_list_create_dialog_list_name_label">Titolo</string>
+	<string name="privacy_list_create_dialog_create_button">Creare</string>
+	<string name="privacy_list_select_dialog_buddies">Amicizie</string>
+	<string name="privacy_list_select_dialog_groups">Gruppi</string>
+	<string name="privacy_list_select_dialog_delete">Elimina</string>
+	<string name="privacy_list_delete_dialog_msg">Sei sicuro di voler eliminare la lista di privacy intitolata \'%s\' ?</string>
+	<string name="privacy_list_delete_dialog_yes">Sì</string>
+	<string name="privacy_list_delete_dialog_no">No</string>
+
+	<string name="UpdateButton">Aggiorna</string>
+	
+	<!-- Error messages -->
+	
+	<string name="error_login_authentication">Errore durante l\'autenticazione, login o password errati.</string>
+	
+	<string name="interna_server_error">Errore del server remoto</string>
+	<string name="bad_request">bad-request</string>
+	<string name="forbidden">forbidden</string>
+	<string name="item_not_found">item-not-found</string>
+	<string name="conflict">conflict</string>
+	<string name="feature_not_implemented">feature-not-implemented</string>
+	<string name="gone">gone</string>
+	<string name="jid_malformed">jid-malformed</string>
+	<string name="no_acceptable">no-acceptable</string>
+	<string name="not_allowed">not-allowed</string>
+	<string name="not_authorized">not-authorized</string>
+	<string name="payment_required">payment-required</string>
+	<string name="recipient_unavailable">recipient-unavailable</string>
+	<string name="redirect">redirect</string>
+	<string name="registration_required">registration-required</string>
+	<string name="remote_server_not_found">Remote server not found</string>
+	<string name="remote_server_timeout">No server response</string>
+	<string name="remote_server_error">Remote server error</string>
+	<string name="resource_constraint">resource-constraint</string>
+	<string name="service_unavailable">service-unavailable</string>
+	<string name="subscription_required">subscription-required</string>
+	<string name="undefined_condition">undefined-condition</string>
+	<string name="unexpected_condition">unexpected-condition</string>
+	<string name="request_timeout">request-timeout</string>
+</resources>
--- a/res/values-ru/strings.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values-ru/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -178,7 +178,7 @@
 <string name="userinfo_label_re_subscription">Выслать приглашение ещё раз</string>
 <string name="userinfo_label_block">Заблокировать</string>
 <string name="userinfo_label_delete">Удалить</string>
-<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact?
 </string>
 <string name="userinfo_yes">Да</string>
 <string name="userinfo_no">Нет</string>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/res/values-sv/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">Ok</string>
+<string name="ClearButton">Töm</string>
+<string name="CancelButton">Avbryt</string>
+<string name="AcceptButton">Godkänn</string>
+<string name="RefuseButton">Neka</string>
+<string name="JabberID">Jabber-ID</string>
+<string name="Password">Lösenord</string>
+<string name="Continue">Fortsätt</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">Manuell inställning</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber-ID</string>
+
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">Ansluter...</string>
+
+<!--  BeemService class -->
+<string name="BeemServiceDescription">Använda tjänsten Beem</string>
+<string name="BeemServiceCreated">Beemtjänst skapad</string>
+<string name="BeemServiceDestroyed">Beemtjänst avslutad</string>
+
+<!--  ContactDialog class -->
+<string name="CDChat">Chatta</string>
+<string name="CDCall">Ring</string>
+<string name="CDInfos">Hantera kontakt</string>
+
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - Lägg till kontakt</string>
+
+<string name="AddCLogin">Användarnamn</string>
+<string name="AddCAlias">Alias</string>
+<string name="AddCGroup">Grupp</string>
+<string name="AddCOkButton">Lägg till</string>
+<string name="AddCContactAdded">Kontakt tillagd</string>
+<string name="AddCContactAddedError">Fel, kontakt inte tillagd</string>
+<string name="AddCContactAddedLoginError">Fel vid inloggning</string>
+<string name="AddCBadForm">Fel ifyllt</string>
+<string name="AddCContactAlready">Kontakten finns redan</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - Ändra status</string>
+<string name="ChangeStatusType">Min status</string>
+<string name="ChangeStatusMessage">Mitt personliga meddelande</string>
+<string name="OpenContactList">Öppna kontaktlista</string>
+
+<string name="MenuAddContact">Lägg till ny kontakt</string>
+<string name="MenuAccountAbout">Beemprojektet</string>
+<string name="MenuAccountCreate">Skapa konto</string>
+<string name="MenuConnection">Ändra konto</string>
+<string name="ChangeStatusOk">Uppdaterar status</string>
+<string name="ChangeStatusNoChange">Inget att ändra</string>
+
+<!-- Settings class -->
+<string name="SettingsText">Ändra ditt användarnamn</string>
+<string name="SettingsPassword">Ändra ditt lösenord</string>
+<string name="SettingsProxy">Proxy</string>
+<string name="SettingsProxyProxy">Använd proxyserver</string>
+<string name="SettingsProxySummary">Logga in via proxyserver</string>
+<string name="SettingsProxyType">Protokoll</string>
+<string name="SettingsProxyTypeSummary">Välj typ av proxyserver</string>
+<string name="SettingsProxyServer">Ändra proxyserveradress</string>
+<string name="SettingsProxyPort">Ändra proxyserverport</string>
+<string name="SettingsProxyUser">Valfritt, möjliggör autentisering på proxyservern</string>
+<string name="SettingsProxyPassword">Valfritt, möjliggör autentisering på proxyservern</string>
+<string name="SettingsAdvanced">Avancerat</string>
+<string name="SettingsAdvancedOptions">Specifika serverinställningar</string>
+<string name="SettingsAdvancedRecoDelay">Ändra tid mellan anslutningsförsök</string>
+<string name="SettingsAdvancedSpecOpt">Markera om du vill använda någon specifik server för anslutningen</string>
+<string name="SettingsAdvancedAddOpt">Ändra serveradress</string>
+<string name="SettingsAdvancedPortOpt">Ändra serverport</string>
+<string name="SettingsResourceTitle">Instans</string>
+<string name="SettingsPriorityTitle">Prioritet</string>
+<string name="SettingsResourceSummary">Ange XMPP-instans för denna klient</string>
+<string name="SettingsPrioritySummary">Ange prioritet för denna klient</string>
+<string name="contact_list_preferences">Kontaktlista</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">Dölj grupper</string>
+<string name="CLP_hide_groups_sum">Markera för att dölja grupper</string>
+<string name="CLP_hidden_contact">Dölj kontakter</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">Användarnamn (JID)</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">Lösenord</string>
+<string name="settings_account_server">Server</string>
+<string name="settings_account_port">Port</string>
+<string name="settings_advanced_service_behaviour">Tjänstebeskrivning</string>
+<string name="settings_advanced_sum">Inställningar för avancerade användare</string>
+<string name="settings_xmpp_server">Adress</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">Port</string>
+<string name="settings_xmpp_use_tls">Kräv SSL/TLS</string>
+<string name="settings_reco_delay">Tid mellan anslutningsförsök</string>
+<string name="comments_xmpp_port">Förvalt: 5222</string>
+<string name="settings_proxy_sum">Inställningar för användning av proxy</string>
+<string name="settings_proxy_use">Anslut via proxy</string>
+<string name="settings_proxy_type_prompt">Välj typ av proxy</string>
+<string name="settings_proxy_server">Server</string>
+<string name="settings_proxy_port">Port</string>
+<string name="comments_proxy_port">Förvalt: 1080</string>
+<string name="settings_proxy_username">Användarnamn</string>
+<string name="settings_proxy_password">Lösenord</string>
+<string name="away_chk_title">Aktivera automatisk frånvaro</string>
+<string name="away_chk_sum">Ändra status till frånvarande när skärmen släcks</string>
+<string name="away_message_title">Frånvaromeddelande</string>
+<string name="away_message_sum">Frånvaromeddelandet som kommer att visas</string>
+<string name="away_message_hint">Jag är frånvarande, telefonens skärm är släckt</string>
+<string name="notification_preferences">Aviseringsinställningar</string>
+<string name="notification_enable_vibrate_title">Aktivera vibration</string>
+<string name="notification_enable_vibrate_sum">Aktivera vibration vid inkommande meddelande</string>
+<string name="notification_snd_title">Meddelandesignal</string>
+<string name="notification_snd_sum">Ange signal för inkommande meddelanden</string>
+<string name="settings_chat_compact">Kompakt chatt</string>
+<string name="settings_chat_compact_sum">Gör chattfönstret kompakt</string>
+<string name="history">Historik</string>
+<string name="history_mount">Ett monterat och skrivbart SD-kort krävs för att aktivera historik</string>
+<string name="history_on_off">Aktivera historik</string>
+<string name="settings_smack_debug">Aktivera XMPP-felsökning</string>
+<string name="settings_full_jid_login">Använd fullständigt JID som användarnamn</string>
+<string name="settings_full_jid_login_sum">Krävs på vissa servrar som Google Talk</string>
+
+<!-- Subscription class -->
+<string name="SubscriptAccept">Prenumeration godkänd</string>
+<string name="SubscriptError">Fel vid prenumeration</string>
+<string name="SubscriptRefused">Prenumeration nekad</string>
+<string name="SubscriptText">%s vill lägga till dig i sin kontaktlista. Godkänner du det?</string>
+<string name="SubscriptTitle">Godkänn kontakt?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">Du har ett nytt meddelande</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM: Du är frånkopplad</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s har lagt till dig till sin kontaktlista.</string>
+<string name="AcceptContactRequestFrom">Godkänn att %s kontaktar dig.</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - Aktivitet inloggningar</string>
+<string name="edit_settings_name">Beem - Inställningar</string>
+<string name="edit_settings_tag">Beem - Aktivitet inställningar</string>
+<string name="create_account_name">Beem - Skapa konto</string>
+<string name="create_account_tag">Beem - Aktivitet skapa konto</string>
+<string name="contact_list_name">Beem - Kontakter</string>
+<string name="contact_list_tag">Beem - Aktivitet kontaktlista</string>
+<string name="user_info_name">Beem - Användarinfo</string>
+
+<!-- Buttons -->
+<string name="button_create_account">Skapa kontot</string>
+<string name="button_create_login_account">Skapa och använd kontot</string>
+
+<!-- LogAs Activity -->
+<string name="login_username">Användarnamn</string>
+<string name="login_password">Lösenord</string>
+<string name="login_error_dialog_title">Fel vid inloggning</string>
+<string name="login_close_dialog_button">Stäng</string>
+<string name="login_menu_create_account">Skapa konto</string>
+<string name="login_menu_settings">Inställningar</string>
+<string name="login_menu_about">Om</string>
+<string name="login_about_title">Beem %s - Om</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">Stäng</string>
+<string name="login_settings_button">Inställningar</string>
+<string name="login_login_button">Logga in</string>
+<string name="login_login_progress">Ansluter. Vänta...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">Logga in</string>
+<string name="login_no_connectivity">Ingen internetanslutning hittades</string>
+<string name="login_start_msg">Inställningar i menyn</string>
+
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">Ansluter...</string>
+<string name="loganim_authenticating">Verifierar...</string>
+<string name="loganim_login_success">Inloggningen lyckades</string>
+<string name="loganim_login_failed">Inloggningen misslyckades</string>
+
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">Skapa konto</string>
+<string name="settings_menu_privacy_lists">Hantera spärrlistor</string>
+<string name="settings_saved_ok">Inställningarna har sparats.</string>
+
+
+
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">Allmänna inställningar</string>
+<string name="user_preferences">Användarinställningar (krävs)</string>
+<string name="user_preferences_advanced">Avancerade användarinställningar (valfritt)</string>
+<string name="network_preferences">Nätverksinställningar</string>
+<string name="proxy_proxy_settings">Proxyinställningar</string>
+<string name="proxy_user_settings">Proxyinställningar</string>
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">edit_settings_tab_account</string>
+<string name="settings_tab_label_account">Konto</string>
+<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
+<string name="settings_tab_label_proxy">Proxy</string>
+
+
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>Välkommen till BEEM.</b>\n\nDu har inte konfigurerat något XMPP (Jabber)-konto än.\nVälj ett av följande alternativ:</string>
+<string name="account_wizard_configure_text"><b>Fyll i uppgifterna för ditt befintliga konto</b></string>
+<string name="account_wizard_configure_account">Jag har redan ett konto som jag vill använda</string>
+<string name="account_wizard_create_account">Jag vill registrera ett nytt konto</string>
+
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">Skapa konto - Instruktioner</string>
+<string name="create_account_err_dialog_title">Skapa konto - Fel</string>
+<string name="create_account_err_dialog_settings_button">Ändra inställningar</string>
+<string name="create_account_close_dialog_button">Stäng</string>
+<string name="create_account_successfull_after">kontot %s har skapats</string>
+<string name="create_account_err_username">Felaktigt Jabber-ID</string>
+<string name="create_account_err_passwords">Lösenorden är inte lika.</string>
+<string name="create_account_username">Användarnamn</string>
+<string name="create_account_password">Lösenord</string>
+<string name="create_account_confirm_password">Bekräfta lösenordet</string>
+
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">Lägg till kontakt</string>
+<string name="contact_list_menu_status">Ändra status</string>
+<string name="contact_list_menu_settings">Inställningar</string>
+<string name="contact_list_menu_disconnect">Koppla från</string>
+<string name="contact_list_all_contact">Alla kontakter</string>
+<string name="contact_list_no_group">Ingen grupp</string>
+
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">Alias</string>
+<string name="userinfo_label_chg_group">Hantera grupper</string>
+<string name="userinfo_label_re_subscription">Skicka förfrågan igen</string>
+<string name="userinfo_label_block">Spärra</string>
+<string name="userinfo_label_delete">Ta bort</string>
+<string name="userinfo_resend">Skicka prenumeration igen</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+</string>
+<string name="userinfo_yes">Ja</string>
+<string name="userinfo_no">Nej</string>
+<string name="userinfo_sureresend">Är du säker på att du vill skicka förfrågan igen?</string>
+
+<string name="chat_name">Beem - Chatt</string>
+<string name="chat_input_default_value">Skriv meddelande</string>
+<string name="chat_self">Jag</string>
+<string name="chat_error">Fel</string>
+<string name="chat_send_message">Skicka</string>
+<string name="chat_menu_contacts_list">Kontaktlista</string>
+<string name="chat_menu_change_chat">Byt chatt</string>
+<string name="chat_dialog_change_chat_title">Öppna chattar</string>
+<string name="chat_menu_close_chat">Stäng den här chatten</string>
+<string name="chat_no_more_chats">Inga fler aktiva chattar</string>
+<string name="chat_state_composing">skriver ett meddelande</string>
+<string name="chat_state_gone">har lämnat samtalet</string>
+<string name="chat_state_active">iakttar samtalet</string>
+<string name="chat_state_inactive">gör något annat</string>
+
+<string name="contact_status_msg_available">Tillgänglig</string>
+<string name="contact_status_msg_available_chat">Tillgänglig för chatt</string>
+<string name="contact_status_msg_dnd">Stör ej</string>
+<string name="contact_status_msg_away">Frånvarande</string>
+<string name="contact_status_msg_xa">Inte tillgänglig</string>
+<string name="contact_status_msg_offline">Frånkopplad</string>
+
+<string name="privacy_list_name">Beem - Hantera spärrlistor</string>
+<string name="privacy_list_no_data">Det finns inga spärrlistor.</string>
+<string name="privacy_list_menu_create">Skapa spärrlista</string>
+<string name="privacy_list_create_dialog_title">Skapa spärrlista</string>
+<string name="privacy_list_create_dialog_list_name_label">Titel</string>
+<string name="privacy_list_create_dialog_create_button">Skapa</string>
+<string name="privacy_list_select_dialog_buddies">Kontakter</string>
+<string name="privacy_list_select_dialog_groups">Grupper</string>
+<string name="privacy_list_select_dialog_delete">Ta bort</string>
+<string name="privacy_list_delete_dialog_msg">Vill du verkligen ta bort spärrlistan \'%s\'?</string>
+<string name="privacy_list_delete_dialog_yes">Ja</string>
+<string name="privacy_list_delete_dialog_no">Nej</string>
+
+<string name="UpdateButton">Uppdatera</string>
+
+<!-- Error messages -->
+
+<string name="error_login_authentication">Fel vid inloggning, fel ID eller lösenord.</string>
+
+<string name="interna_server_error">Serverfel</string>
+<string name="bad_request">felaktig begäran</string>
+<string name="forbidden">otillåten</string>
+<string name="item_not_found">hittades inte</string>
+<string name="conflict">konflikt</string>
+<string name="feature_not_implemented">funktionen finns inte</string>
+<string name="gone">borta</string>
+<string name="jid_malformed">felaktigt JID</string>
+<string name="no_acceptable">accepteras inte</string>
+<string name="not_allowed">tillåts inte</string>
+<string name="not_authorized">inte godkänd</string>
+<string name="payment_required">betalning krävs</string>
+<string name="recipient_unavailable">mottagaren ej tillgänglig</string>
+<string name="redirect">vidarebefordra</string>
+<string name="registration_required">registrering krävs</string>
+<string name="remote_server_not_found">Servern hittades inte</string>
+<string name="remote_server_timeout">Servern svarar inte</string>
+<string name="remote_server_error">Serverfel</string>
+<string name="resource_constraint">begränsad instans</string>
+<string name="service_unavailable">tjänsten ej tillgänglig</string>
+<string name="subscription_required">prenumeration krävs</string>
+<string name="undefined_condition">odefinierat tillstånd</string>
+<string name="unexpected_condition">oväntat tillstånd</string>
+<string name="request_timeout">timeout för begäran</string>
+</resources>
--- a/res/values-zh-rCN/strings.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values-zh-rCN/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -1,306 +1,317 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-	<!-- Generic terms -->
-	<string name="app_name">Beem</string>
-	<string name="OkButton">确定</string>
-	<string name="ClearButton">清除</string>
-	<string name="CancelButton">取消</string>
-	<string name="AcceptButton">认证</string>
-	<string name="RefuseButton">拒绝</string>
-	<string name="JabberID">Jabber账号 </string>
-	<string name="Password">密码</string>
-
-	<!--  Beem class -->
-	<string name="BeemJabberID">Jabber账号 </string>
-
-	<!--  BeemApplication class -->
-	<string name="BeemApplicationConnect">连接中...</string>
-
-	<!--  BeemService class -->
-	<string name="BeemServiceDescription">使用Beem服务</string>
-	<string name="BeemServiceCreated">Beem服务已创建</string>
-	<string name="BeemServiceDestroyed">Beem服务已取消</string>
-
-	<!--  ContactDialog class -->
-	<string name="CDChat">聊天</string>
-	<string name="CDCall">呼叫</string>
-	<string name="CDInfos">用户管理</string>
-
-	<!-- AddContact class -->
-	<string name="AddCActTitle">Beem - 添加连接</string>
-
-	<string name="AddCLogin">用户名</string>
-	<string name="AddCAlias">别名</string>
-	<string name="AddCGroup">组</string>
-	<string name="AddCOkButton">添加</string>
-	<string name="AddCContactAdded">联系人已成功添加</string>
-	<string name="AddCContactAddedError">联系人添加错误</string>
-	<string name="AddCContactAddedLoginError">登录错误</string>
-	<string name="AddCBadForm">格式错误</string>
-	<string name="AddCContactAlready">联系人已存在</string>
-
-	<!--  ChangeStatus class -->
-	<string name="ChangeStatusActTitle">Beem - 改变我的状态</string>
-	<string name="ChangeStatusType">我的状态</string>
-	<string name="ChangeStatusMessage">我的个人消息</string>
-	<string name="OpenContactList">打开联系人列表</string>
-	
-	<string name="MenuAddContact">添加心联系人</string>
-	<string name="MenuAccountAbout">Beem项目</string>
-	<string name="MenuAccountCreate">创建账号</string>
-	<string name="MenuConnection">编辑账号</string>
-	<string name="ChangeStatusOk">更新状态</string>
-	<string name="ChangeStatusNoChange">没有东西需要改变</string>
-
-	<!-- Settings class -->
-	<string name="SettingsText">修改用户名</string>
-	<string name="SettingsPassword">修改密码</string>
-	<string name="SettingsProxy">代理</string>
-	<string name="SettingsProxyProxy">使用代理服务器</string>
-	<string name="SettingsProxySummary">通过代理服务器登录</string>
-	<string name="SettingsProxyType">协议</string>
-	<string name="SettingsProxyTypeSummary">选择代理类型</string>
-	<string name="SettingsProxyServer">修改代理服务器地址</string>
-	<string name="SettingsProxyPort">修改地理服务器端口</string>
-	<string name="SettingsProxyUser">可选,允许在代理服务器上注册</string>
-	<string name="SettingsProxyPassword">可选,允许在代理服务器上注册</string>
-	<string name="SettingsAdvanced">高级</string>
-	<string name="SettingsAdvancedOptions">特定服务器选项</string>
-	<string name="SettingsAdvancedRecoDelay">修改重连延时</string>
-	<string name="SettingsAdvancedSpecOpt">勾选此选项以连接到特定的服务器.</string>
-	<string name="SettingsAdvancedAddOpt">编辑服务器地址</string>
-	<string name="SettingsAdvancedPortOpt">编辑服务器端口</string>
-	<string name="SettingsResourceTitle">资源</string>
-	<string name="SettingsPriorityTitle">优先级</string>
-	<string name="SettingsResourceSummary">设定客户端XMPP资源</string>
-	<string name="SettingsPrioritySummary">设定客户端优先级</string>
-	<string name="contact_list_preferences">好友列表</string>
-	<string name="contact_list_preferences_sum">好友列表显示选项
-	</string>
-	<string name="CLP_hide_groups">隐藏组</string>	
-	<string name="CLP_hide_groups_sum">勾选此选项隐藏组</string>
-	<string name="CLP_hidden_contact">隐藏好友</string>
-	<string name="CLP_hidden_contact_sum">勾选此选项隐藏未登录好友
-	</string>
-	<string name="settings_account_username">用户名</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">密码</string>
-	<string name="settings_account_server">服务器</string>
-	<string name="settings_account_port">端口</string>
-	<string name="settings_advanced_service_behaviour">服务器行为</string>
-	<string name="settings_advanced_sum">高级用户设置</string>
-	<string name="settings_xmpp_server">地址</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">端口</string>
-	<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
-	<string name="settings_reco_delay">重连延时</string>
-	<string name="comments_xmpp_port">默认端口:5222</string>
-	<string name="settings_proxy_sum">代理设置</string>
-	<string name="settings_proxy_use">使用代理连接</string>
-	<string name="settings_proxy_type_prompt">选择代理类型</string>
-	<string name="settings_proxy_server">服务器</string>
-	<string name="settings_proxy_port">端口</string>
-	<string name="comments_proxy_port">默认端口:1080</string>
-	<string name="settings_proxy_username">用户名</string>
-	<string name="settings_proxy_password">密码</string>
-	<string name="away_chk_title">启用自动离开</string>
-	<string name="away_chk_sum">当屏幕关闭是将状态改为离开</string>
-	<string name="away_message_title">离开留言</string>
-	<string name="away_message_sum">将会显示的离开留言</string>
-	<string name="away_message_hint">我现在不在,我的手机屏幕关闭了</string>
-	<string name="notification_preferences">通知设置</string>
-	<string name="notification_enable_vibrate_title">开启震动</string>
-	<string name="notification_enable_vibrate_sum">开启来信时的震动提示</string>
-	<string name="notification_snd_title">消息提示音</string>
-	<string name="notification_snd_sum">设定消息提示音</string>
-
-	
-	<!-- Subscription class -->
-	<string name="SubscriptAccept">订阅已经接受</string>
-	<string name="SubscriptError">订阅错误</string>
-	<string name="SubscriptRefused">订阅被拒绝</string>
-	<string name="SubscriptText">%s 想要添加你到他/她的好友列表.批准他/她的请求吗?</string>
-	<string name="SubscriptTitle">批准好友请求?</string>
-
-	<!--  BeemChatManager -->
-	<string name="BeemChatManagerNewMessage">你有一个新消息</string>
-
-	<!--  BeemBroadcastReceiver class -->
-	<string name="BeemBroadcastReceiverDisconnect">BEEM:你的连接已断开</string>
-
-	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s刚将你添加到他/她的好友列表.</string>
-	<string name="AcceptContactRequestFrom">批准%s联系你</string>
-
-	<!-- Activities -->
-	<string name="login_tag">Beem - 登录中</string>
-	<string name="edit_settings_name">Beem - 设置</string>
-	<string name="edit_settings_tag">Beem - 编制设置</string>
-	<string name="create_account_name">Beem - 创建新账号 </string>
-	<string name="create_account_tag">Beem - 创建新账号中</string>
-	<string name="contact_list_name">Beem - 联系人</string>
-	<string name="contact_list_tag">Beem - 联系人列表</string>
-	<string name="user_info_name">Beem - 用户信息</string>
-
-	<!-- Buttons -->
-	<string name="button_create_account">创建这个账户</string>
-	<string name="button_create_login_account">创建并使用这个账户</string>
-
-	<!-- LogAs Activity -->
-	<string name="login_username">用户名</string>
-	<string name="login_password">密码</string>
-	<string name="login_error_dialog_title">登录 - 错误</string>
-	<string name="login_close_dialog_button">关闭</string>
-	<string name="login_menu_create_account">创建一个账号</string>
-	<string name="login_menu_settings">设置</string>
-	<string name="login_menu_about">关于</string>
-	<string name="login_about_title">Beem %s - 关于</string>
-	<string name="login_about_msg">
-		Beem是一个欧洲理工学院的创新项目.访问我们的网站
-		http://www.beem-project.com !
-	</string>
-	<string name="login_about_button">关闭</string>
-	<string name="login_settings_button">设置</string>
-	<string name="login_login_button">登录</string>
-	<string name="login_login_progress">连接中,请等待...</string>
-	<string name="login_error_msg">很遗憾,发生一个错误.\n\nE错误
-		详情:\n%s</string>
-	<string name="login_menu_login">登陆</string>
-	<string name="login_no_connectivity">没有可用连接</string>
-	<string name="login_start_msg">菜单设置配置</string>
-
-	<!-- LoginAnim activity -->
-	<string name="loganim_connecting">正在连接 ...</string>
-	<string name="loganim_authenticating">正在验证 ...</string>
-	<string name="loganim_login_success">登陆成功</string>
-	<string name="loganim_login_failed">登陆失败</string>
-
-	<!-- EditSettings Activity -->
-	<string name="settings_menu_create_account">创建一个账号</string>
-	<string name="settings_menu_privacy_lists">管理隐私列表</string>
-	<string name="settings_saved_ok">设置已成功保存</string>
-
-
-
-	<!-- EditSettings Activity Categories -->
-	<string name="general_preferences">通用选项</string>
-	<string name="user_preferences">用户设置 (必须)</string>
-	<string name="user_preferences_advanced">高级用户设置(可选)</string>
-	<string name="network_preferences">网络选项</string>
-	<string name="proxy_proxy_settings">代理选项</string>
-	<string name="proxy_user_settings">代理选项</string>
-
-	<!-- EditSettings Activity Tabs -->
-	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
-	<string name="settings_tab_label_account">帐户</string>
-	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
-	<string name="settings_tab_label_xmpp">XMPP</string>
-	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
-	<string name="settings_tab_label_proxy">代理</string>
-
-
-	<!-- wizard activities -->
-	<string name="account_wizard_text1"><b>欢迎使用BEEM.</b>\n\n您还没有设定XMPP (Jabber)账户.请选择下面的选项。\n请选择下面的选项:</string>
-	<string name="account_wizard_configure_text"><b>请输入您已有账号的信息</b></string>
-	<string name="account_wizard_configure_account">我想使用我已有的账号</string>
-	<string name="account_wizard_create_account">我想创建一个新账号</string>
-
-	<!-- Create an account Activity -->
-	<string name="create_account_instr_dialog_title">创建新账号 - 向导</string>
-	<string name="create_account_err_dialog_title">创建新账号 - 错误</string>
-	<string name="create_account_err_dialog_settings_button">修改设置</string>
-	<string name="create_account_close_dialog_button">关闭</string>
-	<string name="create_account_successfull_after">账号%s已成功创建</string>
-	<string name="create_account_err_username">错误的Jabber ID</string>
-	<string name="create_account_err_passwords">密码不匹配。</string>
-	<string name="create_account_username">用户名</string>
-	<string name="create_account_password">密码</string>
-	<string name="create_account_confirm_password">确认密码</string>
-
-	<!-- ContactList Activity  -->
-	<string name="contact_list_menu_add_contact">添加联系人</string>
-	<string name="contact_list_menu_status">更改状态</string>
-	<string name="contact_list_menu_settings">设置</string>
-	<string name="contact_list_menu_disconnect">断开连接</string>
-	<string name="contact_list_all_contact">所有联系人</string>
-	<string name="contact_list_no_group">没有组</string>
-
-	<!-- UserInfo dialog -->
-	<string name="userinfo_label_alias">别名</string>
-	<string name="userinfo_label_chg_group">管理组</string>
-	<string name="userinfo_label_re_subscription">重新发送邀请</string>
-	<string name="userinfo_label_block">阻止</string>
-	<string name="userinfo_label_delete">删除</string>
-	<string name="userinfo_resend">重新发送订阅</string>
-	<string name="userinfo_sure2delete">确定删除该联系人?
-	</string>
-	<string name="userinfo_yes">是</string>
-	<string name="userinfo_no">否</string>
-	<string name="userinfo_sureresend">确定要重新发送邀请吗?</string>
-
-	<string name="chat_name">Beem - 聊天</string>
-	<string name="chat_input_default_value">输入信息</string>
-	<string name="chat_self">我</string>
-	<string name="chat_error">错误</string>
-	<string name="chat_send_message">发送</string>
-	<string name="chat_menu_contacts_list">联系人列表</string>
-	<string name="chat_menu_change_chat">切换聊天窗口</string>
-	<string name="chat_dialog_change_chat_title">打开聊天窗口</string>
-	<string name="chat_menu_close_chat">关闭聊天窗口</string>
-	<string name="chat_no_more_chats">没有活动的聊天窗口</string>
-	<string name="chat_state_composing">正在输入信息</string>
-	<string name="chat_state_gone">已经离开了会话</string>
-	<string name="chat_state_active">关注会话</string>
-	<string name="chat_state_inactive">正在做其他事情</string>
-
-	<string name="contact_status_msg_available">我有空</string>
-	<string name="contact_status_msg_available_chat">我有空聊天</string>
-	<string name="contact_status_msg_dnd">请勿打扰</string>
-	<string name="contact_status_msg_away">离开</string>
-	<string name="contact_status_msg_xa">没有空</string>
-	<string name="contact_status_msg_offline">连接已断开</string>
-
-	<string name="privacy_list_name">Beem - 管理我的隐私列表</string>
-	<string name="privacy_list_no_data">没有隐私列表</string>
-	<string name="privacy_list_menu_create">创建隐私列表</string>
-	<string name="privacy_list_create_dialog_title">创建隐私列表</string>
-	<string name="privacy_list_create_dialog_list_name_label">标题</string>
-	<string name="privacy_list_create_dialog_create_button">创建</string>
-	<string name="privacy_list_select_dialog_buddies">好友</string>
-	<string name="privacy_list_select_dialog_groups">组</string>
-	<string name="privacy_list_select_dialog_delete">删除</string>
-	<string name="privacy_list_delete_dialog_msg">确定要删除 \'%s\'隐私列表吗 ?</string>
-	<string name="privacy_list_delete_dialog_yes">是</string>
-	<string name="privacy_list_delete_dialog_no">否</string>
-
-	<string name="UpdateButton">更新</string>
-	
-	<!-- Error messages -->
-	
-	<string name="error_login_authentication">验证时发生错误,用户名或者密码错误.</string>
-	
-	<string name="interna_server_error">远程服务器错误</string>
-	<string name="bad_request">bad-request</string>
-	<string name="forbidden">被拒绝</string>
-	<string name="item_not_found">item-not-found</string>
-	<string name="conflict">冲突</string>
-	<string name="feature_not_implemented">feature-not-implemented</string>
-	<string name="gone">离开</string>
-	<string name="jid_malformed">jid-malformed</string>
-	<string name="no_acceptable">no-acceptable</string>
-	<string name="not_allowed">not-allowed</string>
-	<string name="not_authorized">not-authorized</string>
-	<string name="payment_required">payment-required</string>
-	<string name="recipient_unavailable">recipient-unavailable</string>
-	<string name="redirect">redirect</string>
-	<string name="registration_required">registration-required</string>
-	<string name="remote_server_not_found">未发现远程服务器</string>
-	<string name="remote_server_timeout">远程服务器未响应</string>
-	<string name="remote_server_error">远程服务器错误</string>
-	<string name="resource_constraint">resource-constraint</string>
-	<string name="service_unavailable">service-unavailable</string>
-	<string name="subscription_required">subscription-required</string>
-	<string name="undefined_condition">undefined-condition</string>
-	<string name="unexpected_condition">unexpected-condition</string>
-	<string name="request_timeout">request-timeout</string>
-</resources>
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">确定</string>
+<string name="ClearButton">清除</string>
+<string name="CancelButton">取消</string>
+<string name="AcceptButton">认证</string>
+<string name="RefuseButton">拒绝</string>
+<string name="JabberID">Jabber账号 </string>
+<string name="Password">密码</string>
+<string name="Continue">继续</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">手动设置</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber账号 </string>
+
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">连接中...</string>
+
+<!--  BeemService class -->
+<string name="BeemServiceDescription">使用Beem服务</string>
+<string name="BeemServiceCreated">Beem服务已创建</string>
+<string name="BeemServiceDestroyed">Beem服务已取消</string>
+
+<!--  ContactDialog class -->
+<string name="CDChat">聊天</string>
+<string name="CDCall">呼叫</string>
+<string name="CDInfos">用户管理</string>
+
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - 添加连接</string>
+
+<string name="AddCLogin">用户名</string>
+<string name="AddCAlias">别名</string>
+<string name="AddCGroup">组</string>
+<string name="AddCOkButton">添加</string>
+<string name="AddCContactAdded">联系人已成功添加</string>
+<string name="AddCContactAddedError">联系人添加错误</string>
+<string name="AddCContactAddedLoginError">登录错误</string>
+<string name="AddCBadForm">格式错误</string>
+<string name="AddCContactAlready">联系人已存在</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - 改变我的状态</string>
+<string name="ChangeStatusType">我的状态</string>
+<string name="ChangeStatusMessage">我的个人消息</string>
+<string name="OpenContactList">打开联系人列表</string>
+
+<string name="MenuAddContact">添加心联系人</string>
+<string name="MenuAccountAbout">Beem项目</string>
+<string name="MenuAccountCreate">创建账号</string>
+<string name="MenuConnection">编辑账号</string>
+<string name="ChangeStatusOk">更新状态</string>
+<string name="ChangeStatusNoChange">没有东西需要改变</string>
+
+<!-- Settings class -->
+<string name="SettingsText">修改用户名</string>
+<string name="SettingsPassword">修改密码</string>
+<string name="SettingsProxy">代理</string>
+<string name="SettingsProxyProxy">使用代理服务器</string>
+<string name="SettingsProxySummary">通过代理服务器登录</string>
+<string name="SettingsProxyType">协议</string>
+<string name="SettingsProxyTypeSummary">选择代理类型</string>
+<string name="SettingsProxyServer">修改代理服务器地址</string>
+<string name="SettingsProxyPort">修改地理服务器端口</string>
+<string name="SettingsProxyUser">可选,允许在代理服务器上注册</string>
+<string name="SettingsProxyPassword">可选,允许在代理服务器上注册</string>
+<string name="SettingsAdvanced">高级</string>
+<string name="SettingsAdvancedOptions">特定服务器选项</string>
+<string name="SettingsAdvancedRecoDelay">修改重连延时</string>
+<string name="SettingsAdvancedSpecOpt">勾选此选项以连接到特定的服务器.</string>
+<string name="SettingsAdvancedAddOpt">编辑服务器地址</string>
+<string name="SettingsAdvancedPortOpt">编辑服务器端口</string>
+<string name="SettingsResourceTitle">资源</string>
+<string name="SettingsPriorityTitle">优先级</string>
+<string name="SettingsResourceSummary">设定客户端XMPP资源</string>
+<string name="SettingsPrioritySummary">设定客户端优先级</string>
+<string name="contact_list_preferences">好友列表</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">隐藏组</string>
+<string name="CLP_hide_groups_sum">勾选此选项隐藏组</string>
+<string name="CLP_hidden_contact">隐藏好友</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">用户名</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">密码</string>
+<string name="settings_account_server">服务器</string>
+<string name="settings_account_port">端口</string>
+<string name="settings_advanced_service_behaviour">服务器行为</string>
+<string name="settings_advanced_sum">高级用户设置</string>
+<string name="settings_xmpp_server">地址</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">端口</string>
+<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
+<string name="settings_reco_delay">重连延时</string>
+<string name="comments_xmpp_port">默认端口:5222</string>
+<string name="settings_proxy_sum">代理设置</string>
+<string name="settings_proxy_use">使用代理连接</string>
+<string name="settings_proxy_type_prompt">选择代理类型</string>
+<string name="settings_proxy_server">服务器</string>
+<string name="settings_proxy_port">端口</string>
+<string name="comments_proxy_port">默认端口:1080</string>
+<string name="settings_proxy_username">用户名</string>
+<string name="settings_proxy_password">密码</string>
+<string name="away_chk_title">启用自动离开</string>
+<string name="away_chk_sum">当屏幕关闭是将状态改为离开</string>
+<string name="away_message_title">离开留言</string>
+<string name="away_message_sum">将会显示的离开留言</string>
+<string name="away_message_hint">我现在不在,我的手机屏幕关闭了</string>
+<string name="notification_preferences">通知设置</string>
+<string name="notification_enable_vibrate_title">允许振动</string>
+<string name="notification_enable_vibrate_sum">有消息来时振动</string>
+<string name="notification_snd_title">消息提示音</string>
+<string name="notification_snd_sum">设定消息提示音</string>
+<string name="settings_chat_compact">聊天协议</string>
+<string name="settings_chat_compact_sum">设定聊天协议</string>
+<string name="history">历史记录</string>
+<string name="history_mount">你需要有已插入设备并可以写入的SD存储来允许历史记录</string>
+<string name="history_on_off">允许历史记录</string>
+<string name="settings_smack_debug">允许XMPPP调试</string>
+<string name="settings_full_jid_login">使用我完整的Jid作为用户名</string>
+<string name="settings_full_jid_login_sum">某些例如Google Talk这样的服务器需要</string>
+
+<!-- Subscription class -->
+<string name="SubscriptAccept">订阅已经接受</string>
+<string name="SubscriptError">订阅错误</string>
+<string name="SubscriptRefused">订阅被拒绝</string>
+<string name="SubscriptText">%s 想要添加你到他/她的好友列表.批准他/她的请求吗?</string>
+<string name="SubscriptTitle">批准好友请求?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">你有一个新消息</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM:你的连接已断开</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s刚将你添加到他/她的好友列表.</string>
+<string name="AcceptContactRequestFrom">批准%s联系你</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - 登录中</string>
+<string name="edit_settings_name">Beem - 设置</string>
+<string name="edit_settings_tag">Beem - 编制设置</string>
+<string name="create_account_name">Beem - 创建新账号 </string>
+<string name="create_account_tag">Beem - 创建新账号中</string>
+<string name="contact_list_name">Beem - 联系人</string>
+<string name="contact_list_tag">Beem - 联系人列表</string>
+<string name="user_info_name">Beem - 用户信息</string>
+
+<!-- Buttons -->
+<string name="button_create_account">创建这个账户</string>
+<string name="button_create_login_account">创建并使用这个账户</string>
+
+<!-- LogAs Activity -->
+<string name="login_username">用户名</string>
+<string name="login_password">密码</string>
+<string name="login_error_dialog_title">登录 - 错误</string>
+<string name="login_close_dialog_button">关闭</string>
+<string name="login_menu_create_account">创建一个账号</string>
+<string name="login_menu_settings">设置</string>
+<string name="login_menu_about">关于</string>
+<string name="login_about_title">Beem %s - 关于</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">关闭</string>
+<string name="login_settings_button">设置</string>
+<string name="login_login_button">登录</string>
+<string name="login_login_progress">连接中,请等待...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">登陆</string>
+<string name="login_no_connectivity">没有可用连接</string>
+<string name="login_start_msg">菜单设置配置</string>
+
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">连接中...</string>
+<string name="loganim_authenticating">验证中...</string>
+<string name="loganim_login_success">登录成功</string>
+<string name="loganim_login_failed">登录失败</string>
+
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">创建一个账号</string>
+<string name="settings_menu_privacy_lists">管理隐私列表</string>
+<string name="settings_saved_ok">设置已成功保存</string>
+
+
+
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">通用选项</string>
+<string name="user_preferences">用户设置 (必须)</string>
+<string name="user_preferences_advanced">高级用户设置(可选)</string>
+<string name="network_preferences">网络选项</string>
+<string name="proxy_proxy_settings">代理选项</string>
+<string name="proxy_user_settings">代理选项</string>
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">编辑账户设定</string>
+<string name="settings_tab_label_account">帐户</string>
+<string name="settings_tab_tag_xmpp">编辑XMPP设置</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">编辑代理设置</string>
+<string name="settings_tab_label_proxy">代理</string>
+
+
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>欢迎使用BEEM.</b>\n\n您还没有设定XMPP (Jabber)账户.请选择下面的选项。\n请选择下面的选项:</string>
+<string name="account_wizard_configure_text"><b>请输入您已有账号的信息</b></string>
+<string name="account_wizard_configure_account">我想使用我已有的账号</string>
+<string name="account_wizard_create_account">我想创建一个新账号</string>
+
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">创建新账号 - 向导</string>
+<string name="create_account_err_dialog_title">创建新账号 - 错误</string>
+<string name="create_account_err_dialog_settings_button">修改设置</string>
+<string name="create_account_close_dialog_button">关闭</string>
+<string name="create_account_successfull_after">账号%s已成功创建</string>
+<string name="create_account_err_username">错误的Jabber ID</string>
+<string name="create_account_err_passwords">密码不匹配。</string>
+<string name="create_account_username">用户名</string>
+<string name="create_account_password">密码</string>
+<string name="create_account_confirm_password">确认密码</string>
+
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">添加联系人</string>
+<string name="contact_list_menu_status">改变状态</string>
+<string name="contact_list_menu_settings">设置</string>
+<string name="contact_list_menu_disconnect">断开连接</string>
+<string name="contact_list_all_contact">所有联系人</string>
+<string name="contact_list_no_group">没有组</string>
+
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">别名</string>
+<string name="userinfo_label_chg_group">管理组</string>
+<string name="userinfo_label_re_subscription">重新发送邀请</string>
+<string name="userinfo_label_block">阻止</string>
+<string name="userinfo_label_delete">删除</string>
+<string name="userinfo_resend">重新发送订阅</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+</string>
+<string name="userinfo_yes">是</string>
+<string name="userinfo_no">否</string>
+<string name="userinfo_sureresend">确定要重新发送邀请吗?</string>
+
+<string name="chat_name">Beem - 聊天</string>
+<string name="chat_input_default_value">输入信息</string>
+<string name="chat_self">我</string>
+<string name="chat_error">错误</string>
+<string name="chat_send_message">发送</string>
+<string name="chat_menu_contacts_list">联系人列表</string>
+<string name="chat_menu_change_chat">切换聊天窗口</string>
+<string name="chat_dialog_change_chat_title">打开聊天窗口</string>
+<string name="chat_menu_close_chat">关闭聊天窗口</string>
+<string name="chat_no_more_chats">没有活动的聊天窗口</string>
+<string name="chat_state_composing">正在输入信息</string>
+<string name="chat_state_gone">已经离开了会话</string>
+<string name="chat_state_active">关注会话</string>
+<string name="chat_state_inactive">正在做其他事情</string>
+
+<string name="contact_status_msg_available">我有空</string>
+<string name="contact_status_msg_available_chat">我有空聊天</string>
+<string name="contact_status_msg_dnd">请勿打扰</string>
+<string name="contact_status_msg_away">离开</string>
+<string name="contact_status_msg_xa">没有空</string>
+<string name="contact_status_msg_offline">连接已断开</string>
+
+<string name="privacy_list_name">Beem - 管理我的隐私列表</string>
+<string name="privacy_list_no_data">没有隐私列表</string>
+<string name="privacy_list_menu_create">创建隐私列表</string>
+<string name="privacy_list_create_dialog_title">创建隐私列表</string>
+<string name="privacy_list_create_dialog_list_name_label">标题</string>
+<string name="privacy_list_create_dialog_create_button">创建</string>
+<string name="privacy_list_select_dialog_buddies">好友</string>
+<string name="privacy_list_select_dialog_groups">组</string>
+<string name="privacy_list_select_dialog_delete">删除</string>
+<string name="privacy_list_delete_dialog_msg">确定要删除 \'%s\'隐私列表吗 ?</string>
+<string name="privacy_list_delete_dialog_yes">是</string>
+<string name="privacy_list_delete_dialog_no">否</string>
+
+<string name="UpdateButton">更新</string>
+
+<!-- Error messages -->
+
+<string name="error_login_authentication">验证时发生错误,用户名或者密码错误.</string>
+
+<string name="interna_server_error">远程服务器错误</string>
+<string name="bad_request">错误的请求</string>
+<string name="forbidden">被拒绝</string>
+<string name="item_not_found">项目未找到</string>
+<string name="conflict">冲突</string>
+<string name="feature_not_implemented">功能未实现</string>
+<string name="gone">离开</string>
+<string name="jid_malformed">Jid畸形</string>
+<string name="no_acceptable">无法接受</string>
+<string name="not_allowed">未被允许</string>
+<string name="not_authorized">未验证</string>
+<string name="payment_required">需要付费</string>
+<string name="recipient_unavailable">接收方无响应</string>
+<string name="redirect">重定向</string>
+<string name="registration_required">需要注册</string>
+<string name="remote_server_not_found">未发现远程服务器</string>
+<string name="remote_server_timeout">远程服务器未响应</string>
+<string name="remote_server_error">远程服务器错误</string>
+<string name="resource_constraint">资源限制</string>
+<string name="service_unavailable">暂时无法提供服务</string>
+<string name="subscription_required">需要订阅</string>
+<string name="undefined_condition">未定义的情况</string>
+<string name="unexpected_condition">例外情况</string>
+<string name="request_timeout">请求超时</string>
+</resources>
--- a/res/values-zh-rTW/strings.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values-zh-rTW/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -1,306 +1,317 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-	<!-- Generic terms -->
-	<string name="app_name">Beem</string>
-	<string name="OkButton">確定</string>
-	<string name="ClearButton">清除</string>
-	<string name="CancelButton">取消</string>
-	<string name="AcceptButton">認證</string>
-	<string name="RefuseButton">拒絕</string>
-	<string name="JabberID">Jabber賬號 </string>
-	<string name="Password">密碼</string>
-
-	<!--  Beem class -->
-	<string name="BeemJabberID">Jabber賬號 </string>
-
-	<!--  BeemApplication class -->
-	<string name="BeemApplicationConnect">連接中...</string>
-
-	<!--  BeemService class -->
-	<string name="BeemServiceDescription">使用Beem服務</string>
-	<string name="BeemServiceCreated">Beem服務已建立</string>
-	<string name="BeemServiceDestroyed">Beem服務已取消</string>
-
-	<!--  ContactDialog class -->
-	<string name="CDChat">聊天</string>
-	<string name="CDCall">呼叫</string>
-	<string name="CDInfos">使用者管理</string>
-
-	<!-- AddContact class -->
-	<string name="AddCActTitle">Beem - 新增連接</string>
-
-	<string name="AddCLogin">使用者名</string>
-	<string name="AddCAlias">別名</string>
-	<string name="AddCGroup">組</string>
-	<string name="AddCOkButton">新增</string>
-	<string name="AddCContactAdded">聯繫人已成功新增</string>
-	<string name="AddCContactAddedError">聯繫人新增錯誤</string>
-	<string name="AddCContactAddedLoginError">登入錯誤</string>
-	<string name="AddCBadForm">格式錯誤</string>
-	<string name="AddCContactAlready">聯繫人已存在</string>
-
-	<!--  ChangeStatus class -->
-	<string name="ChangeStatusActTitle">Beem - 改變我的狀態</string>
-	<string name="ChangeStatusType">我的狀態</string>
-	<string name="ChangeStatusMessage">我的個人訊息</string>
-	<string name="OpenContactList">開啟聯繫人清單</string>
-	
-	<string name="MenuAddContact">新增心聯繫人</string>
-	<string name="MenuAccountAbout">Beem項目</string>
-	<string name="MenuAccountCreate">建立賬號</string>
-	<string name="MenuConnection">編輯賬號</string>
-	<string name="ChangeStatusOk">更新狀態</string>
-	<string name="ChangeStatusNoChange">沒有東西需要改變</string>
-
-	<!-- Settings class -->
-	<string name="SettingsText">修改使用者名</string>
-	<string name="SettingsPassword">修改密碼</string>
-	<string name="SettingsProxy">代理</string>
-	<string name="SettingsProxyProxy">使用代理伺服器</string>
-	<string name="SettingsProxySummary">通過代理伺服器登入</string>
-	<string name="SettingsProxyType">協議</string>
-	<string name="SettingsProxyTypeSummary">選取代理類型</string>
-	<string name="SettingsProxyServer">修改代理伺服器位址</string>
-	<string name="SettingsProxyPort">修改地理伺服器通訊埠</string>
-	<string name="SettingsProxyUser">可選,允許在代理伺服器上註冊</string>
-	<string name="SettingsProxyPassword">可選,允許在代理伺服器上註冊</string>
-	<string name="SettingsAdvanced">進階</string>
-	<string name="SettingsAdvancedOptions">特定伺服器選項</string>
-	<string name="SettingsAdvancedRecoDelay">修改重連延時</string>
-	<string name="SettingsAdvancedSpecOpt">勾選此選項以連接到特定的伺服器.</string>
-	<string name="SettingsAdvancedAddOpt">編輯伺服器位址</string>
-	<string name="SettingsAdvancedPortOpt">編輯伺服器通訊埠</string>
-	<string name="SettingsResourceTitle">資源</string>
-	<string name="SettingsPriorityTitle">優先級</string>
-	<string name="SettingsResourceSummary">設定用戶端XMPP資源</string>
-	<string name="SettingsPrioritySummary">設定用戶端優先級</string>
-	<string name="contact_list_preferences">好友清單</string>
-	<string name="contact_list_preferences_sum">好友清單顯示選項
-	</string>
-	<string name="CLP_hide_groups">隱藏組</string>	
-	<string name="CLP_hide_groups_sum">勾選此選項隱藏組</string>
-	<string name="CLP_hidden_contact">隱藏好友</string>
-	<string name="CLP_hidden_contact_sum">勾選此選項隱藏未登入好友
-	</string>
-	<string name="settings_account_username">使用者名</string>
-	<string name="login_username_info_default">beem@beem-project.com</string>
-	<string name="settings_account_password">密碼</string>
-	<string name="settings_account_server">伺服器</string>
-	<string name="settings_account_port">通訊埠</string>
-	<string name="settings_advanced_service_behaviour">伺服器行為</string>
-	<string name="settings_advanced_sum">進階使用者設定</string>
-	<string name="settings_xmpp_server">位址</string>
-	<string name="comments_xmpp_server">example.com</string>
-	<string name="settings_xmpp_port">通訊埠</string>
-	<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
-	<string name="settings_reco_delay">重連延時</string>
-	<string name="comments_xmpp_port">預設通訊埠:5222</string>
-	<string name="settings_proxy_sum">代理設定</string>
-	<string name="settings_proxy_use">使用代理連接</string>
-	<string name="settings_proxy_type_prompt">選取代理類型</string>
-	<string name="settings_proxy_server">伺服器</string>
-	<string name="settings_proxy_port">通訊埠</string>
-	<string name="comments_proxy_port">預設通訊埠:1080</string>
-	<string name="settings_proxy_username">使用者名</string>
-	<string name="settings_proxy_password">密碼</string>
-	<string name="away_chk_title">啟用自動離開</string>
-	<string name="away_chk_sum">當屏幕關閉是將狀態改為離開</string>
-	<string name="away_message_title">離開留言</string>
-	<string name="away_message_sum">將會顯示的離開留言</string>
-	<string name="away_message_hint">我現在不在,我的手機屏幕關閉了</string>
-	<string name="notification_preferences">通知設定</string>
-	<string name="notification_enable_vibrate_title">開啟震動</string>
-	<string name="notification_enable_vibrate_sum">開啟來信時的震動提示</string>
-	<string name="notification_snd_title">訊息提示音</string>
-	<string name="notification_snd_sum">設定訊息提示音</string>
-
-	
-	<!-- Subscription class -->
-	<string name="SubscriptAccept">訂閱已經接受</string>
-	<string name="SubscriptError">訂閱錯誤</string>
-	<string name="SubscriptRefused">訂閱被拒絕</string>
-	<string name="SubscriptText">%s 想要新增你到他/她的好友清單.批准他/她的要求嗎?</string>
-	<string name="SubscriptTitle">批准好友要求?</string>
-
-	<!--  BeemChatManager -->
-	<string name="BeemChatManagerNewMessage">你有一個新訊息</string>
-
-	<!--  BeemBroadcastReceiver class -->
-	<string name="BeemBroadcastReceiverDisconnect">BEEM:你的連接已中斷</string>
-
-	<!--  XmppConnectionAdapter class -->
-	<string name="AcceptContactRequest">%s剛將你新增到他/她的好友清單.</string>
-	<string name="AcceptContactRequestFrom">批准%s聯繫你</string>
-
-	<!-- Activities -->
-	<string name="login_tag">Beem - 登入中</string>
-	<string name="edit_settings_name">Beem - 設定</string>
-	<string name="edit_settings_tag">Beem - 編製設定</string>
-	<string name="create_account_name">Beem - 建立新賬號 </string>
-	<string name="create_account_tag">Beem - 建立新賬號中</string>
-	<string name="contact_list_name">Beem - 聯繫人</string>
-	<string name="contact_list_tag">Beem - 聯繫人清單</string>
-	<string name="user_info_name">Beem - 使用者訊息</string>
-
-	<!-- Buttons -->
-	<string name="button_create_account">建立這個賬戶</string>
-	<string name="button_create_login_account">建立並使用這個賬戶</string>
-
-	<!-- LogAs Activity -->
-	<string name="login_username">使用者名</string>
-	<string name="login_password">密碼</string>
-	<string name="login_error_dialog_title">登入 - 錯誤</string>
-	<string name="login_close_dialog_button">關閉</string>
-	<string name="login_menu_create_account">建立一個賬號</string>
-	<string name="login_menu_settings">設定</string>
-	<string name="login_menu_about">關於</string>
-	<string name="login_about_title">Beem %s - 關於</string>
-	<string name="login_about_msg">
-		Beem是一個歐洲理工學院的創新項目.存取我們的網站
-		http://www.beem-project.com !
-	</string>
-	<string name="login_about_button">關閉</string>
-	<string name="login_settings_button">設定</string>
-	<string name="login_login_button">登入</string>
-	<string name="login_login_progress">連接中,請等待...</string>
-	<string name="login_error_msg">很遺憾,發生一個錯誤.\n\nE錯誤
-		詳情:\n%s</string>
-	<string name="login_menu_login">登陸</string>
-	<string name="login_no_connectivity">沒有可用連接</string>
-	<string name="login_start_msg">選單設定設定</string>
-
-	<!-- LoginAnim activity -->
-	<string name="loganim_connecting">正在連接 ...</string>
-	<string name="loganim_authenticating">正在驗證 ...</string>
-	<string name="loganim_login_success">登陸成功</string>
-	<string name="loganim_login_failed">登陸失敗</string>
-
-	<!-- EditSettings Activity -->
-	<string name="settings_menu_create_account">建立一個賬號</string>
-	<string name="settings_menu_privacy_lists">管理隱私清單</string>
-	<string name="settings_saved_ok">設定已成功儲存</string>
-
-
-
-	<!-- EditSettings Activity Categories -->
-	<string name="general_preferences">通用選項</string>
-	<string name="user_preferences">使用者設定 (必須)</string>
-	<string name="user_preferences_advanced">進階使用者設定(可選)</string>
-	<string name="network_preferences">網路選項</string>
-	<string name="proxy_proxy_settings">代理選項</string>
-	<string name="proxy_user_settings">代理選項</string>
-
-	<!-- EditSettings Activity Tabs -->
-	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
-	<string name="settings_tab_label_account">帳戶</string>
-	<string name="settings_tab_tag_xmpp">edit_settings_tab_xmpp</string>
-	<string name="settings_tab_label_xmpp">XMPP</string>
-	<string name="settings_tab_tag_proxy">edit_settings_tab_proxy</string>
-	<string name="settings_tab_label_proxy">代理</string>
-
-
-	<!-- wizard activities -->
-	<string name="account_wizard_text1"><b>歡迎使用BEEM.</b>\n\n您還沒有設定XMPP (Jabber)賬戶.請選取下面的選項。\n請選取下面的選項:</string>
-	<string name="account_wizard_configure_text"><b>請輸入您已有賬號的訊息</b></string>
-	<string name="account_wizard_configure_account">我想使用我已有的賬號</string>
-	<string name="account_wizard_create_account">我想建立一個新賬號</string>
-
-	<!-- Create an account Activity -->
-	<string name="create_account_instr_dialog_title">建立新賬號 - 嚮導</string>
-	<string name="create_account_err_dialog_title">建立新賬號 - 錯誤</string>
-	<string name="create_account_err_dialog_settings_button">修改設定</string>
-	<string name="create_account_close_dialog_button">關閉</string>
-	<string name="create_account_successfull_after">賬號%s已成功建立</string>
-	<string name="create_account_err_username">錯誤的Jabber ID</string>
-	<string name="create_account_err_passwords">密碼不符合。</string>
-	<string name="create_account_username">使用者名</string>
-	<string name="create_account_password">密碼</string>
-	<string name="create_account_confirm_password">確認密碼</string>
-
-	<!-- ContactList Activity  -->
-	<string name="contact_list_menu_add_contact">新增聯繫人</string>
-	<string name="contact_list_menu_status">變更狀態</string>
-	<string name="contact_list_menu_settings">設定</string>
-	<string name="contact_list_menu_disconnect">中斷連接</string>
-	<string name="contact_list_all_contact">所有聯繫人</string>
-	<string name="contact_list_no_group">沒有組</string>
-
-	<!-- UserInfo dialog -->
-	<string name="userinfo_label_alias">別名</string>
-	<string name="userinfo_label_chg_group">管理組</string>
-	<string name="userinfo_label_re_subscription">重新傳送邀請</string>
-	<string name="userinfo_label_block">阻止</string>
-	<string name="userinfo_label_delete">刪除</string>
-	<string name="userinfo_resend">重新傳送訂閱</string>
-	<string name="userinfo_sure2delete">確定刪除該聯繫人?
-	</string>
-	<string name="userinfo_yes">是</string>
-	<string name="userinfo_no">否</string>
-	<string name="userinfo_sureresend">確定要重新傳送邀請嗎?</string>
-
-	<string name="chat_name">Beem - 聊天</string>
-	<string name="chat_input_default_value">輸入訊息</string>
-	<string name="chat_self">我</string>
-	<string name="chat_error">錯誤</string>
-	<string name="chat_send_message">傳送</string>
-	<string name="chat_menu_contacts_list">聯繫人清單</string>
-	<string name="chat_menu_change_chat">切換聊天視窗</string>
-	<string name="chat_dialog_change_chat_title">開啟聊天視窗</string>
-	<string name="chat_menu_close_chat">關閉聊天視窗</string>
-	<string name="chat_no_more_chats">沒有活動的聊天視窗</string>
-	<string name="chat_state_composing">正在輸入訊息</string>
-	<string name="chat_state_gone">已經離開了會話</string>
-	<string name="chat_state_active">關注會話</string>
-	<string name="chat_state_inactive">正在做其他事情</string>
-
-	<string name="contact_status_msg_available">我有空</string>
-	<string name="contact_status_msg_available_chat">我有空聊天</string>
-	<string name="contact_status_msg_dnd">請勿打擾</string>
-	<string name="contact_status_msg_away">離開</string>
-	<string name="contact_status_msg_xa">沒有空</string>
-	<string name="contact_status_msg_offline">連接已中斷</string>
-
-	<string name="privacy_list_name">Beem - 管理我的隱私清單</string>
-	<string name="privacy_list_no_data">沒有隱私清單</string>
-	<string name="privacy_list_menu_create">建立隱私清單</string>
-	<string name="privacy_list_create_dialog_title">建立隱私清單</string>
-	<string name="privacy_list_create_dialog_list_name_label">標題</string>
-	<string name="privacy_list_create_dialog_create_button">建立</string>
-	<string name="privacy_list_select_dialog_buddies">好友</string>
-	<string name="privacy_list_select_dialog_groups">組</string>
-	<string name="privacy_list_select_dialog_delete">刪除</string>
-	<string name="privacy_list_delete_dialog_msg">確定要刪除 \'%s\'隱私清單嗎 ?</string>
-	<string name="privacy_list_delete_dialog_yes">是</string>
-	<string name="privacy_list_delete_dialog_no">否</string>
-
-	<string name="UpdateButton">更新</string>
-	
-	<!-- Error messages -->
-	
-	<string name="error_login_authentication">驗證時發生錯誤,使用者名或者密碼錯誤.</string>
-	
-	<string name="interna_server_error">遠端伺服器錯誤</string>
-	<string name="bad_request">bad-request</string>
-	<string name="forbidden">被拒絕</string>
-	<string name="item_not_found">item-not-found</string>
-	<string name="conflict">衝突</string>
-	<string name="feature_not_implemented">feature-not-implemented</string>
-	<string name="gone">離開</string>
-	<string name="jid_malformed">jid-malformed</string>
-	<string name="no_acceptable">no-acceptable</string>
-	<string name="not_allowed">not-allowed</string>
-	<string name="not_authorized">not-authorized</string>
-	<string name="payment_required">payment-required</string>
-	<string name="recipient_unavailable">recipient-unavailable</string>
-	<string name="redirect">redirect</string>
-	<string name="registration_required">registration-required</string>
-	<string name="remote_server_not_found">未發現遠端伺服器</string>
-	<string name="remote_server_timeout">遠端伺服器未響應</string>
-	<string name="remote_server_error">遠端伺服器錯誤</string>
-	<string name="resource_constraint">resource-constraint</string>
-	<string name="service_unavailable">service-unavailable</string>
-	<string name="subscription_required">subscription-required</string>
-	<string name="undefined_condition">undefined-condition</string>
-	<string name="unexpected_condition">unexpected-condition</string>
-	<string name="request_timeout">request-timeout</string>
-</resources>
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+<!-- Generic terms -->
+<string name="app_name">Beem</string>
+<string name="OkButton">确定</string>
+<string name="ClearButton">清除</string>
+<string name="CancelButton">取消</string>
+<string name="AcceptButton">认证</string>
+<string name="RefuseButton">拒绝</string>
+<string name="JabberID">Jabber账号 </string>
+<string name="Password">密码</string>
+<string name="Continue">继续</string>
+
+<!--  AccountConfigure class -->
+<string name="AccountConfigureManualConfiguration">手动设置</string>
+
+<!--  Beem class -->
+<string name="BeemJabberID">Jabber账号 </string>
+
+<!--  BeemApplication class -->
+<string name="BeemApplicationConnect">连接中...</string>
+
+<!--  BeemService class -->
+<string name="BeemServiceDescription">使用Beem服务</string>
+<string name="BeemServiceCreated">Beem服务已创建</string>
+<string name="BeemServiceDestroyed">Beem服务已取消</string>
+
+<!--  ContactDialog class -->
+<string name="CDChat">聊天</string>
+<string name="CDCall">呼叫</string>
+<string name="CDInfos">用户管理</string>
+
+<!-- AddContact class -->
+<string name="AddCActTitle">Beem - 添加连接</string>
+
+<string name="AddCLogin">用户名</string>
+<string name="AddCAlias">别名</string>
+<string name="AddCGroup">组</string>
+<string name="AddCOkButton">添加</string>
+<string name="AddCContactAdded">联系人已成功添加</string>
+<string name="AddCContactAddedError">联系人添加错误</string>
+<string name="AddCContactAddedLoginError">登录错误</string>
+<string name="AddCBadForm">格式错误</string>
+<string name="AddCContactAlready">联系人已存在</string>
+
+<!--  ChangeStatus class -->
+<string name="ChangeStatusActTitle">Beem - 改变我的状态</string>
+<string name="ChangeStatusType">我的状态</string>
+<string name="ChangeStatusMessage">我的个人消息</string>
+<string name="OpenContactList">打开联系人列表</string>
+
+<string name="MenuAddContact">添加心联系人</string>
+<string name="MenuAccountAbout">Beem项目</string>
+<string name="MenuAccountCreate">创建账号</string>
+<string name="MenuConnection">编辑账号</string>
+<string name="ChangeStatusOk">更新状态</string>
+<string name="ChangeStatusNoChange">没有东西需要改变</string>
+
+<!-- Settings class -->
+<string name="SettingsText">修改用户名</string>
+<string name="SettingsPassword">修改密码</string>
+<string name="SettingsProxy">代理</string>
+<string name="SettingsProxyProxy">使用代理服务器</string>
+<string name="SettingsProxySummary">通过代理服务器登录</string>
+<string name="SettingsProxyType">协议</string>
+<string name="SettingsProxyTypeSummary">选择代理类型</string>
+<string name="SettingsProxyServer">修改代理服务器地址</string>
+<string name="SettingsProxyPort">修改地理服务器端口</string>
+<string name="SettingsProxyUser">可选,允许在代理服务器上注册</string>
+<string name="SettingsProxyPassword">可选,允许在代理服务器上注册</string>
+<string name="SettingsAdvanced">高级</string>
+<string name="SettingsAdvancedOptions">特定服务器选项</string>
+<string name="SettingsAdvancedRecoDelay">修改重连延时</string>
+<string name="SettingsAdvancedSpecOpt">勾选此选项以连接到特定的服务器.</string>
+<string name="SettingsAdvancedAddOpt">编辑服务器地址</string>
+<string name="SettingsAdvancedPortOpt">编辑服务器端口</string>
+<string name="SettingsResourceTitle">资源</string>
+<string name="SettingsPriorityTitle">优先级</string>
+<string name="SettingsResourceSummary">设定客户端XMPP资源</string>
+<string name="SettingsPrioritySummary">设定客户端优先级</string>
+<string name="contact_list_preferences">好友列表</string>
+<string name="contact_list_preferences_sum">A set of display options for your buddy list
+</string>
+<string name="CLP_hide_groups">隐藏组</string>
+<string name="CLP_hide_groups_sum">勾选此选项隐藏组</string>
+<string name="CLP_hidden_contact">隐藏好友</string>
+<string name="CLP_hidden_contact_sum">Check this option to hide unconnected buddies
+</string>
+<string name="settings_account_username">用户名</string>
+<string name="login_username_info_default">beem@beem-project.com</string>
+<string name="settings_account_password">密码</string>
+<string name="settings_account_server">服务器</string>
+<string name="settings_account_port">端口</string>
+<string name="settings_advanced_service_behaviour">服务器行为</string>
+<string name="settings_advanced_sum">高级用户设置</string>
+<string name="settings_xmpp_server">地址</string>
+<string name="comments_xmpp_server">example.com</string>
+<string name="settings_xmpp_port">端口</string>
+<string name="settings_xmpp_use_tls">使用SSL/TLS</string>
+<string name="settings_reco_delay">重连延时</string>
+<string name="comments_xmpp_port">默认端口:5222</string>
+<string name="settings_proxy_sum">代理设置</string>
+<string name="settings_proxy_use">使用代理连接</string>
+<string name="settings_proxy_type_prompt">选择代理类型</string>
+<string name="settings_proxy_server">服务器</string>
+<string name="settings_proxy_port">端口</string>
+<string name="comments_proxy_port">默认端口:1080</string>
+<string name="settings_proxy_username">用户名</string>
+<string name="settings_proxy_password">密码</string>
+<string name="away_chk_title">启用自动离开</string>
+<string name="away_chk_sum">当屏幕关闭是将状态改为离开</string>
+<string name="away_message_title">离开留言</string>
+<string name="away_message_sum">将会显示的离开留言</string>
+<string name="away_message_hint">我现在不在,我的手机屏幕关闭了</string>
+<string name="notification_preferences">通知设置</string>
+<string name="notification_enable_vibrate_title">允许振动</string>
+<string name="notification_enable_vibrate_sum">有消息来时振动</string>
+<string name="notification_snd_title">消息提示音</string>
+<string name="notification_snd_sum">设定消息提示音</string>
+<string name="settings_chat_compact">聊天协议</string>
+<string name="settings_chat_compact_sum">设定聊天协议</string>
+<string name="history">历史记录</string>
+<string name="history_mount">你需要有已插入设备并可以写入的SD存储来允许历史记录</string>
+<string name="history_on_off">允许历史记录</string>
+<string name="settings_smack_debug">允许XMPPP调试</string>
+<string name="settings_full_jid_login">使用我完整的Jid作为用户名</string>
+<string name="settings_full_jid_login_sum">某些例如Google Talk这样的服务器需要</string>
+
+<!-- Subscription class -->
+<string name="SubscriptAccept">订阅已经接受</string>
+<string name="SubscriptError">订阅错误</string>
+<string name="SubscriptRefused">订阅被拒绝</string>
+<string name="SubscriptText">%s 想要添加你到他/她的好友列表.批准他/她的请求吗?</string>
+<string name="SubscriptTitle">批准好友请求?</string>
+
+<!--  BeemChatManager -->
+<string name="BeemChatManagerNewMessage">你有一个新消息</string>
+
+<!--  BeemBroadcastReceiver class -->
+<string name="BeemBroadcastReceiverDisconnect">BEEM:你的连接已断开</string>
+
+<!--  XmppConnectionAdapter class -->
+<string name="AcceptContactRequest">%s刚将你添加到他/她的好友列表.</string>
+<string name="AcceptContactRequestFrom">批准%s联系你</string>
+
+<!-- Activities -->
+<string name="login_tag">Beem - 登录中</string>
+<string name="edit_settings_name">Beem - 设置</string>
+<string name="edit_settings_tag">Beem - 编制设置</string>
+<string name="create_account_name">Beem - 创建新账号 </string>
+<string name="create_account_tag">Beem - 创建新账号中</string>
+<string name="contact_list_name">Beem - 联系人</string>
+<string name="contact_list_tag">Beem - 联系人列表</string>
+<string name="user_info_name">Beem - 用户信息</string>
+
+<!-- Buttons -->
+<string name="button_create_account">创建这个账户</string>
+<string name="button_create_login_account">创建并使用这个账户</string>
+
+<!-- LogAs Activity -->
+<string name="login_username">用户名</string>
+<string name="login_password">密码</string>
+<string name="login_error_dialog_title">登录 - 错误</string>
+<string name="login_close_dialog_button">关闭</string>
+<string name="login_menu_create_account">创建一个账号</string>
+<string name="login_menu_settings">设置</string>
+<string name="login_menu_about">关于</string>
+<string name="login_about_title">Beem %s - 关于</string>
+<string name="login_about_msg">
+Beem is an EPITECH Innovative Project. Visit us at
+http://www.beem-project.com !
+</string>
+<string name="login_about_button">关闭</string>
+<string name="login_settings_button">设置</string>
+<string name="login_login_button">登录</string>
+<string name="login_login_progress">连接中,请等待...</string>
+<string name="login_error_msg">Unfortunately, an error occured.\n\nError
+detail:\n%s</string>
+<string name="login_menu_login">登陆</string>
+<string name="login_no_connectivity">没有可用连接</string>
+<string name="login_start_msg">菜单设置配置</string>
+
+<!-- LoginAnim activity -->
+<string name="loganim_connecting">连接中...</string>
+<string name="loganim_authenticating">验证中...</string>
+<string name="loganim_login_success">登录成功</string>
+<string name="loganim_login_failed">登录失败</string>
+
+<!-- EditSettings Activity -->
+<string name="settings_menu_create_account">创建一个账号</string>
+<string name="settings_menu_privacy_lists">管理隐私列表</string>
+<string name="settings_saved_ok">设置已成功保存</string>
+
+
+
+<!-- EditSettings Activity Categories -->
+<string name="general_preferences">通用选项</string>
+<string name="user_preferences">用户设置 (必须)</string>
+<string name="user_preferences_advanced">高级用户设置(可选)</string>
+<string name="network_preferences">网络选项</string>
+<string name="proxy_proxy_settings">代理选项</string>
+<string name="proxy_user_settings">代理选项</string>
+
+<!-- EditSettings Activity Tabs -->
+<string name="settings_tab_tag_account">编辑账户设定</string>
+<string name="settings_tab_label_account">帐户</string>
+<string name="settings_tab_tag_xmpp">编辑XMPP设置</string>
+<string name="settings_tab_label_xmpp">XMPP</string>
+<string name="settings_tab_tag_proxy">编辑代理设置</string>
+<string name="settings_tab_label_proxy">代理</string>
+
+
+<!-- wizard activities -->
+<string name="account_wizard_text1"><b>欢迎使用BEEM.</b>\n\n您还没有设定XMPP (Jabber)账户.请选择下面的选项。\n请选择下面的选项:</string>
+<string name="account_wizard_configure_text"><b>请输入您已有账号的信息</b></string>
+<string name="account_wizard_configure_account">我想使用我已有的账号</string>
+<string name="account_wizard_create_account">我想创建一个新账号</string>
+
+<!-- Create an account Activity -->
+<string name="create_account_instr_dialog_title">创建新账号 - 向导</string>
+<string name="create_account_err_dialog_title">创建新账号 - 错误</string>
+<string name="create_account_err_dialog_settings_button">修改设置</string>
+<string name="create_account_close_dialog_button">关闭</string>
+<string name="create_account_successfull_after">账号%s已成功创建</string>
+<string name="create_account_err_username">错误的Jabber ID</string>
+<string name="create_account_err_passwords">密码不匹配。</string>
+<string name="create_account_username">用户名</string>
+<string name="create_account_password">密码</string>
+<string name="create_account_confirm_password">确认密码</string>
+
+<!-- ContactList Activity  -->
+<string name="contact_list_menu_add_contact">添加联系人</string>
+<string name="contact_list_menu_status">改变状态</string>
+<string name="contact_list_menu_settings">设置</string>
+<string name="contact_list_menu_disconnect">断开连接</string>
+<string name="contact_list_all_contact">所有联系人</string>
+<string name="contact_list_no_group">没有组</string>
+
+<!-- UserInfo dialog -->
+<string name="userinfo_label_alias">别名</string>
+<string name="userinfo_label_chg_group">管理组</string>
+<string name="userinfo_label_re_subscription">重新发送邀请</string>
+<string name="userinfo_label_block">阻止</string>
+<string name="userinfo_label_delete">删除</string>
+<string name="userinfo_resend">重新发送订阅</string>
+<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+</string>
+<string name="userinfo_yes">是</string>
+<string name="userinfo_no">否</string>
+<string name="userinfo_sureresend">确定要重新发送邀请吗?</string>
+
+<string name="chat_name">Beem - 聊天</string>
+<string name="chat_input_default_value">输入信息</string>
+<string name="chat_self">我</string>
+<string name="chat_error">错误</string>
+<string name="chat_send_message">发送</string>
+<string name="chat_menu_contacts_list">联系人列表</string>
+<string name="chat_menu_change_chat">切换聊天窗口</string>
+<string name="chat_dialog_change_chat_title">打开聊天窗口</string>
+<string name="chat_menu_close_chat">关闭聊天窗口</string>
+<string name="chat_no_more_chats">没有活动的聊天窗口</string>
+<string name="chat_state_composing">正在输入信息</string>
+<string name="chat_state_gone">已经离开了会话</string>
+<string name="chat_state_active">关注会话</string>
+<string name="chat_state_inactive">正在做其他事情</string>
+
+<string name="contact_status_msg_available">我有空</string>
+<string name="contact_status_msg_available_chat">我有空聊天</string>
+<string name="contact_status_msg_dnd">请勿打扰</string>
+<string name="contact_status_msg_away">离开</string>
+<string name="contact_status_msg_xa">没有空</string>
+<string name="contact_status_msg_offline">连接已断开</string>
+
+<string name="privacy_list_name">Beem - 管理我的隐私列表</string>
+<string name="privacy_list_no_data">没有隐私列表</string>
+<string name="privacy_list_menu_create">创建隐私列表</string>
+<string name="privacy_list_create_dialog_title">创建隐私列表</string>
+<string name="privacy_list_create_dialog_list_name_label">标题</string>
+<string name="privacy_list_create_dialog_create_button">创建</string>
+<string name="privacy_list_select_dialog_buddies">好友</string>
+<string name="privacy_list_select_dialog_groups">组</string>
+<string name="privacy_list_select_dialog_delete">删除</string>
+<string name="privacy_list_delete_dialog_msg">确定要删除 \'%s\'隐私列表吗 ?</string>
+<string name="privacy_list_delete_dialog_yes">是</string>
+<string name="privacy_list_delete_dialog_no">否</string>
+
+<string name="UpdateButton">更新</string>
+
+<!-- Error messages -->
+
+<string name="error_login_authentication">验证时发生错误,用户名或者密码错误.</string>
+
+<string name="interna_server_error">远程服务器错误</string>
+<string name="bad_request">错误的请求</string>
+<string name="forbidden">被拒绝</string>
+<string name="item_not_found">项目未找到</string>
+<string name="conflict">冲突</string>
+<string name="feature_not_implemented">功能未实现</string>
+<string name="gone">离开</string>
+<string name="jid_malformed">Jid畸形</string>
+<string name="no_acceptable">无法接受</string>
+<string name="not_allowed">未被允许</string>
+<string name="not_authorized">未验证</string>
+<string name="payment_required">需要付费</string>
+<string name="recipient_unavailable">接收方无响应</string>
+<string name="redirect">重定向</string>
+<string name="registration_required">需要注册</string>
+<string name="remote_server_not_found">未发现远程服务器</string>
+<string name="remote_server_timeout">远程服务器未响应</string>
+<string name="remote_server_error">远程服务器错误</string>
+<string name="resource_constraint">资源限制</string>
+<string name="service_unavailable">暂时无法提供服务</string>
+<string name="subscription_required">需要订阅</string>
+<string name="undefined_condition">未定义的情况</string>
+<string name="unexpected_condition">例外情况</string>
+<string name="request_timeout">请求超时</string>
+</resources>
--- a/res/values/arrays.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values/arrays.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -13,6 +13,11 @@
 		<item name="Unavailable">@string/contact_status_msg_xa</item>
 		<item name="Disconnected">@string/contact_status_msg_offline</item>
 	</string-array>
+	<string-array name="pick_photo_items">
+		<item>@string/take_photo</item>
+		<item>@string/pick_photo</item>
+		<item>@string/delete_avatar</item>
+	</string-array>
 	<string-array name="privacy_list_select_dialog">
 		<item name="@string/privacy_list_select_dialog_buddies">Buddies</item>
 		<item name="@string/privacy_list_select_dialog_groups">Groups</item>
--- a/res/values/strings.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values/strings.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -55,6 +55,13 @@
 	<string name="MenuConnection">Edit account</string>
 	<string name="ChangeStatusOk">Updating status</string>
 	<string name="ChangeStatusNoChange">Nothing to change</string>
+	<string name="my_avatar">My avatar</string>
+	<string name="select_avatar">Choose your avatar</string>
+	<string name="take_photo">Take a photo</string>
+	<string name="pick_photo">Select a picture</string>
+	<string name="delete_avatar">No avatar</string>
+	<string name="photoPickerNotFoundText">Photo picker not found</string>
+
 
 	<!-- Settings class -->
 	<string name="SettingsText">Edit your username</string>
@@ -86,7 +93,7 @@
 	<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="settings_account_username">Username (JID)</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>
@@ -117,14 +124,26 @@
 	<string name="notification_enable_vibrate_sum">Enable vibrate on incoming messages</string>
 	<string name="notification_snd_title">Message ringtone</string>
 	<string name="notification_snd_sum">Set your incoming message ringtone</string>
+	<string name="settings_chat_compact">Chat compact</string>
+	<string name="settings_chat_compact_sum">Set the chat windows compact</string>
+	<string name="history">History</string>
+	<string name="history_sum">Check this to save chats on the SDCard</string>
+	<string name="history_mount">You need to have SDcard mounted and writable to enable history</string>
+	<string name="history_on_off">Enable history messages</string>
+	<string name="chat_preferences">Chat</string>
+	<string name="chat_preferences_sum">History, Layout size ...</string>
+	<string name="chat_history_path">History path</string>
+	<string name="chat_history_path_sum">Chat conversations are saved in a folder on the SDCard</string>
+	<string name="settings_smack_debug">Enable XMPP debug</string>
+	<string name="settings_full_jid_login">Use my full JID as username</string>
+	<string name="settings_full_jid_login_sum">Need by some server such as Google Talk</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="SubscriptTitle">Authorize buddy ?</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>
 
 	<!--  BeemChatManager -->
 	<string name="BeemChatManagerNewMessage">You\'ve a new message</string>
@@ -193,6 +212,9 @@
 	<string name="network_preferences">Network options</string>
 	<string name="proxy_proxy_settings">Proxy settings</string>
 	<string name="proxy_user_settings">Proxy settings</string>
+	<string name="history_preferences">History</string>
+	<string name="chat_layout_option">Chat layout</string>
+	
 
 	<!-- EditSettings Activity Tabs -->
 	<string name="settings_tab_tag_account">edit_settings_tab_account</string>
@@ -236,11 +258,11 @@
 	<string name="userinfo_label_block">Block</string>
 	<string name="userinfo_label_delete">Delete</string>
 	<string name="userinfo_resend">Suscription resend</string>
-	<string name="userinfo_sure2delete">Are you sure you want to delete this contact ?
+	<string name="userinfo_sure2delete">Are you sure you want to delete this contact?
 	</string>
 	<string name="userinfo_yes">Yes</string>
 	<string name="userinfo_no">No</string>
-	<string name="userinfo_sureresend">Are you sure you want to resend invit ?</string>
+	<string name="userinfo_sureresend">Are you sure you want to resend invit?</string>
 
 	<string name="chat_name">Beem - Chat</string>
 	<string name="chat_input_default_value">Type your message</string>
@@ -279,7 +301,7 @@
 	<string name="privacy_list_select_dialog_buddies">Buddies</string>
 	<string name="privacy_list_select_dialog_groups">Groups</string>
 	<string name="privacy_list_select_dialog_delete">Delete</string>
-	<string name="privacy_list_delete_dialog_msg">Do you really want to delete the privacy list entitled \'%s\' ?</string>
+	<string name="privacy_list_delete_dialog_msg">Do you really want to delete the privacy list entitled \'%s\'?</string>
 	<string name="privacy_list_delete_dialog_yes">Yes</string>
 	<string name="privacy_list_delete_dialog_no">No</string>
 
--- a/res/values/styles.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/res/values/styles.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -13,7 +13,7 @@
 		<item name="android:enabled">true</item>
 	</style>
 	<style name="Theme.BEEM.Default" parent="@android:style/Theme">
-		<item name="android:windowBackground">@drawable/background</item>
+<!--		<item name="android:windowBackground">@drawable/background</item>-->		
 	</style>
 	
 
--- a/src/com/beem/project/beem/BeemApplication.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/BeemApplication.java	Fri Apr 15 03:01:09 2011 +0200
@@ -83,11 +83,18 @@
     public static final String NOTIFICATION_VIBRATE_KEY = "notification_vibrate";
     /** Preference key for notification sound. */
     public static final String NOTIFICATION_SOUND_KEY = "notification_sound";
+    /** Preference key for smack debugging. */
+    public static final String SMACK_DEBUG_KEY = "smack_debug";
+    /** Preference key for full Jid for login. */
+    public static final String FULL_JID_LOGIN_KEY = "full_jid_login";
+    /** Preference key for history path on the SDCard. */
+    public static final String CHAT_HISTORY_KEY = "settings_chat_history_path";
 
     //TODO add the other one
 
     private boolean mIsConnected;
     private boolean mIsAccountConfigured;
+    private boolean mPepEnabled;
     private SharedPreferences mSettings;
     private final PreferenceListener mPreferenceListener = new PreferenceListener();
 
@@ -111,7 +118,6 @@
     public void onTerminate() {
 	super.onTerminate();
 	mSettings.unregisterOnSharedPreferenceChangeListener(mPreferenceListener);
-
     }
 
     /**
@@ -139,6 +145,24 @@
     }
 
     /**
+     * Enable Pep in the application context.
+     *
+     * @param enabled true to enable pep
+     */
+    public void setPepEnabled(boolean enabled) {
+	mPepEnabled = enabled;
+    }
+
+    /**
+     * Check if Pep is enabled.
+     *
+     * @return true if enabled
+     */
+    public boolean isPepEnabled() {
+	return mPepEnabled;
+    }
+
+    /**
      * A listener for all the change in the preference file. It is used to maintain the global state of the application.
      */
     private class PreferenceListener implements SharedPreferences.OnSharedPreferenceChangeListener {
--- a/src/com/beem/project/beem/BeemService.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Fri Apr 15 03:01:09 2011 +0200
@@ -48,7 +48,6 @@
 import org.jivesoftware.smack.XMPPConnection;
 import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
 import org.jivesoftware.smack.Roster.SubscriptionMode;
-import org.jivesoftware.smack.provider.PrivacyProvider;
 import org.jivesoftware.smack.provider.ProviderManager;
 import org.jivesoftware.smackx.provider.DelayInfoProvider;
 import org.jivesoftware.smackx.provider.DiscoverInfoProvider;
@@ -133,6 +132,8 @@
      * Initialize the connection.
      */
     private void initConnectionConfig() {
+	// TODO add an option for this ?
+//         SmackConfiguration.setPacketReplyTimeout(30000);
 	mUseProxy = mSettings.getBoolean(BeemApplication.PROXY_USE_KEY, false);
 	if (mUseProxy) {
 	    String stype = mSettings.getString(BeemApplication.PROXY_TYPE_KEY, "HTTP");
@@ -154,7 +155,8 @@
 	    || mSettings.getBoolean("settings_key_gmail", false)) {
 	    mConnectionConfiguration.setSecurityMode(SecurityMode.required);
 	}
-	mConnectionConfiguration.setDebuggerEnabled(true);
+	if (mSettings.getBoolean(BeemApplication.SMACK_DEBUG_KEY, false))
+	    mConnectionConfiguration.setDebuggerEnabled(true);
 	mConnectionConfiguration.setSendPresence(true);
 	// maybe not the universal path, but it works on most devices (Samsung Galaxy, Google Nexus One)
 	mConnectionConfiguration.setTruststoreType("BKS");
@@ -194,7 +196,7 @@
 	    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
 	    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
 	}
-	String tmpJid = mSettings.getString(BeemApplication.ACCOUNT_USERNAME_KEY, "");
+	String tmpJid = mSettings.getString(BeemApplication.ACCOUNT_USERNAME_KEY, "").trim();
 	mLogin = StringUtils.parseName(tmpJid);
 	mPassword = mSettings.getString(BeemApplication.ACCOUNT_PASSWORD_KEY, "");
 	mPort = DEFAULT_XMPP_PORT;
@@ -202,13 +204,15 @@
 	mHost = mService;
 
 	if (mSettings.getBoolean("settings_key_specific_server", false)) {
-	    mHost = mSettings.getString("settings_key_xmpp_server", "");
+	    mHost = mSettings.getString("settings_key_xmpp_server", "").trim();
 	    if ("".equals(mHost))
-		mHost = StringUtils.parseServer(tmpJid);
+		mHost = mService;
 	    String tmpPort = mSettings.getString("settings_key_xmpp_port", "5222");
-	    mPort = ("".equals(tmpPort)) ? DEFAULT_XMPP_PORT : Integer.parseInt(tmpPort);
+	    if (!"".equals(tmpPort))
+		mPort = Integer.parseInt(tmpPort);
 	}
-	if ("gmail.com".equals(mService) || "googlemail.com".equals(mService))  {
+	if (mSettings.getBoolean(BeemApplication.FULL_JID_LOGIN_KEY, false) ||
+	    "gmail.com".equals(mService) || "googlemail.com".equals(mService))  {
 	    mLogin = tmpJid;
 	}
 
@@ -229,7 +233,6 @@
     @Override
     public void onDestroy() {
 	super.onDestroy();
-	resetStatus();
 	mNotificationManager.cancelAll();
 	unregisterReceiver(mReceiver);
 	mSettings.unregisterOnSharedPreferenceChangeListener(mPreferenceListener);
@@ -330,7 +333,7 @@
 	pm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
 
 	// Privacy
-	pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
+	//pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
 	// Delayed Delivery only the new version
 	pm.addExtensionProvider("delay", "urn:xmpp:delay", new DelayInfoProvider());
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/providers/AvatarProvider.java	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,204 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+package com.beem.project.beem.providers;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.os.Environment;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+
+/**
+ * A simple content provider we expose the differents avatar downloaded.
+ *
+ */
+public class AvatarProvider extends ContentProvider {
+
+    /** The content uri of this provider. */
+    public static final Uri CONTENT_URI =
+	Uri.parse("content://com.beem.project.beem.providers.avatarprovider");
+
+    private static final String TAG = AvatarProvider.class.getSimpleName();
+    private static final String AUTHORITY = "com.beem.project.beem.providers.avatarprovider";
+
+    /**
+     * The differents columns available in the AvatarProvider.
+     */
+    public static interface Columns {
+
+	/** The id of the avatar. */
+	String ID = "_id";
+    }
+
+    private static String[] columnNames = new String[] {Columns.ID };
+
+    private static final int AVATAR = 1;
+    private static final int AVATAR_ID = 2;
+    private static final UriMatcher URIMATCHER = new UriMatcher(AVATAR);
+
+    static
+    {
+        URIMATCHER.addURI(AUTHORITY, "*", AVATAR_ID);
+	// should not be needed if we pass AVATAR on the constructor but it does not work
+        URIMATCHER.addURI(AUTHORITY, null, AVATAR);
+    }
+
+    private String mDataPath;
+
+    /**
+     * Create an AvatarProvider.
+     */
+    public AvatarProvider() {
+    }
+
+    /**
+     * Translate the mode passed to {@link #openFile} into mode passed to {@link ParcelFileDescriptor#open}.
+     *
+     * @param uri the uri to open
+     * @param mode the mode
+     * @return the mode
+     * @throws FileNotFoundException if the mode passed is illegal
+     */
+    public static int modeToMode(Uri uri, String mode) throws FileNotFoundException {
+	int modeBits;
+	if ("r".equals(mode)) {
+	    modeBits = ParcelFileDescriptor.MODE_READ_ONLY;
+	} else if ("w".equals(mode) || "wt".equals(mode)) {
+	    modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY
+		| ParcelFileDescriptor.MODE_CREATE
+		| ParcelFileDescriptor.MODE_TRUNCATE;
+	} else if ("wa".equals(mode)) {
+	    modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY
+		| ParcelFileDescriptor.MODE_CREATE
+		| ParcelFileDescriptor.MODE_APPEND;
+	} else if ("rw".equals(mode)) {
+	    modeBits = ParcelFileDescriptor.MODE_READ_WRITE
+		| ParcelFileDescriptor.MODE_CREATE;
+	} else if ("rwt".equals(mode)) {
+	    modeBits = ParcelFileDescriptor.MODE_READ_WRITE
+		| ParcelFileDescriptor.MODE_CREATE
+		| ParcelFileDescriptor.MODE_TRUNCATE;
+	} else {
+	    throw new FileNotFoundException("Bad mode for " + uri + ": "
+		    + mode);
+	}
+	return modeBits;
+    }
+
+    @Override
+    public boolean onCreate() {
+	File cacheDir = Environment.getExternalStorageDirectory();
+	File dataPath = new File(cacheDir, "/Android/data/com.beem.project.beem/cache/avatar");
+	dataPath.mkdirs();
+	mDataPath = dataPath.getAbsolutePath();
+	return true;
+    }
+
+    @Override
+    public ParcelFileDescriptor openFile(Uri uri, String mode)
+	throws FileNotFoundException {
+	String id = uri.getPath();
+	File data = new File(mDataPath, id);
+	int modeBits = AvatarProvider.modeToMode(uri, mode);
+	return ParcelFileDescriptor.open(data, modeBits);
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
+	MatrixCursor c = new MatrixCursor(columnNames);
+	int match = URIMATCHER.match(uri);
+	switch (match) {
+	    case AVATAR:
+		File[] files = new File(mDataPath).listFiles();
+		if (files != null) {
+		    for (File f : files) {
+			c.newRow().add(f.getName());
+		    }
+		}
+		break;
+	    case AVATAR_ID:
+		String id = uri.getPathSegments().get(0);
+		File f = new File(mDataPath, id);
+		if (f.exists())
+			c.newRow().add(f.getName());
+		break;
+	    default:
+		Log.w(TAG, "Unsupported uri for query match = " + match);
+	}
+	return c;
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+	return 0;
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+	int res = 0;
+	String id = uri.getPath();
+	File data = new File(mDataPath, id);
+	if (data.exists() && data.delete()) {
+	    res++;
+	}
+	return res;
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+	return null;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+	return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/providers/package-info.java	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,49 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+
+
+/**
+ * ContentProviders for Beem.
+ */
+package com.beem.project.beem.providers;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/BeemAvatarCache.java	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,133 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+package com.beem.project.beem.service;
+
+import android.content.ContentResolver;
+import android.content.Context;
+
+import android.database.Cursor;
+
+import android.net.Uri;
+
+import com.beem.project.beem.providers.AvatarProvider;
+import com.beem.project.beem.smack.avatar.AvatarCache;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * An implementation of an AvatarCache which store the data of the filesystem.
+ */
+public class BeemAvatarCache implements AvatarCache {
+
+    private static final String TAG = BeemAvatarCache.class.getSimpleName();
+
+    private Context mContext;
+    private ContentResolver mContentResolver;
+
+    /**
+     * Create a BeemAvatarCache.
+     *
+     * @param ctx The android context of the cache.
+     */
+    public BeemAvatarCache(final Context ctx) {
+	mContext = ctx;
+	mContentResolver = mContext.getContentResolver();
+    }
+
+
+    @Override
+    public void put(String key, byte[] data) throws IOException {
+	Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(key).build();
+	OutputStream os = new BufferedOutputStream(mContentResolver.openOutputStream(uri));
+	try {
+	    os.write(data);
+	} finally {
+	    os.close();
+	}
+    }
+
+    @Override
+    public void put(String key, InputStream in) throws IOException {
+	Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(key).build();
+	OutputStream os = new BufferedOutputStream(mContentResolver.openOutputStream(uri));
+	try {
+	    byte[] data = new byte[1024];
+	    int nbread;
+	    while ((nbread = in.read(data)) != -1)
+		    os.write(data, 0, nbread);
+	} finally {
+	    in.close();
+	    os.close();
+	}
+    }
+
+    @Override
+    public byte[] get(String key) throws IOException {
+	Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(key).build();
+	InputStream is = new BufferedInputStream(mContentResolver.openInputStream(uri));
+	ByteArrayOutputStream bos = new ByteArrayOutputStream();
+	try {
+	    byte[] data = new byte[1024];
+	    is.read(data);
+	    bos.write(data);
+	} finally {
+	    is.close();
+	}
+	return bos.toByteArray();
+    }
+
+    @Override
+    public boolean contains(String key) {
+	Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(key).build();
+	Cursor c = mContentResolver.query(uri, null, null, null, null);
+	boolean res = c.getCount() > 0;
+	c.close();
+	return res;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/BeemAvatarManager.java	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,170 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+
+package com.beem.project.beem.service;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.provider.MediaStore;
+import android.util.Log;
+
+import com.beem.project.beem.smack.avatar.AvatarManager;
+import com.beem.project.beem.smack.avatar.AvatarCache;
+import com.beem.project.beem.smack.avatar.AvatarMetadataExtension;
+
+import java.security.NoSuchAlgorithmException;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import com.beem.project.beem.smack.pep.PepSubManager;
+import org.jivesoftware.smack.Connection;
+
+/**
+ * An AvatarManager for Beem.
+ * It allows to publish avatar on the Android platform.
+ */
+public class BeemAvatarManager extends AvatarManager {
+    private static final String TAG = BeemAvatarManager.class.getSimpleName();
+    private static final int JPEG_QUALITY = 100;
+
+    private Context mContext;
+
+    /**
+     * Create a BeemAvatarManager.
+     *
+     * @param ctx the Android context
+     * @param con the connection
+     * @param pepMgr the PepSubManager of the connection
+     * @param cache the cache which will store the avatars
+     * @param autoDownload tre to enable auto download of avatars
+     */
+    public BeemAvatarManager(final Context ctx, final Connection con, final PepSubManager pepMgr,
+	    final AvatarCache cache, final boolean autoDownload) {
+	super(con, pepMgr, cache, autoDownload);
+	mContext = ctx;
+    }
+
+    /**
+     * Publish an avatar.
+     *
+     * @param avatarUri the uri of the avatar
+     * @return true if the avatar was successfully published
+     */
+    public boolean publishAvatar(Uri avatarUri) {
+	try {
+	    Bitmap bmp = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), avatarUri);
+	    return publishAvatar(bmp);
+	} catch (IOException e) {
+	    Log.d(TAG, "Error while publishing avatar " + avatarUri, e);
+	}
+	return false;
+    }
+
+    /**
+     * Publish an avatar.
+     * This will send the XMPP stanza to enable the publication of an avatar.
+     *
+     * @param bitmap the avatar to publish
+     * @return true on success false otherwise
+     */
+    private boolean publishAvatar(Bitmap bitmap) {
+	//TODO use the metadata available in the mediastore
+	AvatarMetadataExtension meta = new AvatarMetadataExtension();
+	// Probably a bug on prosody but only the last data sent is kept
+	// and in beem we retrieve the first info
+	AvatarMetadataExtension.Info jpeg = publishBitmap(bitmap, Bitmap.CompressFormat.JPEG, JPEG_QUALITY);
+	// The png format is mandatory for interoperability
+	AvatarMetadataExtension.Info png = publishBitmap(bitmap, Bitmap.CompressFormat.PNG, JPEG_QUALITY);
+	if (png == null)
+	    return false;
+	meta.addInfo(png);
+	if (jpeg != null)
+	    meta.addInfo(jpeg);
+	publishAvatarMetaData(png.getId(), meta);
+	return true;
+    }
+
+    /**
+     * Send this bitmap to the avatar data node of the pep server.
+     *
+     * @param bmp the avatar bitmap
+     * @param format the image format to publish this data
+     * @param quality the compression quality use for JPEG compression
+     * @return the resulting info associate with this bitmap. null if the operation failed
+     */
+    private AvatarMetadataExtension.Info publishBitmap(Bitmap bmp, Bitmap.CompressFormat format, int quality) {
+	try {
+	    byte[] data = getBitmapByte(bmp, format, quality);
+	    String dataid = getAvatarId(data);
+	    if (!publishAvatarData(data))
+		return null;
+	    String mimetype = "image/png";
+	    if (Bitmap.CompressFormat.JPEG == format)
+		mimetype = "image/jpeg";
+	    AvatarMetadataExtension.Info info = new AvatarMetadataExtension.Info(dataid, mimetype, data.length);
+	    info.setHeight(bmp.getHeight());
+	    info.setWidth(bmp.getWidth());
+	    return info;
+	} catch (NoSuchAlgorithmException ex) {
+	    return null;
+	}
+    }
+
+    /**
+     * Convert the bitmap to a byte array.
+     *
+     * @param bitmap the avatar bitmap
+     * @param format the resulting image format
+     * @param quality the compression quality use for JPEG compression
+     * @return the bitmap data or a array of 0 element on error
+     */
+    private byte[] getBitmapByte(Bitmap bitmap, Bitmap.CompressFormat format, int quality) {
+	ByteArrayOutputStream bos = new ByteArrayOutputStream();
+	if (bitmap.compress(format, quality, bos))
+	    return bos.toByteArray();
+	else
+	    return new byte[0];
+    }
+
+}
--- a/src/com/beem/project/beem/service/BeemChatManager.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/service/BeemChatManager.java	Fri Apr 15 03:01:09 2011 +0200
@@ -43,6 +43,7 @@
 */
 package com.beem.project.beem.service;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -56,11 +57,13 @@
 import android.app.PendingIntent;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.os.Environment;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.preference.PreferenceManager;
 import android.util.Log;
 
+import com.beem.project.beem.BeemApplication;
 import com.beem.project.beem.BeemService;
 import com.beem.project.beem.R;
 import com.beem.project.beem.service.aidl.IChat;
@@ -173,6 +176,16 @@
 	    return mChats.get(key);
 	}
 	ChatAdapter res = new ChatAdapter(chat);
+	boolean history = PreferenceManager.getDefaultSharedPreferences(mService.getBaseContext()).getBoolean(
+	    "settings_key_history", false);
+	String accountUser = PreferenceManager.getDefaultSharedPreferences(mService.getBaseContext()).getString(
+	    BeemApplication.ACCOUNT_USERNAME_KEY, "");
+	String historyPath = PreferenceManager.getDefaultSharedPreferences(mService.getBaseContext()).getString(
+	    BeemApplication.CHAT_HISTORY_KEY, "");
+	if ("".equals(historyPath)) historyPath = "/Android/data/com.beem.project.beem/chat/";
+	res.setHistory(history);
+	res.setAccountUser(accountUser);
+	res.setHistoryPath(new File(Environment.getExternalStorageDirectory(), historyPath));
 	Log.d(TAG, "getChat put " + key);
 	mChats.put(key, res);
 	return res;
--- a/src/com/beem/project/beem/service/ChatAdapter.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/service/ChatAdapter.java	Fri Apr 15 03:01:09 2011 +0200
@@ -43,6 +43,9 @@
  */
 package com.beem.project.beem.service;
 
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -52,9 +55,12 @@
 
 import org.jivesoftware.smack.Chat;
 import org.jivesoftware.smack.XMPPException;
+import org.jivesoftware.smack.util.StringUtils;
 import org.jivesoftware.smackx.ChatState;
 import org.jivesoftware.smackx.ChatStateListener;
+import org.jivesoftware.smackx.ChatState;
 
+import android.os.Environment;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.util.Log;
@@ -80,8 +86,11 @@
 	private final RemoteCallbackList<IMessageListener> mRemoteListeners = new RemoteCallbackList<IMessageListener>();
 	private final MsgListener mMsgListener = new MsgListener();
 	private SessionID mOtrSessionId;
+	private boolean mIsHistory;
+    private File mHistoryPath;
+    private String mAccountUser;
 
-	/**
+    /**
 	 * Constructor.
 	 * @param chat The chat to adapt
 	 */
@@ -100,15 +109,15 @@
 		return mParticipant;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void sendMessage(com.beem.project.beem.service.Message message) throws RemoteException {
-		org.jivesoftware.smack.packet.Message send = new org.jivesoftware.smack.packet.Message();
-		String msgBody = message.getBody();
-		send.setTo(message.getTo());
-		Log.w(TAG, "message to " + message.getTo());
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void sendMessage(com.beem.project.beem.service.Message message) throws RemoteException {
+	org.jivesoftware.smack.packet.Message send = new org.jivesoftware.smack.packet.Message();
+	String msgBody = message.getBody();
+	send.setTo(message.getTo());
+	Log.w(TAG, "message to " + message.getTo());
 
 		if (mOtrSessionId != null) {
 			String body;
@@ -120,20 +129,22 @@
 			}
 		}
 
-		send.setBody(msgBody);
-		send.setThread(message.getThread());
-		send.setSubject(message.getSubject());
-		send.setType(org.jivesoftware.smack.packet.Message.Type.chat);
-		// TODO gerer les messages contenant des XMPPError
-		// send.set
-		try {
-			mAdaptee.sendMessage(send);
-			mMessages.add(message);
-		} catch (XMPPException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+	send.setBody(msgBody);
+	send.setThread(message.getThread());
+	send.setSubject(message.getSubject());
+	send.setType(org.jivesoftware.smack.packet.Message.Type.chat);
+	// TODO gerer les messages contenant des XMPPError
+	// send.set
+	try {
+	    mAdaptee.sendMessage(send);
+	    mMessages.add(message);
+	} catch (XMPPException e) {
+	    e.printStackTrace();
 	}
+	String state = Environment.getExternalStorageState();
+	if (mIsHistory && Environment.MEDIA_MOUNTED.equals(state))
+	    saveHistory(message, mAccountUser);
+    }
 
 	public void sendMessage(String msg) {
 		Message msgToSend = new Message(mParticipant.getJIDWithRes(), Message.MSG_TYPE_CHAT);
@@ -145,91 +156,169 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void addMessageListener(IMessageListener listen) {
-		if (listen != null)
-			mRemoteListeners.register(listen);
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addMessageListener(IMessageListener listen) {
+	if (listen != null)
+	    mRemoteListeners.register(listen);
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void removeMessageListener(IMessageListener listen) {
-		if (listen != null) {
-			mRemoteListeners.unregister(listen);
-		}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void removeMessageListener(IMessageListener listen) {
+	if (listen != null) {
+	    mRemoteListeners.unregister(listen);
 	}
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getState() throws RemoteException {
+	return mState;
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public String getState() throws RemoteException {
-		return mState;
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setState(String state) throws RemoteException {
+	mState = state;
+    }
+
+    /**
+     * Get the adaptee for the Chat.
+     * @return The real chat object
+     */
+    public Chat getAdaptee() {
+	return mAdaptee;
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void setState(String state) throws RemoteException {
-		mState = state;
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setOpen(boolean isOpen) {
+	this.mIsOpen = isOpen;
+    }
 
-	/**
-	 * Get the adaptee for the Chat.
-	 * @return The real chat object
-	 */
-	public Chat getAdaptee() {
-		return mAdaptee;
-	}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isOpen() {
+	return mIsOpen;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<Message> getMessages() throws RemoteException {
+	return Collections.unmodifiableList(mMessages);
+    }
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void setOpen(boolean isOpen) {
-		this.mIsOpen = isOpen;
+    /**
+     * Add a message in the chat history.
+     * @param msg the message to add
+     */
+    void addMessage(Message msg) {
+	if (mMessages.size() == HISTORY_MAX_SIZE)
+	    mMessages.remove(0);
+	mMessages.add(msg);
+	if (!"".equals(msg.getBody()) && msg.getBody() != null) {
+	    String state = Environment.getExternalStorageState();
+	    if (mIsHistory && Environment.MEDIA_MOUNTED.equals(state))
+		saveHistory(msg, msg.getFrom());
+	}
+    }
+
+    /**
+     * Save message in SDCard.
+     * @param msg the message receive
+     * @param contactName the name of the contact
+     */
+    public void saveHistory(Message msg, String contactName) {
+	File path = getHistoryPath();
+    	File filepath;
+    	if (contactName.equals(msg.getFrom()))
+    	    filepath = new File(path, StringUtils.parseBareAddress(contactName));
+    	else
+    	    filepath = new File(path, StringUtils.parseBareAddress(msg.getTo()));
+    	path.mkdirs();
+	try {
+	    FileWriter file = new FileWriter(filepath, true);
+	    String log = msg.getTimestamp() + " " + contactName + " " + msg.getBody()
+		+ System.getProperty("line.separator");
+	    file.write(log);
+	    file.close();
+	} catch (IOException e) {
+	    Log.e(TAG, "Error writing chat history", e);
 	}
+    }
 
+    /**
+     * set History enable/disable.
+     * @param isHisory history state
+     */
+    public void setHistory(boolean isHisory) {
+	this.mIsHistory = isHisory;
+    }
+
+    /**
+     * get History state.
+     * @return mIsHistory
+     */
+    public boolean getHistory() {
+	return mIsHistory;
+    }
+
+    /**
+     * Set Account user name.
+     * @param accountUser user name
+     */
+    public void setAccountUser(String accountUser) {
+	mAccountUser = accountUser;
+    }
+
+    /**
+     * get Account user name.
+     * @return mAccountUser
+     */
+    public String getAccountUser() {
+	return mAccountUser;
+    }
+
+    /**
+     * set History path.
+     * @param historyPath history path
+     */
+    public void setHistoryPath(File historyPath) {
+	this.mHistoryPath = historyPath;
+    }
+
+    /**
+     * get History path.
+     * @return mHistoryPath;
+     */
+    public File getHistoryPath() {
+	return mHistoryPath;
+    }
+
+    /**
+     * Listener.
+     */
+    private class MsgListener implements ChatStateListener {
 	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public boolean isOpen() {
-		return mIsOpen;
-	}
-
-	/**
-	 * {@inheritDoc}
+	 * Constructor.
 	 */
-	@Override
-	public List<Message> getMessages() throws RemoteException {
-		return Collections.unmodifiableList(mMessages);
-	}
-
-	/**
-	 * Add a message in the chat history.
-	 * @param msg the message to add
-	 */
-	void addMessage(Message msg) {
-		if (mMessages.size() == HISTORY_MAX_SIZE)
-			mMessages.remove(0);
-		mMessages.add(msg);
-	}
-
-	/**
-	 * Listener.
-	 */
-	private class MsgListener implements ChatStateListener {
-		/**
-		 * Constructor.
-		 */
-		public MsgListener() { }
+	public MsgListener() { }
 
 		@Override
 		public void processMessage(Chat chat, org.jivesoftware.smack.packet.Message message) {
--- a/src/com/beem/project/beem/service/Contact.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/service/Contact.java	Fri Apr 15 03:01:09 2011 +0200
@@ -140,6 +140,28 @@
     }
 
     /**
+     * Make an xmpp uri for a spcific jid.
+     *
+     * @param jid the jid to represent as an uri
+     * @return an uri representing this jid.
+     */
+    public static Uri makeXmppUri(String jid) {
+	StringBuilder build = new StringBuilder("xmpp:");
+	String name = StringUtils.parseName(jid);
+	build.append(name);
+	if (!"".equals(name))
+	    build.append('@');
+	build.append(StringUtils.parseServer(jid));
+	String resource = StringUtils.parseResource(jid);
+	if (!"".equals(resource)) {
+	    build.append('/');
+	    build.append(resource);
+	}
+	Uri u = Uri.parse(build.toString());
+	return u;
+    }
+
+    /**
      * {@inheritDoc}
      */
     @Override
@@ -387,14 +409,7 @@
      * @return the URI
      */
     public Uri toUri() {
-	StringBuilder build = new StringBuilder("xmpp:");
-	String name = StringUtils.parseName(mJID);
-	build.append(name);
-	if (!"".equals(name))
-	    build.append('@');
-	build.append(StringUtils.parseServer(mJID));
-	Uri u = Uri.parse(build.toString());
-	return u;
+	return makeXmppUri(mJID);
     }
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/UserInfo.aidl	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,46 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+package com.beem.project.beem.service;
+
+parcelable UserInfo;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/UserInfo.java	Fri Apr 15 03:01:09 2011 +0200
@@ -0,0 +1,128 @@
+/*
+    BEEM is a videoconference application on the Android Platform.
+
+    Copyright (C) 2009 by Frederic-Charles Barthelery,
+                          Jean-Manuel Da Silva,
+                          Nikita Kozlov,
+                          Philippe Lago,
+                          Jean Baptiste Vergely,
+                          Vincent Veronis.
+
+    This file is part of BEEM.
+
+    BEEM is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    BEEM is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
+
+    Please send bug reports with examples or suggestions to
+    contact@beem-project.com or http://dev.beem-project.com/
+
+    Epitech, hereby disclaims all copyright interest in the program "Beem"
+    written by Frederic-Charles Barthelery,
+               Jean-Manuel Da Silva,
+               Nikita Kozlov,
+               Philippe Lago,
+               Jean Baptiste Vergely,
+               Vincent Veronis.
+
+    Nicolas Sadirac, November 26, 2009
+    President of Epitech.
+
+    Flavien Astraud, November 26, 2009
+    Head of the EIP Laboratory.
+
+*/
+package com.beem.project.beem.service;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * This class contains information about the user of the connection.
+ * These informations are sent by the connection.
+ *
+ */
+public class UserInfo implements Parcelable {
+
+    /** Parcelable.Creator needs by Android. */
+    public static final Parcelable.Creator<UserInfo> CREATOR = new Parcelable.Creator<UserInfo>() {
+
+	@Override
+	public UserInfo createFromParcel(Parcel source) {
+	    return new UserInfo(source);
+	}
+
+	@Override
+	public UserInfo[] newArray(int size) {
+	    return new UserInfo[size];
+	}
+    };
+
+    private final String mFullJid;
+    private String mAvatarId;
+
+    /**
+     * Construct a UserInfo from a parcel.
+     * @param in parcel to use for construction
+     */
+    private UserInfo(final Parcel in) {
+	mFullJid = in.readString();
+	mAvatarId = in.readString();
+    }
+
+    /**
+     * Constructor.
+     * @param jid jid of the user
+     */
+    public UserInfo(final String jid) {
+	// the jid is case insensitive
+	mFullJid = jid;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+	dest.writeString(mFullJid);
+	dest.writeString(mAvatarId);
+    }
+
+    @Override
+    public int describeContents() {
+	return 0;
+    }
+
+    /**
+     * Get the avatar id of the user.
+     *
+     * @return the avatar id
+     */
+    public String getAvatarId() {
+	return mAvatarId;
+    }
+
+    /**
+     * Set the avater id of the user.
+     *
+     * @param avatarId the avatar id
+     */
+    public void setAvatarId(String avatarId) {
+	mAvatarId = avatarId;
+    }
+
+    /**
+     * Get the full jid of the user.
+     *
+     * @return the jid
+     */
+    public String getJid() {
+	return mFullJid;
+    }
+}
--- a/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppConnectionAdapter.java	Fri Apr 15 03:01:09 2011 +0200
@@ -53,6 +53,7 @@
 import org.jivesoftware.smack.filter.PacketFilter;
 import org.jivesoftware.smack.packet.Packet;
 import org.jivesoftware.smack.packet.Presence;
+import org.jivesoftware.smack.util.StringUtils;
 import org.jivesoftware.smackx.ChatStateManager;
 import org.jivesoftware.smackx.ServiceDiscoveryManager;
 import org.jivesoftware.smackx.packet.DiscoverInfo;
@@ -64,11 +65,10 @@
 import android.content.SharedPreferences;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
-import android.os.Environment;
 import android.util.Log;
 
 import java.util.Iterator;
-import java.io.File;
+import java.util.List;
 
 import com.beem.project.beem.BeemService;
 import com.beem.project.beem.R;
@@ -83,8 +83,8 @@
 import com.beem.project.beem.utils.Status;
 import com.beem.project.beem.smack.pep.PepSubManager;
 import com.beem.project.beem.smack.avatar.AvatarCache;
-import com.beem.project.beem.smack.avatar.FileAvatarCache;
-import com.beem.project.beem.smack.avatar.AvatarManager;
+import com.beem.project.beem.smack.avatar.AvatarListener;
+import com.beem.project.beem.smack.avatar.AvatarMetadataExtension;
 
 /**
  * This class implements an adapter for XMPPConnection.
@@ -113,14 +113,18 @@
     private ChatStateManager mChatStateManager;
     private final BeemService mService;
     private BeemApplication mApplication;
-    private AvatarManager mAvatarManager;
+    private BeemAvatarManager mAvatarManager;
     private PepSubManager mPepManager;
+    private SharedPreferences mPref;
     private final RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners =
 	new RemoteCallbackList<IBeemConnectionListener>();
     private final SubscribePacketListener mSubscribePacketListener = new SubscribePacketListener();
 
     private final ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
 
+    private UserInfo mUserInfo;
+    private final UserInfoManager mUserInfoManager = new UserInfoManager();
+
     /**
      * Constructor.
      * @param config Configuration to use in order to connect
@@ -128,8 +132,8 @@
      * @param password password to use on connect
      * @param service the background service associated with the connection.
      */
-    public XmppConnectionAdapter(final ConnectionConfiguration config, final String login, final String password,
-	final BeemService service) {
+    public XmppConnectionAdapter(final ConnectionConfiguration config,
+	    final String login, final String password, final BeemService service) {
 	this(new XMPPConnection(config), login, password, service);
     }
 
@@ -140,8 +144,8 @@
      * @param password password to use on connect
      * @param service the background service associated with the connection.
      */
-    public XmppConnectionAdapter(final String serviceName, final String login, final String password,
-	final BeemService service) {
+    public XmppConnectionAdapter(final String serviceName,
+	    final String login, final String password, final BeemService service) {
 	this(new XMPPConnection(serviceName), login, password, service);
     }
 
@@ -152,8 +156,8 @@
      * @param password The password to use
      * @param service the background service associated with the connection.
      */
-    public XmppConnectionAdapter(final XMPPConnection con, final String login, final String password,
-	final BeemService service) {
+    public XmppConnectionAdapter(final XMPPConnection con,
+	    final String login, final String password, final BeemService service) {
 	mAdaptee = con;
 	PrivacyListManager.getInstanceFor(mAdaptee);
 	mLogin = login;
@@ -163,13 +167,13 @@
 	if (ctx instanceof BeemApplication) {
 	    mApplication = (BeemApplication) ctx;
 	}
-	SharedPreferences pref = mService.getServicePreference();
+	mPref = mService.getServicePreference();
 	try {
-	    mPreviousPriority = Integer.parseInt(pref.getString("settings_key_priority", "0"));
-	    mResource = pref.getString("settings_key_resource", "BEEM");
+	    mPreviousPriority = Integer.parseInt(mPref.getString("settings_key_priority", "0"));
 	} catch (NumberFormatException ex) {
 	    mPreviousPriority = 0;
 	}
+	mResource = mPref.getString("settings_key_resource", "BEEM");
     }
 
     /**
@@ -236,15 +240,20 @@
 	    mAdaptee.addPacketListener(mSubscribePacketListener, filter);
 
 	    mAdaptee.login(mLogin, mPassword, mResource);
+	    mUserInfo = new UserInfo(mAdaptee.getUser());
+
 	    mChatManager = new BeemChatManager(mAdaptee.getChatManager(), mService);
-	    mPrivacyListManager = new PrivacyListManagerAdapter(PrivacyListManager.getInstanceFor(mAdaptee));
-	    mService.resetStatus();
+	    //nikita: I commented this line because of the logs provided in http://www.beem-project.com/issues/321
+	    //Also, since the privacylistmanager isn't finished and used, it will be safer to not initialize it
+	    //mPrivacyListManager = new PrivacyListManagerAdapter(PrivacyListManager.getInstanceFor(mAdaptee));
 	    mService.initJingle(mAdaptee);
 	    discoverServerFeatures();
 
 	    mRoster = new RosterAdapter(mAdaptee.getRoster(), mService, mAvatarManager);
 	    mApplication.setConnected(true);
-	    changeStatus(Status.CONTACT_STATUS_AVAILABLE, mService.getServicePreference().getString("status_text", ""));
+	    int mode = mPref.getInt(BeemApplication.STATUS_KEY, 0);
+	    String status = mPref.getString(BeemApplication.STATUS_TEXT_KEY, "");
+	    changeStatus(mode, status);
 	    return true;
 	} catch (XMPPException e) {
 	    Log.e(TAG, "Error while connecting", e);
@@ -328,7 +337,7 @@
      *
      * @return the AvatarManager or null if there is not
      */
-    public AvatarManager getAvatarManager() {
+    public BeemAvatarManager getAvatarManager() {
 	return mAvatarManager;
     }
 
@@ -405,6 +414,14 @@
 	return mRoster;
     }
 
+    /**
+     * Get the user informations.
+     *
+     * @return the user infos
+     */
+    public UserInfo getUserInfo() {
+	return mUserInfo;
+    }
 
     /**
      * Returns true if currently authenticated by successfully calling the login method.
@@ -458,7 +475,8 @@
 	    sdm = new ServiceDiscoveryManager(mAdaptee);
 
 	sdm.addFeature("http://jabber.org/protocol/disco#info");
-	sdm.addFeature("jabber:iq:privacy");
+	//nikita: must be uncommented when the feature will be enabled
+	//sdm.addFeature("jabber:iq:privacy");
 	sdm.addFeature("http://jabber.org/protocol/caps");
 	sdm.addFeature("urn:xmpp:avatar:metadata");
 	sdm.addFeature("urn:xmpp:avatar:metadata+notify");
@@ -478,7 +496,7 @@
 	try {
 	    // jid et server
 	    ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(mAdaptee);
-	    DiscoverInfo info = sdm.discoverInfo("elyzion.net");
+	    DiscoverInfo info = sdm.discoverInfo(mAdaptee.getServiceName());
 	    Iterator<DiscoverInfo.Identity> it = info.getIdentities();
 	    while (it.hasNext()) {
 		DiscoverInfo.Identity identity = it.next();
@@ -487,7 +505,7 @@
 		}
 	    }
 	} catch (XMPPException e) {
-	    // No Pep
+	    Log.w(TAG, "Unable to discover server features", e);
 	}
     }
 
@@ -496,13 +514,22 @@
      */
     private void initPEP() {
 	// Enable pep sending
+	Log.d(TAG, "Pep enabled");
 	// API 8
 	// mService.getExternalCacheDir()
 	mPepManager = new PepSubManager(mAdaptee);
-	File cacheDir = Environment.getExternalStorageDirectory();
-	cacheDir = new File(cacheDir, "/Android/data/com.beem.project.beem/cache/");
-	AvatarCache avatarCache = new FileAvatarCache(cacheDir);
-	mAvatarManager = new AvatarManager(mAdaptee, mPepManager, avatarCache, true);
+	AvatarCache avatarCache = new BeemAvatarCache(mService);
+	mAvatarManager = new BeemAvatarManager(mService, mAdaptee, mPepManager, avatarCache, true);
+	mAvatarManager.addAvatarListener(mUserInfoManager);
+	mApplication.setPepEnabled(true);
+    }
+
+    /**
+     * Reset the application state.
+     */
+    private void resetApplication() {
+	mApplication.setConnected(false);
+	mApplication.setPepEnabled(false);
     }
 
     /**
@@ -529,7 +556,7 @@
 	    intent.putExtra("normally", true);
 	    mService.sendBroadcast(intent);
 	    mService.stopSelf();
-	    mApplication.setConnected(false);
+	    resetApplication();
 	}
 
 	/**
@@ -543,7 +570,7 @@
 	    intent.putExtra("message", exception.getMessage());
 	    mService.sendBroadcast(intent);
 	    mService.stopSelf();
-	    mApplication.setConnected(false);
+	    resetApplication();
 	}
 
 	/**
@@ -567,7 +594,7 @@
 	    }
 	    mRemoteConnListeners.finishBroadcast();
 	    mService.stopSelf();
-	    mApplication.setConnected(false);
+	    resetApplication();
 	}
 
 	/**
@@ -694,7 +721,7 @@
 		R.string.AcceptContactRequest, from), System.currentTimeMillis());
 	    notification.flags = Notification.FLAG_AUTO_CANCEL;
 	    Intent intent = new Intent(mService, Subscription.class);
-	    intent.putExtra("from", from);
+	    intent.setData(Contact.makeXmppUri(from));
 	    notification.setLatestEventInfo(mService, from, mService
 		.getString(R.string.AcceptContactRequestFrom, from), PendingIntent.getActivity(mService, 0,
 		    intent, PendingIntent.FLAG_ONE_SHOT));
@@ -703,4 +730,25 @@
 	}
     }
 
+    /**
+     * The UserInfoManager listen to XMPP events and update the user information accoldingly.
+     */
+    private class UserInfoManager implements AvatarListener {
+
+	/**
+	 * Constructor.
+	 */
+	public UserInfoManager() {
+	}
+
+	@Override
+	public void onAvatarChange(String from, String avatarId, List<AvatarMetadataExtension.Info> avatarInfos) {
+	    String jid = StringUtils.parseBareAddress(mUserInfo.getJid());
+	    String mfrom = StringUtils.parseBareAddress(from);
+	    if (jid.equalsIgnoreCase(mfrom)) {
+		mUserInfo.setAvatarId(avatarId);
+	    }
+	}
+    }
+
 }
--- a/src/com/beem/project/beem/service/XmppFacade.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/service/XmppFacade.java	Fri Apr 15 03:01:09 2011 +0200
@@ -45,6 +45,7 @@
 
 import org.jivesoftware.smack.packet.Presence;
 
+import android.net.Uri;
 import android.os.RemoteException;
 
 import com.beem.project.beem.service.aidl.IChatManager;
@@ -53,7 +54,6 @@
 import com.beem.project.beem.service.aidl.IXmppConnection;
 import com.beem.project.beem.service.aidl.IXmppFacade;
 import com.beem.project.beem.utils.PresenceType;
-import com.beem.project.beem.smack.avatar.AvatarManager;
 
 /**
  * This class is a facade for the Beem Service.
@@ -150,11 +150,23 @@
     }
 
     @Override
-    public byte[] getAvatar(String avatarId) throws RemoteException {
-	AvatarManager mgr = mConnexion.getAvatarManager();
+    public boolean publishAvatar(Uri avatarUri) throws RemoteException {
+	BeemAvatarManager mgr = mConnexion.getAvatarManager();
 	if (mgr == null)
-	    return null;
+	    return false;
+
+	return mgr.publishAvatar(avatarUri);
+    }
 
-	return mgr.getAvatar(avatarId);
+    @Override
+    public void disableAvatarPublishing() throws RemoteException {
+	BeemAvatarManager mgr = mConnexion.getAvatarManager();
+	if (mgr != null)
+	    mgr.disableAvatarPublishing();
+    }
+
+    @Override
+    public UserInfo getUserInfo() throws RemoteException {
+	return mConnexion.getUserInfo();
     }
 }
--- a/src/com/beem/project/beem/service/aidl/IXmppFacade.aidl	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/service/aidl/IXmppFacade.aidl	Fri Apr 15 03:01:09 2011 +0200
@@ -43,11 +43,14 @@
 */
 package com.beem.project.beem.service.aidl;
 
-import  com.beem.project.beem.service.aidl.IXmppConnection;
-import  com.beem.project.beem.service.aidl.IRoster;
-import  com.beem.project.beem.service.aidl.IChatManager;
-import  com.beem.project.beem.service.aidl.IPrivacyListManager;
+import com.beem.project.beem.service.aidl.IXmppConnection;
+import com.beem.project.beem.service.aidl.IRoster;
+import com.beem.project.beem.service.aidl.IChatManager;
+import com.beem.project.beem.service.aidl.IPrivacyListManager;
 import com.beem.project.beem.service.PresenceAdapter;
+import com.beem.project.beem.service.UserInfo;
+
+import android.net.Uri;
 
 interface IXmppFacade {
 
@@ -96,11 +99,11 @@
      */
      void call(in String jid);
 
-     /**
-      * get the an avatar
-      * @param id the id of the avatar
-      */
-     byte[] getAvatar(in String id);
+    boolean publishAvatar(in Uri avatarUri);
+
+    void disableAvatarPublishing();
+
+    UserInfo getUserInfo();
 
      IPrivacyListManager getPrivacyListManager();
 }
--- a/src/com/beem/project/beem/smack/avatar/AvatarManager.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/smack/avatar/AvatarManager.java	Fri Apr 15 03:01:09 2011 +0200
@@ -51,11 +51,15 @@
 
 import java.util.List;
 import java.util.LinkedList;
+import java.security.NoSuchAlgorithmException;
+import java.security.MessageDigest;
 
 import org.jivesoftware.smack.Connection;
 import org.jivesoftware.smack.packet.PacketExtension;
 import org.jivesoftware.smackx.pubsub.Item;
 import org.jivesoftware.smackx.pubsub.PayloadItem;
+import org.jivesoftware.smackx.pubsub.LeafNode;
+import org.jivesoftware.smack.util.StringUtils;
 
 /**
  * This class deals with the avatar data.
@@ -64,6 +68,11 @@
  */
 public class AvatarManager {
 
+    /**  The pubsub node for avatar data. */
+    public static final String AVATARDATA_NODE = "urn:xmpp:avatar:data";
+    /**  The pubsub node for avatar metadata. */
+    public static final String AVATARMETADATA_NODE = "urn:xmpp:avatar:metadata";
+
     private PepSubManager mPep;
     private Connection mCon;
     private boolean mAutoDownload;
@@ -78,7 +87,8 @@
      * @param cache the cache which will store the avatars
      * @param autoDownload true to enable auto download of avatars
      */
-    public AvatarManager(final Connection con, final PepSubManager pepMgr, final AvatarCache cache, final boolean autoDownload) {
+    public AvatarManager(final Connection con, final PepSubManager pepMgr,
+	    final AvatarCache cache, final boolean autoDownload) {
 	mCon = con;
 	mPep = pepMgr;
 	mAutoDownload = autoDownload;
@@ -87,6 +97,21 @@
     }
 
     /**
+     * Create an AvatarManager.
+     *
+     * @param con the connection
+     * @param pepMgr the PepSubManager of the Connection
+     * @param autoDownload true to enable auto download of avatars
+     */
+    protected AvatarManager(final Connection con, final PepSubManager pepMgr, final boolean autoDownload) {
+	mCon = con;
+	mPep = pepMgr;
+	mAutoDownload = autoDownload;
+	mPep.addPEPListener(new Listener());
+	//TODO add a memory cache
+    }
+
+    /**
      * Get an avatar from the cache.
      *
      * @param avatarId the id of the avatar
@@ -121,31 +146,6 @@
 	mListeners.remove(listener);
     }
 
-
-    /**
-     * Select the avatar to download.
-     * Subclass should override this method to take control over the selection process.
-     * This implementation select the first element.
-     *
-     * @param available list of the avatar metadata information
-     * @return the metadata of the avatar to download
-     */
-    protected Info selectAvatar(List<Info> available) {
-	return available.get(0);
-    }
-
-    /**
-     * Fire the listeners for avatar change.
-     *
-     * @param from the jid of the contact
-     * @param avatarId the new avatar id
-     * @param avatarInfos the metadata infos of the avatar
-     */
-    private void fireListeners(String from, String avatarId, List<Info> avatarInfos) {
-	for (AvatarListener l : mListeners)
-	    l.onAvatarChange(from, avatarId, avatarInfos);
-    }
-
     /**
      * Download an avatar.
      *
@@ -169,6 +169,96 @@
     }
 
     /**
+     * Disable the diffusion of your avatar.
+     */
+    public void disableAvatarPublishing() {
+	AvatarMetadataExtension metadata = new AvatarMetadataExtension();
+	publishAvatarMetaData(null, metadata);
+    }
+
+    /**
+     * Send an avatar image to the pep server.
+     *
+     * @param data the image data.
+     * @return true if the image where successfully sent. false otherwise
+     */
+    public boolean publishAvatarData(byte[] data) {
+	try {
+	    String id = getAvatarId(data);
+	    publishAvatarData(id, data);
+	    return true;
+	} catch (NoSuchAlgorithmException e) {
+	    System.err.println("Security error while publishing avatar data : " + e.getMessage());
+	    return false;
+	}
+    }
+
+    /**
+     * Send the metadata of the avatar you want to publish.
+     * By sending this metadata, you publish an avatar.
+     *
+     * @param id the id of the metadata item
+     * @param metadata the metadata to publish
+     */
+    public void publishAvatarMetaData(String id, AvatarMetadataExtension metadata) {
+	PayloadItem<AvatarMetadataExtension> item = new PayloadItem<AvatarMetadataExtension>(id, metadata);
+	LeafNode node = mPep.getPEPNode(AVATARMETADATA_NODE);
+	node.publish(item);
+    }
+
+    /**
+     * Select the avatar to download.
+     * Subclass should override this method to take control over the selection process.
+     * This implementation select the first element.
+     *
+     * @param available list of the avatar metadata information
+     * @return the metadata of the avatar to download
+     */
+    protected Info selectAvatar(List<Info> available) {
+	return available.get(0);
+    }
+
+
+    /**
+     * Get the id corresponding to this avatar data.
+     *
+     * @param data the avatar data
+     * @return the id
+     * @throws NoSuchAlgorithmException if the sha-1 algorithm is unavailable
+     */
+    protected String getAvatarId(byte[] data) throws NoSuchAlgorithmException {
+	MessageDigest md = MessageDigest.getInstance("sha-1");
+	byte[] hash = md.digest(data);
+	return StringUtils.encodeHex(hash);
+    }
+
+    /**
+     * Publish an avatar data.
+     *
+     * @param id the id of the avatar data
+     * @param data the data of the avatar
+     */
+    private void publishAvatarData(String id, byte[] data) {
+	AvatarExtension avatar = new AvatarExtension(data);
+	PayloadItem<AvatarExtension> item = new PayloadItem<AvatarExtension>(id, avatar);
+	LeafNode node = mPep.getPEPNode(AVATARDATA_NODE);
+	node.publish(item);
+    }
+
+    /**
+     * Fire the listeners for avatar change.
+     *
+     * @param from the jid of the contact
+     * @param avatarId the new avatar id
+     * @param avatarInfos the metadata infos of the avatar
+     */
+    private void fireListeners(String from, String avatarId, List<Info> avatarInfos) {
+	for (AvatarListener l : mListeners)
+	    l.onAvatarChange(from, avatarId, avatarInfos);
+    }
+
+
+    /**
      * A listener to PEPEevent.
      */
     private class Listener implements PEPListener {
--- a/src/com/beem/project/beem/smack/avatar/AvatarMetadataProvider.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/smack/avatar/AvatarMetadataProvider.java	Fri Apr 15 03:01:09 2011 +0200
@@ -70,16 +70,34 @@
 	    int eventType = parser.next();
 	    if (eventType == XmlPullParser.START_TAG) {
 		if ("info".equals(parser.getName())) {
-		    int bytes = Integer.parseInt(parser.getAttributeValue(null, "bytes"));
-		    int height = Integer.parseInt(parser.getAttributeValue(null, "height"));
-		    int width = Integer.parseInt(parser.getAttributeValue(null, "width"));
 		    String id = parser.getAttributeValue(null, "id");
 		    String type = parser.getAttributeValue(null, "type");
+		    String sbytes = parser.getAttributeValue(null, "bytes");
+		    String sheight = parser.getAttributeValue(null, "height");
+		    String swidth = parser.getAttributeValue(null, "width");
+		    int bytes = 0;
+		    AvatarMetadataExtension.Info info = null;
+		    try {
+			if (sbytes != null)
+			    bytes = Integer.parseInt(sbytes);
+		    } catch (NumberFormatException e) { }
+		    if (bytes != 0 && id != null && type != null)
+			info = new AvatarMetadataExtension.Info(id, type, bytes);
+		    else // invalid info
+			continue;
+
 		    String url = parser.getAttributeValue(null, "url");
-		    AvatarMetadataExtension.Info info = new AvatarMetadataExtension.Info(id, type, bytes);
-		    info.setHeight(height);
-		    info.setWidth(width);
 		    info.setUrl(url);
+		    try {
+			int height = 0;
+			int width = 0;
+			if (sheight != null)
+			    height = Integer.parseInt(parser.getAttributeValue(null, "height"));
+			if (swidth != null)
+			    width = Integer.parseInt(parser.getAttributeValue(null, "width"));
+			info.setHeight(height);
+			info.setWidth(width);
+		    } catch (NumberFormatException e) { }
 		    metadata.addInfo(info);
 		}
 	    } else if (eventType == XmlPullParser.END_TAG) {
--- a/src/com/beem/project/beem/smack/caps/CapsManager.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/smack/caps/CapsManager.java	Fri Apr 15 03:01:09 2011 +0200
@@ -178,7 +178,7 @@
 		PacketExtension p = packet.getExtension("c", "http://jabber.org/protocol/caps");
 		CapsExtension caps = (CapsExtension) p;
 		if (!isInCache(caps.getVer())) {
-		    validate(packet.getFrom(), caps.getVer(), caps.getHash());
+		    validate(packet.getFrom(), caps.getNode(), caps.getVer(), caps.getHash());
 		}
 	    }
 	}, filter);
@@ -204,13 +204,14 @@
      * Validate the ver attribute of a received capability.
      *
      * @param jid the jid of the sender of the capability.
+     * @param node the node attribute of the capability.
      * @param ver the ver attribute of the capability.
      * @param hashMethod the hash algorithm to use to calculate ver
      * @return true if the ver attribute is valid false otherwise.
      */
-    private boolean validate(String jid, String ver, String hashMethod) {
+    private boolean validate(String jid, String node, String ver, String hashMethod) {
 	try {
-	    DiscoverInfo info = mSdm.discoverInfo(jid);
+	    DiscoverInfo info = mSdm.discoverInfo(jid, node + "#" + ver);
 	    if (!mSupportedAlgorithm.contains(hashMethod)) {
 		mJidCache.put(jid, info);
 		return false;
--- a/src/com/beem/project/beem/ui/ChangeStatus.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/ui/ChangeStatus.java	Fri Apr 15 03:01:09 2011 +0200
@@ -45,21 +45,32 @@
 package com.beem.project.beem.ui;
 
 import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.preference.PreferenceManager;
+import android.provider.MediaStore;
 import android.util.Log;
+import android.view.ContextThemeWrapper;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.ListAdapter;
 import android.widget.EditText;
 import android.widget.Spinner;
 import android.widget.Toast;
@@ -68,10 +79,16 @@
 import com.beem.project.beem.BeemApplication;
 import com.beem.project.beem.R;
 import com.beem.project.beem.service.aidl.IXmppFacade;
+import com.beem.project.beem.service.UserInfo;
+import com.beem.project.beem.providers.AvatarProvider;
 import com.beem.project.beem.utils.BeemBroadcastReceiver;
 import com.beem.project.beem.utils.BeemConnectivity;
 import com.beem.project.beem.utils.Status;
 
+import java.io.File;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+
 /**
  * This Activity is used to change the status.
  * @author nikita
@@ -83,6 +100,7 @@
 	SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
     }
 
+    private static final String TAG = ChangeStatus.class.getSimpleName();
     private static final int AVAILABLE_FOR_CHAT_IDX = 0;
     private static final int AVAILABLE_IDX = 1;
     private static final int BUSY_IDX = 2;
@@ -90,12 +108,28 @@
     private static final int UNAVAILABLE_IDX = 4;
     private static final int DISCONNECTED_IDX = 5;
 
+    private static final int ICON_SIZE = 80;
+
+    private static final int SELECT_PHOTO_DLG = 0;
+
+    private static final int CAMERA_WITH_DATA = 0;
+    private static final int PHOTO_PICKED_WITH_DATA = 1;
+
+    private static final File PHOTO_DIR = new File(
+            Environment.getExternalStorageDirectory() + "/DCIM/Camera");
+
+    private static final String KEY_CURRENT_PHOTO_FILE = "currentphotofile";
+
+    private static final Uri MY_AVATAR_URI = Uri.parse(AvatarProvider.CONTENT_URI + "/my_avatar");
+
     private EditText mStatusMessageEditText;
     private Toast mToast;
     private Button mOk;
     private Button mClear;
     private Button mContact;
     private Spinner mSpinner;
+    private ImageButton mAvatar;
+    private Uri mAvatarUri;
 
     private SharedPreferences mSettings;
     private ArrayAdapter<CharSequence> mAdapter;
@@ -103,6 +137,9 @@
     private final ServiceConnection mServConn = new BeemServiceConnection();
     private final OnClickListener mOnClickOk = new MyOnClickListener();
     private final BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
+    private boolean mShowCurrentAvatar = true;
+    private boolean mDisableAvatar;
+    private File mCurrentPhotoFile;
 
     /**
      * Constructor.
@@ -117,6 +154,7 @@
     protected void onCreate(Bundle savedInstanceState) {
 	super.onCreate(savedInstanceState);
 
+	Log.d(TAG, "oncreate");
 	setContentView(R.layout.changestatus);
 
 	mOk = (Button) findViewById(R.id.ChangeStatusOk);
@@ -128,6 +166,15 @@
 	mContact = (Button) findViewById(R.id.OpenContactList);
 	mContact.setOnClickListener(mOnClickOk);
 
+	BeemApplication app = (BeemApplication) getApplication();
+	mAvatar = (ImageButton) findViewById(R.id.avatarButton);
+	mAvatar.setOnClickListener(mOnClickOk);
+	if (!app.isPepEnabled()) {
+	    View avatarPanel = findViewById(R.id.avatar_panel);
+	    avatarPanel.setVisibility(View.GONE);
+	}
+
+
 	mSettings = PreferenceManager.getDefaultSharedPreferences(this);
 	mStatusMessageEditText = (EditText) findViewById(R.id.ChangeStatusMessage);
 	mStatusMessageEditText.setText(mSettings.getString(BeemApplication.STATUS_TEXT_KEY, ""));
@@ -163,7 +210,6 @@
     @Override
     protected void onPause() {
 	super.onPause();
-	Log.d("TAG", "pause");
 	unbindService(mServConn);
     }
 
@@ -176,6 +222,60 @@
 	this.unregisterReceiver(mReceiver);
     }
 
+    /*
+     * The activity is often reclaimed by the system memory.
+     */
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        if (mCurrentPhotoFile != null) {
+            outState.putString(KEY_CURRENT_PHOTO_FILE, mCurrentPhotoFile.toString());
+        }
+        super.onSaveInstanceState(outState);
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedInstanceState) {
+        String fileName = savedInstanceState.getString(KEY_CURRENT_PHOTO_FILE);
+        if (fileName != null) {
+            mCurrentPhotoFile = new File(fileName);
+        }
+        super.onRestoreInstanceState(savedInstanceState);
+    }
+
+
+
+    @Override
+    protected Dialog onCreateDialog(int id) {
+	if (id == SELECT_PHOTO_DLG)
+	    return createPickPhotoDialog();
+	return null;
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+	  // Ignore failed requests
+        if (resultCode != RESULT_OK) return;
+
+        switch (requestCode) {
+            case PHOTO_PICKED_WITH_DATA:
+		mAvatarUri = Uri.parse(data.getAction());
+		Log.d(TAG, "selected avatar uri " + mAvatarUri);
+		if (mAvatarUri != null) {
+		    mAvatar.setImageURI(mAvatarUri);
+		    mDisableAvatar = false;
+		    mShowCurrentAvatar = false;
+		}
+                break;
+
+            case CAMERA_WITH_DATA:
+                doCropPhoto(mCurrentPhotoFile);
+                break;
+	    default:
+		Log.w(TAG, "onActivityResult : invalid request code");
+
+        }
+    }
+
     /**
      * Return the status index from status the settings.
      * @return the status index from status the settings.
@@ -227,6 +327,201 @@
     }
 
     /**
+     * ClickListener for the avatarButton.
+     *
+     * @param button the avatar button
+     */
+    private void onAvatarButton(View button) {
+	showDialog(SELECT_PHOTO_DLG);
+    }
+
+    /**
+     * Publish the selected avatar.
+     */
+    private void publishAvatar() {
+	try {
+	    if (mDisableAvatar)
+		mXmppFacade.disableAvatarPublishing();
+	    else if (mAvatarUri != null)
+		mXmppFacade.publishAvatar(mAvatarUri);
+	} catch (RemoteException e) {
+	    Log.e(TAG, "Error while publishing avatar", e);
+	}
+    }
+
+    /**
+     * Display the current avatar in the button.
+     */
+    private void displayCurrentAvatar() {
+	try {
+	    UserInfo ui = mXmppFacade.getUserInfo();
+	    String avatarId = ui.getAvatarId();
+	    Log.d(TAG, "User info ; avatar id " + avatarId);
+	    if (avatarId != null) {
+		Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(avatarId).build();
+		mAvatar.setImageURI(uri);
+	    }
+	} catch (RemoteException e) {
+	    Log.e(TAG, "Error while displaying current avatar", e);
+	}
+	mShowCurrentAvatar = false;
+    }
+
+    /*
+     * Some codes from AOSP (platform/packages/apps/Contacts)
+     * to select and crop an image.
+     */
+
+    /**
+     * Creates a dialog offering two options: take a photo or pick a photo from the gallery.
+     * @return the dialog
+     */
+    private Dialog createPickPhotoDialog() {
+	 // Wrap our context to inflate list items using correct theme
+        final Context dialogContext = new ContextThemeWrapper(this,
+                android.R.style.Theme_Light);
+
+        final ListAdapter adapter = ArrayAdapter.createFromResource(dialogContext,
+		R.array.pick_photo_items,
+                android.R.layout.simple_list_item_1);
+
+        final AlertDialog.Builder builder = new AlertDialog.Builder(dialogContext);
+        builder.setTitle(R.string.select_avatar);
+        builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int which) {
+                dialog.dismiss();
+                switch(which) {
+                    case 0:
+                        doTakePhoto();
+                        break;
+                    case 1:
+                        doPickPhotoFromGallery();
+                        break;
+                    case 2:
+			mDisableAvatar = true;
+			mAvatar.setImageURI(null);
+			break;
+		    default:
+			Log.w(TAG, "DialogInterface onClick : invalid which code");
+                }
+            }
+        });
+        return builder.create();
+    }
+
+    /**
+     * Create a file name for the icon photo using current time.
+     * @return the filename
+     */
+    private String getPhotoFileName() {
+        Date date = new Date(System.currentTimeMillis());
+        SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
+        return dateFormat.format(date) + ".jpg";
+    }
+
+    /**
+     * Launches Camera to take a picture and store it in a file.
+     */
+    protected void doTakePhoto() {
+        try {
+            // Launch camera to take photo for selected contact
+            PHOTO_DIR.mkdirs();
+            mCurrentPhotoFile = new File(PHOTO_DIR, getPhotoFileName());
+            final Intent intent = getTakePickIntent(mCurrentPhotoFile);
+            startActivityForResult(intent, CAMERA_WITH_DATA);
+        } catch (ActivityNotFoundException e) {
+            Toast.makeText(this, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show();
+        }
+    }
+
+    /**
+     * Constructs an intent for capturing a photo and storing it in a temporary file.
+     * @param f the temporary file to use to store the picture
+     * @return the intent
+     */
+    public static Intent getTakePickIntent(File f) {
+        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
+        return intent;
+    }
+
+    /**
+     * Sends a newly acquired photo to Gallery for cropping.
+     * @param f the image file to crop
+     */
+    protected void doCropPhoto(final File f) {
+        try {
+
+            // Add the image to the media store
+	    // level 8
+	    /*
+            MediaScannerConnection.scanFile(
+                    this,
+                    new String[] { f.getAbsolutePath() },
+                    new String[] { null },
+                    null);
+	    */
+
+            // Launch gallery to crop the photo
+            final Intent intent = getCropImageIntent(Uri.fromFile(f));
+            startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
+        } catch (ActivityNotFoundException e) {
+            Log.e(TAG, "Cannot crop image", e);
+            Toast.makeText(this, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show();
+        }
+    }
+
+    /**
+     * Constructs an intent for image cropping.
+     * @param photoUri the uri of the photo to crop
+     * @return the intent
+     */
+    public static Intent getCropImageIntent(Uri photoUri) {
+        Intent intent = new Intent("com.android.camera.action.CROP");
+        intent.setDataAndType(photoUri, "image/*");
+        intent.putExtra("crop", "true");
+        intent.putExtra("aspectX", 1);
+        intent.putExtra("aspectY", 1);
+        intent.putExtra("outputX", ICON_SIZE);
+        intent.putExtra("outputY", ICON_SIZE);
+	intent.putExtra(MediaStore.EXTRA_OUTPUT, MY_AVATAR_URI);
+        return intent;
+    }
+
+    /**
+     * Launches Gallery to pick a photo.
+     */
+    protected void doPickPhotoFromGallery() {
+        try {
+            // Launch picker to choose photo for selected contact
+            final Intent intent = getPhotoPickIntent();
+            startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
+        } catch (ActivityNotFoundException e) {
+            Toast.makeText(this, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show();
+        }
+    }
+
+    /**
+     * Constructs an intent for picking a photo from Gallery, cropping it and returning the bitmap.
+     * @return the intent
+     */
+    public static Intent getPhotoPickIntent() {
+        Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
+        intent.setType("image/*");
+        intent.putExtra("crop", "true");
+        intent.putExtra("aspectX", 1);
+        intent.putExtra("aspectY", 1);
+        intent.putExtra("outputX", ICON_SIZE);
+        intent.putExtra("outputY", ICON_SIZE);
+	intent.putExtra(MediaStore.EXTRA_OUTPUT, MY_AVATAR_URI);
+	// use this to get the bitmap in the intent
+//         intent.putExtra("return-data", true);
+        return intent;
+    }
+
+
+
+    /**
      * connection to service.
      * @author nikita
      */
@@ -244,6 +539,8 @@
 	@Override
 	public void onServiceConnected(ComponentName name, IBinder service) {
 	    mXmppFacade = IXmppFacade.Stub.asInterface(service);
+	    if (mShowCurrentAvatar)
+		displayCurrentAvatar();
 	}
 
 	/**
@@ -280,6 +577,7 @@
 		    try {
 			mXmppFacade.changeStatus(status, msg.toString());
 			edit.putInt(BeemApplication.STATUS_KEY, mSpinner.getSelectedItemPosition());
+			publishAvatar();
 		    } catch (RemoteException e) {
 			e.printStackTrace();
 		    }
@@ -292,7 +590,8 @@
 	    } else if (v == mContact) {
 		startActivity(new Intent(ChangeStatus.this, ContactList.class));
 		ChangeStatus.this.finish();
-	    }
+	    } else if (v == mAvatar)
+		onAvatarButton(v);
 	}
     }
 }
--- a/src/com/beem/project/beem/ui/Chat.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/ui/Chat.java	Fri Apr 15 03:01:09 2011 +0200
@@ -40,7 +40,7 @@
     Flavien Astraud, November 26, 2009
     Head of the EIP Laboratory.
 
- */
+*/
 package com.beem.project.beem.ui;
 
 import java.text.DateFormat;
@@ -49,7 +49,10 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.io.InputStream;
+import java.io.IOException;
 
+import org.jivesoftware.smack.packet.Presence.Mode;
 import org.jivesoftware.smack.util.StringUtils;
 
 import android.app.Activity;
@@ -58,13 +61,18 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
+import android.content.SharedPreferences;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Color;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.preference.PreferenceManager;
 import android.text.util.Linkify;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -73,6 +81,7 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.View.OnClickListener;
 import android.view.View.OnKeyListener;
 import android.view.ViewGroup;
@@ -83,7 +92,9 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+
 import com.beem.project.beem.R;
+import com.beem.project.beem.providers.AvatarProvider;
 import com.beem.project.beem.service.Contact;
 import com.beem.project.beem.service.Message;
 import com.beem.project.beem.service.PresenceAdapter;
@@ -119,6 +130,7 @@
     private TextView mContactChatState;
     private TextView mContactOtrState;
     private ImageView mContactStatusIcon;
+    private LayerDrawable mAvatarStatusDrawable;
     private ListView mMessagesListView;
     private EditText mInputField;
     private Button mSendButton;
@@ -136,7 +148,9 @@
     private final BeemBroadcastReceiver mBroadcastReceiver = new BeemBroadcastReceiver();
     private final BeemRosterListener mBeemRosterListener = new BeemRosterListener();
     private IXmppFacade mXmppFacade;
+    private String mCurrentAvatarId;
     private boolean mBinded;
+    private boolean mCompact;
 
     /**
      * Constructor.
@@ -151,15 +165,22 @@
     @Override
     protected void onCreate(Bundle savedBundle) {
 	super.onCreate(savedBundle);
-	setContentView(R.layout.chat);
 	this.registerReceiver(mBroadcastReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
-
+	SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
+	mCompact = settings.getBoolean("settings_chat_compact_key", false);
 	// UI
-	mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name);
-	mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg);
-	mContactChatState = (TextView) findViewById(R.id.chat_contact_chat_state);
-	mContactOtrState = (TextView) findViewById(R.id.chat_contact_otr_state);
-	mContactStatusIcon = (ImageView) findViewById(R.id.chat_contact_status_icon);
+	if (!mCompact) {
+	    setContentView(R.layout.chat);
+	    mContactNameTextView = (TextView) findViewById(R.id.chat_contact_name);
+	    mContactStatusMsgTextView = (TextView) findViewById(R.id.chat_contact_status_msg);
+	    mContactChatState = (TextView) findViewById(R.id.chat_contact_chat_state);
+	    mContactStatusIcon = (ImageView) findViewById(R.id.chat_contact_status_icon);
+	    mAvatarStatusDrawable = (LayerDrawable) mContactStatusIcon.getDrawable();
+		mContactOtrState = (TextView) findViewById(R.id.chat_contact_otr_state);	    
+		mAvatarStatusDrawable.setLayerInset(1, 36, 36, 0, 0);
+	} else {
+	    setContentView(R.layout.chat_compact);
+	}
 	mMessagesListView = (ListView) findViewById(R.id.chat_messages);
 	mMessagesListView.setAdapter(mMessagesListAdapter);
 	mInputField = (EditText) findViewById(R.id.chat_input);
@@ -287,6 +308,7 @@
 		    Log.e(TAG, e.getMessage());
 		}
 		this.finish();
+		this.finish();
 		break;
 	    case R.id.chat_menu_start_otr_session:
 		try {
@@ -535,7 +557,8 @@
 		    @Override
 		    public void run() {
 			if (msg.getType() == Message.MSG_TYPE_ERROR) {
-			    mListMessages.add(new MessageText(fromBareJid, mContact.getName(), msg.getBody(), true, msg.getTimestamp()));
+			    mListMessages.add(new MessageText(fromBareJid, mContact.getName(),
+				msg.getBody(), true, msg.getTimestamp()));
 			    mMessagesListAdapter.notifyDataSetChanged();
 			} else if (msg.getBody() != null) {
 			    MessageText lastMessage = null;
@@ -547,7 +570,8 @@
 				lastMessage.setTimestamp(msg.getTimestamp());
 				mListMessages.set(mListMessages.size() - 1, lastMessage);
 			    } else if (msg.getBody() != null)
-				mListMessages.add(new MessageText(fromBareJid, mContact.getName(), msg.getBody(), false, msg.getTimestamp()));
+				mListMessages.add(new MessageText(fromBareJid, mContact.getName(),
+				    msg.getBody(), false, msg.getTimestamp()));
 			    mMessagesListAdapter.notifyDataSetChanged();
 			}
 		    }
@@ -576,7 +600,8 @@
 		    } else if ("paused".equals(state)) {
 			text = Chat.this.getString(R.string.chat_state_active);
 		    }
-		    mContactChatState.setText(text);
+		    if (!mCompact)
+			mContactChatState.setText(text);
 		}
 	    });
 
@@ -611,24 +636,74 @@
 	String res = mContact.getSelectedRes();
 	if (!"".equals(res))
 	    name += "(" + res + ")";
-	if (!(mContactNameTextView.getText().toString().equals(name)))
-	    mContactNameTextView.setText(name);
-
-	// Check for a contact status message update
-	if (!(mContactStatusMsgTextView.getText().toString().equals(mContact.getMsgState()))) {
-	    mContactStatusMsgTextView.setText(mContact.getMsgState());
-	    Linkify.addLinks(mContactStatusMsgTextView, Linkify.WEB_URLS);
+	if (!mCompact) {
+	    if (!(mContactNameTextView.getText().toString().equals(name)))
+		mContactNameTextView.setText(name);
+	    //Check for a contact status message update
+	    if (!(mContactStatusMsgTextView.getText().toString().equals(mContact.getMsgState()))) {
+		mContactStatusMsgTextView.setText(mContact.getMsgState());
+		Linkify.addLinks(mContactStatusMsgTextView, Linkify.WEB_URLS);
+	    }
+	} else {
+	    Mode m = Status.getPresenceModeFromStatus(mContact.getStatus());
+	    if (m == null)
+		setTitle(getString(R.string.chat_name) + " " + name
+		    + " (" + getString(R.string.contact_status_msg_offline) + ")");
+	    else
+		setTitle(getString(R.string.chat_name) + " " + name + " (" + m.name() + ")");
 	}
     }
 
+
+
+
     /**
      * Update the contact status icon.
      */
     private void updateContactStatusIcon() {
+	if (mCompact)
+	    return;
+	String id = mContact.getAvatarId();
+	if (id == null)
+	    id = "";
+	Log.d(TAG, "update contact icon  : " + id);
+	if (!id.equals(mCurrentAvatarId)) {
+	    Drawable avatar = getAvatarDrawable(mContact.getAvatarId());
+	    mAvatarStatusDrawable.setDrawableByLayerId(R.id.avatar, avatar);
+	    mCurrentAvatarId = id;
+	}
 	mContactStatusIcon.setImageLevel(mContact.getStatus());
     }
 
     /**
+     * Get a Drawable containing the avatar icon.
+     *
+     * @param avatarId the avatar id to retrieve or null to get default
+     * @return a Drawable
+     */
+    private Drawable getAvatarDrawable(String avatarId) {
+	Drawable avatarDrawable = null;
+	if (avatarId != null) {
+	    Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(avatarId).build();
+	    InputStream in = null;
+	    try {
+		try {
+		    in = getContentResolver().openInputStream(uri);
+	    avatarDrawable = Drawable.createFromStream(in, avatarId);
+		} finally {
+		    if (in != null)
+			in.close();
+		}
+	    } catch (IOException e) {
+		Log.w(TAG, "Error while setting the avatar", e);
+	    }
+	}
+	if (avatarDrawable == null)
+	    avatarDrawable = getResources().getDrawable(R.drawable.beem_launcher_icon_silver);
+	return avatarDrawable;
+    }
+
+    /**
      * Prepare the status icons map.
      */
     private void prepareIconsStatus() {
@@ -697,10 +772,11 @@
 	    View sv;
 	    if (convertView == null) {
 		LayoutInflater inflater = Chat.this.getLayoutInflater();
-		sv = inflater.inflate(R.layout.chat_msg_row, null);
+		    sv = inflater.inflate(R.layout.chat_msg_row, null);
 	    } else {
 		sv = convertView;
 	    }
+	    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM);
 	    MessageText msg = mListMessages.get(position);
 	    TextView msgName = (TextView) sv.findViewById(R.id.chatmessagename);
 	    msgName.setText(msg.getName());
@@ -708,8 +784,8 @@
 	    msgName.setError(null);
 	    TextView msgText = (TextView) sv.findViewById(R.id.chatmessagetext);
 	    msgText.setText(msg.getMessage());
+	    registerForContextMenu(msgText);
 	    TextView msgDate = (TextView) sv.findViewById(R.id.chatmessagedate);
-	    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM);
 	    String date = df.format(msg.getTimestamp());
 	    msgDate.setText(date);
 	    if (msg.isError()) {
@@ -753,7 +829,8 @@
 	 * @param message A String containing the message.
 	 * @param isError if the message is an error message.
 	 */
-	public MessageText(final String bareJid, final String name, final String message, final boolean isError) {
+	public MessageText(final String bareJid, final String name, final String message,
+	    final boolean isError) {
 	    mBareJid = bareJid;
 	    mName = name;
 	    mMessage = message;
@@ -768,7 +845,8 @@
 	 * @param isError if the message is an error message.
 	 * @param date the time of the message.
 	 */
-	public MessageText(final String bareJid, final String name, final String message, final boolean isError, Date date) {
+	public MessageText(final String bareJid, final String name, final String message,
+	    final boolean isError, Date date) {
 	    mBareJid = bareJid;
 	    mName = name;
 	    mMessage = message;
@@ -836,7 +914,6 @@
 
 	/**
 	 * Set the Date of the message.
-	 *
 	 * @param date date of the message.
 	 */
 	public void setTimestamp(Date date) {
@@ -845,7 +922,6 @@
 
 	/**
 	 * Get the Date of the message.
-	 *
 	 * @return if it is a delayed message get the date the message was sended.
 	 */
 	public Date getTimestamp() {
--- a/src/com/beem/project/beem/ui/ContactList.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/ui/ContactList.java	Fri Apr 15 03:01:09 2011 +0200
@@ -49,7 +49,8 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.IOException;
 
 import org.jivesoftware.smack.util.StringUtils;
 
@@ -60,7 +61,7 @@
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
-import android.graphics.drawable.LevelListDrawable;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -87,8 +88,10 @@
 import android.widget.ListView;
 import android.widget.TextView;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 
 import com.beem.project.beem.R;
+import com.beem.project.beem.providers.AvatarProvider;
 import com.beem.project.beem.service.Contact;
 import com.beem.project.beem.service.PresenceAdapter;
 import com.beem.project.beem.service.aidl.IBeemRosterListener;
@@ -656,30 +659,47 @@
 	private void bindView(View view, Contact curContact) {
 	    if (curContact != null) {
 		TextView v = (TextView) view.findViewById(R.id.contactlistpseudo);
-		LevelListDrawable mStatusDrawable = (LevelListDrawable) getResources()
-		.getDrawable(R.drawable.status_icon);
-		mStatusDrawable.setLevel(curContact.getStatus());
-		v.setCompoundDrawablesWithIntrinsicBounds(mStatusDrawable, null, null, null);
 		v.setText(curContact.getName());
 		v = (TextView) view.findViewById(R.id.contactlistmsgperso);
 		v.setText(curContact.getMsgState());
-		Drawable d = null;
+		ImageView img = (ImageView) view.findViewById(R.id.avatar);
+		String avatarId = curContact.getAvatarId();
+		int contactStatus = curContact.getStatus();
+		Drawable avatar = getAvatarStatusDrawable(avatarId);
+		img.setImageDrawable(avatar);
+		img.setImageLevel(contactStatus);
+	    }
+	}
+
+	/**
+	 * Get a LayerDrawable containing the avatar and the status icon.
+	 * The status icon will change with the level of the drawable.
+	 * @param avatarId the avatar id to retrieve or null to get default
+	 * @return a LayerDrawable
+	 */
+	private Drawable getAvatarStatusDrawable(String avatarId) {
+	    Drawable avatarDrawable = null;
+	    if (avatarId != null) {
+		Uri uri = AvatarProvider.CONTENT_URI.buildUpon().appendPath(avatarId).build();
+		InputStream in = null;
 		try {
-		    String avatarId = curContact.getAvatarId();
-		    byte[] avatar = mXmppFacade.getAvatar(avatarId);
-		    if (avatar != null) {
-			ByteArrayInputStream in = new ByteArrayInputStream(avatar);
-			d = Drawable.createFromStream(in, avatarId);
+		    try {
+			in = getContentResolver().openInputStream(uri);
+			avatarDrawable = Drawable.createFromStream(in, avatarId);
+		    } finally {
+			if (in != null)
+			    in.close();
 		    }
-		} catch (RemoteException e) {
-		    Log.e(TAG, "Error while setting the avatar", e);
+		} catch (IOException e) {
+		    Log.w(TAG, "Error while setting the avatar " + avatarId, e);
 		}
-		ImageView img = (ImageView) view.findViewById(R.id.avatar);
-		if (d != null)
-		    img.setImageDrawable(d);
-		else
-		    img.setImageResource(R.drawable.beem_launcher_icon_silver);
 	    }
+	    if (avatarDrawable == null)
+		avatarDrawable = getResources().getDrawable(R.drawable.beem_launcher_icon_silver);
+	    LayerDrawable ld = (LayerDrawable) getResources().getDrawable(R.drawable.avatar_status);
+	    ld.setLayerInset(1, 36, 36, 0, 0);
+	    ld.setDrawableByLayerId(R.id.avatar, avatarDrawable);
+	    return ld;
 	}
 
 	/**
--- a/src/com/beem/project/beem/ui/LoginAnim.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/ui/LoginAnim.java	Fri Apr 15 03:01:09 2011 +0200
@@ -1,7 +1,7 @@
 /*
     BEEM is a videoconference application on the Android Platform.
 
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
+    Copyright (C) 2009-2011 by Frederic-Charles Barthelery,
                           Jean-Manuel Da Silva,
                           Nikita Kozlov,
                           Philippe Lago,
@@ -82,6 +82,7 @@
     private AsyncTask<IXmppFacade, Integer, Boolean> mTask;
     private Button mCancelBt;
     private TextView mLoginState;
+    private boolean mBinded;
 
     /**
      * Constructor.
@@ -110,27 +111,19 @@
     protected void onStart() {
 	super.onStart();
 	mLogo.startAnimation(mRotateAnim);
-    }
-
-    /* (non-Javadoc)
-     * @see android.app.Activity#onResume()
-     */
-    @Override
-    protected void onResume() {
-	super.onResume();
 	if (mTask == null)
 	    mTask = new LoginTask();
-	if (mXmppFacade == null)
-	    bindService(LoginAnim.SERVICE_INTENT, mServConn, BIND_AUTO_CREATE);
+	if (!mBinded)
+	    mBinded = bindService(LoginAnim.SERVICE_INTENT, mServConn, BIND_AUTO_CREATE);
     }
 
     /* (non-Javadoc)
      * @see android.app.Activity#onPause()
      */
     @Override
-    protected void onPause() {
-	super.onPause();
-	if (mXmppFacade != null) { // and async task not en cours
+    protected void onStop() {
+	super.onStop();
+	if (mBinded && mTask.getStatus() != AsyncTask.Status.RUNNING) {
 	    unbindService(mServConn);
 	    mXmppFacade = null;
 	}
--- a/src/com/beem/project/beem/ui/Subscription.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/com/beem/project/beem/ui/Subscription.java	Fri Apr 15 03:01:09 2011 +0200
@@ -54,6 +54,7 @@
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.TextView;
@@ -63,6 +64,7 @@
 import com.beem.project.beem.R;
 import com.beem.project.beem.service.PresenceAdapter;
 import com.beem.project.beem.service.aidl.IXmppFacade;
+import com.beem.project.beem.service.Contact;
 import com.beem.project.beem.utils.BeemBroadcastReceiver;
 
 /**
@@ -72,6 +74,7 @@
 public class Subscription extends Activity {
 
     private static final Intent SERVICE_INTENT = new Intent();
+    private static final String TAG = Subscription.class.getSimpleName();
     private IXmppFacade mService;
     private String mContact;
     private ServiceConnection mServConn = new BeemServiceConnection();
@@ -97,7 +100,8 @@
 	setContentView(R.layout.subscription);
 	findViewById(R.id.SubscriptionAccept).setOnClickListener(mClickListener);
 	findViewById(R.id.SubscriptionRefuse).setOnClickListener(mClickListener);
-	mContact = getIntent().getStringExtra("from");
+	Contact c = new Contact(getIntent().getData());
+	mContact = c.getJID();
 	TextView tv = (TextView) findViewById(R.id.SubscriptionText);
 	String str = String.format(getString(R.string.SubscriptText), mContact);
 	tv.setText(str);
@@ -132,6 +136,20 @@
     }
 
     /**
+     * Send the presence stanza.
+     *
+     * @param p presence stanza
+     */
+    private void sendPresence(Presence p) {
+	PresenceAdapter preAdapt = new PresenceAdapter(p);
+	try {
+	    mService.sendPresencePacket(preAdapt);
+	} catch (RemoteException e) {
+	    Log.e(TAG, "Error while sending subscription response", e);
+	}
+    }
+
+    /**
      * Event simple click on buttons.
      */
     private class MyOnClickListener implements OnClickListener {
@@ -144,29 +162,25 @@
 
 	@Override
 	public void onClick(View v) {
+	    Presence presence = null;
 	    switch (v.getId()) {
 		case R.id.SubscriptionAccept:
-		    Presence presence = new Presence(Type.subscribed);
-		    presence.setTo(mContact);
-		    PresenceAdapter preAdapt = new PresenceAdapter(presence);
-		    try {
-			mService.sendPresencePacket(preAdapt);
-			Toast.makeText(Subscription.this, getString(R.string.SubscriptAccept), Toast.LENGTH_SHORT)
+		    presence = new Presence(Type.subscribed);
+		    Toast.makeText(Subscription.this, getString(R.string.SubscriptAccept), Toast.LENGTH_SHORT)
 			    .show();
-			finish();
-		    } catch (RemoteException e) {
-			Toast.makeText(Subscription.this, getString(R.string.SubscriptError), Toast.LENGTH_SHORT)
-			    .show();
-			e.printStackTrace();
-		    }
 		    break;
 		case R.id.SubscriptionRefuse:
+		    presence = new Presence(Type.unsubscribed);
 		    Toast.makeText(Subscription.this, getString(R.string.SubscriptRefused), Toast.LENGTH_SHORT).show();
-		    finish();
 		    break;
 		default:
 		    Toast.makeText(Subscription.this, getString(R.string.SubscriptError), Toast.LENGTH_SHORT).show();
 	    }
+	    if (presence != null) {
+		presence.setTo(mContact);
+		sendPresence(presence);
+	    }
+	    finish();
 	}
     };
 
--- a/src/net/java/otr4j/OtrKeyManagerImpl.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/net/java/otr4j/OtrKeyManagerImpl.java	Fri Apr 15 03:01:09 2011 +0200
@@ -21,7 +21,7 @@
 import java.util.Properties;
 import java.util.Vector;
 
-import org.bouncycastle.util.encoders.Base64;
+import org.bouncycastle2.util.encoders.Base64;
 
 import net.java.otr4j.crypto.OtrCryptoEngineImpl;
 import net.java.otr4j.crypto.OtrCryptoException;
--- a/src/net/java/otr4j/crypto/OtrCryptoEngineImpl.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/net/java/otr4j/crypto/OtrCryptoEngineImpl.java	Fri Apr 15 03:01:09 2011 +0200
@@ -30,22 +30,22 @@
 
 import net.java.otr4j.io.SerializationUtils;
 
-import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
-import org.bouncycastle.crypto.BufferedBlockCipher;
-import org.bouncycastle.crypto.engines.AESFastEngine;
-import org.bouncycastle.crypto.generators.DHKeyPairGenerator;
-import org.bouncycastle.crypto.modes.SICBlockCipher;
-import org.bouncycastle.crypto.params.DHKeyGenerationParameters;
-import org.bouncycastle.crypto.params.DHParameters;
-import org.bouncycastle.crypto.params.DHPrivateKeyParameters;
-import org.bouncycastle.crypto.params.DHPublicKeyParameters;
-import org.bouncycastle.crypto.params.DSAParameters;
-import org.bouncycastle.crypto.params.DSAPrivateKeyParameters;
-import org.bouncycastle.crypto.params.DSAPublicKeyParameters;
-import org.bouncycastle.crypto.params.KeyParameter;
-import org.bouncycastle.crypto.params.ParametersWithIV;
-import org.bouncycastle.crypto.signers.DSASigner;
-import org.bouncycastle.util.BigIntegers;
+import org.bouncycastle2.crypto.AsymmetricCipherKeyPair;
+import org.bouncycastle2.crypto.BufferedBlockCipher;
+import org.bouncycastle2.crypto.engines.AESFastEngine;
+import org.bouncycastle2.crypto.generators.DHKeyPairGenerator;
+import org.bouncycastle2.crypto.modes.SICBlockCipher;
+import org.bouncycastle2.crypto.params.DHKeyGenerationParameters;
+import org.bouncycastle2.crypto.params.DHParameters;
+import org.bouncycastle2.crypto.params.DHPrivateKeyParameters;
+import org.bouncycastle2.crypto.params.DHPublicKeyParameters;
+import org.bouncycastle2.crypto.params.DSAParameters;
+import org.bouncycastle2.crypto.params.DSAPrivateKeyParameters;
+import org.bouncycastle2.crypto.params.DSAPublicKeyParameters;
+import org.bouncycastle2.crypto.params.KeyParameter;
+import org.bouncycastle2.crypto.params.ParametersWithIV;
+import org.bouncycastle2.crypto.signers.DSASigner;
+import org.bouncycastle2.util.BigIntegers;
 
 /**
  * 
--- a/src/net/java/otr4j/io/OtrOutputStream.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/net/java/otr4j/io/OtrOutputStream.java	Fri Apr 15 03:01:09 2011 +0200
@@ -14,7 +14,7 @@
 import net.java.otr4j.io.messages.MysteriousT;
 import net.java.otr4j.io.messages.SignatureX;
 
-import org.bouncycastle.util.BigIntegers;
+import org.bouncycastle2.util.BigIntegers;
 
 public class OtrOutputStream extends FilterOutputStream implements
 		SerializationConstants {
--- a/src/net/java/otr4j/io/SerializationUtils.java	Tue Dec 28 16:33:33 2010 +0100
+++ b/src/net/java/otr4j/io/SerializationUtils.java	Fri Apr 15 03:01:09 2011 +0200
@@ -20,7 +20,7 @@
 
 import javax.crypto.interfaces.DHPublicKey;
 
-import org.bouncycastle.util.encoders.Base64;
+import org.bouncycastle2.util.encoders.Base64;
 
 import net.java.otr4j.io.messages.AbstractEncodedMessage;
 import net.java.otr4j.io.messages.AbstractMessage;
--- a/tools/JavaHeaderCheck.regex	Tue Dec 28 16:33:33 2010 +0100
+++ b/tools/JavaHeaderCheck.regex	Fri Apr 15 03:01:09 2011 +0200
@@ -1,7 +1,7 @@
 ^/\*$
 ^    BEEM is a videoconference application on the Android Platform\.$
 ^$
-^    Copyright \(C\) \d\d\d\d by .*$
+^    Copyright \(C\) 2009(-\d\d\d\d)? by .*$
 ^                         .*$
 ^$
 ^    This file is part of BEEM\.$
@@ -20,7 +20,7 @@
 ^    along with BEEM\.  If not, see <http://www.gnu.org/licenses/>\.$
 ^$
 ^    Please send bug reports with examples or suggestions to$
-^    contact@beem-project\.com or http://dev\.beem-project\.com/$
+^    contact@beem-project\.com or http://(dev|www)\.beem-project\.com/$
 ^$
 ^    Epitech, hereby disclaims all copyright interest in the program "Beem"$
 ^    written by Frederic-Charles Barthelery,$
--- a/tools/LicenseHeader.txt	Tue Dec 28 16:33:33 2010 +0100
+++ b/tools/LicenseHeader.txt	Fri Apr 15 03:01:09 2011 +0200
@@ -1,12 +1,9 @@
 /*
     BEEM is a videoconference application on the Android Platform.
 
-    Copyright (C) 2009 by Frederic-Charles Barthelery,
-                          Jean-Manuel Da Silva,
-                          Nikita Kozlov,
-                          Philippe Lago,
-                          Jean Baptiste Vergely,
-                          Vincent Veronis.
+    Copyright (C) 2009-2011 by Frederic-Charles Barthelery,
+                               Nikita Kozlov,
+                               Vincent Veronis.
 
     This file is part of BEEM.
 
@@ -24,20 +21,6 @@
     along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
 
     Please send bug reports with examples or suggestions to
-    contact@beem-project.com or http://dev.beem-project.com/
-
-    Epitech, hereby disclaims all copyright interest in the program "Beem"
-    written by Frederic-Charles Barthelery,
-               Jean-Manuel Da Silva,
-               Nikita Kozlov,
-               Philippe Lago,
-               Jean Baptiste Vergely,
-               Vincent Veronis.
-
-    Nicolas Sadirac, November 26, 2009
-    President of Epitech.
-
-    Flavien Astraud, November 26, 2009
-    Head of the EIP Laboratory.
+    contact@beem-project.com or http://www.beem-project.com/
 
 */
--- a/tools/checkstyle.xml	Tue Dec 28 16:33:33 2010 +0100
+++ b/tools/checkstyle.xml	Fri Apr 15 03:01:09 2011 +0200
@@ -1,208 +1,343 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
 
 <!--
-    This configuration file was written by the eclipse-cs plugin configuration editor
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+  - the Java Language Specification at
+  http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+  - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+  - the Javadoc guidelines at
+  http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+  - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+  - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
 -->
-<!--
-    Checkstyle-Configuration: Beem Checks
-    Description: none
--->
+
 <module name="Checker">
-  <property name="severity" value="warning"/>
-  <property name="basedir" value="/home/beem/"/>
-  <module name="TreeWalker">
-    <module name="JavadocMethod">
-      <property name="severity" value="error"/>
-      <property name="allowUndeclaredRTE" value="true"/>
-    </module>
-    <module name="JavadocType">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="JavadocVariable">
-      <property name="severity" value="error"/>
-      <property name="scope" value="package"/>
-    </module>
-    <module name="JavadocStyle">
-      <property name="severity" value="error"/>
-      <property name="checkEmptyJavadoc" value="true"/>
-    </module>
-    <module name="ConstantName"/>
-    <module name="LocalFinalVariableName"/>
-    <module name="LocalVariableName"/>
-    <module name="MemberName">
-      <property name="severity" value="error"/>
-      <property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
-    </module>
-    <module name="MethodName"/>
-    <module name="PackageName"/>
-    <module name="ParameterName"/>
-    <module name="StaticVariableName"/>
-    <module name="TypeName"/>
-    <module name="AvoidStarImport"/>
-    <module name="IllegalImport"/>
-    <module name="RedundantImport"/>
-    <module name="UnusedImports">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="AvoidStaticImport">
-      <property name="excludes" value="*"/>
-    </module>
-    <module name="LineLength">
-      <property name="max" value="120"/>
+  <!--
+        If you set the basedir property below, then all reported file
+        names will be relative to the specified directory. See
+        http://checkstyle.sourceforge.net/5.x/config.html#Checker
+-->
+    <property name="basedir" value="/home/beem/" default="."/>
+
+    <property name="severity" value="warning"/>
+
+    <!-- Checks that a package-info.java file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+    <module name="JavadocPackage">
+	<property name="allowLegacy" value="false"/>
     </module>
-    <module name="MethodLength"/>
-    <module name="ParameterNumber"/>
-    <module name="AnonInnerLength">
-      <property name="max" value="60"/>
-    </module>
-    <module name="EmptyForIteratorPad"/>
-    <module name="GenericWhitespace">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="MethodParamPad">
-      <property name="severity" value="error"/>
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <module name="NewlineAtEndOfFile">
+	<property name="severity" value="error"/>
     </module>
-    <module name="NoWhitespaceAfter">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="NoWhitespaceBefore">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="OperatorWrap"/>
-    <module name="ParenPad">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="TypecastParenPad">
-      <property name="severity" value="error"/>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation">
+	<property name="severity" value="error"/>
     </module>
-    <module name="WhitespaceAfter">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="WhitespaceAround">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="ModifierOrder">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="RedundantModifier">
-      <property name="severity" value="error"/>
+
+    <!-- Checks for Size Violations.                    -->
+    <!-- See http://checkstyle.sf.net/config_sizes.html -->
+    <module name="FileLength"/>
+
+    <!-- Checks for whitespace                               -->
+    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+    <!-- we want tab
+    <module name="FileTabCharacter"/>
+    -->
+
+    <!-- Miscellaneous other checks.                   -->
+    <!-- See http://checkstyle.sf.net/config_misc.html -->
+    <module name="RegexpSingleline">
+	<property name="severity" value="error"/>
+	<property name="format" value="\s+$"/>
+	<property name="minimum" value="0"/>
+	<property name="maximum" value="0"/>
+	<property name="message" value="Line has trailing spaces."/>
     </module>
-    <module name="AvoidNestedBlocks"/>
-    <module name="EmptyBlock"/>
-    <module name="LeftCurly">
-      <property name="severity" value="error"/>
+
+    <!-- This rules is desactivated because it is too stupid.
+	It also compare the Header of the file.
+    <module name="StrictDuplicateCode">
+	<property name="min" value="25" />
     </module>
-    <module name="RightCurly">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="AnnotationUseStyle">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="MissingDeprecated">
-      <property name="severity" value="error"/>
+    -->
+
+    <!-- Header file -->
+    <module name="RegexpHeader">
+	<property name="headerFile" value="${basedir}/tools/JavaHeaderCheck.regex"/>
+	<property name="multiLines" value="5, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38"/>
+	<property name="severity" value="error" />
     </module>
-    <module name="MissingOverride">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="CovariantEquals"/>
-    <module name="AvoidInlineConditionals"/>
-    <module name="InnerAssignment"/>
-    <module name="DoubleCheckedLocking"/>
-    <module name="EmptyStatement"/>
-    <module name="EqualsHashCode">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="HiddenField">
-      <property name="ignoreConstructorParameter" value="true"/>
-      <property name="ignoreSetter" value="true"/>
-      <property name="ignoreAbstractMethods" value="true"/>
-    </module>
-    <module name="IllegalInstantiation"/>
-    <module name="InnerAssignment">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="MagicNumber"/>
-    <module name="MissingSwitchDefault">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="RedundantThrows"/>
-    <module name="SimplifyBooleanExpression">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="SimplifyBooleanReturn">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="StringLiteralEquality">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="IllegalCatch"/>
-    <module name="IllegalThrows"/>
-    <module name="IllegalType"/>
-    <module name="PackageDeclaration"/>
-    <module name="JUnitTestCase"/>
-    <module name="DeclarationOrder">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="ExplicitInitialization"/>
-    <module name="DefaultComesLast"/>
-    <module name="MissingCtor"/>
-    <module name="FallThrough"/>
-    <module name="MultipleStringLiterals">
-      <property name="allowedDuplicates" value="2"/>
+
+    <module name="TreeWalker">
+
+	<!-- Checks for Javadoc comments.                     -->
+	<!-- See http://checkstyle.sf.net/config_javadoc.html -->
+	<module name="JavadocMethod">
+	    <property name="allowUndeclaredRTE" value="true"/>
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="JavadocType">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="JavadocVariable">
+	    <property name="scope" value="package" />
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="JavadocStyle">
+	    <property name="checkEmptyJavadoc" value="true"/>
+	    <property name="severity" value="error"/>
+	</module>
+
+
+	<!-- Checks for Naming Conventions.                  -->
+	<!-- See http://checkstyle.sf.net/config_naming.html -->
+	<module name="ConstantName"/>
+	<module name="LocalFinalVariableName"/>
+	<module name="LocalVariableName"/>
+	<module name="MemberName">
+	    <property  name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="MethodName"/>
+	<module name="PackageName"/>
+	<module name="ParameterName"/>
+	<module name="StaticVariableName"/>
+	<module name="TypeName"/>
+
+
+	<!-- Checks for Headers                                -->
+	<!-- See http://checkstyle.sf.net/config_header.html   -->
+	<!-- <module name="Header">                            -->
+	<!-- The follow property value demonstrates the ability     -->
+	<!-- to have access to ANT properties. In this case it uses -->
+	<!-- the ${basedir} property to allow Checkstyle to be run  -->
+	<!-- from any directory within a project. See property      -->
+	<!-- expansion,                                             -->
+	<!-- http://checkstyle.sf.net/config.html#properties        -->
+	<!-- <property                                              -->
+	<!--     name="headerFile"                                  -->
+	<!--     value="${basedir}/java.header"/>                   -->
+	<!-- </module> -->
+
+	<!-- Checks for imports                              -->
+	<!-- See http://checkstyle.sf.net/config_import.html -->
+	<module name="AvoidStarImport"/>
+	<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+	<module name="RedundantImport"/>
+	<module name="UnusedImports">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="AvoidStaticImport">
+	    <property name="excludes" value="*"/>
+	</module>
+
+
+	<!-- Checks for Size Violations.                    -->
+	<!-- See http://checkstyle.sf.net/config_sizes.html -->
+	<module name="LineLength">
+	    <property name="max" value="120" />
+	</module>
+	<module name="MethodLength"/>
+	<module name="ParameterNumber"/>
+	<module name="AnonInnerLength">
+	    <property name="max" value="60" />
+	</module>
+
+
+	<!-- Checks for whitespace                               -->
+	<!-- See http://checkstyle.sf.net/config_whitespace.html -->
+	<module name="EmptyForIteratorPad"/>
+	<module name="GenericWhitespace">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="MethodParamPad">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="NoWhitespaceAfter">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="NoWhitespaceBefore">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="OperatorWrap"/>
+	<module name="ParenPad">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="TypecastParenPad">
+	    <property name="severity" value="error"/>
+	</module>
+	<!-- We want mixed tabulation
+	  <module name="TabCharacter"/> 
+	  -->
+	<module name="WhitespaceAfter">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="WhitespaceAround">
+	    <property name="severity" value="error"/>
+	</module>
+
+
+	<!-- Modifier Checks                                    -->
+	<!-- See http://checkstyle.sf.net/config_modifiers.html -->
+	<module name="ModifierOrder">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="RedundantModifier">
+	    <property name="severity" value="error"/>
+	</module>
+
+
+	<!-- Checks for blocks. You know, those {}'s         -->
+	<!-- See http://checkstyle.sf.net/config_blocks.html -->
+	<module name="AvoidNestedBlocks"/>
+	<module name="EmptyBlock"/>
+	<module name="LeftCurly">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="RightCurly">
+	    <property name="severity" value="error"/>
+	</module>
+	<!--
+	  <module name="NeedBraces"/>
+	  -->
+
+	<!-- Check for annotations 
+	http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated
+	-->
+	<module name="AnnotationUseStyle">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="MissingDeprecated">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="MissingOverride">
+	    <property name="severity" value="error"/>
+	</module>
+
+	<!-- Checks for common coding problems               -->
+	<!-- See http://checkstyle.sf.net/config_coding.html -->
+	<module name="CovariantEquals"/>
+	<module name="AvoidInlineConditionals"/>
+	<module name="InnerAssignment" />
+	<module name="DoubleCheckedLocking"/>    <!-- MY FAVOURITE -->
+	<module name="EmptyStatement"/>
+	<module name="EqualsHashCode">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="HiddenField">
+	    <property name="ignoreConstructorParameter" value="true"/>
+	    <property name="ignoreAbstractMethods" value="true"/>
+	    <property name="ignoreSetter" value="true"/>
+	</module>
+	<module name="IllegalInstantiation"/>
+	<module name="InnerAssignment">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="MagicNumber"/>
+	<module name="MissingSwitchDefault">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="RedundantThrows"/>
+	<module name="SimplifyBooleanExpression">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="SimplifyBooleanReturn">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="StringLiteralEquality">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="IllegalCatch"/>
+	<module name="IllegalThrows"/>
+	<module name="IllegalType"/>
+	<module name="PackageDeclaration"/>
+	<module name="JUnitTestCase"/>
+	<module name="DeclarationOrder">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="ExplicitInitialization"/>
+	<module name="DefaultComesLast"/>
+	<module name="MissingCtor" >
+	    <property name="severity" value="info"/>
+	</module>
+	<module name="FallThrough"/>
+	<module name="MultipleStringLiterals">
+	    <property name="allowedDuplicates" value="2"/>
+	</module>
+	<module name="MultipleVariableDeclarations"/>
+	<module name="UnnecessaryParentheses"/>
+	<module name="ParameterAssignment"/>
+	<module name="EqualsAvoidNull">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="NoClone"/>
+	<module name="NoFinalizer"/>
+	<module name="SuperClone"/>
+	<module name="SuperFinalize"/>
+	<module name="ModifiedControlVariable">
+	    <property name="severity" value="error"/>
+	</module>
+	<module name="ReturnCount">
+	    <property name="max" value="3"/>
+	</module>
+
+	<!-- Checks for class design                         -->
+	<!-- See http://checkstyle.sf.net/config_design.html -->
+	<!-- 
+	  <module name="DesignForExtension"/>
+	  -->
+	<module name="FinalClass"/>
+	<module name="HideUtilityClassConstructor"/>
+	<!-- 
+	<module name="InterfaceIsType"/>
+	-->
+	<module name="VisibilityModifier"/>
+	<module name="MutableException"/>
+	<module name="ThrowsCount">
+	    <property name="max" value="2" />
+	</module>
+
+
+	<!-- Miscellaneous other checks.                   -->
+	<!-- See http://checkstyle.sf.net/config_misc.html -->
+	<module name="ArrayTypeStyle"/>
+	<module name="FinalParameters">
+	    <property name="tokens" value="CTOR_DEF"/>
+	</module>
+	<module name="Indentation"/>
+
+	<module name="TodoComment"/>
+	<module name="UpperEll"/>
+
+	<module name="BooleanExpressionComplexity"/>
+	<module name="UpperEll"/>
+
+	<module name="ArrayTypeStyle"/>
+
     </module>
-    <module name="MultipleVariableDeclarations"/>
-    <module name="UnnecessaryParentheses"/>
-    <module name="ParameterAssignment"/>
-    <module name="EqualsAvoidNull">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="NoClone"/>
-    <module name="NoFinalizer"/>
-    <module name="SuperClone"/>
-    <module name="SuperFinalize"/>
-    <module name="ModifiedControlVariable">
-      <property name="severity" value="error"/>
-    </module>
-    <module name="ReturnCount">
-      <property name="max" value="3"/>
-    </module>
-    <module name="FinalClass"/>
-    <module name="HideUtilityClassConstructor"/>
-    <module name="VisibilityModifier"/>
-    <module name="MutableException"/>
-    <module name="ThrowsCount">
-      <property name="max" value="2"/>
-    </module>
-    <module name="ArrayTypeStyle"/>
-    <module name="FinalParameters">
-      <property name="tokens" value="CTOR_DEF"/>
-    </module>
-    <module name="Indentation"/>
-    <module name="TodoComment"/>
-    <module name="UpperEll"/>
-    <module name="BooleanExpressionComplexity"/>
-    <module name="UpperEll"/>
-    <module name="ArrayTypeStyle"/>
-  </module>
-  <module name="JavadocPackage">
-    <property name="allowLegacy" value="true"/>
-  </module>
-  <module name="NewlineAtEndOfFile">
-    <property name="severity" value="error"/>
-  </module>
-  <module name="Translation">
-    <property name="severity" value="error"/>
-  </module>
-  <module name="FileLength"/>
-  <module name="RegexpSingleline">
-    <property name="severity" value="error"/>
-    <property name="format" value="\s+$"/>
-    <property name="message" value="Line has trailing spaces."/>
-  </module>
-  <module name="RegexpHeader">
-    <property name="severity" value="error"/>
-    <property name="headerFile" value="${basedir}/tools/JavaHeaderCheck.regex"/>
-    <property name="multiLines" value="5, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38"/>
-  </module>
+
 </module>