[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. */