Updated liblinphone + started import of previous database messages into the new one on update (pictures not included for now)
This commit is contained in:
parent
ed3626790a
commit
4475002bcc
4 changed files with 53 additions and 2 deletions
|
@ -114,4 +114,6 @@
|
||||||
<string name="pref_rfc2833_dtmf_key">pref_rfc2833_dtmf_key</string>
|
<string name="pref_rfc2833_dtmf_key">pref_rfc2833_dtmf_key</string>
|
||||||
<string name="pref_sipinfo_dtmf_key">pref_sipinfo_dtmf_key</string>
|
<string name="pref_sipinfo_dtmf_key">pref_sipinfo_dtmf_key</string>
|
||||||
<string name="pref_upnp_enable_key">pref_upnp_enable_key</string>
|
<string name="pref_upnp_enable_key">pref_upnp_enable_key</string>
|
||||||
|
|
||||||
|
<string name="pref_first_time_linphone_chat_storage">pref_first_time_linphone_chat_storage</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -20,12 +20,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.linphone.core.LinphoneAddress;
|
import org.linphone.core.LinphoneAddress;
|
||||||
|
import org.linphone.core.LinphoneChatMessage;
|
||||||
|
import org.linphone.core.LinphoneChatRoom;
|
||||||
import org.linphone.core.LinphoneCoreException;
|
import org.linphone.core.LinphoneCoreException;
|
||||||
import org.linphone.core.LinphoneCoreFactory;
|
import org.linphone.core.LinphoneCoreFactory;
|
||||||
import org.linphone.mediastream.Log;
|
import org.linphone.mediastream.Log;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
|
@ -113,6 +117,17 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
|
//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());
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (LinphoneActivity.isInstanciated()) {
|
if (LinphoneActivity.isInstanciated()) {
|
||||||
LinphoneActivity.instance().selectMenu(FragmentsAvailable.CHATLIST);
|
LinphoneActivity.instance().selectMenu(FragmentsAvailable.CHATLIST);
|
||||||
LinphoneActivity.instance().updateChatListFragment(this);
|
LinphoneActivity.instance().updateChatListFragment(this);
|
||||||
|
@ -200,6 +215,29 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean importAndroidStoredMessagedIntoLibLinphoneStorage() {
|
||||||
|
//TODO import pictures
|
||||||
|
Log.w("Importing previous messages into new database...");
|
||||||
|
try {
|
||||||
|
ChatStorage db = LinphoneActivity.instance().getChatStorage();
|
||||||
|
List<String> conversations = db.getChatList();
|
||||||
|
for (int j = conversations.size() - 1; j >= 0; j--) {
|
||||||
|
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());
|
||||||
|
msg.store();
|
||||||
|
}
|
||||||
|
db.removeDiscussion(correspondent);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
class ChatListAdapter extends BaseAdapter {
|
class ChatListAdapter extends BaseAdapter {
|
||||||
ChatListAdapter() {
|
ChatListAdapter() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,12 +26,14 @@ import org.linphone.core.LinphoneChatRoom;
|
||||||
|
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.database.sqlite.SQLiteOpenHelper;
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.Bitmap.CompressFormat;
|
import android.graphics.Bitmap.CompressFormat;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Sylvain Berfini
|
* @author Sylvain Berfini
|
||||||
|
@ -55,9 +57,18 @@ public class ChatStorage {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void restartChatStorage() {
|
||||||
|
if (instance != null)
|
||||||
|
instance.close();
|
||||||
|
instance = new ChatStorage(LinphoneService.instance().getApplicationContext());
|
||||||
|
}
|
||||||
|
|
||||||
private ChatStorage(Context c) {
|
private ChatStorage(Context c) {
|
||||||
context = c;
|
context = c;
|
||||||
useNativeAPI = c.getResources().getBoolean(R.bool.use_linphone_chat_storage);
|
boolean useLinphoneStorage = c.getResources().getBoolean(R.bool.use_linphone_chat_storage);
|
||||||
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LinphoneActivity.instance());
|
||||||
|
boolean updateNeeded = prefs.getBoolean(c.getString(R.string.pref_first_time_linphone_chat_storage), true);
|
||||||
|
useNativeAPI = useLinphoneStorage && !updateNeeded;
|
||||||
|
|
||||||
if (!useNativeAPI) {
|
if (!useNativeAPI) {
|
||||||
ChatHelper chatHelper = new ChatHelper(context);
|
ChatHelper chatHelper = new ChatHelper(context);
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 01d35e5b53fca8358e2b9b8dc67d47b4cca4327f
|
Subproject commit 90b6aa36f2982cb7cce7ebd50d9dfafd20d4274e
|
Loading…
Reference in a new issue