From c363e4a96974697043053f665294b406a131e758 Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Sun, 10 Jan 2021 00:26:06 +0800 Subject: [PATCH] Generate the D-Bus adaptor class on the fly That prevents mismatches between the adaptor class and the D-Bus definition file. Note that this is a backward-incompatible change. For example, the command to lock all databases is changed from > dbus-send --session --print-reply --dest=org.keepassxc.KeePassXC.MainWindow --type=method_call /keepassxc org.keepassxc.MainWindow.lockAllDatabases to > dbus-send --session --print-reply --dest=org.keepassxc.KeePassXC.MainWindow --type=method_call /keepassxc org.keepassxc.KeePassXC.MainWindow.lockAllDatabases Fixes: https://github.com/keepassxreboot/keepassxc/issues/5355 --- src/CMakeLists.txt | 5 ++- src/gui/MainWindow.cpp | 2 +- src/gui/MainWindowAdaptor.cpp | 57 ----------------------------- src/gui/MainWindowAdaptor.h | 69 ----------------------------------- 4 files changed, 5 insertions(+), 128 deletions(-) delete mode 100644 src/gui/MainWindowAdaptor.cpp delete mode 100644 src/gui/MainWindowAdaptor.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f1695b67..f1c5d5d8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -206,10 +206,13 @@ endif() if(UNIX AND NOT APPLE) set(keepassx_SOURCES ${keepassx_SOURCES} - gui/MainWindowAdaptor.cpp gui/osutils/nixutils/ScreenLockListenerDBus.cpp gui/osutils/nixutils/NixUtils.cpp gui/osutils/nixutils/X11Funcs.cpp) + qt5_add_dbus_adaptor(keepassx_SOURCES + gui/org.keepassxc.KeePassXC.MainWindow.xml + gui/MainWindow.h + MainWindow) endif() if(WIN32) set(keepassx_SOURCES diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 3bcda98d..aed3a59f 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -72,7 +72,7 @@ #endif #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(QT_NO_DBUS) -#include "gui/MainWindowAdaptor.h" +#include "mainwindowadaptor.h" #endif const QString MainWindow::BaseWindowTitle = "KeePassXC"; diff --git a/src/gui/MainWindowAdaptor.cpp b/src/gui/MainWindowAdaptor.cpp deleted file mode 100644 index cda27fdf..00000000 --- a/src/gui/MainWindowAdaptor.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file was generated by qdbusxml2cpp version 0.8 - * Command line was: qdbusxml2cpp -c MainWindowAdaptor -a MainWindowAdaptor.h:MainWindowAdaptor.cpp - * org.keepassxc.MainWindow.xml - * - * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. - * - * This is an auto-generated file. - * Do not edit! All changes made to it will be lost. - */ - -#include "MainWindowAdaptor.h" - -/* - * Implementation of adaptor class MainWindowAdaptor - */ - -MainWindowAdaptor::MainWindowAdaptor(QObject* parent) - : QDBusAbstractAdaptor(parent) -{ - setAutoRelaySignals(true); -} - -MainWindowAdaptor::~MainWindowAdaptor() -{ -} - -void MainWindowAdaptor::appExit() -{ - QMetaObject::invokeMethod(parent(), "appExit"); -} - -void MainWindowAdaptor::closeAllDatabases() -{ - QMetaObject::invokeMethod(parent(), "closeAllDatabases"); -} - -void MainWindowAdaptor::lockAllDatabases() -{ - QMetaObject::invokeMethod(parent(), "lockAllDatabases"); -} - -void MainWindowAdaptor::openDatabase(const QString& fileName) -{ - QMetaObject::invokeMethod(parent(), "openDatabase", Q_ARG(QString, fileName)); -} - -void MainWindowAdaptor::openDatabase(const QString& fileName, const QString& pw) -{ - QMetaObject::invokeMethod(parent(), "openDatabase", Q_ARG(QString, fileName), Q_ARG(QString, pw)); -} - -void MainWindowAdaptor::openDatabase(const QString& fileName, const QString& pw, const QString& keyFile) -{ - QMetaObject::invokeMethod( - parent(), "openDatabase", Q_ARG(QString, fileName), Q_ARG(QString, pw), Q_ARG(QString, keyFile)); -} diff --git a/src/gui/MainWindowAdaptor.h b/src/gui/MainWindowAdaptor.h deleted file mode 100644 index a564f374..00000000 --- a/src/gui/MainWindowAdaptor.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file was generated by qdbusxml2cpp version 0.8 - * Command line was: qdbusxml2cpp -c MainWindowAdaptor -a MainWindowAdaptor.h:MainWindowAdaptor.cpp - * org.keepassxc.MainWindow.xml - * - * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. - * - * This is an auto-generated file. - * This file may have been hand-edited. Look for HAND-EDIT comments - * before re-generating it. - */ - -#ifndef MAINWINDOWADAPTOR_H -#define MAINWINDOWADAPTOR_H - -#include -#include -QT_BEGIN_NAMESPACE -class QByteArray; -template class QList; -template class QMap; -class QString; -class QStringList; -class QVariant; -QT_END_NAMESPACE - -/* - * Adaptor class for interface org.keepassxc.MainWindow - */ -class MainWindowAdaptor : public QDBusAbstractAdaptor -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "org.keepassxc.MainWindow") - Q_CLASSINFO("D-Bus Introspection", - "" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - "") -public: - MainWindowAdaptor(QObject* parent); - virtual ~MainWindowAdaptor(); - -public: -public slots: - void appExit(); - void closeAllDatabases(); - void lockAllDatabases(); - void openDatabase(const QString& fileName); - void openDatabase(const QString& fileName, const QString& pw); - void openDatabase(const QString& fileName, const QString& pw, const QString& keyFile); -signals: -}; - -#endif