X-Git-Url: http://git.maemo.org/git/?p=feedhandler;a=blobdiff_plain;f=feedhandler.vala;h=eadb220c4319b8d6e86810d398925ea026ea9db3;hp=e922b01298044984e5df800b7901a5f4416ca0dc;hb=cd9a2eff8c402cec62614ad4509c2e1bfb3998fc;hpb=aa209100bd8b28bf1b595ac07f5abd3fdb20a8d3 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")]