From 16a09529e8d6de551c9681d370b731132999e475 Mon Sep 17 00:00:00 2001 From: Huan Truong Date: Fri, 2 Mar 2018 17:22:33 -0500 Subject: [PATCH] [GUI] New assets and functionalities to Crankshaft --- assets/brightness-hot.png | Bin 0 -> 5216 bytes assets/circle-hot.png | Bin 0 -> 2817 bytes assets/circle-pressed.png | Bin 0 -> 2806 bytes assets/circle.png | Bin 0 -> 2763 bytes assets/connect.png | Bin 0 -> 12888 bytes assets/cursor-hot.png | Bin 0 -> 3034 bytes assets/power-hot.png | Bin 0 -> 4052 bytes assets/resources.qrc | 10 + assets/settings-hot.png | Bin 0 -> 4748 bytes assets/sleep-hot.png | Bin 0 -> 3384 bytes assets/wifi-hot.png | Bin 0 -> 4502 bytes .../f1x/openauto/autoapp/UI/MainWindow.hpp | 12 + src/autoapp/UI/MainWindow.cpp | 62 ++++ src/autoapp/UI/mainwindow.ui | 280 ++++++++---------- src/autoapp/autoapp.cpp | 2 + 15 files changed, 204 insertions(+), 162 deletions(-) create mode 100644 assets/brightness-hot.png create mode 100644 assets/circle-hot.png create mode 100644 assets/circle-pressed.png create mode 100644 assets/circle.png create mode 100644 assets/connect.png create mode 100644 assets/cursor-hot.png create mode 100644 assets/power-hot.png create mode 100644 assets/settings-hot.png create mode 100644 assets/sleep-hot.png create mode 100644 assets/wifi-hot.png diff --git a/assets/brightness-hot.png b/assets/brightness-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..9bffada4dc61fea77a4371cc4bd5cef7c4a123d2 GIT binary patch literal 5216 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 Qe*g2+Qqxl{SGJG%FPyP|Hvj+t literal 0 HcmV?d00001 diff --git a/assets/circle-hot.png b/assets/circle-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..84368d78c555e47ca09ea134c747b75940499424 GIT binary patch literal 2817 zcmbVOc~lek79PSP0zp8QLamMwkQb3GKnP(CNstI(i2=hRB$5EBBq0lg_+*z=P#>Ta zK~X4zpioLdC>Bt(0*Zp5ES6nG>_L`RpmpI5R{Gv~r>B3sIWzNH=6>J3_xs&@&SZLf z?t`ltsQ~~0r@E2p(CEDWsH#BkDxPQz8Vscrru2X?Oe$lGxd4$PJj?~De0DgO&Si7t zqAspI04PTA7)&XX=0OM*@-5iwHWsn`CRz2v9h!wTBETPs|_qwAd#{Kq1+9>Jjm}SEa`8t1d^D`mI}oTp)hiz z0=y%HQlTV57zL6J;6O7PJCr9_-}uM+0sWCLnJebSa5=7GAs_sxFoE|M5umaElQ|l1 zNg-m*?v$8K8nY?~*QQ)ice_ z&wJK4G+6)kE+;4F#;sc}=Ywl)rq+~^XZBb4RZC2$-Cb$MI+>9{`_$4qx|!ye?{|08 zotgIAy{3zeU!Mu^_oqfZn8t7KXehhMLRT@6r1-XkFLZ{+#xy72YCUkDUdeU^wOFQk z)C(;)S*+mN0$xKvV?)E8D6c2|{ktA&56VdgGv^Mt$vwVeBcyq-MDMZQUhlLv3gP^N z;=H^v)ABJBtFG%*k!UgSl=e{5ihg2nNb2gbR^?N7E!9~!tac|hg+x1U1L(#1Y01Bz zJ9m!2B*9GskzYKk*`y28Pa{9!q^AxqKE7hik;{kShDGPj8Qsi!yZAU^6L3lM2nWq2 z#l^k%Hyg`WXQz`{Pr7q+bLmEq8rOiS>q$vTJJ{Ne=iau#68(z(TAQ1Hn{I4ujLC7$ zyQ^8(PLQS8;v*v?CuaLAoQUZINdO2-s(ob<)U?3!_4S3@xxf^COKc^V`@d}1 z-j=ZTVWlrZ`u>_e*}QG=;euk!)a}f7H8nM;V$X0}yVB%{{16`>pZBYa(}m5=&FIqH ztK+XPk%w|S6yZ~rhx!GHmmfaah@95~L2PN`4o*Q#^Fnfz*@1bUKc?!2u8WR)$Xnfp>;N&z^w!9DB!&$i@pbTX2BUMPt>tE;Q+?qGvFFWCF58+-$@ z1Ih@=dE;dhtO~D^n!5_omlc8XGjnru6=turH!t<{(A46xMn** zNXoB6I_F|q3O6GwkI}ZBs5Q_7IITvSFvbZr;D`DNFlC#MLgJfniT18`3r%kkhja^; zh;^n(Nz>R!e=yre^5 z&rYh3f-@q&6uoMF>!L3ic!qwt7^_nn;0$WHiC2k1OxUwyMccD}BrAhDnYXX#59#35 zZolmDCQmT%-65^V4E6OA;i{rUuL&`}bLPd1cdOEYdbewg_d2P$SvOZAOGI}L7HC3+?g=t16%YyWyW#JiGrFrk-6PVSHJ=^uJs-#T1 zeXrOl_-%Ra>G<;UvPJL7*ayu}>n^GQb|7eb*t5biSwr;Ih{ps{b3~Y+tGlVhZLr^ z+jz4ZZpQl@6y^sO;|xq>7X>;%GXakuN;#o#?Q+_UvFnVvy++ns(B0jA;&oTZ%>_Z$ zF9RhWVQa0pkuAa0Z&i$%nr4RU!{f}#cC=F>HPff@Kix@+d{osJ@$1_4qF!Xm4;{=| zy@dg+(w(dKuK87OWsG(Wk2;PNuJF61TfbFZxV;Q@D8jVPEu+JT!SZ)->sNI)&$#Fc zlu~{?qds1iHe>D)d`rm$T@Q=jU*0r@D(`g4!#mMxt69-cy|EvVA(@l~dCGPcy-5Al rSAF3;VpWmSSpw4lkeus?8#z&r)_+Q=6i;%E3oH5Gd~KX+ literal 0 HcmV?d00001 diff --git a/assets/circle-pressed.png b/assets/circle-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7d03969a38b6d98ec4b4b9951d526cdb8b08fba3 GIT binary patch literal 2806 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 XamK0dq%ml)`nT<5&!C;&5iI==HUs)F literal 0 HcmV?d00001 diff --git a/assets/power-hot.png b/assets/power-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..b11533e28bbca124cf4ba7fb7a16f0d52d5971ae GIT binary patch literal 4052 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.png ico_setting.png ico_info.png + connect.png + cursor-hot.png + power-hot.png + settings-hot.png + circle.png + circle-hot.png + circle-pressed.png + sleep-hot.png + wifi-hot.png + brightness-hot.png diff --git a/assets/settings-hot.png b/assets/settings-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf6e86ef62ba5b1734113b9847669f4576fe6ee GIT binary patch literal 4748 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 literal 0 HcmV?d00001 diff --git a/assets/sleep-hot.png b/assets/sleep-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f74802a272c3548192826f1c2b69da9f1b4580 GIT binary patch literal 3384 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 literal 0 HcmV?d00001 diff --git a/assets/wifi-hot.png b/assets/wifi-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..e26ee63e2b30d64196058e23f9f9af3cdadd3027 GIT binary patch literal 4502 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 V2x)5lcIQut72>pcnc4YE{{!mjDb4@@ literal 0 HcmV?d00001 diff --git a/include/f1x/openauto/autoapp/UI/MainWindow.hpp b/include/f1x/openauto/autoapp/UI/MainWindow.hpp index b7e2354..05d7ebd 100644 --- a/include/f1x/openauto/autoapp/UI/MainWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/MainWindow.hpp @@ -20,6 +20,7 @@ #include #include +#include namespace Ui { @@ -47,9 +48,20 @@ signals: void openSettings(); void toggleCursor(); void openConnectDialog(); + void showBrightnessSlider(); + +private slots: + void on_horizontalSliderBrightness_valueChanged(int value); + +private slots: + void on_pushButtonBrightness_clicked(); private: Ui::MainWindow* ui_; + bool brightnessSliderVisible = false; + QString brightnessFilename = "/sys/class/backlight/rpi_backlight/brightness"; + QFile *brightnessFile; + char brightness_str[5]; }; } diff --git a/src/autoapp/UI/MainWindow.cpp b/src/autoapp/UI/MainWindow.cpp index 49954f8..92f78a4 100644 --- a/src/autoapp/UI/MainWindow.cpp +++ b/src/autoapp/UI/MainWindow.cpp @@ -18,6 +18,8 @@ #include #include +#include +#include #include "ui_mainwindow.h" namespace f1x @@ -33,11 +35,37 @@ MainWindow::MainWindow(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:pressed { background: url(:/circle-pressed.png); } \ + "); + QFileInfo wallpaperFile("wallpaper.png"); + bool wallpaperFileExists = wallpaperFile.exists(); + if (wallpaperFile.isSymLink()) { + QFileInfo linkTarget(wallpaperFile.symLinkTarget()); + wallpaperFileExists = linkTarget.exists(); + } + if (wallpaperFileExists) { + this->setStyleSheet( this->styleSheet().append("QMainWindow { background: url(wallpaper.png) }") ); + } else { + this->setStyleSheet( this->styleSheet().append("QMainWindow { background: url(:/connect.png) }") ); + } + ui_->setupUi(this); connect(ui_->pushButtonSettings, &QPushButton::clicked, this, &MainWindow::openSettings); connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::exit); 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(); + ui_->horizontalSliderBrightness->hide(); + + QFileInfo brightnessFile(brightnessFilename); + if (!brightnessFile.exists()) { + ui_->pushButtonBrightness->hide(); + } } MainWindow::~MainWindow() @@ -49,3 +77,37 @@ MainWindow::~MainWindow() } } } + +void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonBrightness_clicked() +{ + this->brightnessSliderVisible = !this->brightnessSliderVisible; + if (this->brightnessSliderVisible) { + // Get the current brightness value + this->brightnessFile = new QFile(this->brightnessFilename); + if (this->brightnessFile->open(QIODevice::ReadOnly)) { + QByteArray data = this->brightnessFile->readAll(); + std::string::size_type sz; + int brightness_val = std::stoi(data.toStdString(), &sz); + ui_->horizontalSliderBrightness->setValue(brightness_val); + this->brightnessFile->close(); + } + + ui_->horizontalSliderBrightness->show(); + } else { + ui_->horizontalSliderBrightness->hide(); + } +} + +void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderBrightness_valueChanged(int value) +{ + int n = snprintf(this->brightness_str, 4, "%d", value); + + this->brightnessFile = new QFile(this->brightnessFilename); + + if (this->brightnessFile->open(QIODevice::WriteOnly)) { + this->brightness_str[n] = '\n'; + this->brightness_str[n+1] = '\0'; + this->brightnessFile->write(this->brightness_str); + this->brightnessFile->close(); + } +} diff --git a/src/autoapp/UI/mainwindow.ui b/src/autoapp/UI/mainwindow.ui index 6da956e..2b97899 100644 --- a/src/autoapp/UI/mainwindow.ui +++ b/src/autoapp/UI/mainwindow.ui @@ -13,48 +13,25 @@ MainWindow - - background-color: rgb(46, 52, 54); -color: rgb(238, 238, 236); - - - - - 290 - 30 - 281 - 41 - - - - <html><head/><body><p><span style=" font-size:22pt; font-weight:600; font-style:italic; color:#3465a4;">Waiting for device...</span></p></body></html> - - - - - - 180 - 20 - 101 - 101 - - - - <html><head/><body><p><img src=":/ico_androidauto.png"/></p></body></html> - - - 630 - 370 - 161 - 41 + 10 + 10 + 64 + 64 - - Settings + + + :/settings-hot.png:/settings-hot.png + + + + 64 + 64 + false @@ -62,144 +39,63 @@ color: rgb(238, 238, 236); false + + true + - 630 - 420 - 161 - 41 + 10 + 360 + 64 + 64 - - Exit + + + :/power-hot.png:/power-hot.png + + + + 64 + 64 + false - - - - - 340 - 70 - 301 - 31 - - - - <html><head/><body><p><span style=" font-style:italic; color:#eeeeec;">Plug in your device to start AndroidAuto (tm).</span></p></body></html> - - - - - - 10 - 440 - 271 - 21 - - - - <html><head/><body><p><a href="https://github.com/f1xpl/openauto"><span style=" text-decoration: underline; color:#007af4;">https://github.com/f1xpl/openauto</span></a></p></body></html> - - - - - - 30 - 170 - 31 - 41 - - - - <html><head/><body><p><img src=":/ico_warning.png"/></p></body></html> - - - - - - 80 - 130 - 531 - 101 - - - - <html><head/><body><p align="center"><span style=" color:#ef2929;">WARNING!</span></p><p><span style=" color:#ef2929;">Distraction may cause accidents. Do not attempt to operate while driving. Always concentrate on driving and obey Traffic Regulations. You assume total responsibility and risk for using this software.</span></p></body></html> - - + true - - - - 80 - 240 - 531 - 121 - - - - <html><head/><body><p><span style=" color:#ef2929;">This software is not certified by Google Inc. It is created for R&amp;D purposes and may not work as expected by the original authors. Do not use while driving.</span></p><p><span style=" color:#ef2929;">You use this software at your own risk.</span></p></body></html> - - - true - - - - - - 30 - 270 - 31 - 41 - - - - <html><head/><body><p><img src=":/ico_warning.png"/></p></body></html> - - - - - - 220 - 400 - 21 - 31 - - - - <html><head/><body><p><img src=":/ico_info.png"/></p></body></html> - - - - - - 250 - 400 - 361 - 31 - - - - <html><head/><body><p><span style=" font-style:italic;">AndroidAuto is registered trademark of Google Inc.</span></p></body></html> - - - 630 - 270 - 161 - 41 + 10 + 150 + 64 + 64 + + Qt::ClickFocus + + + display: none; + - Toggle cursor + + + + + :/cursor-hot.png:/cursor-hot.png + + + + 64 + 64 + false @@ -207,18 +103,51 @@ color: rgb(238, 238, 236); false + + true + - 630 - 320 - 161 - 41 + 10 + 80 + 64 + 64 - - Wireless connection + + + :/wifi-hot.png:/wifi-hot.png + + + + 64 + 64 + + + + true + + + + + + 10 + 220 + 64 + 64 + + + + + :/brightness-hot.png:/brightness-hot.png + + + + 64 + 64 + false @@ -226,6 +155,31 @@ color: rgb(238, 238, 236); false + + true + + + + + + 80 + 230 + 221 + 41 + + + + 1 + + + 255 + + + 5 + + + Qt::Horizontal + @@ -235,6 +189,8 @@ color: rgb(238, 238, 236); pushButtonSettings pushButtonExit - + + + diff --git a/src/autoapp/autoapp.cpp b/src/autoapp/autoapp.cpp index 8c2565c..b8ee6d8 100644 --- a/src/autoapp/autoapp.cpp +++ b/src/autoapp/autoapp.cpp @@ -102,11 +102,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 mainWindow.showFullScreen();