From cd9a2eff8c402cec62614ad4509c2e1bfb3998fc Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Wed, 7 Oct 2009 23:12:45 +0200 Subject: [PATCH] Add some code for reading the mime cache --- feedhandler.vala | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/feedhandler.vala b/feedhandler.vala index e922b01..eadb220 100644 --- a/feedhandler.vala +++ b/feedhandler.vala @@ -13,6 +13,39 @@ public enum Reader { GPODDER, } +public class DesktopFile : GLib.KeyFile { + public DesktopFile(string basename) { + string filename = "/usr/share/applications/" + basename.replace("hildon-", "hildon/"); + try { + load_from_file(filename, KeyFileFlags.NONE); + } catch (KeyFileError e) { + stderr.printf("Cannot open key file: %s\n", e.message); + } catch (FileError e) { + stderr.printf("Cannot open key file: %s\n", e.message); + } + } + + public string get_name() { + return get_string("Desktop Entry", "Name"); + } +} + +public class MimeCache : GLib.KeyFile { + public MimeCache(string filename="/usr/share/applications/mimeinfo.cache") { + try { + load_from_file(filename, KeyFileFlags.NONE); + } catch (KeyFileError e) { + stderr.printf("Cannot open key file: %s\n", e.message); + } catch (FileError e) { + stderr.printf("Cannot open key file: %s\n", e.message); + } + } + + public string [] get_desktop_files(string mimetype="application/news_reader") { + return get_string("MIME Cache", mimetype).split(";"); + } +} + [DBus (name="org.maemo.garage.feedhandler")] public class FeedHandler : GLib.Object { private MainLoop loop; @@ -25,6 +58,12 @@ public class FeedHandler : GLib.Object { this.conn = conn; this.context = new Osso.Context("feedhandler", "2.0", false, null); this.args_url = null; + + foreach (string file in (new MimeCache().get_desktop_files("text/plain"))) { + if (file == "") continue; + var desktop_file = new DesktopFile(file); + stderr.printf("%s\n", desktop_file.get_name()); + } } [DBus (name = "mime_open")] -- 1.7.9.5