[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r3963: Added context menu API code and fixed file menu code. Added (in vidalia/branches/extension-api/src/vidalia: . config)



Author: tyree731
Date: 2009-07-14 01:38:50 -0400 (Tue, 14 Jul 2009)
New Revision: 3963

Modified:
   vidalia/branches/extension-api/src/vidalia/MainWindow.cpp
   vidalia/branches/extension-api/src/vidalia/MainWindow.h
   vidalia/branches/extension-api/src/vidalia/PluginManager.cpp
   vidalia/branches/extension-api/src/vidalia/PluginManager.h
   vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.cpp
   vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.h
Log:
Added context menu API code and fixed file menu code. Added signal from config dialog for when settings have changed and a slot in Main which handles it.


Modified: vidalia/branches/extension-api/src/vidalia/MainWindow.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MainWindow.cpp	2009-07-14 04:05:29 UTC (rev 3962)
+++ vidalia/branches/extension-api/src/vidalia/MainWindow.cpp	2009-07-14 05:38:50 UTC (rev 3963)
@@ -141,12 +141,16 @@
   _pluginManager  = new PluginManager(_torControl, Vidalia::dataDirectory());
   _pluginManager->loadPlugins("");
 
-  /* Connect help dialog requests to the help dialog */
+  /* Connect help dialog requests to the help dialog. */
   connect(_configDialog, SIGNAL(helpRequested(QString)),
           this, SLOT(showHelpDialog(QString)));
   connect(_pluginManager, SIGNAL(helpRequested(QString)),
           this, SLOT(showHelpDialog(QString)));
 
+  /* When the settings menu changes, notify MainWindow. */
+  connect(_configDialog, SIGNAL(settingsChanged()),
+          this, SLOT(onSettingsChange()));
+
   /* Create the actions that will go in the tray and file menu */
   createActions();
   /* Create the menu bar */
@@ -508,8 +512,7 @@
   menu->addSeparator();
   menu->addAction(_bandwidthAct);
   menu->addAction(_newIdentityAct);
-  menu->addSeparator();
-  menu->addAction(_controlPanelAct);
+  populatePluginsTrayMenu(_pluginManager->plugins(), menu);
 
 #if !defined(Q_WS_MAC)
   /* These aren't added to the dock menu on Mac, since they are in the
@@ -569,8 +572,7 @@
   torMenu->addAction(_bandwidthAct);
 
   /* Create menu for plugins and populate it with plugin's actions. */
-  QMenu *pluginsMenu = _menuBar->addMenu(tr("Plugins"));
-  populatePluginsFileMenu(_pluginManager->plugins(), pluginsMenu);
+  createPluginsFileMenu(_pluginManager->plugins());
 
   QMenu *helpMenu = _menuBar->addMenu(tr("Help"));
   _helpAct->setText(tr("Vidalia Help"));
@@ -705,17 +707,37 @@
 }
 
 void
-MainWindow::populatePluginsFileMenu(QList<VidaliaPluginInterface*> plugins,
-                                    QMenu* pluginsMenu)
+MainWindow::createPluginsFileMenu(QList<VidaliaPluginInterface*> plugins)
 {
+  QMenu* pluginsMenu = 0;
   foreach(VidaliaPluginInterface* plugin, plugins) {
     if (plugin->fileMenuEntry()) {
+      if (!pluginsMenu)
+        pluginsMenu = _menuBar->addMenu(tr("Plugins"));
       pluginsMenu->addAction(plugin->fileMenuEntry());
       plugin->fileMenuEntry()->setText(plugin->name());
     }
   }
 }
 
+void
+MainWindow::populatePluginsTrayMenu(QList<VidaliaPluginInterface*> plugins,
+                                   QMenu* trayMenu)
+{
+  bool separatorAdded = false;
+  foreach(VidaliaPluginInterface* plugin, plugins) {
+    if (plugin->trayMenuEntry()) {
+      /* So two seperators don't appear in a row if no plugins have a menu */
+      if (!separatorAdded) {
+        trayMenu->addSeparator();
+        separatorAdded = true;
+      }
+      trayMenu->addAction(plugin->trayMenuEntry());
+      plugin->trayMenuEntry()->setText(plugin->name());
+    }
+  }
+}
+
 /** Starts the web browser and IM client, if appropriately configured */
 void
 MainWindow::startSubprocesses()
