diff --git a/include/f1x/openauto/autoapp/UI/MainWindow.hpp b/include/f1x/openauto/autoapp/UI/MainWindow.hpp index dccaeb5..4d17974 100644 --- a/include/f1x/openauto/autoapp/UI/MainWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/MainWindow.hpp @@ -23,6 +23,15 @@ #include #include +#include +#include +#include + +#include +#include +#include +#include + namespace Ui { class MainWindow; @@ -43,6 +52,7 @@ class MainWindow : public QMainWindow public: explicit MainWindow(configuration::IConfiguration::Pointer configuration, QWidget *parent = nullptr); ~MainWindow() override; + QMediaPlayer* player; signals: void exit(); @@ -94,6 +104,17 @@ private slots: void customButtonPressed6(); void customButtonPressed7(); void customButtonPressed8(); + void playerShow(); + void playerHide(); + + void on_horizontalSliderProgressPlayer_sliderMoved(int position); + void on_horizontalSliderVolumePlayer_sliderMoved(int position); + void on_pushButtonPlayerPlay_clicked(); + void on_pushButtonPlayerStop_clicked(); + void on_positionChanged(qint64 position); + void on_durationChanged(qint64 position); + void on_mp3List_itemClicked(QListWidgetItem *item); + void metaDataChanged(); private: Ui::MainWindow* ui_; @@ -134,6 +155,9 @@ private: QString custom_button_color_c7 = "186,189,192"; QString custom_button_color_c8 = "186,189,192"; + QString selectedMp3file; + QString folderMp3 = "/media/CSSTORAGE/Music"; + bool customBrightnessControl = false; bool wifiButtonForce = false; diff --git a/src/autoapp/UI/MainWindow.cpp b/src/autoapp/UI/MainWindow.cpp index 59006a9..8beffe6 100644 --- a/src/autoapp/UI/MainWindow.cpp +++ b/src/autoapp/UI/MainWindow.cpp @@ -164,9 +164,14 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi 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_->pushButtonBack, &QPushButton::clicked, this, &MainWindow::playerHide); // by default hide bluetooth button on init ui_->pushButtonBluetooth->hide(); + + // by default hide media player + ui_->mediaWidget->hide(); QTimer *timer=new QTimer(this); connect(timer, SIGNAL(timeout()),this,SLOT(showTime())); @@ -561,6 +566,11 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi // init alpha values ui_->horizontalSliderAlpha->setValue(int(configuration->getAlphaTrans())); MainWindow::on_horizontalSliderAlpha_valueChanged(int(configuration->getAlphaTrans())); + + player = new QMediaPlayer(this); + connect(player, &QMediaPlayer::positionChanged, this, &MainWindow::on_positionChanged); + connect(player, &QMediaPlayer::durationChanged, this, &MainWindow::on_durationChanged); + connect(player, &QMediaPlayer::metaDataAvailableChanged, this, &MainWindow::metaDataChanged); } MainWindow::~MainWindow() @@ -797,6 +807,7 @@ void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderAlpha_valueChang 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);"); } void f1x::openauto::autoapp::ui::MainWindow::switchGuiToNight() @@ -867,6 +878,26 @@ void f1x::openauto::autoapp::ui::MainWindow::cameraControlShow() } } +void f1x::openauto::autoapp::ui::MainWindow::playerShow() +{ + if (!this->oldGUIStyle) { + ui_->menuWidget->hide(); + } else { + ui_->oldmenuWidget->hide(); + } + ui_->mediaWidget->show(); +} + +void f1x::openauto::autoapp::ui::MainWindow::playerHide() +{ + if (!this->oldGUIStyle) { + ui_->menuWidget->show(); + } else { + ui_->oldmenuWidget->show(); + } + ui_->mediaWidget->hide(); +} + void f1x::openauto::autoapp::ui::MainWindow::toggleExit() { if (!this->exitMenuVisible) { @@ -1186,3 +1217,55 @@ void f1x::openauto::autoapp::ui::MainWindow::showTime() 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); +} + +void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPlay_clicked() +{ + player->setMedia(QMediaContent(QUrl::fromLocalFile(this->folderMp3 + "/" + this->selectedMp3file))); + player->play(); + //qDebug() << player->errorString(); +} + +void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerStop_clicked() +{ + player->stop(); +} + +void f1x::openauto::autoapp::ui::MainWindow::on_positionChanged(qint64 position) +{ + ui_->horizontalSliderProgressPlayer->setValue(position); +} + +void f1x::openauto::autoapp::ui::MainWindow::on_durationChanged(qint64 position) +{ + ui_->horizontalSliderProgressPlayer->setMaximum(position); + ui_->valueId3length->setText(QString::number(position)); +} + +void f1x::openauto::autoapp::ui::MainWindow::on_mp3List_itemClicked(QListWidgetItem *item) +{ + this->selectedMp3file = item->text(); +} + +void f1x::openauto::autoapp::ui::MainWindow::metaDataChanged() +{ + ui_->valueId3Title->setText(player->metaData(QMediaMetaData::Title).toString()); + ui_->valueId3Artist->setText(player->metaData(QMediaMetaData::Author).toString()); + ui_->valueId3Album->setText(player->metaData(QMediaMetaData::AlbumTitle).toString()); + ui_->valueId3Track->setText(player->metaData(QMediaMetaData::TrackNumber).toString()); + ui_->valueId3Genre->setText(player->metaData(QMediaMetaData::Genre).toString()); + ui_->valueId3Year->setText(player->metaData(QMediaMetaData::Year).toString()); + QImage img = player->metaData(QMediaMetaData::CoverArtImage).value(); + QImage imgscaled = img.scaled(300,300); + ui_->labelCover->setPixmap(QPixmap::fromImage(imgscaled)); +} diff --git a/src/autoapp/UI/mainwindow.ui b/src/autoapp/UI/mainwindow.ui index 4e954ba..53ee6ab 100644 --- a/src/autoapp/UI/mainwindow.ui +++ b/src/autoapp/UI/mainwindow.ui @@ -7,7 +7,7 @@ 0 0 800 - 865 + 1268 @@ -1089,6 +1089,31 @@ border: 2px solid rgba(255,255,255,0.5); + + + + + 0 + 0 + + + + + 75 + true + + + + background-color: rgba(78, 154, 6, 0.5); +color: rgb(255, 255, 255); +border-radius: 4px; +border: 2px solid rgba(255,255,255,0.5); + + + MP3 + + + @@ -1959,6 +1984,559 @@ border: 2px solid rgba(255,255,255,0.5); + + + + + 0 + 0 + + + + Qt::LeftToRight + + + background-color: rgba(0, 0, 0, 0.8); + + + + 0 + + + 0 + + + 0 + + + 4 + + + + + + 0 + 0 + + + + border: 0px; + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + + 75 + true + + + + Qt::LeftToRight + + + background-color: rgb(85, 87, 83); +color: rgb(255, 255, 255); +border: 2px solid rgba(255,255,255,0.5); + + + + test.mp3 + + + + + test2.mp3 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + background-color: rgb(46, 52, 54); +color: rgb(255, 255, 255); +border: 2px solid rgba(255,255,255,0.5); + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Title + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Artist + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Album + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Year + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Track + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Genre + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + Length + + + + + + + + 8 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); +border: no-border; + + + + + + + + + + + + + + 0 + 0 + + + + + 300 + 0 + + + + + 75 + true + + + + background-color: rgb(46, 52, 54); +color: rgb(255, 255, 255); +border: 2px solid rgba(255,255,255,0.5); + + + QFrame::NoFrame + + + Cover + + + Qt::AlignCenter + + + + + + + + + + + 0 + 10 + + + + Qt::LeftToRight + + + QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} +QSlider::handle:horizontal { background: rgb(255, 255, 255); height: 52px; width: 52px; margin: 0 0;}; + + + Qt::Horizontal + + + + + + + + 0 + 30 + + + + Qt::LeftToRight + + + QSlider::groove:horizontal { background: #6d6d6d; height: 32px;} +QSlider::handle:horizontal { background: rgb(64, 191, 191); height: 52px; width: 52px; margin: 0 0;}; + + + 100 + + + 100 + + + Qt::Horizontal + + + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + background-color: rgb(186, 189, 182); +border-radius: 4px; +border: 2px solid rgba(255,255,255,0.5); + + + Play + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + background-color: rgb(186, 189, 182); +border-radius: 4px; +border: 2px solid rgba(255,255,255,0.5); + + + Pause + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + background-color: rgb(186, 189, 182); +border-radius: 4px; +border: 2px solid rgba(255,255,255,0.5); + + + Stop + + + + + + + + 0 + 0 + + + + + 0 + 30 + + + + background-color: rgb(186, 189, 182); +border-radius: 4px; +border: 2px solid rgba(255,255,255,0.5); + + + Back + + + + 50 + 50 + + + + + + + + +