[config] added touchscreen auto-detection

This commit is contained in:
Huan Truong 2018-03-31 01:42:04 -04:00
parent 16a09529e8
commit 099f14d3de
7 changed files with 40 additions and 16 deletions

View File

@ -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;

View File

@ -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;

View File

@ -21,6 +21,7 @@
#include <memory>
#include <QMainWindow>
#include <QFile>
#include <f1x/openauto/autoapp/Configuration/IConfiguration.hpp>
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:

View File

@ -18,6 +18,7 @@
#include <f1x/openauto/autoapp/Configuration/Configuration.hpp>
#include <f1x/openauto/Common/Log.hpp>
#include <QTouchDevice>
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;

View File

@ -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);

View File

@ -78,9 +78,6 @@
<height>64</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="styleSheet">
<string notr="true">display: none;</string>
</property>

View File

@ -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::configuration::Configuration>();
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();