@@ -877,6 +899,16 @@
   _pluginManager->sendProxyStatus(pmStopped);
 }
 
+void
+MainWindow::onSettingsChange()
+{
+  VidaliaPluginInterface* homePlugin =
+    _pluginManager->getPluginById("home");
+  if (homePlugin) {
+    
+  }
+}
+
 /** Called when Tor's bootstrapping status changes. <b>bse</b> represents
  * Tor's current estimate of its bootstrapping progress. */
 void

Modified: vidalia/branches/extension-api/src/vidalia/MainWindow.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MainWindow.h	2009-07-14 04:05:29 UTC (rev 3962)
+++ vidalia/branches/extension-api/src/vidalia/MainWindow.h	2009-07-14 05:38:50 UTC (rev 3963)
@@ -140,6 +140,8 @@
   void onProxyStarted();
   /** Called when the proxy server is terminated */
   void onProxyTerminated(int exitCode, QProcess::ExitStatus exitStatus);
+  /** Called when the settings have changed */
+  void onSettingsChange();
 
 #if defined(USE_AUTOUPDATE)
   /** Called when the user clicks the 'Check Now' button in the General
@@ -200,7 +202,10 @@
   void populateTabs(QList<VidaliaPluginInterface*> plugins);
   /** Takes a list of plugin instances and the plugin menu object and populates
    * said menu with file menu entries for the plugins */
-  void populatePluginsFileMenu(QList<VidaliaPluginInterface*> plugins, 
+  void createPluginsFileMenu(QList<VidaliaPluginInterface*> plugins);
+  /** Takes a list of plugin instances and the tray menu and populates the tray
+   * menu with any plugin menus. */
+  void populatePluginsTrayMenu(QList<VidaliaPluginInterface*> plugins,
                                QMenu* pluginMenu);
   /** Starts the web browser, if appropriately configured */
   void startSubprocesses();

Modified: vidalia/branches/extension-api/src/vidalia/PluginManager.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/PluginManager.cpp	2009-07-14 04:05:29 UTC (rev 3962)
+++ vidalia/branches/extension-api/src/vidalia/PluginManager.cpp	2009-07-14 05:38:50 UTC (rev 3963)
@@ -98,6 +98,16 @@
   return _pluginList;
 }
 
+VidaliaPluginInterface*
+PluginManager::getPluginById(const QString& id) const
+{
+  foreach(VidaliaPluginInterface* plugin, _pluginList) {
+    if (id == plugin->id())
+      return plugin;
+  }
+  return 0;
+}
+
 QString
 PluginManager::dataDirectory() const
 {

Modified: vidalia/branches/extension-api/src/vidalia/PluginManager.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/PluginManager.h	2009-07-14 04:05:29 UTC (rev 3962)
+++ vidalia/branches/extension-api/src/vidalia/PluginManager.h	2009-07-14 05:38:50 UTC (rev 3963)
@@ -54,6 +54,8 @@
   void loadPlugins(const QString& applicationDirectory);
   /** Returns a QList of all loaded plugin instances. */
   QList<VidaliaPluginInterface*> plugins() const;
+  /** Returns the specified plugin for 0 if not found. */
+  VidaliaPluginInterface* getPluginById(const QString& id) const;
   /** Return the location of the users data directory plugin directory. */
   QString dataDirectory() const;
 

Modified: vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.cpp	2009-07-14 04:05:29 UTC (rev 3962)
+++ vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.cpp	2009-07-14 05:38:50 UTC (rev 3963)
@@ -240,8 +240,10 @@
     }
     appliedChanges = true;
   }
-  if (appliedChanges)
+  if (appliedChanges) {
     saveConf();      
+    emit settingsChanged();
+  }
   close();
 }
 

Modified: vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.h	2009-07-14 04:05:29 UTC (rev 3962)
+++ vidalia/branches/extension-api/src/vidalia/config/ConfigDialog.h	2009-07-14 05:38:50 UTC (rev 3963)
@@ -50,6 +50,8 @@
   /** Emitted when the user clicks "Check Now" to initiate a check
    * for software updates. */
   void checkForUpdates();
+  /** Emitted when the Vidalia Settings have changed */
+  void settingsChanged();
 
 protected:
   /** Called when the user changes the UI translation. */