//대화가 존재하지 않는 경우 호출되어 대화를 새로 생성함. private Dialogue CreateNewDialogue(TextMessage objSMS) { Dialogue objDialogue = new Dialogue(); objDialogue.Address = objSMS.Address; objDialogue.Contact = ContactDBManager.Get().GetContactDataByAddress(objSMS.Address, false); //메시지 DB 로드가 느린 원인 if (objDialogue.Contact != null) { objDialogue.DisplayName = objDialogue.Contact.Name; } else { objDialogue.DisplayName = GetDisplayNameIfUsual(objDialogue.Address); } objDialogue.Thread_id = objSMS.Thread_id; return(objDialogue); }
//연락처에 없는 대화 중 수신 메시지만 메모리에 올린다. inboxType으로 송신/수신 메시지만 불러오는것도 가능. public void LoadUnknownMetaDatas() { //SMS, MMS 메타데이터(주소와 thread_id)만 수집 DialogueSet smsMetaDatas = LoadSMSMetaDatas(); DialogueSet mmsMetaDatas = LoadMMSMetaDatas(); //mms메타데이터와 smsMetaData를 병합, sms메타데이터 리스트에 mms메타데이터를 넣는다. foreach (Dialogue objDialogue in mmsMetaDatas.DialogueList.Values) { //mms만 있는 경우 리스트에 추가 if (!smsMetaDatas.IsContain(objDialogue.Thread_id)) { smsMetaDatas.DialogueList.Add(objDialogue.Thread_id, objDialogue); } //mms와 sms가 둘다 있는 경우 sms 리스트에 mms를 하나씩 추가함. else { foreach (MultiMediaMessage mms in objDialogue.TextMessageList) { smsMetaDatas.DialogueList[objDialogue.Thread_id].Add(mms); } } } //연락처에 없는 놈들만 찾는다. foreach (Dialogue objDialogue in smsMetaDatas.DialogueList.Values) { if (ContactDBManager.Get().GetContactDataByAddress(objDialogue.Address, false) == null) { if (!_UnknownDialogueSet.IsContain(objDialogue.Thread_id)) { _UnknownDialogueSet.DialogueList.Add(objDialogue.Thread_id, objDialogue); } else { _UnknownDialogueSet.DialogueList[objDialogue.Thread_id] = objDialogue; } } } }