
commit 106105ed03aad597e441cfd897ab909d84d847f2 Author: Tomás Touceda <chiiph@torproject.org> Date: Wed Mar 21 13:29:22 2012 -0300 Provide the MainWindow to display messages in the app tray icon from plugins --- src/vidalia/MainWindow.cpp | 12 +++++++++++- src/vidalia/MainWindow.h | 5 ++++- src/vidalia/plugin/PluginEngine.cpp | 8 ++++++-- src/vidalia/plugin/PluginEngine.h | 3 ++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/vidalia/MainWindow.cpp b/src/vidalia/MainWindow.cpp index 20959fc..c0321d5 100644 --- a/src/vidalia/MainWindow.cpp +++ b/src/vidalia/MainWindow.cpp @@ -113,6 +113,8 @@ MainWindow::MainWindow() _torControl = Vidalia::torControl(); _engine = new PluginEngine(); + _engine->provide("VidaliaMainWindow", this); + _engine->loadAllPlugins(); _dummy = new QAction(tr("No dettached tabs"), this); @@ -447,7 +449,7 @@ MainWindow::createConnections() connect(&_updateTimer, SIGNAL(timeout()), this, SLOT(checkForUpdates())); /* Also check for updates in the foreground when the user clicks the - * "Check Now" button in the config dialog. */ + * "check Now" button in the config dialog. */ connect(_configDialog, SIGNAL(checkForUpdates()), this, SLOT(checkForUpdatesWithUi())); @@ -2228,3 +2230,11 @@ MainWindow::panic() } vApp->quit(); } + +/** Display a message in the application system tray icon */ +void +MainWindow::trayMessage(const QString &title, const QString &msg, + QSystemTrayIcon::MessageIcon icon, int milli) +{ + _trayIcon.showMessage(title, msg, icon, milli); +} diff --git a/src/vidalia/MainWindow.h b/src/vidalia/MainWindow.h index db9b7e1..5acd2ee 100644 --- a/src/vidalia/MainWindow.h +++ b/src/vidalia/MainWindow.h @@ -55,6 +55,10 @@ public: public slots: /** Shows or hides this window. **/ virtual void setVisible(bool visible); + /** Display a message in the application system tray icon */ + void trayMessage(const QString &title, const QString &msg, + QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, + int milli = 10000); protected: /** Called when the user changes the UI translation. */ @@ -318,4 +322,3 @@ private: }; #endif - diff --git a/src/vidalia/plugin/PluginEngine.cpp b/src/vidalia/plugin/PluginEngine.cpp index 8fb2833..a263753 100644 --- a/src/vidalia/plugin/PluginEngine.cpp +++ b/src/vidalia/plugin/PluginEngine.cpp @@ -44,8 +44,6 @@ PluginEngine::PluginEngine(QObject *parent) DebugDialog::outputDebug("Available extensions:"); foreach(QString ext, availableExtensions()) DebugDialog::outputDebug(QString(" %1").arg(ext)); - - loadAllPlugins(); } PluginEngine::~PluginEngine() @@ -77,6 +75,12 @@ PluginEngine::loadAllPlugins() } void +PluginEngine::provide(const QString &name, QObject *obj) +{ + globalObject().setProperty(name, newQObject(obj)); +} + +void PluginEngine::tryLoadPlugin(QDir path) { QStringList files = path.entryList(); diff --git a/src/vidalia/plugin/PluginEngine.h b/src/vidalia/plugin/PluginEngine.h index 605f3c6..debede3 100644 --- a/src/vidalia/plugin/PluginEngine.h +++ b/src/vidalia/plugin/PluginEngine.h @@ -39,7 +39,9 @@ class PluginEngine : public QScriptEngine { PluginEngine(QObject *parent = 0); ~PluginEngine(); + void loadAllPlugins(); QList<QAction *> getAllActions(); + void provide(const QString &name, QObject *obj); signals: void pluginTab(VidaliaTab *); @@ -52,7 +54,6 @@ class PluginEngine : public QScriptEngine { static QScriptValue findWidget(QScriptContext *context, QScriptEngine *engine); static QScriptValue sleep(QScriptContext *context, QScriptEngine *engine); - void loadAllPlugins(); void tryLoadPlugin(QDir path); QList<PluginWrapper *> wrappers;