From e26022190ed1184875b0b485d641458162ad9974 Mon Sep 17 00:00:00 2001 From: hawkeyexp Date: Thu, 20 Sep 2018 17:56:03 +0200 Subject: [PATCH] Gui optimize and folder handling player --- assets/next-hot.png | Bin 0 -> 3326 bytes assets/nextbig-hot.png | Bin 0 -> 8439 bytes assets/pause-hot.png | Bin 0 -> 3029 bytes assets/play-hot.png | Bin 0 -> 3232 bytes assets/prev-hot.png | Bin 0 -> 3334 bytes assets/prevbig-hot.png | Bin 0 -> 8493 bytes assets/resources.qrc | 6 + .../f1x/openauto/autoapp/UI/MainWindow.hpp | 19 +- src/autoapp/UI/MainWindow.cpp | 170 ++- src/autoapp/UI/mainwindow.ui | 1293 +++++++++-------- 10 files changed, 813 insertions(+), 675 deletions(-) create mode 100644 assets/next-hot.png create mode 100644 assets/nextbig-hot.png create mode 100644 assets/pause-hot.png create mode 100644 assets/play-hot.png create mode 100644 assets/prev-hot.png create mode 100644 assets/prevbig-hot.png diff --git a/assets/next-hot.png b/assets/next-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..41f53a60b9b520146c80611a75bdf263ba815d0c GIT binary patch literal 3326 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 IM6N<$f>}r*8~^|S literal 0 HcmV?d00001 diff --git a/assets/nextbig-hot.png b/assets/nextbig-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..a64e696082f85dbc82b4f51a67baacfdf58e3761 GIT binary patch literal 8439 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 Q-T(jq07*qoM6N<$g89!T5dZ)H literal 0 HcmV?d00001 diff --git a/assets/prevbig-hot.png b/assets/prevbig-hot.png new file mode 100644 index 0000000000000000000000000000000000000000..5654795700e813fbcbec73e21d9a527ecfe796bc GIT binary patch literal 8493 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 M8krlG>yvK$2bFUlSO5S3 literal 0 HcmV?d00001 diff --git a/assets/resources.qrc b/assets/resources.qrc index d93c1d1..267a55f 100644 --- a/assets/resources.qrc +++ b/assets/resources.qrc @@ -27,6 +27,12 @@ eye-hot.png skin-hot.png mp3-hot.png + play-hot.png + prev-hot.png + next-hot.png + pause-hot.png + prevbig-hot.png + nextbig-hot.png coverlogo.png black.png Roboto-Regular.ttf diff --git a/include/f1x/openauto/autoapp/UI/MainWindow.hpp b/include/f1x/openauto/autoapp/UI/MainWindow.hpp index 914f37b..d431b5a 100644 --- a/include/f1x/openauto/autoapp/UI/MainWindow.hpp +++ b/include/f1x/openauto/autoapp/UI/MainWindow.hpp @@ -108,7 +108,6 @@ private slots: void customButtonPressed5(); void customButtonPressed6(); void customButtonPressed7(); - void customButtonPressed8(); void playerShow(); void playerHide(); @@ -121,12 +120,13 @@ private slots: void on_durationChanged(qint64 position); void on_mp3List_itemClicked(QListWidgetItem *item); void metaDataChanged(); - void stateChanged(); - void on_pushButtonScanFolder_clicked(); - void on_pushButtonSelectFolder_clicked(); void on_pushButtonPlayerPlayList_clicked(); - void on_pushButtonPlayerPrev_clicked(); - void on_pushButtonPlayerNext_clicked(); + void on_pushButtonNextBig_clicked(); + void on_pushButtonPrevBig_clicked(); + void on_comboBoxAlbum_currentIndexChanged(const QString &arg1); + void on_mp3List_currentRowChanged(int currentRow); + void scanFolders(); + void scanFiles(); private: Ui::MainWindow* ui_; @@ -147,7 +147,6 @@ private: QString custom_button_file_c5 = "/boot/crankshaft/button_5"; QString custom_button_file_c6 = "/boot/crankshaft/button_6"; QString custom_button_file_c7 = "/boot/crankshaft/button_7"; - QString custom_button_file_c8 = "/boot/crankshaft/button_8"; QString custom_button_command_c1; QString custom_button_command_c2; @@ -156,7 +155,6 @@ private: QString custom_button_command_c5; QString custom_button_command_c6; QString custom_button_command_c7; - QString custom_button_command_c8; QString custom_button_color_c1 = "186,189,192"; QString custom_button_color_c2 = "186,189,192"; @@ -165,10 +163,10 @@ private: QString custom_button_color_c5 = "186,189,192"; QString custom_button_color_c6 = "186,189,192"; QString custom_button_color_c7 = "186,189,192"; - QString custom_button_color_c8 = "186,189,192"; QString selectedMp3file; QString musicfolder = "/media/CSSTORAGE/Music"; + QString albumfolder = "/"; QMediaPlaylist *playlist; bool customBrightnessControl = false; @@ -209,9 +207,10 @@ private: bool c5ButtonForce = false; bool c6ButtonForce = false; bool c7ButtonForce = false; - bool c8ButtonForce = false; bool hotspotActive = false; + + int currentPlaylistIndex = 0; }; } diff --git a/src/autoapp/UI/MainWindow.cpp b/src/autoapp/UI/MainWindow.cpp index efb28b5..898e20f 100644 --- a/src/autoapp/UI/MainWindow.cpp +++ b/src/autoapp/UI/MainWindow.cpp @@ -30,6 +30,7 @@ #include #include #include +#include namespace f1x { @@ -93,9 +94,6 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi QFileInfo c7ButtonFile(this->custom_button_file_c7); this->c7ButtonForce = c7ButtonFile.exists(); - QFileInfo c8ButtonFile(this->custom_button_file_c8); - this->c8ButtonForce = c8ButtonFile.exists(); - // wallpaper stuff QFileInfo wallpaperDayFile("wallpaper.png"); this->wallpaperDayFileExists = wallpaperDayFile.exists(); @@ -167,6 +165,7 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi 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); // by default hide bluetooth button on init ui_->pushButtonBluetooth->hide(); @@ -242,11 +241,6 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi ui_->pushButtonBrightness->hide(); } - // hide dummy if debug is shown - if (this->systemDebugmode) { - ui_->pushButtonDummy->hide(); - } - // as default hide brightness slider ui_->BrightnessSliderControl->hide(); @@ -397,23 +391,6 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi connect(ui_->pushButton_c7, &QPushButton::clicked, this, &MainWindow::customButtonPressed7); } - if (!this->c8ButtonForce) { - ui_->pushButton_c8->hide(); - } else { - // read button config 8 - QFile paramFile(this->custom_button_file_c8); - paramFile.open(QIODevice::ReadOnly); - QTextStream data(¶mFile); - QStringList params = data.readAll().split("#"); - paramFile.close(); - ui_->pushButton_c8->setText(params[0].simplified()); - this->custom_button_command_c8 = params[1].simplified(); - if (params[2] != "") { - this->custom_button_color_c8 = params[2].simplified(); - } - connect(ui_->pushButton_c8, &QPushButton::clicked, this, &MainWindow::customButtonPressed8); - } - // as default hide camera controls ui_->cameraWidget->hide(); ui_->pushButtonRecordActive->hide(); @@ -441,9 +418,6 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi ui_->pushButtonDummy3->hide(); } - if (this->c8ButtonForce || this->systemDebugmode) { - ui_->pushButtonDummy->hide(); - } // show dev labels if dev mode activated if (!this->devModeEnabled) { ui_->devlabel_left->hide(); @@ -574,10 +548,12 @@ MainWindow::MainWindow(configuration::IConfiguration::Pointer configuration, QWi 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::stateChanged); - ui_->id3TagInfo->hide(); - MainWindow::on_pushButtonScanFolder_clicked(); + MainWindow::scanFolders(); + MainWindow::scanFiles(); + ui_->labelFolderpath->hide(); + ui_->pushButtonPlayerPlay->hide(); + ui_->PlayerPlayingWidget->hide(); } MainWindow::~MainWindow() @@ -625,11 +601,6 @@ void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed7() system(qPrintable(this->custom_button_command_c7 + " &")); } -void f1x::openauto::autoapp::ui::MainWindow::customButtonPressed8() -{ - system(qPrintable(this->custom_button_command_c8 + " &")); -} - void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonBrightness_clicked() { this->brightnessFile = new QFile(this->brightnessFilename); @@ -792,8 +763,6 @@ void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderAlpha_valueChang 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_->pushButton_c7->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c7 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); - ui_->pushButton_c8->setStyleSheet( "background-color: rgba(" + this->custom_button_color_c8 + ", " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(255,255,255);"); - ui_->pushButtonDummy->setStyleSheet( "background-color: rgba(52, 101, 164, " + alp + " ); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5);"); 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);"); @@ -1228,17 +1197,24 @@ void f1x::openauto::autoapp::ui::MainWindow::on_horizontalSliderVolumePlayer_sli void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPlay_clicked() { - QString path = this->musicfolder + "/" + this->selectedMp3file; - ui_->labelFolderpath->setText(path); + QString path = this->musicfolder + "/" + this->albumfolder + "/" + this->selectedMp3file; player->setMedia(QMediaContent(QUrl::fromLocalFile(path))); player->play(); //qDebug() << player->errorString(); + 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->hide(); + ui_->PlayerPlayingWidget->show(); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerStop_clicked() { 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_->playerPositionTime->setText("00:00 / 00:00"); + ui_->labelCurrentPlaying->setText(""); } void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPause_clicked() @@ -1247,10 +1223,14 @@ 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);"); + ui_->mp3selectWidget->show(); + ui_->PlayerPlayingWidget->hide(); }else{ - ui_->pushButtonPlayerPause->setStyleSheet( "background-color: rgb(186, 189, 182); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); color: rgb(0,0,0);"); + 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()); + ui_->mp3selectWidget->hide(); + ui_->PlayerPlayingWidget->show(); } } @@ -1307,26 +1287,64 @@ void f1x::openauto::autoapp::ui::MainWindow::on_mp3List_itemClicked(QListWidgetI 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(270,270,Qt::IgnoreAspectRatio); + if (!imgscaled.isNull()) { ui_->pushButtonBack->setIcon(QPixmap::fromImage(imgscaled)); - ui_->labelCurrentPlaying->setText(player->metaData(QMediaMetaData::Title).toString() + " - " + player->metaData(QMediaMetaData::AlbumArtist).toString()); -} - -void f1x::openauto::autoapp::ui::MainWindow::stateChanged() -{ - if (player->StoppedState) { - ui_->pushButtonBack->setIcon(QPixmap("://coverlogo.png")); + } else { + ui_->pushButtonBack->setIcon(QPixmap("://coverlogo.png")); } + QString Title = player->metaData(QMediaMetaData::Title).toString(); + QString AlbumInterpret = player->metaData(QMediaMetaData::AlbumArtist).toString(); + QString currentPlaying = ""; + if (AlbumInterpret != "") { + currentPlaying.append(AlbumInterpret); + } + if (Title != "" && AlbumInterpret != "") { + currentPlaying.append(" - "); + } + if (Title != "") { + currentPlaying.append(Title); + } + ui_->labelCurrentPlaying->setText(currentPlaying); + QString fullpathplaying = player->currentMedia().canonicalUrl().toString(); + QString filename = QFileInfo(fullpathplaying).fileName(); } -void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonScanFolder_clicked() +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_->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);"); +} + +void f1x::openauto::autoapp::ui::MainWindow::on_comboBoxAlbum_currentIndexChanged(const QString &arg1) +{ + this->albumfolder = arg1; + f1x::openauto::autoapp::ui::MainWindow::scanFiles(); +} + +void f1x::openauto::autoapp::ui::MainWindow::scanFolders() +{ + 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); + } + } + this->currentPlaylistIndex = 0; +} + +void f1x::openauto::autoapp::ui::MainWindow::scanFiles() { int cleaner = ui_->mp3List->count(); while (cleaner > -1) { @@ -1335,39 +1353,31 @@ void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonScanFolder_clicked() } this->playlist->clear(); - QDirIterator dir(this->musicfolder, QStringList() << "*.mp3", QDir::NoFilter, QDirIterator::Subdirectories); QList content; - - while (dir.hasNext()) { - QFile f(dir.next()); - QString filename = f.fileName(); - // make path relative to musicfolder - ui_->mp3List->addItem(filename.replace(this->musicfolder + "/","")); - content.push_back(QMediaContent(QUrl::fromLocalFile(f.fileName()))); + QDir directory(this->musicfolder + "/" + this->albumfolder); + QStringList mp3s = directory.entryList(QStringList() << "*.mp3",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 + ui_->mp3List->addItem(filename); } + // set playlist this->playlist->addMedia(content); } -void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonSelectFolder_clicked() +void f1x::openauto::autoapp::ui::MainWindow::on_mp3List_currentRowChanged(int currentRow) { - this->musicfolder = QFileDialog::getExistingDirectory(this, tr("Select Album"), this->musicfolder, QFileDialog::ShowDirsOnly); - f1x::openauto::autoapp::ui::MainWindow::on_pushButtonScanFolder_clicked(); + ui_->labelFolderpath->setText(QString::number(currentRow)); + this->currentPlaylistIndex = currentRow; } -void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPlayList_clicked() -{ - QString path = this->musicfolder + "/" + this->selectedMp3file; - ui_->labelFolderpath->setText(path); - player->setPlaylist(this->playlist); - player->play(); -} - -void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerPrev_clicked() -{ - playlist->previous(); -} - -void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPlayerNext_clicked() +void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonNextBig_clicked() { playlist->next(); } + +void f1x::openauto::autoapp::ui::MainWindow::on_pushButtonPrevBig_clicked() +{ + playlist->previous(); +} diff --git a/src/autoapp/UI/mainwindow.ui b/src/autoapp/UI/mainwindow.ui index ab65ba2..5a5015a 100644 --- a/src/autoapp/UI/mainwindow.ui +++ b/src/autoapp/UI/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 808 - 1316 + 936 + 1282 @@ -22,6 +22,11 @@ 480 + + + 12 + + MainWindow @@ -69,17 +74,17 @@ - background-color: rgb(0, 0, 0); + background-color: rgba(0, 0, 0, 0.5); - 2 + 0 0 - 1 + 0 0 @@ -167,7 +172,7 @@ color: rgb(255, 255, 255); - + 0 0 @@ -175,9 +180,18 @@ color: rgb(255, 255, 255); 0 - 28 + 22 + + + 16777215 + 22 + + + + background-color: rgba(0, 0, 0, 0); + 0 @@ -196,6 +210,24 @@ color: rgb(255, 255, 255); + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + 8 @@ -204,7 +236,7 @@ color: rgb(255, 255, 255); - background-color: rgba(255, 255, 255, 0); + background-color: rgba(0, 0, 0, 0); color: rgb(255, 255, 255); @@ -217,8 +249,17 @@ color: rgb(255, 255, 255); + + 6 + + + + 0 + 0 + + 75 @@ -239,6 +280,12 @@ color: rgb(255, 255, 255); + + + 0 + 0 + + 75 @@ -268,13 +315,13 @@ color: rgb(0, 102, 255); 80 - 24 + 20 80 - 16777215 + 20 @@ -302,10 +349,16 @@ color: rgb(239, 239, 239); 0 + + + 0 + 22 + + 100 - 16777215 + 22 @@ -1125,50 +1178,6 @@ border: 2px solid rgba(255,255,255,0.5); - - - - - 0 - 0 - - - - - 75 - true - - - - background-color: rgba(186, 189, 182, 0.5); -border-radius: 4px; -border: 2px solid rgba(255,255,255,0.5); -color: rgb(255, 255, 255); - - - - - - - - - - - 0 - 0 - - - - background-color: rgba(186, 189, 182, 0.5); -border-radius: 4px; -border: 2px solid rgba(255,255,255,0.5); -color: rgb(255, 255, 255); - - - - - - @@ -2012,11 +2021,11 @@ border: 2px solid rgba(255,255,255,0.5); Qt::LeftToRight - background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(9, 41, 4, 255), stop:0.085 rgba(2, 79, 0, 255), stop:0.19 rgba(50, 147, 22, 255), stop:0.275 rgba(236, 191, 49, 255), stop:0.39 rgba(243, 61, 34, 255), stop:0.555 rgba(135, 81, 60, 255), stop:0.667 rgba(121, 75, 255, 255), stop:0.825 rgba(164, 255, 244, 255), stop:0.885 rgba(104, 222, 71, 255), stop:1 rgba(93, 128, 0, 255)); + background-color: rgba(0, 0, 0, 0); - 4 + 0 0 @@ -2028,7 +2037,7 @@ border: 2px solid rgba(255,255,255,0.5); 0 - 6 + 0 @@ -2060,13 +2069,16 @@ background-color: rgba(0, 0, 0, 0); 0 - + 0 0 + + background-color: rgba(0, 0, 0, 0.5); + 4 @@ -2103,6 +2115,11 @@ background-color: rgba(0, 0, 0, 0); 20 + + + 8 + + background-color: rgba(85, 87, 83, 0.7); color: rgb(255, 255, 255); @@ -2113,10 +2130,61 @@ border: 2px solid rgba(255,255,255,0.5); + + + + + 0 + 0 + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + + 12 + 75 + true + + + + Qt::DefaultContextMenu + + + background-color: rgba(85, 87, 83, 0.9); +color: rgb(255, 255, 255); +border: 2px solid rgba(255,255,255,0.5); + + + true + + + + Folder 1 + + + + + Folder 2 + + + + + 12 75 true @@ -2127,22 +2195,38 @@ border: 2px solid rgba(255,255,255,0.5); background-color: rgba(85, 87, 83, 0.7); color: rgb(255, 255, 255); -border-bottom: 2px solid rgba(255,255,255,0.5); -border-left: 2px solid rgba(255,255,255,0.5); -border-right: 2px solid rgba(255,255,255,0.5); +border: 2px solid rgba(255,255,255,0.5); + + QFrame::NoFrame + - Qt::ScrollBarAlwaysOn + Qt::ScrollBarAsNeeded Qt::ScrollBarAsNeeded + + 16 + false + + QListView::Static + + + + 0 + 20 + + + + QListView::ListMode + - true + false @@ -2150,277 +2234,215 @@ border-right: 2px solid rgba(255,255,255,0.5); - - - - 0 - 0 - - - - - 280 - 280 - - - - - 280 - 280 - - - - background-color: rgba(0, 0, 0, 0); -color: rgb(255, 255, 255); -border: 2px solid rgba(255,255,255,0.5); - - - - - - - - :/coverlogo.png - - - - - 270 - 270 - - - - false - - - - - + 0 0 - - - 260 - 280 - - - - - 16777215 - 280 - - - - background-color: rgba(85, 87, 83, 0.7); -color: rgb(255, 255, 255); -border: 2px solid rgba(255,255,255,0.5); - - - - - - - 8 - + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + + + 100 + 0 + - - Title - - - - - - - - 8 - - - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + + + 100 + 16777215 + - - - - - - - 8 - + + + :/prevbig-hot.png + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; - - - Artist + + + 128 + 140 + - - - - - 8 - + + + + + 0 + 0 + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + + + 100 + 0 + + + + + 100 + 16777215 + - - - - - - - 8 - + + + :/prevbig-hot.png + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; - - - Album + + + 128 + 160 + - - - - - 8 - + + + + + 0 + 0 + + + + + 280 + 0 + + + + + 280 + 16777215 + - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + background-color: rgba(0, 0, 0, 0); - - - - - - - 8 - + + + :/coverlogo.png + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + + + 270 + 270 + - - Genre + + false + + + false - - - - - 8 - + + + + + 0 + 0 + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + + + 100 + 0 + + + + + 100 + 16777215 + - - - - - - - 8 - + + + :/nextbig-hot.png + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; - - - Year + + + 128 + 160 + - - - - - 8 - + + + + + 0 + 0 + - - color: rgb(255, 255, 255); -background-color: rgba(0, 0, 0, 0); -border: no-border; + + + 100 + 0 + + + + + 100 + 16777215 + - - - - - - - 8 - + + + :/nextbig-hot.png + - - 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; - - - + + + 128 + 140 + @@ -2431,7 +2453,179 @@ border: no-border; - + + + + 0 + 0 + + + + + 14 + + + + background-color: rgba(0, 0, 0, 0.5); + + + + 0 + + + 0 + + + 4 + + + 0 + + + 4 + + + + + + 0 + 0 + + + + + 150 + 16 + + + + + 150 + 16 + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); + + + + + + + + + + + 0 + 0 + + + + + 0 + 16 + + + + + 16777215 + 16 + + + + + 14 + 75 + true + true + + + + background-color: rgba(0, 0, 0, 0); +color: rgb(255, 255, 255); + + + + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 150 + 16 + + + + + 150 + 17 + + + + + 14 + 75 + true + + + + color: rgb(255, 255, 255); +background-color: rgba(0, 0, 0, 0); + + + 00:00 / 00:00 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + 0 + 10 + + + + + 16777215 + 10 + + + + Qt::LeftToRight + + + false + + + QSlider::groove:horizontal { background-color: rgba(0, 0, 0, 0.8); height: 32px;} +QSlider::handle:horizontal { background: rgb(255, 255, 255); height: 52px; width: 52px; margin: 0 0;}; + + + Qt::Horizontal + + + + + 0 @@ -2441,332 +2635,261 @@ border: no-border; 0 - 20 + 4 16777215 - 20 + 4 - - - 12 - 75 - true - true - - - background-color: rgba(0, 0, 0, 0); -color: rgb(255, 255, 255); + background-color: rgba(0, 0, 0, 0.5); - - Qt::AlignCenter - - - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - Qt::LeftToRight - - - false - - - 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 - 0 - - - - - 140 - 30 - - - - - 140 - 30 - - - - - 75 - true - - - - color: rgb(255, 255, 255); -background-color: #6d6d6d; - - - 00:00 / 00:00 - - - Qt::AlignCenter - - - - - - - - - Qt::Vertical + + + + 0 + 0 + - - - 20 - 0 - + + background-color: rgba(0, 0, 0, 0.5); - - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); + + + 0 + + + 4 + + + 0 + + + 10 + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 16777215 + 30 + + + + background-color: rgba(250, 80, 80, 0.7); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); - - - Prev - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); + + + + + + + :/stop-hot.png + + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 16777215 + 30 + + + + background-color: rgba(138, 226, 52, 0.7); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); - - - Play - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); + + + + + + + :/play-hot.png + + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 16777215 + 30 + + + + background-color: rgba(138, 226, 52, 0.7); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); - - - Play All - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); + + + + + + + :/play-hot.png + + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 16777215 + 30 + + + + background-color: rgba(233, 185, 110, 0.7); border-radius: 4px; border: 2px solid rgba(255,255,255,0.5); - - - Stop - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); + + + + + + + :/pause-hot.png + + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 16777215 + 30 + + + + + 75 + true + + + + background-color: rgba(186, 189, 182, 0.7); border-radius: 4px; -border: 2px solid rgba(255,255,255,0.5); - - - Next - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); -border-radius: 4px; -border: 2px solid rgba(255,255,255,0.5); - - - Pause - - - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - background-color: rgb(186, 189, 182); -border-radius: 4px; -border: 2px solid rgba(255,255,255,0.5); - - - Folder - - - - +border: 2px solid rgba(255,255,255,0.5); +color: rgb(255, 255, 255); + + + + + + + :/back-hot.png + + + + + 32 + 32 + + + + + +