Re: patch to port beagle to gmime-2.4
- From: Jeffrey Stedfast <fejj novell com>
- To: shaba altlinux ru
- Cc: Beagle-Mailing-List <dashboard-hackers gnome org>
- Subject: Re: patch to port beagle to gmime-2.4
- Date: Fri, 17 Oct 2008 21:24:48 -0400
this is an updated patch which compiles, untested beyond that.
Jeff
On Thu, 2008-10-16 at 16:26 +0400, Alexey Shabalin wrote:
> 2008/10/7 Jeffrey Stedfast :
> > Yea, I made some changes to the GMime API after writing the initial
> > patch. I'll try to update the beagle patch this weekend.
> >
> > Jeff
> Hello Jeff.
> Do you has a result?
>
Index: beagle/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs
===================================================================
--- beagle/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs (revision 4874)
+++ beagle/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs (working copy)
@@ -333,28 +333,46 @@
indexable.AddProperty (Property.NewUnsearched ("fixme:folder", this.folder_name));
GMime.InternetAddressList addrs;
-
- addrs = message.GetRecipients (GMime.Message.RecipientType.To);
- foreach (GMime.InternetAddress ia in addrs) {
- if (this.folder_name == "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
+
+ if (this.folder_name == "Sent") {
+ addrs = message.GetRecipients (GMime.RecipientType.To);
+ foreach (GMime.InternetAddress ia in addrs) {
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
+ }
+ }
+
+ addrs.Dispose ();
}
- addrs.Dispose ();
-
- addrs = message.GetRecipients (GMime.Message.RecipientType.Cc);
- foreach (GMime.InternetAddress ia in addrs) {
- if (this.folder_name == "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
+
+ if (this.folder_name == "Sent") {
+ addrs = message.GetRecipients (GMime.RecipientType.Cc);
+ foreach (GMime.InternetAddress ia in addrs) {
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
+ }
+ }
+
+ addrs.Dispose ();
}
- addrs.Dispose ();
-
- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (message.Sender));
- foreach (GMime.InternetAddress ia in addrs) {
- if (this.folder_name != "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", ia.Addr));
+
+ if (this.folder_name != "Sent") {
+ addrs = GMime.InternetAddressList.Parse (message.Sender);
+ foreach (GMime.InternetAddress ia in addrs) {
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", mailbox.Address));
+ }
+ }
+
+ addrs.Dispose ();
}
- addrs.Dispose ();
-
+
if (this.folder_name == "Sent")
indexable.AddProperty (Property.NewFlag ("fixme:isSent"));
@@ -750,48 +768,54 @@
}
GMime.InternetAddressList addrs;
- addrs = GMime.InternetAddressList.ParseString (messageInfo.to);
+ 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.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.New ("fixme:to_address", ia.Addr));
-
+ 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.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
+
+ if (this.folder_name == "Sent" && ia is GMime.InternetAddressMailbox)
+ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
}
addrs.Dispose ();
- addrs = GMime.InternetAddressList.ParseString (messageInfo.cc);
+ 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.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.New ("fixme:cc_address", ia.Addr));
-
+ 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.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
+
+ if (this.folder_name == "Sent" && ia is GMime.InternetAddressMailbox)
+ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
}
addrs.Dispose ();
- addrs = GMime.InternetAddressList.ParseString (messageInfo.from);
+ 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.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.New ("fixme:from_address", ia.Addr));
-
+ 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.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", ia.Addr));
+ if (this.folder_name != "Sent" && ia is GMime.InternetAddressMailbox)
+ indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", mailbox.Address));
}
addrs.Dispose ();
Index: beagle/beagled/KMailQueryable/KMailIndexer.cs
===================================================================
--- beagle/beagled/KMailQueryable/KMailIndexer.cs (revision 4874)
+++ beagle/beagled/KMailQueryable/KMailIndexer.cs (working copy)
@@ -407,28 +407,46 @@
indexable.AddProperty (Property.NewUnsearched ("fixme:folder", folder_name));
GMime.InternetAddressList addrs;
-
- addrs = message.GetRecipients (GMime.Message.RecipientType.To);
- foreach (GMime.InternetAddress ia in addrs) {
- if (folder_name == Queryable.SentMailFolderName && ia.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", ia.Addr));
+
+ if (folder_name == Queryable.SentMailFolderName) {
+ addrs = message.GetRecipients (GMime.RecipientType.To);
+ foreach (GMime.InternetAddress ia in addrs) {
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", mailbox.Address));
+ }
+ }
+
+ addrs.Dispose ();
}
- addrs.Dispose ();
-
- addrs = message.GetRecipients (GMime.Message.RecipientType.Cc);
- foreach (GMime.InternetAddress ia in addrs) {
- if (folder_name == Queryable.SentMailFolderName && ia.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", ia.Addr));
+
+ if (folder_name == Queryable.SentMailFolderName) {
+ addrs = message.GetRecipients (GMime.RecipientType.Cc);
+ foreach (GMime.InternetAddress ia in addrs) {
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", mailbox.Address));
+ }
+ }
+
+ addrs.Dispose ();
}
- addrs.Dispose ();
-
- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (message.Sender));
- foreach (GMime.InternetAddress ia in addrs) {
- if (folder_name != Queryable.SentMailFolderName && ia.AddressType != GMime.InternetAddressType.Group)
- indexable.AddProperty (Property.NewKeyword ("fixme:gotFrom", ia.Addr));
+
+ if (folder_name != Queryable.SentMailFolderName) {
+ addrs = GMime.InternetAddressList.Parse (message.Sender);
+ foreach (GMime.InternetAddress ia in addrs) {
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ indexable.AddProperty (Property.NewKeyword ("fixme:gotFrom", mailbox.Address));
+ }
+ }
+
+ addrs.Dispose ();
}
- addrs.Dispose ();
-
+
if (folder_name == Queryable.SentMailFolderName)
indexable.AddProperty (Property.NewFlag ("fixme:isSent"));
else {
Index: beagle/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs
===================================================================
--- beagle/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs (revision 4874)
+++ beagle/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs (working copy)
@@ -363,9 +363,14 @@
message.Subject = Mime.HeaderDecodeText (GetText (document, "Subject"));
message.Sender = Mime.HeaderDecodePhrase (GetText (document, "Author"));
message.MessageId = GetText (document, "MessageId");
- message.SetDate (DateTimeUtil.UnixToDateTimeUtc (Convert.ToInt64 (GetText (document, "Date"))), 0);
- message.AddRecipientsFromString ("To", Mime.HeaderDecodePhrase (GetText (document, "Recipients")));
-
+ message.Date = DateTimeUtil.UnixToDateTimeUtc (Convert.ToInt64 (GetText (document, "Date")));
+
+ string str = GetText (document, "Recipients");
+ GMime.InternetAddressList recipients = GMime.InternetAddressList.Parse (str);
+ foreach (GMime.InternetAddress ia in recipients)
+ message.To.Add (ia);
+ recipients.Dispose ();
+
return message;
}
@@ -430,7 +435,7 @@
// We _know_ that the stream comes from a StreamReader, which uses UTF8 by
// default. So we use that here when parsing our string.
- return (str != null ? Encoding.UTF8.GetString (str, 0, pos) : string.Empty);
+ return (str != null ? System.Text.Encoding.UTF8.GetString (str, 0, pos) : string.Empty);
}
// This spell "charset="
@@ -458,7 +463,7 @@
// instead of UTF-8 in some cases and that will really mess things up.
byte[] buffer = null;
int c, header_length = 0, newlines = 0, charset_pos = 0;
- Encoding enc = Encoding.UTF8;
+ System.Text.Encoding enc = System.Text.Encoding.UTF8;
try {
do {
c = stream.BaseStream.ReadByte ();
@@ -487,7 +492,7 @@
stream.BaseStream.Read (buffer, 0, buffer.Length);
// We need to use correct encoding
- enc = Encoding.GetEncoding (encoding_str);
+ enc = System.Text.Encoding.GetEncoding (encoding_str);
} catch {
} finally {
stream.Close ();
Index: beagle/beagled/GoogleBackends/GMailSearchDriver.cs
===================================================================
--- beagle/beagled/GoogleBackends/GMailSearchDriver.cs (revision 4874)
+++ beagle/beagled/GoogleBackends/GMailSearchDriver.cs (working copy)
@@ -322,38 +322,47 @@
hit.AddProperty (Property.NewDate ("fixme:date", message.Date.ToUniversalTime ()));
GMime.InternetAddressList addrs;
- addrs = message.GetRecipients (GMime.Message.RecipientType.To);
+ addrs = message.GetRecipients (GMime.RecipientType.To);
foreach (GMime.InternetAddress ia in addrs) {
hit.AddProperty (Property.NewUnsearched ("fixme:to", ia.ToString (false)));
- if (ia.AddressType != GMime.InternetAddressType.Group)
- hit.AddProperty (Property.New ("fixme:to_address", ia.Addr));
-
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ hit.AddProperty (Property.New ("fixme:to_address", mailbox.Address));
+ }
+
hit.AddProperty (Property.New ("fixme:to_name", ia.Name));
}
addrs.Dispose ();
- addrs = message.GetRecipients (GMime.Message.RecipientType.Cc);
+ addrs = message.GetRecipients (GMime.RecipientType.Cc);
foreach (GMime.InternetAddress ia in addrs) {
hit.AddProperty (Property.NewUnsearched ("fixme:cc", ia.ToString (false)));
- if (ia.AddressType != GMime.InternetAddressType.Group)
- hit.AddProperty (Property.New ("fixme:cc_address", ia.Addr));
-
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ hit.AddProperty (Property.New ("fixme:cc_address", mailbox.Address));
+ }
+
hit.AddProperty (Property.New ("fixme:cc_name", ia.Name));
}
addrs.Dispose ();
- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (message.Sender));
+ addrs = GMime.InternetAddressList.Parse (message.Sender);
foreach (GMime.InternetAddress ia in addrs) {
hit.AddProperty (Property.NewUnsearched ("fixme:from", ia.ToString (false)));
- if (ia.AddressType != GMime.InternetAddressType.Group)
- hit.AddProperty (Property.New ("fixme:from_address", ia.Addr));
-
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ hit.AddProperty (Property.New ("fixme:from_address", mailbox.Address));
+ }
+
hit.AddProperty (Property.New ("fixme:from_name", ia.Name));
}
addrs.Dispose ();
foreach (GMime.References refs in message.References)
- hit.AddProperty (Property.NewUnsearched ("fixme:reference", refs.Msgid));
+ hit.AddProperty (Property.NewUnsearched ("fixme:reference", refs.MessageId));
string list_id = message.GetHeader ("List-Id");
if (list_id != null)
Index: beagle/configure.in
===================================================================
--- beagle/configure.in (revision 4874)
+++ beagle/configure.in (working copy)
@@ -17,7 +17,7 @@
NDESK_DBUS_REQUIRED=0.5.2
NDESK_DBUS_GLIB_REQUIRED=0.3.0
GTK_SHARP_REQUIRED=2.10.0
-GMIME_SHARP_REQUIRED=2.2.0
+GMIME_SHARP_REQUIRED=2.3.5
EVOLUTION_SHARP_REQUIRED=0.13.3
GSF_SHARP_REQUIRED=0.6
GTK_REQUIRED=2.10.0
@@ -223,7 +223,7 @@
glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
- gmime-sharp >= $GMIME_SHARP_REQUIRED
+ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
])
AC_SUBST(BEAGLE_UI_LIBS)
@@ -270,7 +270,7 @@
evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
- gmime-sharp >= $GMIME_SHARP_REQUIRED,
+ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED,
have_evo_dependencies=yes, have_evo_dependencies=no)
AC_SUBST(EVO_LIBS)
@@ -377,14 +377,14 @@
PKG_CHECK_MODULES(BEAGLED,
[
shared-mime-info
- gmime-sharp >= $GMIME_SHARP_REQUIRED
+ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
])
BEAGLED_LIBS="$BEAGLED_LIBS $GSF_SHARP_LIBS"
AC_SUBST(BEAGLED_LIBS)
GSF_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gsf-sharp`
-GMIME_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gmime-sharp`
+GMIME_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gmime-sharp-2.4`
dnl ----------------------------------------------
dnl Epiphany Extension
Index: beagle/Filters/FilterMail.cs
===================================================================
--- beagle/Filters/FilterMail.cs (revision 4874)
+++ beagle/Filters/FilterMail.cs (working copy)
@@ -126,7 +126,7 @@
// Messages that are multipart/alternative shouldn't be considered as having
// attachments. Unless of course they do.
- if (mime_part is GMime.Multipart && mime_part.ContentType.Subtype.ToLower () != "alternative")
+ if (mime_part is GMime.Multipart && mime_part.ContentType.MediaSubtype.ToLower () != "alternative")
return true;
return false;
@@ -140,34 +140,43 @@
AddProperty (Property.NewDate ("fixme:date", message.Date.ToUniversalTime ()));
GMime.InternetAddressList addrs;
- addrs = this.message.GetRecipients (GMime.Message.RecipientType.To);
+ addrs = this.message.GetRecipients (GMime.RecipientType.To);
foreach (GMime.InternetAddress ia in addrs) {
AddProperty (Property.NewUnsearched ("fixme:to", ia.ToString (false)));
- if (ia.AddressType != GMime.InternetAddressType.Group)
- AddProperty (Property.New ("fixme:to_address", ia.Addr));
-
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ AddProperty (Property.New ("fixme:to_address", mailbox.Address));
+ }
+
AddProperty (Property.New ("fixme:to_name", ia.Name));
AddEmailLink (ia);
}
addrs.Dispose ();
- addrs = this.message.GetRecipients (GMime.Message.RecipientType.Cc);
+ addrs = this.message.GetRecipients (GMime.RecipientType.Cc);
foreach (GMime.InternetAddress ia in addrs) {
AddProperty (Property.NewUnsearched ("fixme:cc", ia.ToString (false)));
- if (ia.AddressType != GMime.InternetAddressType.Group)
- AddProperty (Property.New ("fixme:cc_address", ia.Addr));
-
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ AddProperty (Property.New ("fixme:cc_address", mailbox.Address));
+ }
+
AddProperty (Property.New ("fixme:cc_name", ia.Name));
AddEmailLink (ia);
}
addrs.Dispose ();
- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (this.message.Sender));
+ addrs = GMime.InternetAddressList.Parse (this.message.Sender);
foreach (GMime.InternetAddress ia in addrs) {
AddProperty (Property.NewUnsearched ("fixme:from", ia.ToString (false)));
- if (ia.AddressType != GMime.InternetAddressType.Group)
- AddProperty (Property.New ("fixme:from_address", ia.Addr));
-
+ if (ia is GMime.InternetAddressMailbox) {
+ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
+
+ AddProperty (Property.New ("fixme:from_address", mailbox.Address));
+ }
+
AddProperty (Property.New ("fixme:from_name", ia.Name));
AddEmailLink (ia);
}
@@ -184,7 +193,7 @@
AddProperty (Property.NewUnsearched ("fixme:msgid", GMime.Utils.DecodeMessageId (msgid)));
foreach (GMime.References refs in this.message.References)
- AddProperty (Property.NewUnsearched ("fixme:reference", refs.Msgid));
+ AddProperty (Property.NewUnsearched ("fixme:reference", refs.MessageId));
string list_id = this.message.GetHeader ("List-Id");
if (list_id != null)
@@ -345,16 +354,15 @@
}
} else if (mime_part is GMime.Multipart) {
GMime.Multipart multipart = (GMime.Multipart) mime_part;
+ int num_parts = multipart.Count;
- int num_parts = multipart.Number;
-
// If the mimetype is multipart/alternative, we only want to index
// one part -- the richest one we can filter.
- if (mime_part.ContentType.Subtype.ToLower () == "alternative") {
+ if (mime_part.ContentType.MediaSubtype.ToLower () == "alternative") {
// The richest formats are at the end, so work from there
// backward.
for (int i = num_parts - 1; i >= 0; i--) {
- GMime.Object subpart = multipart.GetPart (i);
+ GMime.Object subpart = multipart[i];
if (IsMimeTypeHandled (subpart.ContentType.ToString ())) {
part = subpart;
@@ -370,7 +378,7 @@
// the parts, treat them like a bunch of attachments.
if (part == null) {
for (int i = 0; i < num_parts; i++) {
- using (GMime.Object subpart = multipart.GetPart (i))
+ using (GMime.Object subpart = multipart[i])
this.OnEachPart (subpart);
}
}
@@ -400,7 +408,7 @@
} else if (mime_type == "text/html") {
no_child_needed = true;
html_part = true;
- string enc = part.GetContentTypeParameter ("charset");
+ string enc = part.ContentType.GetParameter ("charset");
// DataWrapper.Stream is a very limited stream
// and does not allow Seek or Tell
// HtmlFilter requires Stream.Position=0.
@@ -473,7 +481,7 @@
if (length != -1)
child.AddProperty (Property.NewUnsearched ("fixme:filesize", length));
- if (part.ContentType.Type.ToLower () == "text")
+ if (part.ContentType.MediaType.ToLower () == "text")
child.SetTextReader (new StreamReader (stream));
else
child.SetBinaryStream (stream);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]