diff --git a/libdbusmenuqt/CMakeLists.txt b/libdbusmenuqt/CMakeLists.txt --- a/libdbusmenuqt/CMakeLists.txt +++ b/libdbusmenuqt/CMakeLists.txt @@ -11,3 +11,4 @@ Qt5::Widgets ) +add_subdirectory(test) diff --git a/libdbusmenuqt/test/README b/libdbusmenuqt/test/README new file mode 100644 --- /dev/null +++ b/libdbusmenuqt/test/README @@ -0,0 +1,2 @@ +App with a menu, designed for use testing appmenu QPTs/applets/kded modules +small enough that we can attach debuggers and breakpoints without drowning in data diff --git a/libdbusmenuqt/test/main.cpp b/libdbusmenuqt/test/main.cpp new file mode 100644 --- /dev/null +++ b/libdbusmenuqt/test/main.cpp @@ -0,0 +1,66 @@ +#include + +#include +#include +#include +#include +#include + +class MainWindow : public QMainWindow +{ +public: + MainWindow(); +}; + +MainWindow::MainWindow() : + QMainWindow() +{ + /*set an initial menu with the following + Menu A + - Item + - Checkable Item + - Item With Icon + - A separator + - Menu B + - Item B1 + Menu C + - DynamicItem ${timestamp} + + TopLevelItem + */ + + QAction *t; + auto menuA = new QMenu("Menu A", this); + menuA->addAction("Item"); + + t = menuA->addAction("Checkable Item"); + t->setCheckable(true); + + t = menuA->addAction(QIcon::fromTheme("document-edit"), "Item with icon"); + + menuA->addSeparator(); + + auto menuB = new QMenu("Menu B", this); + menuB->addAction("Item B1"); + menuA->addMenu(menuB); + + menuBar()->addMenu(menuA); + + auto menuC = new QMenu("Menu C", this); + connect(menuC, &QMenu::aboutToShow, this, [menuC]() { + menuC->clear(); + menuC->addAction("Dynamic Item " + QDateTime::currentDateTime().toString()); + }); + + menuBar()->addMenu(menuC); + + menuBar()->addAction("Top Level Item"); +} + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + MainWindow mw; + mw.show(); + return app.exec(); +}