diff --git a/assets/ico_bluetooth.png b/assets/ico_bluetooth.png new file mode 100644 index 0000000..b8d6c95 Binary files /dev/null and b/assets/ico_bluetooth.png differ diff --git a/assets/resources.qrc b/assets/resources.qrc index c31624e..4c16887 100644 --- a/assets/resources.qrc +++ b/assets/resources.qrc @@ -4,6 +4,7 @@ ico_warning.png ico_setting.png ico_info.png + ico_bluetooth.png connect.png cursor-hot.png power-hot.png diff --git a/include/f1x/openauto/autoapp/UI/MainWindow.hpp b/include/f1x/openauto/autoapp/UI/MainWindow.hpp index 61bd07a..13c65b2 100644 --- a/include/f1x/openauto/autoapp/UI/MainWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/MainWindow.hpp @@ -76,6 +76,7 @@ private slots: void showRearCamBG(); void hideRearCamBG(); void createDebuglog(); + void setPairable(); private: Ui::MainWindow* ui_; diff --git a/include/f1x/openauto/autoapp/UI/SettingsWindow.hpp b/include/f1x/openauto/autoapp/UI/SettingsWindow.hpp index 9d37d8d..3e06ddd 100644 --- a/include/f1x/openauto/autoapp/UI/SettingsWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/SettingsWindow.hpp @@ -47,6 +47,7 @@ public: void loadSystemValues(); private slots: + void unpairAll(); void onSave(); void onResetToDefaults(); void onUpdateScreenDPI(int value); diff --git a/src/autoapp/UI/MainWindow.cpp b/src/autoapp/UI/MainWindow.cpp index a4c6f0b..9500d42 100644 --- a/src/autoapp/UI/MainWindow.cpp +++ b/src/autoapp/UI/MainWindow.cpp @@ -47,7 +47,7 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi this->setStyleSheet("QMainWindow {background-color: rgb(0,0,0);} \ QPushButton { background: url(:/circle.png); border: 0; } \ QPushButton:hover { background: url(:/circle.png); } \ - QPushButton:focus { background: url(:/circle.png); } \ + QPushButton:focus { background: url(:/circle.png); border: none; outline: none;} \ 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;} \ @@ -120,11 +120,17 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi connect(ui_->pushButtonKodi, &QPushButton::clicked, this, &MainWindow::startKodi); connect(ui_->pushButtonBrightness, &QPushButton::clicked, this, &MainWindow::showBrightnessSlider); connect(ui_->systemDebugging, &QPushButton::clicked, this, &MainWindow::createDebuglog); + connect(ui_->pushButtonBluetooth, &QPushButton::clicked, this, &MainWindow::setPairable); QTimer *timer=new QTimer(this); connect(timer, SIGNAL(timeout()),this,SLOT(showTime())); timer->start(); + QFileInfo bluetoothButtonFile("/tmp/button_bluetooth_visible"); + if (! bluetoothButtonFile.exists()) { + ui_->pushButtonBluetooth->hide(); + } + // Get version string QFileInfo vFile("/etc/crankshaft.build"); if (vFile.exists()) { @@ -498,6 +504,11 @@ 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::showTime() { using namespace std::this_thread; // sleep_for @@ -540,8 +551,9 @@ void f1x::openauto::autoapp::ui::MainWindow::showTime() QFileInfo configInProgressFile("/tmp/config_in_progress"); QFileInfo debugInProgressFile("/tmp/debug_in_progress"); + QFileInfo enablePairingFile("/tmp/enable_pairing"); - if (configInProgressFile.exists() || debugInProgressFile.exists()) { + if (configInProgressFile.exists() || debugInProgressFile.exists() || enablePairingFile.exists()) { if (ui_->systemConfigInProgress->isVisible() == false) { if (configInProgressFile.exists()) { ui_->systemConfigInProgress->setText("System config in progress - please wait ..."); @@ -554,6 +566,11 @@ void f1x::openauto::autoapp::ui::MainWindow::showTime() ui_->systemDebugging->hide(); ui_->systemConfigInProgress->show(); } + if (enablePairingFile.exists()) { + ui_->systemConfigInProgress->setText("Bluetooth Pairing enabled! "); + ui_->systemDebugging->hide(); + ui_->systemConfigInProgress->show(); + } } } else { if (ui_->systemConfigInProgress->isVisible() == true) { diff --git a/src/autoapp/UI/SettingsWindow.cpp b/src/autoapp/UI/SettingsWindow.cpp index 726edd4..88f86af 100644 --- a/src/autoapp/UI/SettingsWindow.cpp +++ b/src/autoapp/UI/SettingsWindow.cpp @@ -41,6 +41,7 @@ SettingsWindow::SettingsWindow(configuration::IConfiguration::Pointer configurat ui_->setupUi(this); connect(ui_->pushButtonCancel, &QPushButton::clicked, this, &SettingsWindow::close); connect(ui_->pushButtonSave, &QPushButton::clicked, this, &SettingsWindow::onSave); + connect(ui_->pushButtonUnpair , &QPushButton::clicked, this, &SettingsWindow::unpairAll); connect(ui_->horizontalSliderScreenDPI, &QSlider::valueChanged, this, &SettingsWindow::onUpdateScreenDPI); connect(ui_->radioButtonUseExternalBluetoothAdapter, &QRadioButton::clicked, [&](bool checked) { ui_->lineEditExternalBluetoothAdapterAddress->setEnabled(checked); }); connect(ui_->radioButtonDisableBluetooth, &QRadioButton::clicked, [&]() { ui_->lineEditExternalBluetoothAdapterAddress->setEnabled(false); }); @@ -51,6 +52,7 @@ SettingsWindow::SettingsWindow(configuration::IConfiguration::Pointer configurat connect(ui_->pushButtonShowBindings, &QPushButton::clicked, this, &SettingsWindow::onShowBindings); connect(ui_->horizontalSliderSystemVolume, &QSlider::valueChanged, this, &SettingsWindow::onUpdateSystemVolume); connect(ui_->horizontalSliderSystemCapture, &QSlider::valueChanged, this, &SettingsWindow::onUpdateSystemCapture); + } SettingsWindow::~SettingsWindow() @@ -195,6 +197,8 @@ void SettingsWindow::onSave() params.append("0"); } params.append("#"); + params.append( std::string(ui_->comboBoxBluetooth->currentText().toStdString()) ); + params.append("#"); if (ui_->checkBoxHardwareSave->isChecked()) { params.append("1"); } else { @@ -258,6 +262,8 @@ void SettingsWindow::load() const auto& audioOutputBackendType = configuration_->getAudioOutputBackendType(); ui_->radioButtonRtAudio->setChecked(audioOutputBackendType == configuration::AudioOutputBackendType::RTAUDIO); ui_->radioButtonQtAudio->setChecked(audioOutputBackendType == configuration::AudioOutputBackendType::QT); + + ui_->checkBoxHardwareSave->setChecked(false); } void SettingsWindow::loadButtonCheckBoxes() @@ -346,6 +352,11 @@ void SettingsWindow::onUpdateSystemCapture(int value) ui_->labelSystemCaptureValue->setText(QString::number(value)); } +void SettingsWindow::unpairAll() +{ + system("/usr/local/bin/crankshaft bluetooth unpair &"); +} + void SettingsWindow::loadSystemValues() { // Generate param file @@ -580,12 +591,27 @@ void SettingsWindow::loadSystemValues() // set cam ui_->comboBoxCam->setCurrentText(getparams[33]); - // set cs bluetooth + // set bluetooth if (getparams[34] == "1") { + // check external bluetooth enabled + if (getparams[36] == "1") { + ui_->radioButtonUseExternalBluetoothAdapter->setChecked(true); + } else { + ui_->radioButtonUseLocalBluetoothAdapter->setChecked(true); + } + // mac + ui_->lineEditExternalBluetoothAdapterAddress->setText(getparams[37]); + } else { + ui_->radioButtonDisableBluetooth->setChecked(true); + ui_->lineEditExternalBluetoothAdapterAddress->setText(""); + } + if (getparams[35] == "1") { ui_->checkBoxBluetoothAutoPair->setChecked(true); } else { ui_->checkBoxBluetoothAutoPair->setChecked(false); } + // set timezone + ui_->comboBoxBluetooth->setCurrentText(getparams[38]); } } diff --git a/src/autoapp/UI/mainwindow.ui b/src/autoapp/UI/mainwindow.ui index d22be2a..35bf719 100644 --- a/src/autoapp/UI/mainwindow.ui +++ b/src/autoapp/UI/mainwindow.ui @@ -51,6 +51,30 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + 618 + -8 + 64 + 64 + + + + + :/ico_bluetooth.png + + + + + 24 + 24 + + + + background: rgba(255,255,255,0); + + @@ -75,7 +99,7 @@ - color: #00CCFF; + color: #0000FF; Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -815,6 +839,7 @@ QPushButton:pressed { background: orange; border: none; } pushButtonLock pushButtonWirelessConnection pushButtonKodi + pushButtonBluetooth pushButtonToggleCursor pushButtonDay pushButtonNight diff --git a/src/autoapp/UI/settingswindow.ui b/src/autoapp/UI/settingswindow.ui index b358f57..c3896c3 100644 --- a/src/autoapp/UI/settingswindow.ui +++ b/src/autoapp/UI/settingswindow.ui @@ -1104,106 +1104,68 @@ QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} 0 10 646 - 101 + 111 - Bluetooth adapter + Bluetooth settings - - - - 20 - 30 - 171 - 23 - - - - Disable bluetooth - - - - - - 210 - 30 - 171 - 23 - - - - Use external adapter - - 410 - 66 + 26 231 31 + + true + - 340 - 66 - 67 + 290 + 26 + 111 31 - Address: + Used Address: - - - - 440 - 20 - 181 - 41 - - - - - true - - - - Provide address in format AA:BB:CC:DD:EE:FF. - - - true - - - - - - 410 - 30 - 21 - 21 - - - - <html><head/><body><p><img src=":/ico_info.png"/></p></body></html> - - - + 20 - 60 - 151 + 30 + 261 23 - Use local adapter + Set pairable on startup (120 secs) + + + + + + 20 + 70 + 191 + 30 + + + + Remove all paired devices + + + false + + + false @@ -1211,7 +1173,7 @@ QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} 0 - 190 + 160 646 111 @@ -1259,6 +1221,9 @@ QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} 31 + + true + @@ -1291,7 +1256,7 @@ QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} 0 - 310 + 280 646 141 @@ -1386,66 +1351,93 @@ QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} - + - 0 - 120 - 646 - 61 + 330 + 60 + 171 + 23 - - Bluetooth Pairing / Connect + + Use external adapter - - - - 20 - 26 - 250 - 23 - - - - Enable Autopairing / Autoconnect - - - - - - 360 - 20 - 281 - 31 - - - - - true - - - - Experimental and only using local adapter! Needs a reboot after changing! - - - true - - - - - - 320 - 20 - 31 - 31 - - - - <html><head/><body><p><img src=":/ico_warning.png"/></p></body></html> - - + + + true + + + + 170 + 60 + 151 + 23 + + + + Use local adapter + + + + + + 10 + 60 + 171 + 23 + + + + Disable bluetooth + + + + + + 80 + 422 + 31 + 31 + + + + <html><head/><body><p align="justify"><img src=":/ico_warning.png"/></p></body></html> + + + + + + 2 + 425 + 644 + 26 + + + + + true + + + + To activate this settings you have to reboot after changing! + + + Qt::AlignCenter + + + true + + + radioButtonDisableBluetooth + radioButtonUseExternalBluetoothAdapter + radioButtonUseLocalBluetoothAdapter + groupBoxWifiClient + groupBoxWifiHotspot + groupBoxBluetoothAdapter + labelSettingsInfo_5 + labelSettingsInfo_Icon_5 @@ -3265,7 +3257,7 @@ subcontrol-position: center left; 0 10 646 - 241 + 291 @@ -3572,6 +3564,50 @@ subcontrol-position: center left; + + + + 10 + 240 + 80 + 30 + + + + Bluetooth + + + + + + 90 + 240 + 300 + 30 + + + + false + + + none + + + + none + + + + + builtin + + + + + external + + +