diff options
author | Wei Huang <weih@google.com> | 2009-04-28 22:42:01 -0700 |
---|---|---|
committer | Wei Huang <weih@google.com> | 2009-04-29 11:59:01 -0700 |
commit | b26882e6024b4cb86268472ca04eb29f5d1a60f6 (patch) | |
tree | 172fa9af500c30dee8769ccead99a942b249eeb4 /src | |
parent | 4961ea99e4a765a5b4a6e9e0a36e51d8cec2af78 (diff) | |
download | IM-b26882e6024b4cb86268472ca04eb29f5d1a60f6.tar.gz |
store contact_id in messages table instead of the contact name string; merge messages and group messages table.
- modify the IM app to use the new Im.Messages.getContentUriByThreadId().
- corresponding changes due to android.provider.Im api change.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/im/app/ChatView.java | 20 | ||||
-rw-r--r-- | src/com/android/im/service/ChatSessionAdapter.java | 38 | ||||
-rw-r--r-- | src/com/android/im/service/ContactListManagerAdapter.java | 3 |
3 files changed, 28 insertions, 33 deletions
diff --git a/src/com/android/im/app/ChatView.java b/src/com/android/im/app/ChatView.java index 665c7a5..c9bc1d1 100644 --- a/src/com/android/im/app/ChatView.java +++ b/src/com/android/im/app/ChatView.java @@ -658,9 +658,9 @@ public class ChatView extends LinearLayout { Uri uri; if (Im.Contacts.TYPE_GROUP == mType) { - uri = ContentUris.withAppendedId(Im.GroupMessages.CONTENT_URI_GROUP_MESSAGES_BY, mChatId); + uri = Im.Messages.getGroupChatContentUriByThreadId(mChatId); } else { - uri = Im.Messages.getContentUriByContact(mProviderId, mAccountId, mUserName); + uri = Im.Messages.getContentUriByThreadId(mChatId); } if (Log.isLoggable(ImApp.LOG_TAG, Log.DEBUG)){ @@ -1054,7 +1054,7 @@ public class ChatView extends LinearLayout { for (int i = 0 ; i < len ; i++) { mColumnNames[i] = columnNames[i]; - if (mColumnNames[i].equals(Im.BaseMessageColumns.DATE)) { + if (mColumnNames[i].equals(Im.Messages.DATE)) { mDateColumn = i; } } @@ -1418,7 +1418,7 @@ public class ChatView extends LinearLayout { private int mScrollState; private boolean mNeedRequeryCursor; - private int mContactColumn; + private int mNicknameColumn; private int mBodyColumn; private int mDateColumn; private int mTypeColumn; @@ -1438,11 +1438,11 @@ public class ChatView extends LinearLayout { } private void resolveColumnIndex(Cursor c) { - mContactColumn = c.getColumnIndexOrThrow(Im.BaseMessageColumns.CONTACT); - mBodyColumn = c.getColumnIndexOrThrow(Im.BaseMessageColumns.BODY); - mDateColumn = c.getColumnIndexOrThrow(Im.BaseMessageColumns.DATE); - mTypeColumn = c.getColumnIndexOrThrow(Im.BaseMessageColumns.TYPE); - mErrCodeColumn = c.getColumnIndexOrThrow(Im.BaseMessageColumns.ERROR_CODE); + mNicknameColumn = c.getColumnIndexOrThrow(Im.Messages.NICKNAME); + mBodyColumn = c.getColumnIndexOrThrow(Im.Messages.BODY); + mDateColumn = c.getColumnIndexOrThrow(Im.Messages.DATE); + mTypeColumn = c.getColumnIndexOrThrow(Im.Messages.TYPE); + mErrCodeColumn = c.getColumnIndexOrThrow(Im.Messages.ERROR_CODE); mDeltaColumn = c.getColumnIndexOrThrow(DeltaCursor.DELTA_COLUMN_NAME); } @@ -1464,7 +1464,7 @@ public class ChatView extends LinearLayout { MessageView chatMsgView = (MessageView) view; int type = cursor.getInt(mTypeColumn); - String contact = isGroupChat() ? cursor.getString(mContactColumn) : mNickName; + String contact = isGroupChat() ? cursor.getString(mNicknameColumn) : mNickName; String body = cursor.getString(mBodyColumn); long delta = cursor.getLong(mDeltaColumn); boolean showTimeStamp = (delta > SHOW_TIME_STAMP_INTERVAL); diff --git a/src/com/android/im/service/ChatSessionAdapter.java b/src/com/android/im/service/ChatSessionAdapter.java index 35c3825..c329224 100644 --- a/src/com/android/im/service/ChatSessionAdapter.java +++ b/src/com/android/im/service/ChatSessionAdapter.java @@ -49,8 +49,8 @@ import java.util.List; public class ChatSessionAdapter extends IChatSession.Stub { - private static final String NON_CHAT_MESSAGE_SELECTION = Im.BaseMessageColumns.TYPE - + "!=" + Im.MessageType.INCOMING + " AND " + Im.BaseMessageColumns.TYPE + private static final String NON_CHAT_MESSAGE_SELECTION = Im.Messages.TYPE + + "!=" + Im.MessageType.INCOMING + " AND " + Im.Messages.TYPE + "!=" + Im.MessageType.OUTGOING; static final String TAG = RemoteImService.TAG; @@ -106,8 +106,7 @@ public class ChatSessionAdapter extends IChatSession.Stub { mIsGroupChat = true; long groupId = insertGroupContactInDb(group); group.addMemberListener(mListenerAdapter); - mMessageURI = ContentUris.withAppendedId( - Im.GroupMessages.CONTENT_URI_GROUP_MESSAGES_BY, groupId); + mMessageURI = Im.Messages.getGroupChatContentUriByThreadId(groupId); mChatURI = ContentUris.withAppendedId(Im.Chats.CONTENT_URI, groupId); insertOrUpdateChat(null); @@ -122,10 +121,7 @@ public class ChatSessionAdapter extends IChatSession.Stub { (ContactListManagerAdapter) mConnection.getContactListManager(); long contactId = listManager.queryOrInsertContact(contact); - long provider = mConnection.getProviderId(); - long account = mConnection.getAccountId(); - String address = contact.getAddress().getFullName(); - mMessageURI = Im.Messages.getContentUriByContact(provider, account, address); + mMessageURI = Im.Messages.getContentUriByThreadId(contactId); mChatURI = ContentUris.withAppendedId(Im.Chats.CONTENT_URI, contactId); insertOrUpdateChat(null); @@ -215,10 +211,9 @@ public class ChatSessionAdapter extends IChatSession.Stub { public void leave() { if (mIsGroupChat) { getGroupManager().leaveChatGroupAsync((ChatGroup)mAdaptee.getParticipant()); - mContentResolver.delete(mMessageURI, null, null); - } else { - mContentResolver.delete(mMessageURI, null, null); } + + mContentResolver.delete(mMessageURI, null, null); mContentResolver.delete(mChatURI, null, null); mStatusBarNotifier.dismissChatNotification( mConnection.getProviderId(), getAddress()); @@ -247,11 +242,11 @@ public class ChatSessionAdapter extends IChatSession.Stub { void sendPostponedMessages() { String[] projection = new String[] { BaseColumns._ID, - Im.BaseMessageColumns.BODY, - Im.BaseMessageColumns.DATE, - Im.BaseMessageColumns.TYPE, + Im.Messages.BODY, + Im.Messages.DATE, + Im.Messages.TYPE, }; - String selection = Im.BaseMessageColumns.TYPE + "=?"; + String selection = "messages.type=?"; Cursor c = mContentResolver.query(mMessageURI, projection, selection, new String[]{Integer.toString(Im.MessageType.POSTPONED)}, null); @@ -450,7 +445,7 @@ public class ChatSessionAdapter extends IChatSession.Stub { } void removeMessageInDb(int type) { - mContentResolver.delete(mMessageURI, Im.BaseMessageColumns.TYPE + "=?", + mContentResolver.delete(mMessageURI, Im.Messages.TYPE + "=?", new String[]{Integer.toString(type)}); } @@ -460,12 +455,13 @@ public class ChatSessionAdapter extends IChatSession.Stub { Uri insertMessageInDb(String contact, String body, long time, int type, int errCode) { ContentValues values = new ContentValues(mIsGroupChat ? 4 : 3); - values.put(Im.BaseMessageColumns.BODY, body); - values.put(Im.BaseMessageColumns.DATE, time); - values.put(Im.BaseMessageColumns.TYPE, type); - values.put(Im.BaseMessageColumns.ERROR_CODE, errCode); + values.put(Im.Messages.BODY, body); + values.put(Im.Messages.DATE, time); + values.put(Im.Messages.TYPE, type); + values.put(Im.Messages.ERROR_CODE, errCode); if (mIsGroupChat) { - values.put(Im.BaseMessageColumns.CONTACT, contact); + values.put(Im.Messages.NICKNAME, contact); + values.put(Im.Messages.IS_GROUP_CHAT, 1); } return mContentResolver.insert(mMessageURI, values); diff --git a/src/com/android/im/service/ContactListManagerAdapter.java b/src/com/android/im/service/ContactListManagerAdapter.java index eaa0a48..3454385 100644 --- a/src/com/android/im/service/ContactListManagerAdapter.java +++ b/src/com/android/im/service/ContactListManagerAdapter.java @@ -1021,8 +1021,7 @@ public class ContactListManagerAdapter extends IContactListManager.Stub { } void clearHistoryMessages(String contact) { - Uri uri = Im.Messages.getContentUriByContact(mProviderId, - mAccountId, contact); + Uri uri = Im.Messages.getContentUriByContact(mAccountId, contact); mResolver.delete(uri, null, null); } |