/* * This file is part of openauto project. * Copyright (C) 2018 f1x.studio (Michal Szwaj) * * openauto is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * openauto is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with openauto. If not, see . */ #include #include #include #include #include "ui_mainwindow.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace f1x { namespace openauto { namespace autoapp { namespace ui { MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWidget *parent) : QMainWindow(parent) , ui_(new Ui::MainWindow) { // set default bg color to black this->setStyleSheet("QMainWindow {background-color: rgb(0,0,0);}"); // Set default font and size int id = QFontDatabase::addApplicationFont(":/Roboto-Regular.ttf"); QString family = QFontDatabase::applicationFontFamilies(id).at(0); QFont _font(family, 11); qApp->setFont(_font); this->configuration_ = configuration; // trigger files QFileInfo nightModeFile("/tmp/night_mode_enabled"); this->nightModeEnabled = nightModeFile.exists(); QFileInfo devModeFile("/tmp/dev_mode_enabled"); this->devModeEnabled = devModeFile.exists(); QFileInfo wifiButtonFile("/etc/button_wifi_visible"); this->wifiButtonForce = wifiButtonFile.exists(); QFileInfo cameraButtonFile("/etc/button_camera_visible"); this->cameraButtonForce = cameraButtonFile.exists(); QFileInfo brightnessButtonFile("/etc/button_brightness_visible"); this->brightnessButtonForce = brightnessButtonFile.exists(); QFileInfo DebugmodeFile("/tmp/usb_debug_mode"); this->systemDebugmode = DebugmodeFile.exists(); QFileInfo lightsensorFile("/etc/cs_lightsensor"); this->lightsensor = lightsensorFile.exists(); QFileInfo c1ButtonFile(this->custom_button_file_c1); this->c1ButtonForce = c1ButtonFile.exists(); QFileInfo c2ButtonFile(this->custom_button_file_c2); this->c2ButtonForce = c2ButtonFile.exists(); QFileInfo c3ButtonFile(this->custom_button_file_c3); this->c3ButtonForce = c3ButtonFile.exists(); QFileInfo c4ButtonFile(this->custom_button_file_c4); this->c4ButtonForce = c4ButtonFile.exists(); QFileInfo c5ButtonFile(this->custom_button_file_c5); this->c5ButtonForce = c5ButtonFile.exists(); QFileInfo c6ButtonFile(this->custom_button_file_c6); this->c6ButtonForce = c6ButtonFile.exists(); QFileInfo c7ButtonFile(this->custom_button_file_c7); this->c7ButtonForce = c7ButtonFile.exists(); // wallpaper stuff QFileInfo wallpaperDayFile("wallpaper.png"); this->wallpaperDayFileExists = wallpaperDayFile.exists(); QFileInfo wallpaperNightFile("wallpaper-night.png"); this->wallpaperNightFileExists = wallpaperNightFile.exists(); QFileInfo wallpaperClassicDayFile("wallpaper-classic.png"); this->wallpaperDayFileExists = wallpaperDayFile.exists(); QFileInfo wallpaperClassicNightFile("wallpaper-classic-night.png"); this->wallpaperNightFileExists = wallpaperNightFile.exists(); if (wallpaperDayFile.isSymLink()) { QFileInfo linkTarget(wallpaperDayFile.symLinkTarget()); this->wallpaperDayFileExists = linkTarget.exists(); } if (wallpaperNightFile.isSymLink()) { QFileInfo linkTarget(wallpaperNightFile.symLinkTarget()); this->wallpaperNightFileExists = linkTarget.exists(); } if (wallpaperClassicDayFile.isSymLink()) { QFileInfo linkTarget(wallpaperClassicDayFile.symLinkTarget()); this->wallpaperClassicDayFileExists = linkTarget.exists(); } if (wallpaperClassicNightFile.isSymLink()) { QFileInfo linkTarget(wallpaperClassicNightFile.symLinkTarget()); this->wallpaperClassicNightFileExists = linkTarget.exists(); } ui_->setupUi(this); connect(ui_->pushButtonSettings, &QPushButton::clicked, this, &MainWindow::openSettings); connect(ui_->pushButtonSettings2, &QPushButton::clicked, this, &MainWindow::openSettings); connect(ui_->pushButtonWifiSetup, &QPushButton::clicked, this, &MainWindow::openWifiDialog); connect(ui_->pushButtonExit, &QPushButton::clicked, this, &MainWindow::toggleExit); connect(ui_->pushButtonExit2, &QPushButton::clicked, this, &MainWindow::toggleExit); connect(ui_->pushButtonShutdown, &QPushButton::clicked, this, &MainWindow::exit); connect(ui_->pushButtonShutdown2, &QPushButton::clicked, this, &MainWindow::exit); connect(ui_->pushButtonReboot, &QPushButton::clicked, this, &MainWindow::reboot); connect(ui_->pushButtonReboot2, &QPushButton::clicked, this, &MainWindow::reboot); connect(ui_->pushButtonCancel, &QPushButton::clicked, this, &MainWindow::toggleExit); connect(ui_->pushButtonCancel2, &QPushButton::clicked, this, &MainWindow::toggleExit); connect(ui_->pushButtonDay, &QPushButton::clicked, this, &MainWindow::TriggerScriptDay); connect(ui_->pushButtonDay, &QPushButton::clicked, this, &MainWindow::switchGuiToDay); connect(ui_->pushButtonDay2, &QPushButton::clicked, this, &MainWindow::TriggerScriptDay); connect(ui_->pushButtonDay2, &QPushButton::clicked, this, &MainWindow::switchGuiToDay); connect(ui_->pushButtonNight, &QPushButton::clicked, this, &MainWindow::TriggerScriptNight); connect(ui_->pushButtonNight, &QPushButton::clicked, this, &MainWindow::switchGuiToNight); connect(ui_->pushButtonNight2, &QPushButton::clicked, this, &MainWindow::TriggerScriptNight); connect(ui_->pushButtonNight2, &QPushButton::clicked, this, &MainWindow::switchGuiToNight); connect(ui_->pushButtonBrightness, &QPushButton::clicked, this, &MainWindow::showBrightnessSlider); connect(ui_->pushButtonBrightness2, &QPushButton::clicked, this, &MainWindow::showBrightnessSlider); connect(ui_->pushButtonVolume, &QPushButton::clicked, this, &MainWindow::showVolumeSlider); connect(ui_->pushButtonVolume2, &QPushButton::clicked, this, &MainWindow::showVolumeSlider); connect(ui_->pushButtonAlpha, &QPushButton::clicked, this, &MainWindow::showAlphaSlider); connect(ui_->pushButtonDebug, &QPushButton::clicked, this, &MainWindow::createDebuglog); connect(ui_->pushButtonDebug2, &QPushButton::clicked, this, &MainWindow::createDebuglog); connect(ui_->pushButtonBluetooth, &QPushButton::clicked, this, &MainWindow::setPairable); connect(ui_->pushButtonMute, &QPushButton::clicked, this, &MainWindow::toggleMuteButton); connect(ui_->pushButtonMute, &QPushButton::clicked, this, &MainWindow::setMute); connect(ui_->pushButtonUnMute, &QPushButton::clicked, this, &MainWindow::toggleMuteButton); connect(ui_->pushButtonUnMute, &QPushButton::clicked, this, &MainWindow::setUnMute); connect(ui_->pushButtonToggleGUI, &QPushButton::clicked, this, &MainWindow::toggleGUI); connect(ui_->pushButtonToggleGUI2, &QPushButton::clicked, this, &MainWindow::toggleGUI); connect(ui_->pushButtonWifi, &QPushButton::clicked, this, &MainWindow::openConnectDialog); connect(ui_->pushButtonWifi2, &QPushButton::clicked, this, &MainWindow::openConnectDialog); connect(ui_->pushButtonMusic, &QPushButton::clicked, this, &MainWindow::playerShow); connect(ui_->pushButtonMusic2, &QPushButton::clicked, this, &MainWindow::playerShow); connect(ui_->pushButtonBack, &QPushButton::clicked, this, &MainWindow::playerHide); connect(ui_->pushButtonPlayerBack, &QPushButton::clicked, this, &MainWindow::playerHide); connect(ui_->pushButtonAndroidAuto, &QPushButton::clicked, this, &MainWindow::TriggerAppStart); connect(ui_->pushButtonAndroidAuto, &QPushButton::clicked, this, &MainWindow::setRetryUSBConnect); connect(ui_->pushButtonAndroidAuto2, &QPushButton::clicked, this, &MainWindow::TriggerAppStart); connect(ui_->pushButtonAndroidAuto2, &QPushButton::clicked, this, &MainWindow::setRetryUSBConnect); // by default hide bluetooth button on init ui_->pushButtonBluetooth->hide(); // by default hide media player ui_->mediaWidget->hide(); ui_->pushButtonUSB->hide(); ui_->SysinfoTopLeft->hide(); ui_->pushButtonWifiSetup->hide(); ui_->pushButtonAndroidAuto->hide(); ui_->pushButtonAndroidAuto2->hide(); QTimer *timer=new QTimer(this); connect(timer, SIGNAL(timeout()),this,SLOT(showTime())); timer->start(1000); // enable connects while cam is enabled if (this->cameraButtonForce) { connect(ui_->pushButtonCameraShow, &QPushButton::clicked, this, &MainWindow::cameraShow); connect(ui_->pushButtonCameraShow, &QPushButton::clicked, this, &MainWindow::cameraControlShow); connect(ui_->pushButtonCameraShow2, &QPushButton::clicked, this, &MainWindow::cameraShow); connect(ui_->pushButtonCameraShow2, &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_->pushButtonSave, &QPushButton::clicked, this, &MainWindow::cameraSave); } else { ui_->pushButtonCameraShow->hide(); ui_->pushButtonCameraShow2->hide(); } // show debug button if enabled if (!this->systemDebugmode) { ui_->pushButtonDebug->hide(); ui_->pushButtonDebug2->hide(); } ui_->systemConfigInProgress->hide(); ui_->pushButtonLock->hide(); ui_->pushButtonLock2->hide(); ui_->btDevice->hide(); // hide brightness slider of control file is not existing QFileInfo brightnessFile(brightnessFilename); if (!brightnessFile.exists() && !this->brightnessButtonForce) { ui_->pushButtonBrightness->hide(); } // as default hide brightness slider ui_->BrightnessSliderControl->hide(); // as default hide alpha slider and button ui_->pushButtonAlpha->hide(); ui_->AlphaSliderControl->hide(); // as default hide volume slider player ui_->VolumeSliderControlPlayer->hide(); // as default hide power buttons ui_->exitWidget->hide(); ui_->horizontalWidgetPower->hide(); // as default hide muted button ui_->pushButtonUnMute->hide(); // hide wifi if not forced if (!this->wifiButtonForce) { ui_->AAWIFIWidget->hide(); ui_->AAWIFIWidget2->hide(); } else { ui_->AAUSBWidget->hide(); ui_->AAUSBWidget2->hide(); } // set custom buttons if file enabled by trigger file if (!this->c1ButtonForce) { ui_->pushButton_c1->hide(); } else { // read button config 1 QFile paramFile(this->custom_button_file_c1); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList params = data.readAll().split("#"); paramFile.close(); ui_->pushButton_c1->setText(params[0].simplified()); this->custom_button_command_c1 = params[1].simplified(); if (params[2] != "") { this->custom_button_color_c1 = params[2].simplified(); } connect(ui_->pushButton_c1, &QPushButton::clicked, this, &MainWindow::customButtonPressed1); } if (!this->c2ButtonForce) { ui_->pushButton_c2->hide(); } else { // read button config 2 QFile paramFile(this->custom_button_file_c2); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList params = data.readAll().split("#"); paramFile.close(); ui_->pushButton_c2->setText(params[0].simplified()); this->custom_button_command_c2 = params[1].simplified(); if (params[2] != "") { this->custom_button_color_c2 = params[2].simplified(); } connect(ui_->pushButton_c2, &QPushButton::clicked, this, &MainWindow::customButtonPressed2); } if (!this->c3ButtonForce) { ui_->pushButton_c3->hide(); } else { // read button config 3 QFile paramFile(this->custom_button_file_c3); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList params = data.readAll().split("#"); paramFile.close(); ui_->pushButton_c3->setText(params[0].simplified()); this->custom_button_command_c3 = params[1].simplified(); if (params[2] != "") { this->custom_button_color_c3 = params[2].simplified(); } connect(ui_->pushButton_c3, &QPushButton::clicked, this, &MainWindow::customButtonPressed3); } if (!this->c4ButtonForce) { ui_->pushButton_c4->hide(); } else { // read button config 4 QFile paramFile(this->custom_button_file_c4); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList params = data.readAll().split("#"); paramFile.close(); ui_->pushButton_c4->setText(params[0].simplified()); this->custom_button_command_c4 = params[1].simplified(); if (params[2] != "") { this->custom_button_color_c4 = params[2].simplified(); } connect(ui_->pushButton_c4, &QPushButton::clicked, this, &MainWindow::customButtonPressed4); } if (!this->c5ButtonForce) { ui_->pushButton_c5->hide(); } else { // read button config 5 QFile paramFile(this->custom_button_file_c5); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList params = data.readAll().split("#"); paramFile.close(); ui_->pushButton_c5->setText(params[0].simplified()); this->custom_button_command_c5 = params[1].simplified(); if (params[2] != "") { this->custom_button_color_c5 = params[2].simplified(); } connect(ui_->pushButton_c5, &QPushButton::clicked, this, &MainWindow::customButtonPressed5); } if (!this->c6ButtonForce) { ui_->pushButton_c6->hide(); } else { // read button config 6 QFile paramFile(this->custom_button_file_c6); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList params = data.readAll().split("#"); paramFile.close(); ui_->pushButton_c6->setText(params[0].simplified()); this->custom_button_command_c6 = params[1].simplified(); if (params[2] != "") { this->custom_button_color_c6 = params[2].simplified(); } connect(ui_->pushButton_c6, &QPushButton::clicked, this, &MainWindow::customButtonPressed6); } // as default hide camera controls ui_->cameraWidget->hide(); ui_->pushButtonRecordActive->hide(); // fill gui with dummys if needed if (this->c1ButtonForce || this->c2ButtonForce || this->c3ButtonForce || this->c4ButtonForce || this->c5ButtonForce || this->c6ButtonForce) { if (!this->c1ButtonForce && !this->c2ButtonForce) { ui_->pushButtonDummy1->show(); } else { ui_->pushButtonDummy1->hide(); } if (!this->c3ButtonForce && !this->c4ButtonForce) { ui_->pushButtonDummy2->show(); } else { ui_->pushButtonDummy2->hide(); } if (!this->c5ButtonForce && !this->c6ButtonForce) { ui_->pushButtonDummy3->show(); } else { ui_->pushButtonDummy3->hide(); } } else { ui_->pushButtonDummy1->hide(); ui_->pushButtonDummy2->hide(); ui_->pushButtonDummy3->hide(); } // show dev labels if dev mode activated if (!this->devModeEnabled) { ui_->devlabel_left->hide(); ui_->devlabel_right->hide(); } // Load configured brightness values system("/usr/local/bin/autoapp_helper getbrightnessvalues"); QFile paramFile(QString("/tmp/br_values")); paramFile.open(QIODevice::ReadOnly); QTextStream data_param(¶mFile); QStringList brigthnessvalues = data_param.readAll().split("#"); paramFile.close(); // set brightness slider attribs ui_->horizontalSliderBrightness->setMinimum(brigthnessvalues[0].toInt()); ui_->horizontalSliderBrightness->setMaximum(brigthnessvalues[1].toInt()); ui_->horizontalSliderBrightness->setSingleStep(brigthnessvalues[2].toInt()); ui_->horizontalSliderBrightness->setTickInterval(brigthnessvalues[2].toInt()); // run monitor for custom brightness command if enabled in crankshaft_env.sh if (brigthnessvalues[3] == "1") { ui_->pushButtonBrightness->show(); this->customBrightnessControl = true; system("/usr/local/bin/autoapp_helper startcustombrightness &"); } // read param file if (std::ifstream("/boot/crankshaft/volume")) { QFile audioparamFile(QString("/boot/crankshaft/volume")); audioparamFile.open(QIODevice::ReadOnly); QTextStream data_param(&audioparamFile); QString getparams = data_param.readAll(); audioparamFile.close(); // init volume QString vol=QString::number(getparams.toInt()); ui_->volumeValueLabel->setText(vol+"%"); ui_->horizontalSliderVolume->setValue(vol.toInt()); } // switch to old menu if set in settings if (!configuration->oldGUI()) { this->oldGUIStyle = false; ui_->menuWidget->show(); ui_->oldmenuWidget->hide(); } else { this->oldGUIStyle = true; ui_->oldmenuWidget->show(); ui_->menuWidget->hide(); } // set bg's on startup if (!this->nightModeEnabled) { if (this->oldGUIStyle) { if (this->wallpaperClassicDayFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper-classic.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } else { if (this->wallpaperDayFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } ui_->pushButtonDay->hide(); ui_->pushButtonDay2->hide(); ui_->pushButtonNight->show(); ui_->pushButtonNight2->show(); } else { if (this->oldGUIStyle) { if (this->wallpaperClassicNightFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper-classic-night.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } else { if (this->wallpaperNightFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper-night.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } ui_->pushButtonNight->hide(); ui_->pushButtonNight2->hide(); ui_->pushButtonDay->show(); ui_->pushButtonDay2->show(); } // use big clock in classic gui? if (configuration->showBigClock()) { this->UseBigClock = true; } else { this->UseBigClock = false; } // clock viibility by settings if (!configuration->showClock()) { ui_->Digital_clock->hide(); ui_->bigClock->hide(); this->NoClock = true; } else { this->NoClock = false; if (this->UseBigClock) { ui_->oldmenuDummy->hide(); ui_->bigClock->show(); if (oldGUIStyle) { ui_->Digital_clock->hide(); } } else { ui_->oldmenuDummy->show(); ui_->Digital_clock->show(); ui_->bigClock->hide(); } } // hide gui toggle if enabled in settings if (configuration->hideMenuToggle()) { ui_->pushButtonToggleGUI->hide(); ui_->pushButtonToggleGUI2->hide(); } // hide alpha controls if enabled in settings //if (!configuration->hideAlpha()) { // ui_->pushButtonAlpha->show(); //} // init alpha values ui_->horizontalSliderAlpha->setValue(int(configuration->getAlphaTrans())); MainWindow::on_horizontalSliderAlpha_valueChanged(int(configuration->getAlphaTrans())); // Hide auto day/night if needed if (this->lightsensor) { ui_->pushButtonDay->hide(); ui_->pushButtonNight->hide(); ui_->pushButtonDay2->hide(); ui_->pushButtonNight2->hide(); ui_->pushButtonBrightness->hide(); ui_->pushButtonBrightness2->hide(); } player = new QMediaPlayer(this); playlist = new QMediaPlaylist(this); connect(player, &QMediaPlayer::positionChanged, this, &MainWindow::on_positionChanged); connect(player, &QMediaPlayer::durationChanged, this, &MainWindow::on_durationChanged); connect(player, &QMediaPlayer::metaDataAvailableChanged, this, &MainWindow::metaDataChanged); connect(player, &QMediaPlayer::stateChanged, this, &MainWindow::on_StateChanged); ui_->pushButtonList->hide(); ui_->pushButtonBackToPlayer->hide(); ui_->PlayerPlayingWidget->hide(); ui_->pushButtonPlayerStop->hide(); ui_->pushButtonPlayerPause->hide(); this->musicfolder = QString::fromStdString(configuration->getMp3MasterPath()); this->albumfolder = QString::fromStdString(configuration->getMp3SubFolder()); ui_->labelFolderpath->setText(this->musicfolder); ui_->labelAlbumpath->setText(this->albumfolder); ui_->labelFolderpath->hide(); ui_->labelAlbumpath->hide(); MainWindow::scanFolders(); ui_->comboBoxAlbum->setCurrentText(QString::fromStdString(configuration->getMp3SubFolder())); MainWindow::scanFiles(); player->setPlaylist(this->playlist); ui_->mp3List->setCurrentRow(configuration->getMp3Track()); this->currentPlaylistIndex = configuration->getMp3Track(); if (configuration->mp3AutoPlay()) { MainWindow::playerShow(); MainWindow::playerHide(); MainWindow::on_pushButtonPlayerPlayList_clicked(); MainWindow::playerShow(); } watcher = new QFileSystemWatcher(this); watcher->addPath("/media/USBDRIVES"); connect(watcher, &QFileSystemWatcher::directoryChanged, this, &MainWindow::setTrigger); watcher_tmp = new QFileSystemWatcher(this); watcher_tmp->addPath("/tmp"); connect(watcher_tmp, &QFileSystemWatcher::directoryChanged, this, &MainWindow::tmpChanged); } MainWindow::~MainWindow() { delete ui_; } } } } } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed1() { system(qPrintable(this->custom_button_command_c1 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed2() { system(qPrintable(this->custom_button_command_c2 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed3() { system(qPrintable(this->custom_button_command_c3 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed4() { system(qPrintable(this->custom_button_command_c4 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed5() { system(qPrintable(this->custom_button_command_c5 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed6() { system(qPrintable(this->custom_button_command_c6 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed7() { system(qPrintable(this->custom_button_command_c7 + " &")); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonBrightness_clicked() { this->brightnessFile = new QFile(this->brightnessFilename); this->brightnessFileAlt = new QFile(this->brightnessFilenameAlt); // Get the current brightness value if (!this->customBrightnessControl) { 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); QString bri=QString::number(brightness_val); ui_->brightnessValueLabel->setText(bri); this->brightnessFile->close(); } } else { if (this->brightnessFileAlt->open(QIODevice::ReadOnly)) { QByteArray data = this->brightnessFileAlt->readAll(); std::string::size_type sz; int brightness_val = std::stoi(data.toStdString(), &sz); ui_->horizontalSliderBrightness->setValue(brightness_val); QString bri=QString::number(brightness_val); ui_->brightnessValueLabel->setText(bri); this->brightnessFileAlt->close(); } } ui_->BrightnessSliderControl->show(); ui_->VolumeSliderControl->hide(); ui_->AlphaSliderControl->hide(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonBrightness2_clicked() { this->brightnessFile = new QFile(this->brightnessFilename); this->brightnessFileAlt = new QFile(this->brightnessFilenameAlt); // Get the current brightness value if (!this->customBrightnessControl) { 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); QString bri=QString::number(brightness_val); ui_->brightnessValueLabel->setText(bri); this->brightnessFile->close(); } } else { if (this->brightnessFileAlt->open(QIODevice::ReadOnly)) { QByteArray data = this->brightnessFileAlt->readAll(); std::string::size_type sz; int brightness_val = std::stoi(data.toStdString(), &sz); ui_->horizontalSliderBrightness->setValue(brightness_val); QString bri=QString::number(brightness_val); ui_->brightnessValueLabel->setText(bri); this->brightnessFileAlt->close(); } } ui_->BrightnessSliderControl->show(); ui_->VolumeSliderControl->hide(); ui_->AlphaSliderControl->hide(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonVolume_clicked() { ui_->horizontalSliderVolume->show(); ui_->volumeValueLabel->show(); if (this->toggleMute) { ui_->pushButtonUnMute->show(); } else { ui_->pushButtonMute->show(); } ui_->VolumeSliderControl->show(); ui_->BrightnessSliderControl->hide(); ui_->AlphaSliderControl->hide(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonVolume2_clicked() { ui_->horizontalSliderVolume->show(); ui_->volumeValueLabel->show(); if (this->toggleMute) { ui_->pushButtonUnMute->show(); } else { ui_->pushButtonMute->show(); } ui_->VolumeSliderControl->show(); ui_->BrightnessSliderControl->hide(); ui_->AlphaSliderControl->hide(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonAlpha_clicked() { ui_->AlphaSliderControl->show(); ui_->VolumeSliderControl->hide(); ui_->BrightnessSliderControl->hide(); } void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderBrightness_valueChanged(int value) { int n = snprintf(this->brightness_str, 5, "%d", value); this->brightnessFile = new QFile(this->brightnessFilename); this->brightnessFileAlt = new QFile(this->brightnessFilenameAlt); if (!this->customBrightnessControl) { 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(); } } else { if (this->brightnessFileAlt->open(QIODevice::WriteOnly)) { this->brightness_str[n] = '\n'; this->brightness_str[n+1] = '\0'; this->brightnessFileAlt->write(this->brightness_str); this->brightnessFileAlt->close(); } } QString bri=QString::number(value); ui_->brightnessValueLabel->setText(bri); } void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderVolume_valueChanged(int value) { int n = snprintf(this->volume_str, 5, "%d", value); QString vol=QString::number(value); ui_->volumeValueLabel->setText(vol+"%"); system(("/usr/local/bin/autoapp_helper setvolume " + std::to_string(value) + "&").c_str()); } void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderAlpha_valueChanged(int value) { int n = snprintf(this->alpha_str, 5, "%d", value); double alpha = value/100.0; QString alp=QString::number(alpha); ui_->alphaValueLabel->setText(alp); ui_->pushButtonAlpha->setStyleSheet( "background-color: rgba(243, 243, 243, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonExit->setStyleSheet( "background-color: rgba(164, 0, 0, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonShutdown->setStyleSheet( "background-color: rgba(239, 41, 41, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonReboot->setStyleSheet( "background-color: rgba(252, 175, 62, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonCancel->setStyleSheet( "background-color: rgba(32, 74, 135, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonBrightness->setStyleSheet( "background-color: rgba(245, 121, 0, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonVolume->setStyleSheet( "background-color: rgba(64, 191, 191, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonAlpha->setStyleSheet( "background-color: rgba(173, 127, 168, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonLock->setStyleSheet( "background-color: rgba(15, 54, 5, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonSettings->setStyleSheet( "background-color: rgba(138, 226, 52, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonDay->setStyleSheet( "background: rgba(252, 233, 79, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonNight->setStyleSheet( "background-color: rgba(114, 159, 207, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonCameraShow->setStyleSheet( "background-color: rgba(100, 62, 4, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonWifi->setStyleSheet( "background-color: rgba(252, 175, 62, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonToggleGUI->setStyleSheet( "background-color: rgba(237, 164, 255, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButton_c1->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c1 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButton_c2->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c2 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButton_c3->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c3 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButton_c4->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c4 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButton_c5->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c5 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButton_c6->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c6 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButtonDummy1->setStyleSheet( "background-color: rgba(186, 189, 182, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonDummy2->setStyleSheet( "background-color: rgba(186, 189, 182, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonDummy3->setStyleSheet( "background-color: rgba(186, 189, 182, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonDebug->setStyleSheet( "background-color: rgba(85, 87, 83, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); ui_->pushButtonMusic->setStyleSheet( "background-color: rgba(78, 154, 6, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButtonAndroidAuto->setStyleSheet( "background-color: rgba(48, 140, 198, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButtonNoDevice->setStyleSheet( "background-color: rgba(48, 140, 198, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); ui_->pushButtonNoWiFiDevice->setStyleSheet( "background-color: rgba(252, 175, 62, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); } void f1x::openauto::autoapp::ui::MainWindow::switchGuiToNight() { MainWindow::on_pushButtonVolume_clicked(); if (this->oldGUIStyle) { if (this->wallpaperClassicNightFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper-classic-night.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } else { if (this->wallpaperNightFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper-night.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } ui_->pushButtonDay->show(); ui_->pushButtonDay2->show(); ui_->pushButtonNight->hide(); ui_->pushButtonNight2->hide(); } void f1x::openauto::autoapp::ui::MainWindow::switchGuiToDay() { MainWindow::on_pushButtonVolume_clicked(); if (this->oldGUIStyle) { if (this->wallpaperClassicDayFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper-classic.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } else { if (this->wallpaperDayFileExists) { this->setStyleSheet("QMainWindow { background: url(wallpaper.png); background-repeat: no-repeat; background-position: center; }"); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } ui_->pushButtonNight->show(); ui_->pushButtonNight2->show(); ui_->pushButtonDay->hide(); ui_->pushButtonDay2->hide(); } void f1x::openauto::autoapp::ui::MainWindow::cameraControlHide() { if (this->cameraButtonForce) { ui_->cameraWidget->hide(); if (!this->oldGUIStyle) { ui_->menuWidget->show(); } else { ui_->oldmenuWidget->show(); } } } void f1x::openauto::autoapp::ui::MainWindow::cameraControlShow() { if (this->cameraButtonForce) { if (!this->oldGUIStyle) { ui_->menuWidget->hide(); } else { ui_->oldmenuWidget->hide(); } ui_->cameraWidget->show(); } } void f1x::openauto::autoapp::ui::MainWindow::playerShow() { this->setStyleSheet("QMainWindow { background: url(:/bg-equilizer.png); background-repeat: no-repeat; background-position: center; }"); if (!this->oldGUIStyle) { ui_->menuWidget->hide(); } else { ui_->oldmenuWidget->hide(); } ui_->mediaWidget->show(); ui_->VolumeSliderControlPlayer->show(); ui_->VolumeSliderControl->hide(); ui_->BrightnessSliderControl->hide(); ui_->AlphaSliderControl->hide(); } void f1x::openauto::autoapp::ui::MainWindow::playerHide() { if (!this->oldGUIStyle) { ui_->menuWidget->show(); } else { ui_->oldmenuWidget->show(); } ui_->mediaWidget->hide(); ui_->VolumeSliderControl->show(); ui_->VolumeSliderControlPlayer->hide(); ui_->BrightnessSliderControl->hide(); ui_->AlphaSliderControl->hide(); f1x::openauto::autoapp::ui::MainWindow::updateBG(); f1x::openauto::autoapp::ui::MainWindow::tmpChanged(); } void f1x::openauto::autoapp::ui::MainWindow::toggleExit() { if (!this->exitMenuVisible) { ui_->exitWidget->show(); ui_->buttonWidget->hide(); ui_->horizontalWidgetButtons->hide(); ui_->horizontalWidgetPower->show(); this->exitMenuVisible = true; } else { ui_->buttonWidget->show(); ui_->exitWidget->hide(); ui_->horizontalWidgetButtons->show(); ui_->horizontalWidgetPower->hide(); this->exitMenuVisible = false; } } void f1x::openauto::autoapp::ui::MainWindow::toggleMuteButton() { if (!this->toggleMute) { ui_->pushButtonMute->hide(); ui_->pushButtonUnMute->show(); this->toggleMute = true; } else { ui_->pushButtonUnMute->hide(); ui_->pushButtonMute->show(); this->toggleMute = false; } } void f1x::openauto::autoapp::ui::MainWindow::toggleGUI() { if (!this->oldGUIStyle) { ui_->oldmenuWidget->show(); ui_->menuWidget->hide(); this->oldGUIStyle = true; if (!this->NoClock) { if (UseBigClock) { ui_->Digital_clock->hide(); ui_->bigClock->show(); } else { ui_->Digital_clock->show(); ui_->bigClock->hide(); } } MainWindow::on_pushButtonVolume_clicked(); } else { ui_->menuWidget->show(); ui_->oldmenuWidget->hide(); this->oldGUIStyle = false; if (!this->NoClock) { ui_->Digital_clock->show(); } } f1x::openauto::autoapp::ui::MainWindow::updateBG(); f1x::openauto::autoapp::ui::MainWindow::tmpChanged(); } void f1x::openauto::autoapp::ui::MainWindow::updateBG() { if (!this->nightModeEnabled) { if (this->oldGUIStyle) { if (this->wallpaperClassicDayFileExists) { this->setStyleSheet( this->styleSheet().append("QMainWindow { background: url(wallpaper-classic.png); background-repeat: no-repeat; background-position: center; }") ); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } else { if (this->wallpaperDayFileExists) { this->setStyleSheet( this->styleSheet().append("QMainWindow { background: url(wallpaper.png); background-repeat: no-repeat; background-position: center; }") ); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } } else { if (this->oldGUIStyle) { if (this->wallpaperClassicNightFileExists) { this->setStyleSheet( this->styleSheet().append("QMainWindow { background: url(wallpaper-classic-night.png); background-repeat: no-repeat; background-position: center; }") ); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } else { if (this->wallpaperNightFileExists) { this->setStyleSheet( this->styleSheet().append("QMainWindow { background: url(wallpaper-night.png); background-repeat: no-repeat; background-position: center; }") ); } else { this->setStyleSheet("QMainWindow { background: url(:/black.png); background-repeat: no-repeat; background-position: center; }"); } } } } void f1x::openauto::autoapp::ui::MainWindow::createDebuglog() { system("/usr/local/bin/crankshaft debuglog &"); } void f1x::openauto::autoapp::ui::MainWindow::setPairable() { system("/usr/local/bin/autoapp_helper enablepairing &"); } void f1x::openauto::autoapp::ui::MainWindow::setMute() { system("/usr/local/bin/autoapp_helper setmute &"); } void f1x::openauto::autoapp::ui::MainWindow::setUnMute() { system("/usr/local/bin/autoapp_helper setunmute &"); } void f1x::openauto::autoapp::ui::MainWindow::showTime() { QTime time=QTime::currentTime(); QString time_text=time.toString("hh : mm : ss"); if ((time.second() % 2) == 0) { time_text[3] = ' '; time_text[8] = ' '; } ui_->Digital_clock->setText(time_text); ui_->bigClock->setText(time_text); } void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderProgressPlayer_sliderMoved(int position) { player->setPosition(position); } void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderVolumePlayer_sliderMoved(int position) { player->setVolume(position); ui_->volumeValueLabelPlayer->setText(QString::number(position) + "%"); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonList_clicked() { ui_->mp3selectWidget->show(); ui_->PlayerPlayingWidget->hide(); ui_->pushButtonList->hide(); ui_->pushButtonPlayerPlayList->show(); ui_->pushButtonBackToPlayer->show(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerStop_clicked() { ui_->mp3List->setCurrentRow(playlist->currentIndex()); player->stop(); ui_->pushButtonBack->setIcon(QPixmap("://coverlogo.png")); ui_->pushButtonPlayerPause->setStyleSheet( "background-color: rgb(233, 185, 110); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(0,0,0);"); ui_->mp3selectWidget->show(); ui_->PlayerPlayingWidget->hide(); ui_->pushButtonBackToPlayer->hide(); ui_->pushButtonPlayerPlayList->show(); ui_->pushButtonPlayerStop->hide(); ui_->pushButtonList->hide(); ui_->pushButtonPlayerPause->hide(); ui_->playerPositionTime->setText("00:00 / 00:00"); ui_->labelCurrentPlaying->setText(""); ui_->labelTrack->setText(""); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPause_clicked() { { if(player->state() == QMediaPlayer::PlayingState){ player->pause(); ui_->pushButtonPlayerPause->setStyleSheet( "background-color: rgb(218, 143, 143); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(0,0,0);"); }else{ ui_->pushButtonPlayerPause->setStyleSheet( "background-color: rgb(233, 185, 110); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(0,0,0);"); player->play(); player->setPosition(player->position()); } } } void f1x::openauto::autoapp::ui::MainWindow::on_positionChanged(qint64 position) { ui_->horizontalSliderProgressPlayer->setValue(position); //Setting the time QString time_elapsed, time_total; int total_seconds, total_minutes; total_seconds = (player->duration()/1000) % 60; total_minutes = (player->duration()/1000) / 60; if(total_minutes >= 60){ int total_hours = (total_minutes/60); total_minutes = total_minutes - (total_hours*60); time_total = QString("%1").arg(total_hours, 2,10,QChar('0')) + ':' + QString("%1").arg(total_minutes, 2,10,QChar('0')) + ':' + QString("%1").arg(total_seconds, 2,10,QChar('0')); }else{ time_total = QString("%1").arg(total_minutes, 2,10,QChar('0')) + ':' + QString("%1").arg(total_seconds, 2,10,QChar('0')); } //calculate time elapsed int seconds, minutes; seconds = (position/1000) % 60; minutes = (position/1000) / 60; //if minutes is over 60 then we should really display hours if(minutes >= 60){ int hours = (minutes/60); minutes = minutes - (hours*60); time_elapsed = QString("%1").arg(hours, 2,10,QChar('0')) + ':' + QString("%1").arg(minutes, 2,10,QChar('0')) + ':' + QString("%1").arg(seconds, 2,10,QChar('0')); }else{ time_elapsed = QString("%1").arg(minutes, 2,10,QChar('0')) + ':' + QString("%1").arg(seconds, 2,10,QChar('0')); } ui_->playerPositionTime->setText(time_elapsed + " / " + time_total); } void f1x::openauto::autoapp::ui::MainWindow::on_durationChanged(qint64 position) { ui_->horizontalSliderProgressPlayer->setMaximum(position); } void f1x::openauto::autoapp::ui::MainWindow::on_mp3List_itemClicked(QListWidgetItem *item) { this->selectedMp3file = item->text(); } void f1x::openauto::autoapp::ui::MainWindow::metaDataChanged() { QImage img = player->metaData(QMediaMetaData::CoverArtImage).value(); QImage imgscaled = img.scaled(270,270,Qt::IgnoreAspectRatio); if (!imgscaled.isNull()) { ui_->pushButtonBack->setIcon(QPixmap::fromImage(imgscaled)); } else { ui_->pushButtonBack->setIcon(QPixmap("://coverlogo.png")); } QString fullpathplaying = player->currentMedia().canonicalUrl().toString(); QString filename = QFileInfo(fullpathplaying).fileName(); try { // use metadata from mp3list widget (prescanned id3 by taglib) if (playlist->currentIndex() != -1 && fullpathplaying != "") { QString currentsong = ui_->mp3List->item(playlist->currentIndex())->text(); ui_->labelCurrentPlaying->setText(currentsong); } } catch (...) { // use metadata from player QString AlbumInterpret = player->metaData(QMediaMetaData::AlbumArtist).toString(); QString Title = player->metaData(QMediaMetaData::Title).toString(); if (AlbumInterpret == "" && ui_->comboBoxAlbum->currentText() != ".") { AlbumInterpret = ui_->comboBoxAlbum->currentText(); } QString currentPlaying; if (AlbumInterpret != "") { currentPlaying.append(AlbumInterpret); } if (Title != "" && AlbumInterpret != "") { currentPlaying.append(" - "); } if (Title != "") { currentPlaying.append(Title); } ui_->labelCurrentPlaying->setText(currentPlaying); } ui_->labelTrack->setText(QString::number(playlist->currentIndex()+1)); ui_->labelTrackCount->setText(QString::number(playlist->mediaCount())); // Write current playing album and track to config this->configuration_->setMp3Track(playlist->currentIndex()); this->configuration_->setMp3SubFolder(ui_->comboBoxAlbum->currentText().toStdString()); this->configuration_->save(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPlayList_clicked() { player->setPlaylist(this->playlist); playlist->setCurrentIndex(this->currentPlaylistIndex); player->play(); ui_->mp3selectWidget->hide(); ui_->PlayerPlayingWidget->show(); ui_->pushButtonPlayerPlayList->hide(); ui_->pushButtonList->show(); ui_->pushButtonBackToPlayer->hide(); ui_->pushButtonPlayerStop->show(); ui_->pushButtonPlayerPause->setStyleSheet( "background-color: rgb(233, 185, 110); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(0,0,0);"); ui_->pushButtonPlayerPause->show(); int currentalbum = ui_->comboBoxAlbum->currentIndex(); ui_->labelCurrentAlbumIndex->setText(QString::number(currentalbum+1)); } void f1x::openauto::autoapp::ui::MainWindow::on_comboBoxAlbum_currentIndexChanged(const QString &arg1) { this->albumfolder = arg1; MainWindow::scanFiles(); } void f1x::openauto::autoapp::ui::MainWindow::setTrigger() { this->mediacontentchanged = true; ui_->SysinfoTopLeft->setText("Media changed - Scanning ..."); ui_->SysinfoTopLeft->show(); QTimer::singleShot(10000, this, SLOT(scanFolders())); } void f1x::openauto::autoapp::ui::MainWindow::setRetryUSBConnect() { ui_->SysinfoTopLeft->setText("Trying USB connect ..."); ui_->SysinfoTopLeft->show(); QTimer::singleShot(10000, this, SLOT(resetRetryUSBMessage())); } void f1x::openauto::autoapp::ui::MainWindow::resetRetryUSBMessage() { ui_->SysinfoTopLeft->setText(""); ui_->SysinfoTopLeft->hide(); } void f1x::openauto::autoapp::ui::MainWindow::scanFolders() { try { if (this->mediacontentchanged == true) { this->mediacontentchanged = false; int cleaner = ui_->comboBoxAlbum->count(); while (cleaner > -1) { ui_->comboBoxAlbum->removeItem(cleaner); cleaner--; } QDir directory(this->musicfolder); QStringList folders = directory.entryList(QStringList() << "*", QDir::AllDirs, QDir::Name); foreach (QString foldername, folders) { if (foldername != "..") { ui_->comboBoxAlbum->addItem(foldername); ui_->labelAlbumCount->setText(QString::number(ui_->comboBoxAlbum->count())); } } this->currentPlaylistIndex = 0; ui_->SysinfoTopLeft->hide(); } } catch(...) { ui_->SysinfoTopLeft->hide(); } } void f1x::openauto::autoapp::ui::MainWindow::scanFiles() { if (this->mediacontentchanged == false) { int cleaner = ui_->mp3List->count(); while (cleaner > -1) { ui_->mp3List->takeItem(cleaner); cleaner--; } this->playlist->clear(); QList content; QDir directory(this->musicfolder + "/" + this->albumfolder); QStringList mp3s = directory.entryList(QStringList() << "*.mp3" << "*.flac" << "*.aac" << "*.ogg" << "*.mp4" << "*.mp4a" << "*.wma",QDir::Files, QDir::Name); foreach (QString filename, mp3s) { // add to mediacontent content.push_back(QMediaContent(QUrl::fromLocalFile(this->musicfolder + "/" + this->albumfolder + "/" + filename))); // add items to gui // read metadata using taglib try { TagLib::FileRef file((this->musicfolder + "/" + this->albumfolder + "/" + filename).toUtf8(),true); TagLib::String artist_string = file.tag()->artist(); TagLib::String title_string = file.tag()->title(); TagLib::uint track_string = file.tag()->track(); QString artistid3 = QString::fromStdWString(artist_string.toCWString()); QString titleid3 = QString::fromStdWString(title_string.toCWString()); QString trackid3 = QString::number(track_string); int tracklength = trackid3.length(); if (tracklength < 2) { trackid3 = "0" + trackid3; } QString ID3Entry = trackid3 + ": " + artistid3 + " - " + titleid3; ui_->mp3List->addItem(ID3Entry); } catch (...) { // old way only adding filename to list ui_->mp3List->addItem(filename); } } // set playlist this->playlist->addMedia(content); } } void f1x::openauto::autoapp::ui::MainWindow::on_mp3List_currentRowChanged(int currentRow) { ui_->labelFolderpath->setText(QString::number(currentRow)); this->currentPlaylistIndex = currentRow; } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerNextBig_clicked() { playlist->next(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPrevBig_clicked() { playlist->previous(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPrevAlbum_clicked() { int albumcount = ui_->comboBoxAlbum->count(); int currentalbum = ui_->comboBoxAlbum->currentIndex(); if (currentalbum >= 1) { currentalbum = currentalbum-1; ui_->comboBoxAlbum->setCurrentIndex(currentalbum); ui_->labelCurrentAlbumIndex->setText(QString::number(currentalbum+1)); player->play(); } else { currentalbum = albumcount-1; ui_->comboBoxAlbum->setCurrentIndex(currentalbum); ui_->labelCurrentAlbumIndex->setText(QString::number(currentalbum+1)); player->play(); } } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerNextAlbum_clicked() { int albumcount = ui_->comboBoxAlbum->count(); int currentalbum = ui_->comboBoxAlbum->currentIndex(); if (currentalbum < albumcount-1) { currentalbum = currentalbum + 1; ui_->comboBoxAlbum->setCurrentIndex(currentalbum); ui_->labelCurrentAlbumIndex->setText(QString::number(currentalbum+1)); player->play(); } else { currentalbum = 0; ui_->comboBoxAlbum->setCurrentIndex(currentalbum); ui_->labelCurrentAlbumIndex->setText(QString::number(currentalbum+1)); player->play(); } } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonBackToPlayer_clicked() { ui_->PlayerPlayingWidget->show(); ui_->mp3selectWidget->hide(); ui_->pushButtonBackToPlayer->hide(); ui_->pushButtonPlayerPlayList->hide(); ui_->pushButtonList->show(); } void f1x::openauto::autoapp::ui::MainWindow::on_StateChanged(QMediaPlayer::State state) { if (state == QMediaPlayer::StoppedState || state == QMediaPlayer::PausedState) { std::remove("/tmp/media_playing"); } else { std::ofstream("/tmp/media_playing"); } } void f1x::openauto::autoapp::ui::MainWindow::tmpChanged() { try { if (std::ifstream("/tmp/entityexit")) { MainWindow::TriggerAppStop(); usleep(1000000); std::remove("/tmp/entityexit"); } } catch (...) { OPENAUTO_LOG(error) << "[OpenAuto] Error in entityexit"; } // check if system is in display off mode (tap2wake) if (std::ifstream("/tmp/blankscreen")) { if (ui_->centralWidget->isVisible() == true) { ui_->centralWidget->hide(); } } else { if (ui_->centralWidget->isVisible() == false) { ui_->centralWidget->show(); } } // check if custom command needs black background if (std::ifstream("/tmp/blackscreen")) { if (ui_->centralWidget->isVisible() == true) { ui_->centralWidget->hide(); this->setStyleSheet("QMainWindow {background-color: rgb(0,0,0);}"); this->background_set = false; } } else { if (this->background_set == false) { f1x::openauto::autoapp::ui::MainWindow::updateBG(); this->background_set = true; } } // check if phone is conencted to usb if (std::ifstream("/tmp/android_device")) { if (ui_->pushButtonAndroidAuto->isVisible() == false) { ui_->pushButtonAndroidAuto->show(); ui_->pushButtonNoDevice->hide(); } if (ui_->pushButtonAndroidAuto2->isVisible() == false) { ui_->pushButtonAndroidAuto2->show(); ui_->pushButtonNoDevice2->hide(); } } else { if (ui_->pushButtonAndroidAuto->isVisible() == true) { ui_->pushButtonNoDevice->show(); ui_->pushButtonAndroidAuto->hide(); } if (ui_->pushButtonAndroidAuto2->isVisible() == true) { ui_->pushButtonNoDevice2->show(); ui_->pushButtonAndroidAuto2->hide(); } } // check if bluetooth available QFileInfo bluetoothButtonFile("/tmp/button_bluetooth_visible"); this->bluetoothEnabled = bluetoothButtonFile.exists(); if (this->bluetoothEnabled) { if (ui_->pushButtonBluetooth->isVisible() == false) { ui_->pushButtonBluetooth->show(); } } else { if (ui_->pushButtonBluetooth->isVisible() == true) { ui_->pushButtonBluetooth->hide(); } } // check if a device is connected via bluetooth if (std::ifstream("/tmp/btdevice")) { if (ui_->btDevice->isVisible() == false) { QFile phoneBTData(QString("/tmp/btdevice")); phoneBTData.open(QIODevice::ReadOnly); QTextStream data_date(&phoneBTData); QString linedate = data_date.readAll(); phoneBTData.close(); ui_->btDevice->setText(linedate.simplified()); ui_->btDevice->show(); } } else { if (ui_->btDevice->isVisible() == true) { ui_->btDevice->hide(); } } // check the need for system messages QFileInfo configInProgressFile("/tmp/config_in_progress"); QFileInfo debugInProgressFile("/tmp/debug_in_progress"); QFileInfo enablePairingFile("/tmp/enable_pairing"); if (std::ifstream("/tmp/config_in_progress") || std::ifstream("/tmp/debug_in_progress") || std::ifstream("/tmp/enable_pairing")) { if (ui_->systemConfigInProgress->isVisible() == false) { if (std::ifstream("/tmp/config_in_progress")) { ui_->systemConfigInProgress->setText("System config in progress - please wait ..."); ui_->pushButtonSettings->hide(); ui_->pushButtonSettings2->hide(); ui_->pushButtonLock->show(); ui_->pushButtonLock2->show(); ui_->systemConfigInProgress->show(); } if (std::ifstream("/tmp/debug_in_progress")) { ui_->systemConfigInProgress->setText("Creating debug.zip on /boot - please wait ..."); ui_->pushButtonSettings->hide(); ui_->pushButtonSettings2->hide(); ui_->pushButtonDebug->hide(); ui_->pushButtonDebug2->hide(); ui_->pushButtonLock->show(); ui_->pushButtonLock2->show(); ui_->systemConfigInProgress->show(); } if (std::ifstream("/tmp/enable_pairing")) { ui_->systemConfigInProgress->setText("Auto Bluetooth Pairing enabled for 120 seconds!"); ui_->pushButtonDebug->hide(); ui_->pushButtonDebug2->hide(); ui_->systemConfigInProgress->show(); } } } else { if (ui_->systemConfigInProgress->isVisible() == true) { ui_->systemConfigInProgress->hide(); ui_->pushButtonSettings->show(); ui_->pushButtonSettings2->show(); ui_->pushButtonLock->hide(); ui_->pushButtonLock2->hide(); if (this->systemDebugmode) { ui_->pushButtonDebug->show(); ui_->pushButtonDebug2->show(); } } } // update day/night state QFileInfo nightModeFile("/tmp/night_mode_enabled"); this->nightModeEnabled = nightModeFile.exists(); if (this->nightModeEnabled) { 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(); } } // camera stuff if (this->cameraButtonForce) { // check if dashcam is recording QFileInfo dashCamRecordingFile("/tmp/dashcam_is_recording"); this->dashCamRecording = dashCamRecordingFile.exists(); // show recording state if dashcam is visible if (ui_->cameraWidget->isVisible() == true) { 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(); } } } // check if rearcam is eanbled QFileInfo rearCamFile("/tmp/rearcam_enabled"); this->rearCamEnabled = rearCamFile.exists(); if (this->rearCamEnabled) { if (!this->rearCamVisible) { this->rearCamVisible = true; f1x::openauto::autoapp::ui::MainWindow::MainWindow::showRearCam(); } } else { if (this->rearCamVisible) { this->rearCamVisible = false; f1x::openauto::autoapp::ui::MainWindow::MainWindow::hideRearCam(); } } } // check if shutdown is external triggered and init clean app exit if (std::ifstream("/tmp/external_exit")) { f1x::openauto::autoapp::ui::MainWindow::MainWindow::exit(); } QFileInfo hotspotFile("/tmp/hotspot_active"); this->hotspotActive = hotspotFile.exists(); // hide wifi if hotspot disabled if (!this->hotspotActive) { if ((ui_->AAWIFIWidget->isVisible() == true) || (ui_->AAWIFIWidget2->isVisible() == true)){ ui_->AAWIFIWidget->hide(); ui_->AAWIFIWidget2->hide(); ui_->AAUSBWidget->show(); ui_->AAUSBWidget2->show(); } } else { if ((ui_->AAWIFIWidget->isVisible() == false) || (ui_->AAWIFIWidget2->isVisible() == false)) { ui_->AAWIFIWidget->show(); ui_->AAWIFIWidget2->show(); ui_->AAUSBWidget->hide(); ui_->AAUSBWidget2->hide(); } } if (std::ifstream("/tmp/temp_recent_list")) { if (ui_->pushButtonWifi->isVisible() == false) { ui_->pushButtonWifi->show(); ui_->pushButtonNoWiFiDevice->hide(); } if (ui_->pushButtonWifi2->isVisible() == false) { ui_->pushButtonWifi2->show(); ui_->pushButtonNoWiFiDevice2->hide(); } } else { if (ui_->pushButtonWifi->isVisible() == true) { ui_->pushButtonNoWiFiDevice->show(); ui_->pushButtonWifi->hide(); } if (ui_->pushButtonWifi2->isVisible() == true) { ui_->pushButtonNoWiFiDevice2->show(); ui_->pushButtonWifi2->hide(); } } // handle dummys in classic menu int button_count = 0; if (ui_->pushButtonCameraShow2->isVisible() == true) { button_count = button_count + 1; } if (ui_->AAWIFIWidget2->isVisible() == true) { button_count = button_count + 1; } if (ui_->pushButtonDebug2->isVisible() == true) { button_count = button_count + 1; } if (ui_->pushButtonVolume2->isVisible() == true) { button_count = button_count + 1; } // Hide auto day/night if needed if (this->lightsensor) { ui_->pushButtonDay->hide(); ui_->pushButtonNight->hide(); ui_->pushButtonDay2->hide(); ui_->pushButtonNight2->hide(); ui_->pushButtonBrightness->hide(); ui_->pushButtonBrightness2->hide(); } // use big clock in classic gui? if (this->configuration_->showBigClock()) { this->UseBigClock = true; } else { this->UseBigClock = false; } // clock viibility by settings if (!this->configuration_->showClock()) { ui_->Digital_clock->hide(); ui_->oldmenuDummy->show(); ui_->bigClock->hide(); this->NoClock = true; } else { this->NoClock = false; if (this->UseBigClock && ui_->oldmenuWidget->isVisible() == true) { ui_->oldmenuDummy->hide(); ui_->bigClock->show(); if (oldGUIStyle) { ui_->Digital_clock->hide(); } } else { ui_->oldmenuDummy->show(); ui_->Digital_clock->show(); ui_->bigClock->hide(); } } // hide gui toggle if enabled in settings if (this->configuration_->hideMenuToggle()) { ui_->pushButtonToggleGUI->hide(); ui_->pushButtonToggleGUI2->hide(); } else { ui_->pushButtonToggleGUI->show(); ui_->pushButtonToggleGUI2->show(); } // hide alpha controls if enabled in settings if (!this->configuration_->hideAlpha()) { ui_->pushButtonAlpha->show(); } else { ui_->pushButtonAlpha->hide(); } if (QString::number(this->configuration_->getAlphaTrans()) != QString::number(ui_->horizontalSliderAlpha->value())) { ui_->horizontalSliderAlpha->setValue(static_cast(this->configuration_->getAlphaTrans())); } // read value from tsl2561 if (std::ifstream("/tmp/tsl2561") && this->configuration_->showLux()) { QFile paramFile("/tmp/tsl2561"); paramFile.open(QIODevice::ReadOnly); QTextStream data(¶mFile); QStringList value = data.readAll().split("\n"); paramFile.close(); if (ui_->label_left->isVisible() == false) { ui_->label_left->show(); ui_->label_right->show(); } ui_->label_left->setText("Lux: " + value[0]); } else { if (ui_->label_left->isVisible() == true) { ui_->label_left->hide(); ui_->label_right->hide(); ui_->label_left->setText(""); ui_->label_right->setText(""); } } }