diff --git a/src/core/KeePassApp.cpp b/src/core/KeePassApp.cpp index 688fc1d2f..557dc2625 100644 --- a/src/core/KeePassApp.cpp +++ b/src/core/KeePassApp.cpp @@ -17,12 +17,10 @@ #include "KeePassApp.h" -#include #include -KeePassApp::KeePassApp(int &argc, char **argv) : - QApplication(argc, argv), - mainWindow(NULL) +KeePassApp::KeePassApp(int& argc, char** argv) + : QApplication(argc, argv) { } @@ -30,18 +28,13 @@ KeePassApp::~KeePassApp() { } -void KeePassApp::setMainWindow(MainWindow *mainWindow) -{ - this->mainWindow = mainWindow; -} - bool KeePassApp::event(QEvent *event) { - // Handle Apple QFileOpenEvent from finder (double click on .kdbx file) - if (event->type() == QEvent::FileOpen && mainWindow) { - mainWindow->openDatabase(static_cast(event)->file(), QString(), QString()); - return true; - } + // Handle Apple QFileOpenEvent from finder (double click on .kdbx file) + if (event->type() == QEvent::FileOpen) { + Q_EMIT openDatabase(static_cast(event)->file()); + return true; + } return (QApplication::event(event)); -} \ No newline at end of file +} diff --git a/src/core/KeePassApp.h b/src/core/KeePassApp.h index a5242c146..aabd74f64 100644 --- a/src/core/KeePassApp.h +++ b/src/core/KeePassApp.h @@ -20,14 +20,14 @@ class KeePassApp : public QApplication { - Q_OBJECT -private: - MainWindow *mainWindow; + Q_OBJECT public: - KeePassApp(int &argc, char **argv); - ~KeePassApp(); + KeePassApp(int& argc, char** argv); + ~KeePassApp(); - void setMainWindow(MainWindow *mainWindow); - bool event(QEvent *event); -}; \ No newline at end of file + bool event(QEvent *event); + +Q_SIGNALS: + void openDatabase(const QString& filename); +}; diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index e6504c5db..026330d65 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -33,7 +33,10 @@ class MainWindow : public QMainWindow public: MainWindow(); ~MainWindow(); - void openDatabase(const QString& fileName, const QString& pw, const QString& keyFile); + +public Q_SLOTS: + void openDatabase(const QString& fileName, const QString& pw = QString(), + const QString& keyFile = QString()); protected: void closeEvent(QCloseEvent* event); diff --git a/src/main.cpp b/src/main.cpp index 118edd154..a6f3b831c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,9 +51,10 @@ int main(int argc, char** argv) } MainWindow mainWindow; - app.setMainWindow(&mainWindow); mainWindow.show(); + QObject::connect(&app, SIGNAL(openDatabase(QString)), &mainWindow, SLOT(openDatabase(QString))); + if (!filename.isEmpty()) { mainWindow.openDatabase(filename, password, QString()); }