From c72958438ff2608e055579423da1fd6cb53c4f73 Mon Sep 17 00:00:00 2001 From: hawkeyexp Date: Fri, 22 Jun 2018 00:03:19 +0200 Subject: [PATCH] [gui][script] Rearcam / reworks / kodi button / shutdown/reboot buttons --- assets/back-hot.png | Bin 0 -> 3191 bytes assets/bg_exit.png | Bin 0 -> 3456 bytes assets/bg_rearcam.png | Bin 0 -> 1758 bytes assets/kodi-hot.png | Bin 0 -> 3409 bytes assets/rearcam-hot.png | Bin 0 -> 3377 bytes assets/reboot-hot.png | Bin 0 -> 3501 bytes assets/recordactive-hot.png | Bin 0 -> 3396 bytes assets/resources.qrc | 7 + .../f1x/openauto/autoapp/UI/MainWindow.hpp | 19 ++ src/autoapp/UI/MainWindow.cpp | 189 ++++++++++++++---- src/autoapp/UI/mainwindow.ui | 181 +++++++++++++++++ src/autoapp/autoapp.cpp | 32 +++ 12 files changed, 387 insertions(+), 41 deletions(-) create mode 100644 assets/back-hot.png create mode 100644 assets/bg_exit.png create mode 100644 assets/bg_rearcam.png create mode 100644 assets/kodi-hot.png create mode 100644 assets/rearcam-hot.png create mode 100644 assets/reboot-hot.png create mode 100644 assets/recordactive-hot.png diff --git a/assets/back-hot.png b/assets/back-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..7b241272744054d91e3dcd327c877c3f939b1066 GIT binary patch literal 3191 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 XeTrp&sS(#|AeX_@)z4*}Q$iB}QC)1| literal 0 HcmV?d00001 diff --git a/assets/kodi-hot.png b/assets/kodi-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..38755be7a8e0a84ee85f89aae64f45b797f9074d GIT binary patch literal 3409 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 literal 0 HcmV?d00001 diff --git a/assets/rearcam-hot.png b/assets/rearcam-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..9ddee0b23ae3d98733b9ab8193433fb12f5f2bf5 GIT binary patch literal 3377 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 Hu0mjfH!UyV literal 0 HcmV?d00001 diff --git a/assets/reboot-hot.png b/assets/reboot-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..4b234b20d853a773413a32d46bc0e2bb90152ddf GIT binary patch literal 3501 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 ap8){VJDDF51>M2`0000record-hot.png stop-hot.png save-hot.png + reboot-hot.png + back-hot.png + bg_exit.png + kodi-hot.png + bg_rearcam.png + rearcam-hot.png + recordactive-hot.png diff --git a/include/f1x/openauto/autoapp/UI/MainWindow.hpp b/include/f1x/openauto/autoapp/UI/MainWindow.hpp index 97d5395..803ff9a 100644 --- a/include/f1x/openauto/autoapp/UI/MainWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/MainWindow.hpp @@ -46,6 +46,7 @@ public: signals: void exit(); + void reboot(); void openSettings(); void toggleCursor(); void TriggerScriptDay(); @@ -57,6 +58,9 @@ signals: void cameraRecord(); void openConnectDialog(); void showBrightnessSlider(); + void startKodi(); + void showRearCam(); + void hideRearCam(); private slots: void on_horizontalSliderBrightness_valueChanged(int value); @@ -68,6 +72,9 @@ private slots: void showTime(); void cameraControlShow(); void cameraControlHide(); + void toggleExit(); + void showRearCamBG(); + void hideRearCamBG(); private: Ui::MainWindow* ui_; @@ -76,8 +83,14 @@ private: QFile *brightnessFile; char brightness_str[5]; + bool wifiButtonForce = false; + bool cameraButtonForce = false; + bool kodiButtonForce = false; + bool brightnessButtonForce = false; + bool nightModeEnabled = false; bool DayNightModeState = false; + bool devModeEnabled = false; bool wallpaperDayFileExists = false; @@ -86,7 +99,13 @@ private: bool wallpaperDevNightFileExists = false; bool masterButtonBGState = false; + bool exitMenuVisible = false; + + bool rearCamEnabled = false; bool dashcamBGState = false; + bool rearcamState = false; + + bool dashCamRecording = false; }; } diff --git a/src/autoapp/UI/MainWindow.cpp b/src/autoapp/UI/MainWindow.cpp index 002b7df..40ea110 100644 --- a/src/autoapp/UI/MainWindow.cpp +++ b/src/autoapp/UI/MainWindow.cpp @@ -23,6 +23,7 @@ #include "ui_mainwindow.h" #include #include +#include namespace f1x { @@ -43,8 +44,8 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi QPushButton:focus { background: url(:/circle.png); } \ QPushButton:pressed { background: url(:/circle-pressed.png); } \ QSlider:horizontal { background: url(:/slider.png); border: 1px solid #ffffff; border-radius: 2px; min-height: 32px;} \ - QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} \ - QSlider::handle:horizontal { background: white; height: 52px; width: 52px; margin: 0 0;} \ + QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} \ + QSlider::handle:horizontal { background: white; height: 52px; width: 52px; margin: 0 0;} \ QLabel { color: #ffffff; font-weight: bold;} \ "); @@ -89,13 +90,26 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi ui_->setupUi(this); connect(ui_->pushButtonSettings, &QPushButton::clicked, this, &MainWindow::openSettings); - connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::exit); + connect(ui_->pushButtonSettings, &QPushButton::clicked, this, &MainWindow::cameraHide); + connect(ui_->pushButtonSettings, &QPushButton::clicked, this, &MainWindow::cameraControlHide); + connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::toggleExit); + connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::cameraStop); + connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::cameraHide); + connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::cameraControlHide); + connect(ui_->pushButtonShutdown, &QPushButton::clicked, this, &MainWindow::exit); + connect(ui_->pushButtonReboot, &QPushButton::clicked, this, &MainWindow::reboot); + connect(ui_->pushButtonCancel, &QPushButton::clicked, this, &MainWindow::toggleExit); connect(ui_->pushButtonCameraShow, &QPushButton::clicked, this, &MainWindow::cameraShow); connect(ui_->pushButtonCameraShow, &QPushButton::clicked, this, &MainWindow::cameraControlShow); connect(ui_->pushButtonCameraHide, &QPushButton::clicked, this, &MainWindow::cameraHide); connect(ui_->pushButtonCameraHide, &QPushButton::clicked, this, &MainWindow::cameraControlHide); connect(ui_->pushButtonStop, &QPushButton::clicked, this, &MainWindow::cameraStop); connect(ui_->pushButtonRecord, &QPushButton::clicked, this, &MainWindow::cameraRecord); + connect(ui_->pushButtonRearcam, &QPushButton::clicked, this, &MainWindow::showRearCamBG); + connect(ui_->pushButtonRearcam, &QPushButton::clicked, this, &MainWindow::showRearCam); + connect(ui_->pushButtonRearcamBack, &QPushButton::clicked, this, &MainWindow::hideRearCamBG); + connect(ui_->pushButtonRearcamBack, &QPushButton::clicked, this, &MainWindow::hideRearCam); + connect(ui_->pushButtonRearcamBack, &QPushButton::clicked, this, &MainWindow::cameraControlHide); connect(ui_->pushButtonSave, &QPushButton::clicked, this, &MainWindow::cameraSave); connect(ui_->pushButtonToggleCursor, &QPushButton::clicked, this, &MainWindow::toggleCursor); connect(ui_->pushButtonDay, &QPushButton::clicked, this, &MainWindow::TriggerScriptDay); @@ -103,6 +117,7 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi connect(ui_->pushButtonNight, &QPushButton::clicked, this, &MainWindow::TriggerScriptNight); connect(ui_->pushButtonNight, &QPushButton::clicked, this, &MainWindow::switchGuiToNight); connect(ui_->pushButtonWirelessConnection, &QPushButton::clicked, this, &MainWindow::openConnectDialog); + connect(ui_->pushButtonKodi, &QPushButton::clicked, this, &MainWindow::startKodi); connect(ui_->pushButtonBrightness, &QPushButton::clicked, this, &MainWindow::showBrightnessSlider); QTimer *timer=new QTimer(this); @@ -113,13 +128,16 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi bool cursorButtonForce = cursorButtonFile.exists(); QFileInfo wifiButtonFile("/etc/button_wifi_visible"); - bool wifiButtonForce = wifiButtonFile.exists(); + this->wifiButtonForce = wifiButtonFile.exists(); QFileInfo cameraButtonFile("/etc/button_camera_visible"); - bool cameraButtonForce = cameraButtonFile.exists(); + this->cameraButtonForce = cameraButtonFile.exists(); QFileInfo brightnessButtonFile("/etc/button_brightness_visible"); - bool brightnessButtonForce = brightnessButtonFile.exists(); + this->brightnessButtonForce = brightnessButtonFile.exists(); + + QFileInfo kodiInstalledFile("/usr/bin/kodi"); + this->kodiButtonForce = kodiInstalledFile.exists(); if (configuration->hasTouchScreen() && !cursorButtonForce) { ui_->pushButtonToggleCursor->hide(); @@ -130,9 +148,13 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi ui_->masterButtonBG->setPixmap(image); ui_->pushButtonStop->hide(); ui_->pushButtonRecord->hide(); + ui_->pushButtonRecordActive->hide(); ui_->pushButtonSave->hide(); + ui_->pushButtonRearcam->hide(); + ui_->pushButtonRearcamBack->hide(); + ui_->rearcamBG->hide(); - if (!cameraButtonForce) { + if (!this->cameraButtonForce) { ui_->pushButtonCameraShow->hide(); ui_->pushButtonCameraHide->hide(); } else { @@ -140,22 +162,30 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi ui_->pushButtonCameraHide->hide(); } - if (!wifiButtonForce) { + if (!this->wifiButtonForce) { ui_->pushButtonWirelessConnection->hide(); } QFileInfo brightnessFile(brightnessFilename); - if (!brightnessFile.exists() && !brightnessButtonForce) { + if (!brightnessFile.exists() && !this->brightnessButtonForce) { ui_->pushButtonBrightness->hide(); } + if (!this->kodiButtonForce) { + ui_->pushButtonKodi->hide(); + } + ui_->horizontalSliderBrightness->hide(); if (!configuration->showClock()) { ui_->Digital_clock->hide(); } + ui_->pushButtonShutdown->hide(); + ui_->pushButtonReboot->hide(); + ui_->pushButtonCancel->hide(); + // init bg's on startup if (!this->nightModeEnabled) { if (this->devModeEnabled) { @@ -202,7 +232,8 @@ void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonBrightness_clicked() { this->brightnessSliderVisible = !this->brightnessSliderVisible; if (this->brightnessSliderVisible) { - f1x::openauto::autoapp::ui::MainWindow::cameraControlHide(); + f1x::openauto::autoapp::ui::MainWindow::cameraControlHide(); + f1x::openauto::autoapp::ui::MainWindow::cameraHide(); // Get the current brightness value this->brightnessFile = new QFile(this->brightnessFilename); if (this->brightnessFile->open(QIODevice::ReadOnly)) { @@ -281,27 +312,69 @@ void f1x::openauto::autoapp::ui::MainWindow::switchGuiToDay() void f1x::openauto::autoapp::ui::MainWindow::cameraControlHide() { - ui_->pushButtonCameraHide->hide(); - ui_->pushButtonStop->hide(); - ui_->pushButtonRecord->hide(); - ui_->pushButtonSave->hide(); - ui_->dashcamBG->hide(); - this->dashcamBGState = false; - ui_->pushButtonCameraShow->show(); + if (this->cameraButtonForce) { + ui_->pushButtonCameraHide->hide(); + ui_->pushButtonStop->hide(); + ui_->pushButtonRecord->hide(); + ui_->pushButtonRecordActive->hide(); + ui_->pushButtonRearcam->hide(); + ui_->pushButtonSave->hide(); + ui_->dashcamBG->hide(); + this->dashcamBGState = false; + ui_->pushButtonCameraShow->show(); + } } void f1x::openauto::autoapp::ui::MainWindow::cameraControlShow() { - ui_->pushButtonCameraShow->hide(); - QPixmap image; - image.load(":/bg_dashcam.png"); - ui_->dashcamBG->setPixmap(image); - ui_->dashcamBG->show(); - ui_->pushButtonStop->show(); - ui_->pushButtonRecord->show(); - ui_->pushButtonSave->show(); - this->dashcamBGState = true; - ui_->pushButtonCameraHide->show(); + if (this->cameraButtonForce) { + ui_->pushButtonCameraShow->hide(); + QPixmap image; + image.load(":/bg_dashcam.png"); + ui_->dashcamBG->setPixmap(image); + ui_->dashcamBG->show(); + ui_->pushButtonStop->show(); + ui_->pushButtonRecord->show(); + ui_->pushButtonRearcam->show(); + ui_->pushButtonSave->show(); + this->dashcamBGState = true; + ui_->pushButtonCameraHide->show(); + } +} + +void f1x::openauto::autoapp::ui::MainWindow::toggleExit() +{ + if (!this->exitMenuVisible) { + f1x::openauto::autoapp::ui::MainWindow::cameraControlHide(); + if (this->brightnessSliderVisible) { + ui_->horizontalSliderBrightness->hide(); + this->brightnessSliderVisible = false; + } + ui_->pushButtonShutdown->show(); + ui_->pushButtonReboot->show(); + ui_->pushButtonCancel->show(); + QPixmap image; + image.load(":/bg_exit.png"); + ui_->exitBG->setPixmap(image); + ui_->exitBG->show(); + this->exitMenuVisible = true; + } else { + ui_->pushButtonShutdown->hide(); + ui_->pushButtonReboot->hide(); + ui_->pushButtonCancel->hide(); + ui_->exitBG->hide(); + this->exitMenuVisible = false; + } +} + +void f1x::openauto::autoapp::ui::MainWindow::showRearCamBG() +{ + ui_->pushButtonRearcamBack->show(); +} + +void f1x::openauto::autoapp::ui::MainWindow::hideRearCamBG() +{ + ui_->pushButtonRearcamBack->hide(); } void f1x::openauto::autoapp::ui::MainWindow::showTime() @@ -311,27 +384,61 @@ void f1x::openauto::autoapp::ui::MainWindow::showTime() ui_->Digital_clock->setText(time_text); /**if (configuration_->showClock()) { - if (ui_->Digital_clock->isVisible() == true) { - ui_->Digital_clock->hide(); - } + if (ui_->Digital_clock->isVisible() == true) { + ui_->Digital_clock->hide(); + } } else { - if (ui_->Digital_clock->isVisible() == false) { - ui_->Digital_clock->show(); - } + if (ui_->Digital_clock->isVisible() == false) { + ui_->Digital_clock->show(); + } }**/ QFileInfo nightModeFile("/tmp/night_mode_enabled"); this->nightModeEnabled = nightModeFile.exists(); + QFileInfo rearCamFile("/tmp/rearcam_enabled"); + this->rearCamEnabled = rearCamFile.exists(); + + QFileInfo dashCamRecordingFile("/tmp/dashcam_is_recording"); + this->dashCamRecording = dashCamRecordingFile.exists(); + + if (this->dashcamBGState) { + if (this->dashCamRecording) { + if (ui_->pushButtonRecord->isVisible() == true) { + ui_->pushButtonRecordActive->show(); + ui_->pushButtonRecord->hide(); + } + } else { + if (ui_->pushButtonRecordActive->isVisible() == true) { + ui_->pushButtonRecord->show(); + ui_->pushButtonRecordActive->hide(); + } + } + } + if (this->nightModeEnabled) { - if (!this->DayNightModeState) { - this->DayNightModeState = true; - f1x::openauto::autoapp::ui::MainWindow::switchGuiToNight(); - } + if (!this->DayNightModeState) { + this->DayNightModeState = true; + f1x::openauto::autoapp::ui::MainWindow::switchGuiToNight(); + } } else { - if (this->DayNightModeState) { - this->DayNightModeState = false; - f1x::openauto::autoapp::ui::MainWindow::switchGuiToDay(); - } + if (this->DayNightModeState) { + this->DayNightModeState = false; + f1x::openauto::autoapp::ui::MainWindow::switchGuiToDay(); + } + } + if (this->rearCamEnabled) { + if (!this->rearcamState) { + f1x::openauto::autoapp::ui::MainWindow::cameraControlHide(); + f1x::openauto::autoapp::ui::MainWindow::showRearCamBG(); + f1x::openauto::autoapp::ui::MainWindow::showRearCam(); + this->rearcamState = true; + } + } else { + if (this->rearcamState) { + f1x::openauto::autoapp::ui::MainWindow::hideRearCamBG(); + f1x::openauto::autoapp::ui::MainWindow::hideRearCam(); + this->rearcamState = false; + } } } diff --git a/src/autoapp/UI/mainwindow.ui b/src/autoapp/UI/mainwindow.ui index 534a304..65ba008 100644 --- a/src/autoapp/UI/mainwindow.ui +++ b/src/autoapp/UI/mainwindow.ui @@ -80,6 +80,29 @@ true + + + + 30 + 104 + 64 + 64 + + + + + :/kodi-hot.png:/kodi-hot.png + + + + 64 + 64 + + + + true + + @@ -340,6 +363,52 @@ true + + + + 216 + 384 + 64 + 64 + + + + + :/recordactive-hot.png:/recordactive-hot.png + + + + 64 + 64 + + + + true + + + + + + 286 + 384 + 64 + 64 + + + + + :/rearcam-hot.png:/rearcam-hot.png + + + + 64 + 64 + + + + true + + @@ -363,6 +432,118 @@ true + + + + 284 + 198 + 232 + 84 + + + + + + + 294 + 208 + 64 + 64 + + + + + :/power-hot.png:/power-hot.png + + + + 64 + 64 + + + + true + + + + + + 368 + 208 + 64 + 64 + + + + + :/reboot-hot.png:/reboot-hot.png + + + + 64 + 64 + + + + true + + + + + + 442 + 208 + 64 + 64 + + + + + :/back-hot.png:/back-hot.png + + + + 64 + 64 + + + + true + + + + + + 0 + 0 + 800 + 480 + + + + + + + 0 + 0 + 800 + 480 + + + + + :/bg_rearcam.png:/bg_rearcam.png + + + + 800 + 480 + + + + true + + diff --git a/src/autoapp/autoapp.cpp b/src/autoapp/autoapp.cpp index 0c4b5e7..3c59ed3 100644 --- a/src/autoapp/autoapp.cpp +++ b/src/autoapp/autoapp.cpp @@ -110,6 +110,10 @@ int main(int argc, char* argv[]) qApplication.setOverrideCursor(cursor); }); + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::reboot, [&qApplication]() { + system("sudo shutdown -r now"); + }); + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::cameraHide, [&qApplication]() { #ifdef RASPBERRYPI3 system("/opt/crankshaft/cameracontrol.py Background &"); @@ -128,6 +132,25 @@ int main(int argc, char* argv[]) #endif }); + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::hideRearCam, [&qApplication]() { +#ifdef RASPBERRYPI3 + system("/opt/crankshaft/cameracontrol.py DashcamMode &"); + system("sudo rm /tmp/rearcam_enabled &"); + OPENAUTO_LOG(info) << "[CS] Ran RPiCameraControl script."; +#else + OPENAUTO_LOG(info) << "[CS] You are not running this on a Raspberry Pi, skipping Cam script."; +#endif + }); + + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::showRearCam, [&qApplication]() { +#ifdef RASPBERRYPI3 + system("/opt/crankshaft/cameracontrol.py Rearcam &"); + OPENAUTO_LOG(info) << "[CS] Ran RPiCameraControl script."; +#else + OPENAUTO_LOG(info) << "[CS] You are not running this on a Raspberry Pi, skipping Cam script."; +#endif + }); + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::cameraRecord, [&qApplication]() { #ifdef RASPBERRYPI3 system("/opt/crankshaft/cameracontrol.py Record &"); @@ -173,6 +196,15 @@ int main(int argc, char* argv[]) #endif }); + QObject::connect(&mainWindow, &autoapp::ui::MainWindow::startKodi, [&qApplication]() { +#ifdef RASPBERRYPI3 + system("/usr/bin/kodi &"); + OPENAUTO_LOG(info) << "[CS] Run kodi binary."; +#else + OPENAUTO_LOG(info) << "[CS] You are not running this on a Raspberry Pi, skipping kodi."; +#endif + }); + mainWindow.showFullScreen(); aasdk::usb::USBWrapper usbWrapper(usbContext);