Fixed "Download dictionaries" URL.
[mstardict] / src / mstardict.cpp
index 7880e65..5fa72d1 100644 (file)
@@ -40,6 +40,8 @@
 #include <gtk/gtk.h>
 #include <hildon/hildon.h>
 
+#include <libosso.h>
+
 #include <getopt.h>
 #include <string>
 #include <vector>
@@ -49,7 +51,9 @@
 #include "conf.hpp"
 #include "dictmngr.hpp"
 #include "libwrapper.hpp"
+#include "prefsdlg.hpp"
 #include "transwin.hpp"
+#include "tts.hpp"
 #include "mstardict.hpp"
 
 MStarDict *pMStarDict;
@@ -67,6 +71,8 @@ MStarDict::MStarDict()
     results_view = NULL;
     results_view_scroll = NULL;
 
+    osso_context = osso_initialize("org.maemo.mstardict", VERSION, TRUE, NULL);
+
     /* create list of ressults */
     results_list = gtk_list_store_new(N_COLUMNS,
                                      G_TYPE_STRING);   /* DEF_COLUMN */
@@ -77,16 +83,22 @@ MStarDict::MStarDict()
     /* initialize stardict plugins */
     std::list < std::string > plugin_order_list;
     std::list < std::string > plugin_disable_list;
-    oStarDictPlugins = new StarDictPlugins("/usr/lib/mstardict/plugins",
-                                          plugin_order_list,
-                                          plugin_disable_list);
+    oPlugins = new StarDictPlugins("/usr/lib/mstardict/plugins",
+                                  plugin_order_list,
+                                  plugin_disable_list);
 
     /* initialize dict manager */
     oDict = new DictMngr(this);
 
+    /* initialize prefs dialog */
+    oPrefs = new PrefsDlg(this);
+
     /* initialize translation window */
     oTransWin = new TransWin(this);
 
+    /* initialize tts */
+    oTts = new Tts(this);
+
     /* initialize stardict library */
     oLibs = new Library(this);
 }
@@ -99,17 +111,26 @@ MStarDict::~MStarDict()
     /* deinitialize stardict library */
     delete oLibs;
 
+    /* deinitialize tts */
+    delete oTts;
+
     /* deinitialize translation window */
     delete oTransWin;
 
+    /* deinitialize prefs dialog */
+    delete oPrefs;
+
     /* deinitialize dict manager */
     delete oDict;
 
     /* deinitialize stardict plugins */
-    delete oStarDictPlugins;
+    delete oPlugins;
 
     /* deinitialize configuration */
     delete oConf;
+
+    /* deinitialize osso context */
+    osso_deinitialize(osso_context);
 }
 
 gboolean
@@ -236,6 +257,29 @@ MStarDict::onDictionariesMenuItemClicked(GtkButton *button,
 }
 
 gboolean
+MStarDict::onDownloadDictionariesMenuItemClicked(GtkButton *button,
+                                                MStarDict *mStarDict)
+{
+    osso_rpc_run(mStarDict->osso_context,
+                "com.nokia.osso_browser",
+                "/com/nokia/osso_browser",
+                "com.nokia.osso_browser",
+                "open_new_window",
+                NULL,
+                DBUS_TYPE_STRING, "http://xdxf.revdanica.com/down2/index.php?down_format=StarDict",
+                DBUS_TYPE_INVALID);
+    return true;
+}
+
+gboolean
+MStarDict::onPreferencesMenuItemClicked(GtkButton *button,
+                                        MStarDict *mStarDict)
+{
+    mStarDict->oPrefs->CreatePrefsDialog();
+    return true;
+}
+
+gboolean
 MStarDict::onQuitMenuItemClicked(GtkButton *button,
                                 MStarDict *mStarDict)
 {
@@ -376,6 +420,12 @@ MStarDict::CreateMainWindow()
 }
 
 GtkWidget *
+MStarDict::GetMainWindow()
+{
+    return window;
+}
+
+GtkWidget *
 MStarDict::CreateSearchBar()
 {
     GtkWidget *hbox, *entry, *button;
@@ -424,6 +474,18 @@ MStarDict::CreateMainMenu()
     hildon_app_menu_append(menu, GTK_BUTTON(item));
     g_signal_connect(item, "clicked", G_CALLBACK(onDictionariesMenuItemClicked), this);
 
+    /* download dictionaries menu item */
+    item = hildon_gtk_button_new(HILDON_SIZE_AUTO);
+    gtk_button_set_label(GTK_BUTTON(item), _("Download dictionaries"));
+    hildon_app_menu_append(menu, GTK_BUTTON(item));
+    g_signal_connect(item, "clicked", G_CALLBACK(onDownloadDictionariesMenuItemClicked), this);
+
+    /* preferences menu item */
+    item = hildon_gtk_button_new(HILDON_SIZE_AUTO);
+    gtk_button_set_label(GTK_BUTTON(item), _("Preferences"));
+    hildon_app_menu_append(menu, GTK_BUTTON(item));
+    g_signal_connect(item, "clicked", G_CALLBACK(onPreferencesMenuItemClicked), this);
+
     /* quit menu item */
     item = hildon_gtk_button_new(HILDON_SIZE_AUTO);
     gtk_button_set_label(GTK_BUTTON(item), _("Quit"));