# HG changeset patch # User František Kučera # Date 1567376617 -7200 # Node ID d37c6dd9aa20fd1c5e36026ad206ed5003c6b47a # Parent 2705911938b4b0444ff4e50b9126d6c6d34d3441 tabs: Status, Configuration, About diff -r 2705911938b4 -r d37c6dd9aa20 cadMousePro-gui/nbproject/configurations.xml --- a/cadMousePro-gui/nbproject/configurations.xml Fri Aug 30 01:22:12 2019 +0200 +++ b/cadMousePro-gui/nbproject/configurations.xml Mon Sep 02 00:23:37 2019 +0200 @@ -107,9 +107,9 @@ false - + - @@ -119,7 +119,7 @@ ${MAKE} -f Makefile ${MAKE} -f Makefile clean build/Debug/src/cadMousePro-gui - + @@ -132,8 +132,6 @@ ex="false" tool="1" flavor2="11"> - - - + - + - build/Debug/src/generated-sources - /usr/include/x86_64-linux-gnu/qt5/QtCore + build/Debug/src + src + build/Debug/src/cadMousePro-gui_autogen/include + /usr/include/x86_64-linux-gnu/qt5 /usr/include/x86_64-linux-gnu/qt5/QtDBus - /usr/include/x86_64-linux-gnu/qt5 - build/Debug/src + /usr/include/x86_64-linux-gnu/qt5/QtCore + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ + /usr/include/x86_64-linux-gnu/qt5/QtWidgets + /usr/include/x86_64-linux-gnu/qt5/QtGui QT_CORE_LIB @@ -218,6 +220,27 @@ + + + + build/Debug/src + src + build/Debug/src/cadMousePro-gui_autogen/include + /usr/include/x86_64-linux-gnu/qt5 + /usr/include/x86_64-linux-gnu/qt5/QtDBus + /usr/include/x86_64-linux-gnu/qt5/QtCore + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ + /usr/include/x86_64-linux-gnu/qt5/QtWidgets + /usr/include/x86_64-linux-gnu/qt5/QtGui + + + QT_CORE_LIB + QT_DBUS_LIB + QT_GUI_LIB + QT_WIDGETS_LIB + + + @@ -243,45 +266,30 @@ - /usr/include/x86_64-linux-gnu/qt5/QtCore - /usr/include/x86_64-linux-gnu/qt5/QtDBus - build/Debug/src/generated-sources - build/Debug/src/cadMousePro-gui_autogen/S5VNLJ26FI + build/Debug/src src - build/Debug/src/cadMousePro-gui_autogen/EWIEGA46WW - /usr/include/x86_64-linux-gnu/qt5/QtGui + build/Debug/src/cadMousePro-gui_autogen/include + /usr/include/x86_64-linux-gnu/qt5 + /usr/include/x86_64-linux-gnu/qt5/QtDBus + /usr/include/x86_64-linux-gnu/qt5/QtCore + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ /usr/include/x86_64-linux-gnu/qt5/QtWidgets - build/Debug/src/cadMousePro-gui_autogen - /usr/include/x86_64-linux-gnu/qt5 - build/Debug/src + /usr/include/x86_64-linux-gnu/qt5/QtGui + + QT_CORE_LIB + QT_DBUS_LIB + QT_GUI_LIB + QT_WIDGETS_LIB + - - /usr/include/x86_64-linux-gnu/qt5/QtCore - /usr/include/x86_64-linux-gnu/qt5/QtWidgets - /usr/include/x86_64-linux-gnu/qt5/QtDBus - build/Debug/src/generated-sources - src - /usr/include/x86_64-linux-gnu/qt5/QtGui - /usr/include/x86_64-linux-gnu/qt5 - build/Debug/src - - - src - /usr/include/x86_64-linux-gnu/qt5/QtCore - /usr/include/x86_64-linux-gnu/qt5/QtGui - /usr/include/x86_64-linux-gnu/qt5/QtWidgets - /usr/include/x86_64-linux-gnu/qt5/QtDBus - /usr/include/x86_64-linux-gnu/qt5 - build/qt/src - diff -r 2705911938b4 -r d37c6dd9aa20 cadMousePro-gui/src/MouseMainWindow.cpp --- a/cadMousePro-gui/src/MouseMainWindow.cpp Fri Aug 30 01:22:12 2019 +0200 +++ b/cadMousePro-gui/src/MouseMainWindow.cpp Mon Sep 02 00:23:37 2019 +0200 @@ -23,54 +23,87 @@ MouseMainWindow::MouseMainWindow() { proxy = new InfoGlobalcodeMouseCadMouseProInterface("info.globalcode.mouse.cadMousePro", "/info/globalcode/mouse/cadMousePro", connection, this); - resize(640, 480); setWindowTitle("cadMousePro"); - centralwidget = new QWidget(this); - formLayout = new QFormLayout(centralwidget); + + initStatusPanel(); + initConfigurationPanel(); + initAboutPanel(); + + setCentralWidget(tabs); + refresh(); +} + +void MouseMainWindow::initStatusPanel() { + QWidget* panel = new QWidget(this); + QFormLayout* layout = new QFormLayout(panel); int f = 0; - formLayout->setWidget(f++, QFormLayout::LabelRole, new QLabel("How does the mouse feel:", centralwidget)); - statusProxy->setEnabled(false); statusUPower->setEnabled(false); statusDevice->setEnabled(false); - formLayout->setWidget(f++, QFormLayout::FieldRole, statusProxy); - formLayout->setWidget(f++, QFormLayout::FieldRole, statusUPower); - formLayout->setWidget(f++, QFormLayout::FieldRole, statusDevice); + layout->setWidget(f++, QFormLayout::FieldRole, statusProxy); + layout->setWidget(f++, QFormLayout::FieldRole, statusUPower); + layout->setWidget(f++, QFormLayout::FieldRole, statusDevice); - - - QPushButton* refreshButton = new QPushButton("Refresh", this); - formLayout->setWidget(f++, QFormLayout::FieldRole, refreshButton); + QPushButton* refreshButton = new QPushButton("Refresh", panel); + layout->setWidget(f++, QFormLayout::FieldRole, refreshButton); connect(refreshButton, &QPushButton::clicked, this, &MouseMainWindow::refresh); - + tabs->addTab(panel, "Status"); +} - formLayout->setWidget(f++, QFormLayout::LabelRole, new QLabel("Talk to your mouse:", centralwidget)); +void MouseMainWindow::initConfigurationPanel() { + QWidget* panel = new QWidget(this); + QFormLayout* layout = new QFormLayout(panel); + + int f = 0; configureLiftOffDetection->setChecked(true); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureLiftOffDetection); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureSmartScrolling); + layout->setWidget(f++, QFormLayout::FieldRole, configureLiftOffDetection); + layout->setWidget(f++, QFormLayout::FieldRole, configureSmartScrolling); configureFrequency250->setChecked(true); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureFrequency125); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureFrequency250); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureFrequency500); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureFrequency1000); + layout->setWidget(f++, QFormLayout::FieldRole, configureFrequency125); + layout->setWidget(f++, QFormLayout::FieldRole, configureFrequency250); + layout->setWidget(f++, QFormLayout::FieldRole, configureFrequency500); + layout->setWidget(f++, QFormLayout::FieldRole, configureFrequency1000); - QPushButton* configureButton = new QPushButton("Configure", this); + QPushButton* configureButton = new QPushButton("Configure", panel); configureButton->setToolTip("n.b. current interface is write-only and the controls above just configures the mouse – does not show current configuration"); - formLayout->setWidget(f++, QFormLayout::FieldRole, configureButton); + layout->setWidget(f++, QFormLayout::FieldRole, configureButton); connect(configureButton, &QPushButton::clicked, this, &MouseMainWindow::configure); + message->setReadOnly(true); + layout->setWidget(f++, QFormLayout::FieldRole, new QLabel("Result:", panel)); + layout->setWidget(f++, QFormLayout::FieldRole, message); - message->setReadOnly(true); - formLayout->setWidget(f++, QFormLayout::LabelRole, new QLabel("Mouse responds:", this)); - formLayout->setWidget(f++, QFormLayout::FieldRole, message); + tabs->addTab(panel, "Configuration"); +} - setCentralWidget(centralwidget); - refresh(); +void MouseMainWindow::initAboutPanel() { + QWidget* panel = new QWidget(this); + QFormLayout* layout = new QFormLayout(panel); + + int f = 0; + + layout->setWidget(f, QFormLayout::LabelRole, new QLabel("Program name:", panel)); + layout->setWidget(f++, QFormLayout::FieldRole, new QLabel("cadMousePro", panel)); + + layout->setWidget(f, QFormLayout::LabelRole, new QLabel("Description:", panel)); + layout->setWidget(f++, QFormLayout::FieldRole, new QLabel("configuration tool for 3DConnexion CadMouse Pro Wireless", panel)); + + layout->setWidget(f, QFormLayout::LabelRole, new QLabel("Author:", panel)); + layout->setWidget(f++, QFormLayout::FieldRole, new QLabel("Ing. František Kučera, Frantovo.cz, GlobalCode.info", panel)); + + layout->setWidget(f, QFormLayout::LabelRole, new QLabel("License:", panel)); + layout->setWidget(f++, QFormLayout::FieldRole, new QLabel("GNU GPLv3+", panel)); + + layout->setWidget(f, QFormLayout::LabelRole, new QLabel("Contact and support:", panel)); + layout->setWidget(f++, QFormLayout::FieldRole, new QLabel("https://mouse.globalcode.info/", panel)); + + tabs->addTab(panel, "About"); + } void MouseMainWindow::refresh() { @@ -80,13 +113,15 @@ } void MouseMainWindow::configure() { + message->setText("…"); + int frequency; // TODO: get value from the group if (configureFrequency125->isChecked()) frequency = 125; else if (configureFrequency250->isChecked()) frequency = 250; else if (configureFrequency500->isChecked()) frequency = 500; else if (configureFrequency1000->isChecked()) frequency = 1000; else frequency = 250; - + auto response = proxy->configure(configureLiftOffDetection->isChecked(), configureSmartScrolling->isChecked(), frequency); response.waitForFinished(); diff -r 2705911938b4 -r d37c6dd9aa20 cadMousePro-gui/src/MouseMainWindow.h --- a/cadMousePro-gui/src/MouseMainWindow.h Fri Aug 30 01:22:12 2019 +0200 +++ b/cadMousePro-gui/src/MouseMainWindow.h Mon Sep 02 00:23:37 2019 +0200 @@ -18,6 +18,7 @@ #pragma once #include +#include #include #include #include @@ -36,24 +37,27 @@ } private: - QWidget* centralwidget; - QFormLayout* formLayout; + QTabWidget* tabs = new QTabWidget(this); QCheckBox* statusProxy = new QCheckBox("connected to Daemon", this); QCheckBox* statusUPower = new QCheckBox("connected to UPower", this); QCheckBox* statusDevice = new QCheckBox("present", this); - + QCheckBox* configureSmartScrolling = new QCheckBox("smart scrolling (free wheel)", this); QCheckBox* configureLiftOffDetection = new QCheckBox("lift-off detection", this); QRadioButton* configureFrequency125 = new QRadioButton("125 Hz", this); QRadioButton* configureFrequency250 = new QRadioButton("250 Hz", this); QRadioButton* configureFrequency500 = new QRadioButton("500 Hz", this); QRadioButton* configureFrequency1000 = new QRadioButton("1000 Hz", this); - + QLineEdit* message = new QLineEdit(this); - + QDBusConnection connection = QDBusConnection::systemBus(); InfoGlobalcodeMouseCadMouseProInterface* proxy; + void initStatusPanel(); + void initConfigurationPanel(); + void initAboutPanel(); + private slots: void refresh(); void configure();