summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWei Huang <weih@google.com>2009-04-28 22:42:01 -0700
committerWei Huang <weih@google.com>2009-04-29 11:59:01 -0700
commitb26882e6024b4cb86268472ca04eb29f5d1a60f6 (patch)
tree172fa9af500c30dee8769ccead99a942b249eeb4 /src
parent4961ea99e4a765a5b4a6e9e0a36e51d8cec2af78 (diff)
downloadIM-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.java20
-rw-r--r--src/com/android/im/service/ChatSessionAdapter.java38
-rw-r--r--src/com/android/im/service/ContactListManagerAdapter.java3
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);
}