From a5208aae6b37130c0b40501f3cb308b339157409 Mon Sep 17 00:00:00 2001 From: Mjolnir Date: Thu, 3 Sep 2015 13:37:54 +0200 Subject: [PATCH] =?utf8?q?Menu=20d=C3=A9mo=20fonctionnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- LivingDemos/LivingDemos.pro | 9 ++- LivingDemos/MenuPrincipal.cpp | 139 +++++++++++++++++++++++++++++++++- LivingDemos/MenuPrincipal.h | 31 ++++++++ LivingDemos/Options.cpp | 56 ++++++++++++++ LivingDemos/Options.h | 33 ++++++++ LivingDemos/menuprincipal.ui | 81 +++++++++++++++++--- LivingDemos/options.ui | 124 ++++++++++++++++++++++++++++++ Test/mainwindow.cpp | 2 + 8 files changed, 460 insertions(+), 15 deletions(-) create mode 100644 LivingDemos/Options.cpp create mode 100644 LivingDemos/Options.h create mode 100644 LivingDemos/options.ui diff --git a/LivingDemos/LivingDemos.pro b/LivingDemos/LivingDemos.pro index 4c79fdc..10663e6 100644 --- a/LivingDemos/LivingDemos.pro +++ b/LivingDemos/LivingDemos.pro @@ -23,8 +23,11 @@ LIBS += -L$$PWD/../builds/livingdesktop-Release -lLivingDesktop SOURCES += main.cpp\ - MenuPrincipal.cpp + MenuPrincipal.cpp \ + Options.cpp -HEADERS += MenuPrincipal.h +HEADERS += MenuPrincipal.h \ + Options.h -FORMS += menuprincipal.ui +FORMS += menuprincipal.ui \ + options.ui diff --git a/LivingDemos/MenuPrincipal.cpp b/LivingDemos/MenuPrincipal.cpp index 226b888..4cf4b5e 100644 --- a/LivingDemos/MenuPrincipal.cpp +++ b/LivingDemos/MenuPrincipal.cpp @@ -1,14 +1,151 @@ #include "MenuPrincipal.h" #include "ui_menuprincipal.h" +#include + MenuPrincipal::MenuPrincipal(QWidget *parent) : QMainWindow(parent), - ui(new Ui::MenuPrincipal) + ui(new Ui::MenuPrincipal), + options(this) { ui->setupUi(this); + + connect(ui->options, SIGNAL(clicked()), this, SLOT(openOptions())); + + connectKeyboard(); + connectScreen(); + connectMouse(); } MenuPrincipal::~MenuPrincipal() { + disconnectMouse(); + disconnectKeyboard(); + disconnectScreen(); delete ui; } + +void MenuPrincipal::connectMouse() +{ + qDebug("Connect mouse"); + try + { + //The mouse may require a little time because of calibration (blocking process) + _mouse = new XYPlotter(); + _mouse->calibrate(); + options.enableMouse(); + } + catch (ErrorMessage e) + { + options.disableMouse(); + _mouse = NULL; + qDebug() << QString(e.what()); + } +} + +void MenuPrincipal::connectKeyboard() +{ + qDebug() << "Connect keyboard"; + try + { + _keyboard = new LivingKeyboard(); + _keyboard->calibrate(); + options.enableKeyboard(); + } + catch (ErrorMessage e) + { + options.disableKeyboard(); + _keyboard = NULL; + qDebug() << QString(e.what()); + } +} + +void MenuPrincipal::connectScreen() +{ + qDebug("Connect screen"); + try + { + //The screen may require a little time because of calibration (blocking process) + _screen = new LivingScreen(); + _screen->calibrate(); + options.enableScreen(); + } + catch (ErrorMessage e) + { + options.disableScreen(); + _screen = NULL; + qDebug() << QString(e.what()); + } +} + +void MenuPrincipal::calibrateMouse() +{ + if (_mouse) + _mouse->calibrate(); +} + +void MenuPrincipal::calibrateKeyboard() +{ + if (_keyboard) + _keyboard->calibrate(); +} + +void MenuPrincipal::calibrateScreen() +{ + if (_screen) + _screen->calibrate(); +} + +void MenuPrincipal::resetMouse() +{ + disconnectMouse(); + connectMouse(); + calibrateMouse(); +} + +void MenuPrincipal::resetKeyboard() +{ + disconnectKeyboard(); + connectKeyboard(); + calibrateKeyboard(); +} + +void MenuPrincipal::resetScreen() +{ + disconnectScreen(); + connectScreen(); + calibrateScreen(); +} + +void MenuPrincipal::disconnectMouse() +{ + if (_mouse) + { + _mouse->moveTo(0, 0, false); + delete _mouse; + _mouse = NULL; + } +} + +void MenuPrincipal::disconnectKeyboard() +{ + if (_keyboard) + { + delete _keyboard; + _keyboard = NULL; + } +} + +void MenuPrincipal::disconnectScreen() +{ + if (_screen) + { + delete _screen; + _screen = NULL; + } +} + +void MenuPrincipal::openOptions() +{ + options.show(); +} diff --git a/LivingDemos/MenuPrincipal.h b/LivingDemos/MenuPrincipal.h index 9394fa3..b4dd4ca 100644 --- a/LivingDemos/MenuPrincipal.h +++ b/LivingDemos/MenuPrincipal.h @@ -3,6 +3,12 @@ #include +#include + +#include +#include +#include + namespace Ui { class MenuPrincipal; } @@ -15,8 +21,33 @@ class MenuPrincipal : public QMainWindow explicit MenuPrincipal(QWidget *parent = 0); ~MenuPrincipal(); + public slots: + void connectMouse(); + void connectKeyboard(); + void connectScreen(); + + void calibrateMouse(); + void calibrateKeyboard(); + void calibrateScreen(); + + void resetMouse(); + void resetKeyboard(); + void resetScreen(); + + void disconnectMouse(); + void disconnectKeyboard(); + void disconnectScreen(); + + private slots: + void openOptions(); + private: Ui::MenuPrincipal *ui; + Options options; + + XYPlotter *_mouse; + LivingKeyboard *_keyboard; + LivingScreen *_screen; }; #endif // MENUPRINCIPAL_H diff --git a/LivingDemos/Options.cpp b/LivingDemos/Options.cpp new file mode 100644 index 0000000..65aa47f --- /dev/null +++ b/LivingDemos/Options.cpp @@ -0,0 +1,56 @@ +#include "Options.h" +#include "ui_options.h" + +#include + +Options::Options(QWidget *parent) : + QDialog(parent), + ui(new Ui::Options) +{ + ui->setupUi(this); + + MenuPrincipal * menu = dynamic_cast(parent); + + connect(ui->calibmouse, SIGNAL(clicked()), menu, SLOT(calibrateMouse())); + connect(ui->calibkeyboard, SIGNAL(clicked()), menu, SLOT(calibrateKeyboard())); + connect(ui->calibscreen, SIGNAL(clicked()), menu, SLOT(calibrateScreen())); + + connect(ui->resetmouse, SIGNAL(clicked()), menu, SLOT(resetMouse())); + connect(ui->resetkeyboard, SIGNAL(clicked()), menu, SLOT(resetKeyboard())); + connect(ui->resetscreen, SIGNAL(clicked()), menu, SLOT(resetScreen())); +} + +Options::~Options() +{ + delete ui; +} + +void Options::enableMouse() +{ + ui->calibmouse->setEnabled(true); +} + +void Options::enableKeyboard() +{ + ui->calibkeyboard->setEnabled(true); +} + +void Options::enableScreen() +{ + ui->calibscreen->setEnabled(true); +} + +void Options::disableMouse() +{ + ui->calibmouse->setEnabled(false); +} + +void Options::disableKeyboard() +{ + ui->calibkeyboard->setEnabled(false); +} + +void Options::disableScreen() +{ + ui->calibscreen->setEnabled(false); +} diff --git a/LivingDemos/Options.h b/LivingDemos/Options.h new file mode 100644 index 0000000..0187154 --- /dev/null +++ b/LivingDemos/Options.h @@ -0,0 +1,33 @@ +#ifndef OPTIONS_H +#define OPTIONS_H + +#include +#include +#include +#include + +namespace Ui { + class Options; +} + +class Options : public QDialog +{ + Q_OBJECT + + public: + explicit Options(QWidget *parent = 0); + ~Options(); + + void enableMouse(); + void enableKeyboard(); + void enableScreen(); + + void disableMouse(); + void disableKeyboard(); + void disableScreen(); + + private: + Ui::Options *ui; +}; + +#endif // OPTIONS_H diff --git a/LivingDemos/menuprincipal.ui b/LivingDemos/menuprincipal.ui index aec54c4..bd7d7b4 100644 --- a/LivingDemos/menuprincipal.ui +++ b/LivingDemos/menuprincipal.ui @@ -7,7 +7,7 @@ 0 0 894 - 618 + 546 @@ -36,10 +36,23 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + - - + + 0 @@ -52,11 +65,11 @@ - PushButton + Demo 3 - + @@ -70,12 +83,12 @@ - PushButton + Demo 2 - - + + 0 @@ -88,11 +101,11 @@ - PushButton + Demo 4 - + @@ -106,7 +119,53 @@ - PushButton + Demo 1 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 1 + + + QLayout::SetMinimumSize + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + Options diff --git a/LivingDemos/options.ui b/LivingDemos/options.ui new file mode 100644 index 0000000..442e1e2 --- /dev/null +++ b/LivingDemos/options.ui @@ -0,0 +1,124 @@ + + + Options + + + + 0 + 0 + 500 + 324 + + + + Dialog + + + + + + false + + + Calibrate Mouse + + + + + + + false + + + Calibrate Screen + + + + + + + false + + + Calibrate Keyboard + + + + + + + true + + + Reset Mouse + + + + + + + true + + + Reset Screen + + + + + + + true + + + Reset Keyboard + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + + buttonBox + accepted() + Options + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Options + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Test/mainwindow.cpp b/Test/mainwindow.cpp index eda2def..aff38fc 100644 --- a/Test/mainwindow.cpp +++ b/Test/mainwindow.cpp @@ -64,6 +64,8 @@ MainWindow::~MainWindow() } if (keyboard) delete keyboard; + if (screen) + delete screen; delete ui; } -- 2.30.2