diff --git a/res/values-FR/strings.xml b/res/values-FR/strings.xml
index 6f902ca3b..9644ce847 100644
--- a/res/values-FR/strings.xml
+++ b/res/values-FR/strings.xml
@@ -371,4 +371,7 @@
Télécharger
Téléchargement échoué. Vérifiez votre connexion internet ou reéssayez plus tard.
+
+ Merci de patienter...
+ Mise à jour de la base des messages
diff --git a/res/values/strings.xml b/res/values/strings.xml
index bd11295fe..f9162cdd6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -425,4 +425,7 @@
Enter authentication userid (optionnal)
Enable UPNP
+
+ Please wait...
+ Updating messages database
diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java
index 29edb62b8..a25adcaac 100644
--- a/src/org/linphone/ChatListFragment.java
+++ b/src/org/linphone/ChatListFragment.java
@@ -26,7 +26,9 @@ import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.mediastream.Log;
+import android.app.ProgressDialog;
import android.content.SharedPreferences;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
@@ -119,13 +121,38 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
//Check if the is the first time we show the chat view since we use liblinphone chat storage
boolean useLinphoneStorage = getResources().getBoolean(R.bool.use_linphone_chat_storage);
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LinphoneActivity.instance());
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LinphoneActivity.instance());
boolean updateNeeded = prefs.getBoolean(getString(R.string.pref_first_time_linphone_chat_storage), true);
if (useLinphoneStorage && updateNeeded) {
- if (importAndroidStoredMessagedIntoLibLinphoneStorage()) {
- prefs.edit().putBoolean(getString(R.string.pref_first_time_linphone_chat_storage), false).commit();
- LinphoneActivity.instance().getChatStorage().restartChatStorage();
- }
+ AsyncTask task = new AsyncTask() {
+ private ProgressDialog pd;
+ @Override
+ protected void onPreExecute() {
+ pd = new ProgressDialog(LinphoneActivity.instance());
+ pd.setTitle(getString(R.string.wait));
+ pd.setMessage(getString(R.string.importing_messages));
+ pd.setCancelable(false);
+ pd.setIndeterminate(true);
+ pd.show();
+ }
+ @Override
+ protected Void doInBackground(Void... arg0) {
+ try {
+ if (importAndroidStoredMessagedIntoLibLinphoneStorage()) {
+ prefs.edit().putBoolean(getString(R.string.pref_first_time_linphone_chat_storage), false).commit();
+ LinphoneActivity.instance().getChatStorage().restartChatStorage();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ @Override
+ protected void onPostExecute(Void result) {
+ pd.dismiss();
+ }
+ };
+ task.execute((Void[])null);
}
if (LinphoneActivity.isInstanciated()) {
@@ -225,7 +252,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
String correspondent = conversations.get(j);
LinphoneChatRoom room = LinphoneManager.getLc().getOrCreateChatRoom(correspondent);
for (ChatMessage message : db.getMessages(correspondent)) {
- LinphoneChatMessage msg = room.createLinphoneChatMessage(message.getMessage(), message.getUrl(), message.getStatus(), Long.parseLong(message.getTimestamp()), message.isIncoming(), message.isRead());
+ LinphoneChatMessage msg = room.createLinphoneChatMessage(message.getMessage(), message.getUrl(), message.getStatus(), Long.parseLong(message.getTimestamp()), message.isRead(), message.isIncoming());
msg.store();
}
db.removeDiscussion(correspondent);
diff --git a/src/org/linphone/ChatMessage.java b/src/org/linphone/ChatMessage.java
index 1d8c567d7..b0c59c8cb 100644
--- a/src/org/linphone/ChatMessage.java
+++ b/src/org/linphone/ChatMessage.java
@@ -109,4 +109,8 @@ public class ChatMessage {
public void setUrl(String url) {
this.url = url;
}
+
+ public String toString() {
+ return this.id + " : " + this.message + " (" + this.url + ") @ " + this.timestamp + ", read= " + this.isRead + ", incoming= " + this.incoming + ", status = " + this.status;
+ }
}
diff --git a/src/org/linphone/ChatStorage.java b/src/org/linphone/ChatStorage.java
index 9c5d99928..71ecbd6e2 100644
--- a/src/org/linphone/ChatStorage.java
+++ b/src/org/linphone/ChatStorage.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.linphone.core.LinphoneChatMessage;
import org.linphone.core.LinphoneChatRoom;
+import org.linphone.mediastream.Log;
import android.content.ContentValues;
import android.content.Context;
@@ -31,8 +32,8 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
import android.preference.PreferenceManager;
/**
@@ -69,6 +70,7 @@ public class ChatStorage {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LinphoneActivity.instance());
boolean updateNeeded = prefs.getBoolean(c.getString(R.string.pref_first_time_linphone_chat_storage), true);
useNativeAPI = useLinphoneStorage && !updateNeeded;
+ Log.d("Using native API: " + useNativeAPI);
if (!useNativeAPI) {
ChatHelper chatHelper = new ChatHelper(context);
diff --git a/submodules/linphone b/submodules/linphone
index 90b6aa36f..440fabd24 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 90b6aa36f2982cb7cce7ebd50d9dfafd20d4274e
+Subproject commit 440fabd247fbbb5865754951fa8ed3834fa92d5c