From 7348384b686be94bf976584f91bbc16c5b6f5960 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 19 Aug 2013 11:17:35 +0200 Subject: [PATCH] Chat importing finished for text messages (todo images) + waiting dialog during import --- res/values-FR/strings.xml | 3 ++ res/values/strings.xml | 3 ++ src/org/linphone/ChatListFragment.java | 39 ++++++++++++++++++++++---- src/org/linphone/ChatMessage.java | 4 +++ src/org/linphone/ChatStorage.java | 4 ++- submodules/linphone | 2 +- 6 files changed, 47 insertions(+), 8 deletions(-) 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