diff --git a/assets/back-hot.png b/assets/back-hot.png
new file mode 100644
index 0000000..7b24127
Binary files /dev/null and b/assets/back-hot.png differ
diff --git a/assets/bg_exit.png b/assets/bg_exit.png
new file mode 100644
index 0000000..a3efc17
Binary files /dev/null and b/assets/bg_exit.png differ
diff --git a/assets/bg_rearcam.png b/assets/bg_rearcam.png
new file mode 100644
index 0000000..0c5adaa
Binary files /dev/null and b/assets/bg_rearcam.png differ
diff --git a/assets/kodi-hot.png b/assets/kodi-hot.png
new file mode 100644
index 0000000..38755be
Binary files /dev/null and b/assets/kodi-hot.png differ
diff --git a/assets/rearcam-hot.png b/assets/rearcam-hot.png
new file mode 100644
index 0000000..9ddee0b
Binary files /dev/null and b/assets/rearcam-hot.png differ
diff --git a/assets/reboot-hot.png b/assets/reboot-hot.png
new file mode 100644
index 0000000..4b234b2
Binary files /dev/null and b/assets/reboot-hot.png differ
diff --git a/assets/recordactive-hot.png b/assets/recordactive-hot.png
new file mode 100644
index 0000000..5e655f5
Binary files /dev/null and b/assets/recordactive-hot.png differ
diff --git a/assets/resources.qrc b/assets/resources.qrc
index 48d1528..51ddfa5 100644
--- a/assets/resources.qrc
+++ b/assets/resources.qrc
@@ -23,5 +23,12 @@
record-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);