X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmain.vala;h=752997c5a7cb24415011bc9f5f43c5b8fbed5f5b;hb=edd1287bea8e81ddef04f2e47783e91a479a1537;hp=df122e39fb2fae20de054431699d2de0acb69987;hpb=e19a6c7b82ac68432c5d6789c449d254e213f34a;p=cinaest diff --git a/src/main.vala b/src/main.vala index df122e3..752997c 100644 --- a/src/main.vala +++ b/src/main.vala @@ -19,26 +19,79 @@ using Hildon; public class CinaestProgram : Hildon.Program { - Window window; + SourceListWindow window; + public static List plugins; + public static Orientation orientation; construct { - window = new Window (); + Environment.set_application_name ("Cinæst"); + + window = new SourceListWindow (); window.destroy.connect (Gtk.main_quit); + orientation = new Orientation (); + orientation.changed.connect (on_orientation_changed); + add_window (window); + } - Environment.set_application_name ("Cinæst"); + private void on_orientation_changed () { + if (orientation.portrait) { + Hildon.gtk_window_set_portrait_flags (window, PortraitFlags.REQUEST); + } else { + Hildon.gtk_window_set_portrait_flags (window, PortraitFlags.SUPPORT); + } + } + + public void register_plugins (Osso.Context context) { + string plugin_path = Config.PKGLIBDIR; + try { + var directory = File.new_for_path (plugin_path); + var enumerator = directory.enumerate_children (FILE_ATTRIBUTE_STANDARD_NAME, 0, null); + + FileInfo file_info; + while ((file_info = enumerator.next_file (null)) != null) { + string name = file_info.get_name (); + + if (name.has_suffix (".so")) { + Plugin plugin; + string path = Path.build_filename (plugin_path, name, null); + + var registrar = new PluginRegistrar (path); + registrar.load (); + + plugin = registrar.new_object (); + plugins.append (plugin); + plugin.hello (window, context); + } + } + + } catch (Error e) { + stderr.printf ("Error: %s\n", e.message); + } } public void run () { - window.show_all (); + foreach (Plugin plugin in plugins) { + window.add_sources (plugin.get_sources ()); + } Gtk.main (); } static int main (string[] args) { Gtk.init (ref args); + Intl.setlocale (LocaleCategory.ALL, ""); + Intl.bindtextdomain (Config.GETTEXT_PACKAGE, Config.LOCALEDIR); + Intl.textdomain (Config.GETTEXT_PACKAGE); + + var osso_context = new Osso.Context ("org.maemo.cinaest", Config.VERSION, true, null); + if (osso_context == null) { + return Osso.Status.ERROR; + } + CinaestProgram app = new CinaestProgram (); + app.register_plugins (osso_context); app.run (); return 0;