From 099f14d3debc7edac53c928fbe06078f1946818a Mon Sep 17 00:00:00 2001 From: Huan Truong Date: Sat, 31 Mar 2018 01:42:04 -0400 Subject: [PATCH] [config] added touchscreen auto-detection --- .../autoapp/Configuration/Configuration.hpp | 2 ++ .../autoapp/Configuration/IConfiguration.hpp | 2 ++ .../f1x/openauto/autoapp/UI/MainWindow.hpp | 3 ++- src/autoapp/Configuration/Configuration.cpp | 12 +++++++++++ src/autoapp/UI/MainWindow.cpp | 14 ++++++++++--- src/autoapp/UI/mainwindow.ui | 3 --- src/autoapp/autoapp.cpp | 20 ++++++++++--------- 7 files changed, 40 insertions(+), 16 deletions(-) diff --git a/include/f1x/openauto/autoapp/Configuration/Configuration.hpp b/include/f1x/openauto/autoapp/Configuration/Configuration.hpp index f4a0649..aae2c01 100644 --- a/include/f1x/openauto/autoapp/Configuration/Configuration.hpp +++ b/include/f1x/openauto/autoapp/Configuration/Configuration.hpp @@ -39,6 +39,8 @@ public: void reset() override; void save() override; + bool hasTouchScreen() const override; + void setHandednessOfTrafficType(HandednessOfTrafficType value) override; HandednessOfTrafficType getHandednessOfTrafficType() const override; void showClock(bool value) override; diff --git a/include/f1x/openauto/autoapp/Configuration/IConfiguration.hpp b/include/f1x/openauto/autoapp/Configuration/IConfiguration.hpp index 2165a68..b74a259 100644 --- a/include/f1x/openauto/autoapp/Configuration/IConfiguration.hpp +++ b/include/f1x/openauto/autoapp/Configuration/IConfiguration.hpp @@ -48,6 +48,8 @@ public: virtual void reset() = 0; virtual void save() = 0; + virtual bool hasTouchScreen() const = 0; + virtual void setHandednessOfTrafficType(HandednessOfTrafficType value) = 0; virtual HandednessOfTrafficType getHandednessOfTrafficType() const = 0; virtual void showClock(bool value) = 0; diff --git a/include/f1x/openauto/autoapp/UI/MainWindow.hpp b/include/f1x/openauto/autoapp/UI/MainWindow.hpp index 05d7ebd..2db7fd6 100644 --- a/include/f1x/openauto/autoapp/UI/MainWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/MainWindow.hpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace Ui { @@ -40,7 +41,7 @@ class MainWindow : public QMainWindow { Q_OBJECT public: - explicit MainWindow(QWidget *parent = nullptr); + explicit MainWindow(configuration::IConfiguration::Pointer configuration, QWidget *parent = nullptr); ~MainWindow() override; signals: diff --git a/src/autoapp/Configuration/Configuration.cpp b/src/autoapp/Configuration/Configuration.cpp index 0e79129..33dc1a3 100644 --- a/src/autoapp/Configuration/Configuration.cpp +++ b/src/autoapp/Configuration/Configuration.cpp @@ -18,6 +18,7 @@ #include #include +#include namespace f1x { @@ -156,6 +157,17 @@ void Configuration::save() boost::property_tree::ini_parser::write_ini(cConfigFileName, iniConfig); } +bool Configuration::hasTouchScreen() const +{ + auto touchdevs = QTouchDevice::devices(); + for (int i = 0; i < touchdevs.length(); i++) { + if (touchdevs[i]->type() == QTouchDevice::TouchScreen) { + return true; + } + } + return false; +} + void Configuration::setHandednessOfTrafficType(HandednessOfTrafficType value) { handednessOfTrafficType_ = value; diff --git a/src/autoapp/UI/MainWindow.cpp b/src/autoapp/UI/MainWindow.cpp index 92f78a4..8b7c485 100644 --- a/src/autoapp/UI/MainWindow.cpp +++ b/src/autoapp/UI/MainWindow.cpp @@ -31,14 +31,14 @@ namespace autoapp namespace ui { -MainWindow::MainWindow(QWidget *parent) +MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWidget *parent) : QMainWindow(parent) , ui_(new Ui::MainWindow) { - this->setStyleSheet("QMainWindow {background-color: rgb(0,0,0);} \ QPushButton { background: url(:/circle.png); border: 0; } \ QPushButton:hover { background: url(:/circle-hot.png); } \ + QPushButton:focus { background: url(:/circle-hot.png); } \ QPushButton:pressed { background: url(:/circle-pressed.png); } \ "); QFileInfo wallpaperFile("wallpaper.png"); @@ -59,7 +59,15 @@ MainWindow::MainWindow(QWidget *parent) connect(ui_->pushButtonToggleCursor, &QPushButton::clicked, this, &MainWindow::toggleCursor); connect(ui_->pushButtonWirelessConnection, &QPushButton::clicked, this, &MainWindow::openConnectDialog); connect(ui_->pushButtonBrightness, &QPushButton::clicked, this, &MainWindow::showBrightnessSlider); - ui_->pushButtonToggleCursor->hide(); + + if (configuration->hasTouchScreen()) { + ui_->pushButtonToggleCursor->hide(); + } + +#ifdef RASPBERRYPI3 + ui_->pushButtonWirelessConnection->hide(); +#endif + ui_->horizontalSliderBrightness->hide(); QFileInfo brightnessFile(brightnessFilename); diff --git a/src/autoapp/UI/mainwindow.ui b/src/autoapp/UI/mainwindow.ui index 2b97899..3cfa402 100644 --- a/src/autoapp/UI/mainwindow.ui +++ b/src/autoapp/UI/mainwindow.ui @@ -78,9 +78,6 @@ 64 - - Qt::ClickFocus - display: none; diff --git a/src/autoapp/autoapp.cpp b/src/autoapp/autoapp.cpp index b8ee6d8..9d33c2e 100644 --- a/src/autoapp/autoapp.cpp +++ b/src/autoapp/autoapp.cpp @@ -84,10 +84,12 @@ int main(int argc, char* argv[]) startIOServiceWorkers(ioService, threadPool); QApplication qApplication(argc, argv); - autoapp::ui::MainWindow mainWindow; - mainWindow.setWindowFlags(Qt::WindowStaysOnTopHint); auto configuration = std::make_shared(); + + autoapp::ui::MainWindow mainWindow(configuration); + mainWindow.setWindowFlags(Qt::WindowStaysOnTopHint); + autoapp::ui::SettingsWindow settingsWindow(configuration); settingsWindow.setWindowFlags(Qt::WindowStaysOnTopHint); @@ -102,13 +104,13 @@ int main(int argc, char* argv[]) QObject::connect(&mainWindow, &autoapp::ui::MainWindow::openSettings, &settingsWindow, &autoapp::ui::SettingsWindow::showFullScreen); QObject::connect(&mainWindow, &autoapp::ui::MainWindow::openConnectDialog, &connectDialog, &autoapp::ui::ConnectDialog::exec); -#ifdef RPI3_BUILD - qApplication.setOverrideCursor(Qt::BlankCursor); - QObject::connect(&mainWindow, &autoapp::ui::MainWindow::toggleCursor, [&qApplication]() { - const auto cursor = qApplication.overrideCursor()->shape() == Qt::BlankCursor ? Qt::ArrowCursor : Qt::BlankCursor; - qApplication.setOverrideCursor(cursor); - }); -#endif + if (configuration->hasTouchScreen()) { + qApplication.setOverrideCursor(Qt::BlankCursor); + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::toggleCursor, [&qApplication]() { + const auto cursor = qApplication.overrideCursor()->shape() == Qt::BlankCursor ? Qt::ArrowCursor : Qt::BlankCursor; + qApplication.setOverrideCursor(cursor); + }); + } mainWindow.showFullScreen();