private void ProcessICQMessage(ICQMessage message) { ICQContact From = message.From; ICQContact To = message.To; if (!From.IsIgnored() && !To.IsIgnored()) { // searching for the "From" contact IResource fromAccount = Core.ResourceStore.FindUniqueResource(_icqAccountResName, _propUIN, From.UIN) ?? NewICQAccount(From); // searching for the "To" contact IResource toAccount = Core.ResourceStore.FindUniqueResource(_icqAccountResName, _propUIN, To.UIN) ?? NewICQAccount(To); // update or create conversation and request its indexing if updated IResource convs = _conversationManager.Update(message.Body, message.Time, fromAccount, toAccount); if (convs != null) { _idResources.Add(convs.Id); } if (_lastPercentage < _percentage) { if (Core.ProgressWindow != null) { Core.ProgressWindow.UpdateProgress(_percentage, "Building ICQ conversations", null); } Core.UIManager.GetStatusWriter(this, StatusPane.UI).ShowStatus( "Building ICQ conversations (" + _percentage + "%)"); _lastPercentage = _percentage; } } }
public int CompareTo(object aContact) { ICQContact right = aContact as ICQContact; if (right == null) { throw new ArgumentException("object is not an ICQContact"); } return(UIN - right.UIN); }
private static string ConstructICQSenderName(ICQContact contact) { string name = (contact.FirstName + " " + contact.LastName).Trim(); string nick = contact.NickName.Trim(); if (nick.Length > 0) { name += " [" + nick + "]"; } name += ' ' + contact.UIN.ToString(); return(name); }
private void ProcessICQAccount(ICQContact contact) { IResource ICQAccRes = Core.ResourceStore.FindUniqueResource(_icqAccountResName, _propUIN, contact.UIN); if (ICQAccRes == null) { NewICQAccount(contact); } else { ICQAccRes.SetProp(_propNickName, contact.NickName); UpdateContact(contact); } }
private IResource NewICQAccount(ICQContact account) { IResource newICQAccount = Core.ResourceStore.BeginNewResource(_icqAccountResName); try { newICQAccount.SetProp(_propUIN, account.UIN); newICQAccount.SetProp(_propNickName, account.NickName); IResource aContact = UpdateContact(account); aContact.AddLink(_propICQAcct, newICQAccount); _icqAB.AddContact(aContact); } finally { newICQAccount.EndUpdate(); } return(newICQAccount); }
public override void ShowPane() { if (IsStartupPane) { _conversationsPanel.Visible = false; _importOnly2003bCheckbox.Left = _UINsList.Left = label5.Left = 0; } else { _conversationsPanel.Visible = true; TimeSpan span = ICQPlugin.GetConversationTimeSpan(); _minutes = (span.Minutes + span.Hours * 60 + span.Days * 24 * 60); if (_minutes >= _convsTimeSpan.Minimum && _minutes <= _convsTimeSpan.Maximum) { _convsTimeSpan.Value = _minutes; } _indexOnlineCheckBox.Checked = ICQPlugin.GetBuildConverstionOnline(); _reverseModeCheckBox.Checked = ICQPlugin.GetReverseMode(); } // _uins = (IntArrayList) UINsCollection.GetUINs().Clone(); _uins = new List <int>(UINsCollection.GetUINs()); _UINsList.Items.Clear(); for (int i = 0; i < _uins.Count;) { ListViewItem item = new ListViewItem(); int uin = _uins[i]; item.Text = uin.ToString(); ICQContact aContact = ContactsFactory.GetInstance().GetContact(uin); item.SubItems.Add(aContact.NickName); item.ImageIndex = 0; item.Tag = uin; if (item.Checked = ICQPlugin.IndexedUIN(uin)) { ++i; } else { _uins.RemoveAt(i); // leave in list only checked uins } _UINsList.Items.Add(item); } _importOnly2003bCheckbox.Checked = ICQPlugin.GetImportOnly2003b(); _importOnly2003bCheckbox.Visible = UINsCollection.HasModernDBs; }
public override bool Equals(object aMessage) { ICQMessage right = aMessage as ICQMessage; if (right == null) { return(false); } ICQContact From = this.From; ICQContact To = this.To; ICQContact rFrom = right.From; ICQContact rTo = right.To; if (From == null || To == null || rFrom == null || rTo == null) { return(false); } return(From.Equals(rFrom) && To.Equals(rTo) && Time == right.Time && Body == right.Body); }
private static IResource UpdateContact(ICQContact account) { IContact contact; if (account.LastName.Length > 0 && account.FirstName.Length > 0) { contact = Core.ContactManager.FindOrCreateContact(account.eMail, account.FirstName, account.LastName); } else { string senderName = ConstructICQSenderName(account); contact = Core.ContactManager.FindOrCreateContact(account.eMail, senderName); // Trace.WriteLine( "Updating account with : [" + account.eMail + "] [" + senderName + "]", "ICQ.Plugin" ); } DateTime birthDate = contact.Birthday; if (IsDefaultICQDate(birthDate)) { contact.Birthday = account.BirthDate; } if (contact.Address == string.Empty) { contact.Address = account.Address; } if (contact.Company == string.Empty) { contact.Company = account.Company; } if (contact.HomePage == string.Empty) { contact.HomePage = account.Homepage; } return(contact.Resource); }
public override AbstractJob GetNextJob() { if (_contactIndex < _icqContacts.Count) { ICQContact contact = (ICQContact)_icqContacts[_contactIndex++]; return(new DelegateJob( "Processing ICQ contact [" + contact.UIN + ']', new ProcessICQAccountDelegate(ProcessICQAccount), new object[] { contact })); } while (_messageIndex < _icqMessages.Count) { if (_startedInIdleMode && !Core.IsSystemIdle) { Interrupted = true; Core.ResourceAP.QueueIdleJob(this); break; } ICQMessage message = (ICQMessage)_icqMessages[_messageIndex++]; DateTime msgDateTime = message.Time; if (msgDateTime <= DateTime.Now) { _percentage = _messageIndex * 100 / _icqMessages.Count; if (_minUpdateDate > msgDateTime) { _minUpdateDate = msgDateTime; } else if (_maxUpdateDate < msgDateTime) { _maxUpdateDate = msgDateTime; } _percentage = _messageIndex * 100 / _icqMessages.Count; return(new DelegateJob("Processing ICQ message from " + message.From.UIN, new ProcessICQMessageDelegate(ProcessICQMessage), new object[] { message })); } } return(null); }
public RebuildForm() { InitializeComponent(); RestoreSettings(); // IntArrayList uins = (IntArrayList) UINsCollection.GetUINs().Clone(); List <int> uins = new List <int>(UINsCollection.GetUINs()); _UINsList.BeginUpdate(); try { _UINsList.Items.Clear(); for (int i = 0; i < uins.Count;) { ListViewItem item = new ListViewItem(); int uin = uins[i]; item.Text = uin.ToString(); ICQContact aContact = ContactsFactory.GetInstance().GetContact(uin); item.SubItems.Add(aContact.NickName); item.ImageIndex = 0; item.Tag = uin; if (item.Checked = ICQPlugin.IndexedUIN(uin)) { ++i; } else { uins.RemoveAt(i); // leave in list only checked uins } _UINsList.Items.Add(item); } } finally { _UINsList.EndUpdate(); } }
// ICQ contacts are compared by UIN public override bool Equals(object aContact) { ICQContact right = aContact as ICQContact; return((right != null) && UIN == right.UIN); }