private Uri CamelMessageUri (B_U_Camel.MessageInfo message_info) { return EvolutionMailQueryable.EmailUri (this.account_name, this.folder_name, message_info.uid); }
private Indexable CamelMessageToIndexable (B_U_Camel.MessageInfo messageInfo, string msg_file) { // Don't index messages flagged as junk if (messageInfo.IsJunk) return null; // Many properties will be set by the filter when // processing the cached data, if it's there. So // don't set a number of properties in that case. bool have_content = File.Exists (msg_file); Uri uri = CamelMessageUri (messageInfo); Indexable indexable = new Indexable (uri); indexable.Timestamp = messageInfo.SentDate; indexable.MimeType = "message/rfc822"; indexable.HitType = "MailMessage"; indexable.AddProperty (Property.NewUnsearched ("fixme:account", this.imap_name)); indexable.AddProperty (Property.NewUnsearched ("fixme:folder", this.folder_name)); indexable.AddProperty (Property.NewUnsearched ("fixme:client", "evolution")); if (!have_content) { indexable.AddProperty (Property.New ("dc:title", GMime.Utils.HeaderDecodePhrase (messageInfo.subject))); indexable.AddProperty (Property.NewDate ("fixme:date", messageInfo.SentDate)); } GMime.InternetAddressList addrs; addrs = GMime.InternetAddressList.Parse (messageInfo.to); foreach (GMime.InternetAddress ia in addrs) { GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox; if (!have_content) { indexable.AddProperty (Property.NewUnsearched ("fixme:to", ia.ToString (false))); if (ia is GMime.InternetAddressMailbox) indexable.AddProperty (Property.New ("fixme:to_address", mailbox.Address)); indexable.AddProperty (Property.New ("fixme:to_name", ia.Name)); } if (this.folder_name == "Sent" && ia is GMime.InternetAddressMailbox) indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address)); } addrs.Dispose (); addrs = GMime.InternetAddressList.Parse (messageInfo.cc); foreach (GMime.InternetAddress ia in addrs) { GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox; if (!have_content) { indexable.AddProperty (Property.NewUnsearched ("fixme:cc", ia.ToString (false))); if (ia is GMime.InternetAddressMailbox) indexable.AddProperty (Property.New ("fixme:cc_address", mailbox.Address)); indexable.AddProperty (Property.New ("fixme:cc_name", ia.Name)); } if (this.folder_name == "Sent" && ia is GMime.InternetAddressMailbox) indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address)); } addrs.Dispose (); addrs = GMime.InternetAddressList.Parse (messageInfo.from); foreach (GMime.InternetAddress ia in addrs) { GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox; if (!have_content) { indexable.AddProperty (Property.NewUnsearched ("fixme:from", ia.ToString (false))); if (ia is GMime.InternetAddressMailbox) indexable.AddProperty (Property.New ("fixme:from_address", mailbox.Address)); indexable.AddProperty (Property.New ("fixme:from_name", ia.Name)); } if (this.folder_name != "Sent" && ia is GMime.InternetAddressMailbox) indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", mailbox.Address)); } addrs.Dispose (); indexable.AddProperty (Property.NewKeyword ("fixme:mlist", messageInfo.mlist)); Property flag_prop = Property.NewUnsearched ("fixme:flags", messageInfo.flags); flag_prop.IsMutable = true; indexable.AddProperty (flag_prop); if (this.folder_name == "Sent") indexable.AddProperty (Property.NewFlag ("fixme:isSent")); if (messageInfo.IsAnswered) indexable.AddProperty (Property.NewFlag ("fixme:isAnswered")); if (messageInfo.IsDeleted) indexable.AddProperty (Property.NewFlag ("fixme:isDeleted")); if (messageInfo.IsDraft) indexable.AddProperty (Property.NewFlag ("fixme:isDraft")); if (messageInfo.IsFlagged) indexable.AddProperty (Property.NewFlag ("fixme:isFlagged")); if (messageInfo.IsSeen) indexable.AddProperty (Property.NewFlag ("fixme:isSeen")); if (messageInfo.HasAttachments && !have_content) indexable.AddProperty (Property.NewFlag ("fixme:hasAttachments")); if (messageInfo.IsAnsweredAll) indexable.AddProperty (Property.NewFlag ("fixme:isAnsweredAll")); if (have_content) indexable.ContentUri = UriFu.PathToFileUri (msg_file); else indexable.NoContent = true; return indexable; }
private static bool CheckFlags (uint flags, B_U_Camel.CamelFlags test) { return (flags & (uint) test) == (uint) test; }