Ejemplo n.º 1
0
        public override Indexable GetNextIndexable()
        {
            TB.Mail mail = DbEnumerator.Current as TB.Mail;

            // If status is different, than something happend when loading this mail and we dont'
            // want to change it's status.
            if (mail.GetObject("FullIndex") == null)
            {
                mail.SetObject("FullIndex", (object)FullIndex);
            }

            return(MailToIndexable(mail));
        }
Ejemplo n.º 2
0
        private Indexable MailToIndexable(TB.Mail mail)
        {
            Indexable indexable;

            GMime.Message message = mail.Message;
            FullIndex = mail.GetBool("FullIndex");              // Make sure this is up to date
            string mailbox = (MailboxName != null ? MailboxName : (string)mail.GetString("mailbox"));

            indexable              = NewIndexable(mail.Uri, message.Date.ToUniversalTime(), "MailMessage");
            indexable.MimeType     = "message/rfc822";
            indexable.CacheContent = true;
            indexable.AddProperty(Property.NewKeyword("fixme:folder", mailbox));
            indexable.SetBinaryStream(message.Stream);

            if (mail.GetBool("FullIndex"))
            {
                indexable.ContentUri = UriFu.PathToFileUri(Thunderbird.GetFullyIndexableFile(DbFile));
            }

            message.Dispose();

            return(indexable);
        }