Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 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);
 }
Exemplo n.º 10
0
        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();
            }
        }
Exemplo n.º 11
0
        // ICQ contacts are compared by UIN
        public override bool Equals(object aContact)
        {
            ICQContact right = aContact as ICQContact;

            return((right != null) && UIN == right.UIN);
        }