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;
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")]