diff options
Diffstat (limited to 'qmidiplayer-desktop/qmpplistwindow.cpp')
-rw-r--r-- | qmidiplayer-desktop/qmpplistwindow.cpp | 532 |
1 files changed, 285 insertions, 247 deletions
diff --git a/qmidiplayer-desktop/qmpplistwindow.cpp b/qmidiplayer-desktop/qmpplistwindow.cpp index 5b46fb6..55cc980 100644 --- a/qmidiplayer-desktop/qmpplistwindow.cpp +++ b/qmidiplayer-desktop/qmpplistwindow.cpp @@ -13,340 +13,378 @@ #define setButtonHeight(x,h) {x->setMaximumHeight(h*(logicalDpiY()/96.));x->setMinimumHeight(h*(logicalDpiY()/96.));} qmpPlistWindow::qmpPlistWindow(QWidget *parent): - QWidget(parent,Qt::Dialog), - ui(new Ui::qmpPlistWindow) + QWidget(parent, Qt::Dialog), + ui(new Ui::qmpPlistWindow) { - ui->setupUi(this); - setButtonHeight(ui->pbAdd,36);setButtonHeight(ui->pbAddFolder,36); - setButtonHeight(ui->pbClear,36);setButtonHeight(ui->pbLoad,36); - setButtonHeight(ui->pbRemove,36);setButtonHeight(ui->pbRepeat,36); - setButtonHeight(ui->pbSave,36);setButtonHeight(ui->pbShuffle,36); - connect(this,&qmpPlistWindow::selectionChanging,(qmpMainWindow*)parent,&qmpMainWindow::selectionChanged); - repeat=0;shuffle=0; - settings=qmpMainWindow::getInstance()->getSettings(); - if(settings->getOptionBool("Behavior/RestorePlaylist")) - { - QSettings* plist=new QSettings(QStandardPaths::writableLocation(QStandardPaths::StandardLocation::ConfigLocation)+QString("/qmpplist"), - QSettings::IniFormat); - int fc=plist->value("Playlist/FileCount",0).toInt(); - ui->lwFiles->clear();for(int i=0;i<fc;++i) - ui->lwFiles->addItem(plist->value("Playlist/File"+QString("%1").arg(i,5,10,QChar('0')),"").toString()); - repeat=plist->value("Playlist/Repeat",0).toInt(); - shuffle=plist->value("Playlist/Shuffle",0).toInt(); - switch(shuffle) - { - case 1: - ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle.svg"))); - ui->pbShuffle->setText("Shuffle On"); - break; - case 0: - default: - ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle-off.svg"))); - ui->pbShuffle->setText("Shuffle Off"); - break; - } - switch(repeat) - { - case 0: - ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-non.svg"))); - ui->pbRepeat->setText("Repeat Off"); - break; - case 1: - ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-one.svg"))); - ui->pbRepeat->setText("Repeat One"); - break; - case 2: - ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-all.svg"))); - ui->pbRepeat->setText("Repeat All"); - break; - } - delete plist; - } - ui->pbAdd->setIcon(QIcon(getThemedIcon(":/img/add.svg"))); - ui->pbRemove->setIcon(QIcon(getThemedIcon(":/img/remove.svg"))); - ui->pbClear->setIcon(QIcon(getThemedIcon(":/img/clear.svg"))); - ui->pbAddFolder->setIcon(QIcon(getThemedIcon(":/img/addfolder.svg"))); - ui->pbSave->setIcon(QIcon(getThemedIcon(":/img/save.svg"))); - ui->pbLoad->setIcon(QIcon(getThemedIcon(":/img/load.svg"))); - qmpMainWindow::getInstance()->registerFunctionality( - plistf=new qmpPlistFunc(this), - std::string("Playlist"), - tr("Playlist").toStdString(), - getThemedIconc(":/img/list.svg"), - 0, - true - ); - if(settings->getOptionRaw("DialogStatus/PListW",QRect(-999,-999,999,999)).toRect()!=QRect(-999,-999,999,999)) - setGeometry(settings->getOptionRaw("DialogStatus/PListW",QRect(-999,-999,999,999)).toRect()); - if(settings->getOptionRaw("DialogStatus/PListWShown",0).toInt()) - {show();qmpMainWindow::getInstance()->setFuncState("Playlist",true);} + ui->setupUi(this); + setButtonHeight(ui->pbAdd, 36); + setButtonHeight(ui->pbAddFolder, 36); + setButtonHeight(ui->pbClear, 36); + setButtonHeight(ui->pbLoad, 36); + setButtonHeight(ui->pbRemove, 36); + setButtonHeight(ui->pbRepeat, 36); + setButtonHeight(ui->pbSave, 36); + setButtonHeight(ui->pbShuffle, 36); + connect(this, &qmpPlistWindow::selectionChanging, (qmpMainWindow *)parent, &qmpMainWindow::selectionChanged); + repeat = 0; + shuffle = 0; + settings = qmpMainWindow::getInstance()->getSettings(); + if (settings->getOptionBool("Behavior/RestorePlaylist")) + { + QSettings *plist = new QSettings(QStandardPaths::writableLocation(QStandardPaths::StandardLocation::ConfigLocation) + QString("/qmpplist"), + QSettings::IniFormat); + int fc = plist->value("Playlist/FileCount", 0).toInt(); + ui->lwFiles->clear(); + for (int i = 0; i < fc; ++i) + ui->lwFiles->addItem(plist->value("Playlist/File" + QString("%1").arg(i, 5, 10, QChar('0')), "").toString()); + repeat = plist->value("Playlist/Repeat", 0).toInt(); + shuffle = plist->value("Playlist/Shuffle", 0).toInt(); + switch (shuffle) + { + case 1: + ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle.svg"))); + ui->pbShuffle->setText("Shuffle On"); + break; + case 0: + default: + ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle-off.svg"))); + ui->pbShuffle->setText("Shuffle Off"); + break; + } + switch (repeat) + { + case 0: + ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-non.svg"))); + ui->pbRepeat->setText("Repeat Off"); + break; + case 1: + ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-one.svg"))); + ui->pbRepeat->setText("Repeat One"); + break; + case 2: + ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-all.svg"))); + ui->pbRepeat->setText("Repeat All"); + break; + } + delete plist; + } + ui->pbAdd->setIcon(QIcon(getThemedIcon(":/img/add.svg"))); + ui->pbRemove->setIcon(QIcon(getThemedIcon(":/img/remove.svg"))); + ui->pbClear->setIcon(QIcon(getThemedIcon(":/img/clear.svg"))); + ui->pbAddFolder->setIcon(QIcon(getThemedIcon(":/img/addfolder.svg"))); + ui->pbSave->setIcon(QIcon(getThemedIcon(":/img/save.svg"))); + ui->pbLoad->setIcon(QIcon(getThemedIcon(":/img/load.svg"))); + qmpMainWindow::getInstance()->registerFunctionality( + plistf = new qmpPlistFunc(this), + std::string("Playlist"), + tr("Playlist").toStdString(), + getThemedIconc(":/img/list.svg"), + 0, + true + ); + if (settings->getOptionRaw("DialogStatus/PListW", QRect(-999, -999, 999, 999)).toRect() != QRect(-999, -999, 999, 999)) + setGeometry(settings->getOptionRaw("DialogStatus/PListW", QRect(-999, -999, 999, 999)).toRect()); + if (settings->getOptionRaw("DialogStatus/PListWShown", 0).toInt()) + { + show(); + qmpMainWindow::getInstance()->setFuncState("Playlist", true); + } } qmpPlistWindow::~qmpPlistWindow() { - qmpMainWindow::getInstance()->unregisterFunctionality("Playlist"); - delete plistf; - delete ui; + qmpMainWindow::getInstance()->unregisterFunctionality("Playlist"); + delete plistf; + delete ui; } void qmpPlistWindow::showEvent(QShowEvent *event) { - if(settings->getOptionBool("Behavior/DialogStatus")) - { - settings->setOptionRaw("DialogStatus/PListWShown",1); - } - if(settings->getOptionRaw("DialogStatus/PListW",QRect(-999,-999,999,999)).toRect()!=QRect(-999,-999,999,999)) - setGeometry(settings->getOptionRaw("DialogStatus/PListW",QRect(-999,-999,999,999)).toRect()); - event->accept(); + if (settings->getOptionBool("Behavior/DialogStatus")) + { + settings->setOptionRaw("DialogStatus/PListWShown", 1); + } + if (settings->getOptionRaw("DialogStatus/PListW", QRect(-999, -999, 999, 999)).toRect() != QRect(-999, -999, 999, 999)) + setGeometry(settings->getOptionRaw("DialogStatus/PListW", QRect(-999, -999, 999, 999)).toRect()); + event->accept(); } void qmpPlistWindow::closeEvent(QCloseEvent *event) { - if(settings->getOptionBool("Behavior/DialogStatus")) - { - settings->setOptionRaw("DialogStatus/PListW",geometry()); - } - setVisible(false); - if(!qmpMainWindow::getInstance()->isFinalizing()) - while(ui->lwFiles->count()>1)delete ui->lwFiles->item(0); - if(!qmpMainWindow::getInstance()->isFinalizing()&&settings->getOptionBool("Behavior/DialogStatus")) - { - settings->setOptionRaw("DialogStatus/PListWShown",0); - } - if(qmpMainWindow::getInstance()->isFinalizing()&&settings->getOptionBool("Behavior/RestorePlaylist")) - { - QSettings* plist=new QSettings(QStandardPaths::writableLocation(QStandardPaths::StandardLocation::ConfigLocation)+QString("/qmpplist"), - QSettings::IniFormat); - plist->setValue("Playlist/FileCount",ui->lwFiles->count()); - for(int i=0;i<ui->lwFiles->count();++i) - plist->setValue("Playlist/File"+QString("%1").arg(i,5,10,QChar('0')),ui->lwFiles->item(i)->text()); - plist->setValue("Playlist/Repeat",repeat); - plist->setValue("Playlist/Shuffle",shuffle); - plist->sync(); - delete plist; - } - qmpMainWindow::getInstance()->setFuncState("Playlist",false); - event->accept(); + if (settings->getOptionBool("Behavior/DialogStatus")) + { + settings->setOptionRaw("DialogStatus/PListW", geometry()); + } + setVisible(false); + if (!qmpMainWindow::getInstance()->isFinalizing()) + while (ui->lwFiles->count() > 1) + delete ui->lwFiles->item(0); + if (!qmpMainWindow::getInstance()->isFinalizing() && settings->getOptionBool("Behavior/DialogStatus")) + { + settings->setOptionRaw("DialogStatus/PListWShown", 0); + } + if (qmpMainWindow::getInstance()->isFinalizing() && settings->getOptionBool("Behavior/RestorePlaylist")) + { + QSettings *plist = new QSettings(QStandardPaths::writableLocation(QStandardPaths::StandardLocation::ConfigLocation) + QString("/qmpplist"), + QSettings::IniFormat); + plist->setValue("Playlist/FileCount", ui->lwFiles->count()); + for (int i = 0; i < ui->lwFiles->count(); ++i) + plist->setValue("Playlist/File" + QString("%1").arg(i, 5, 10, QChar('0')), ui->lwFiles->item(i)->text()); + plist->setValue("Playlist/Repeat", repeat); + plist->setValue("Playlist/Shuffle", shuffle); + plist->sync(); + delete plist; + } + qmpMainWindow::getInstance()->setFuncState("Playlist", false); + event->accept(); } void qmpPlistWindow::dropEvent(QDropEvent *event) { - QList<QUrl> l=event->mimeData()->urls(); - QStringList sl; - for(int i=0;i<l.size();++i) - sl.push_back(l.at(i).toLocalFile()); - insertItems(sl); + QList<QUrl> l = event->mimeData()->urls(); + QStringList sl; + for (int i = 0; i < l.size(); ++i) + sl.push_back(l.at(i).toLocalFile()); + insertItems(sl); } void qmpPlistWindow::dragEnterEvent(QDragEnterEvent *event) { - //if(event->mimeData()->hasFormat("application/x-midi")) - event->acceptProposedAction(); + //if(event->mimeData()->hasFormat("application/x-midi")) + event->acceptProposedAction(); } void qmpPlistWindow::emptyList() { - ui->lwFiles->clear(); + ui->lwFiles->clear(); } void qmpPlistWindow::insertItem(QString i) { - ui->lwFiles->addItem(new QListWidgetItem(i)); + ui->lwFiles->addItem(new QListWidgetItem(i)); } void qmpPlistWindow::insertItems(QStringList il) { - ui->lwFiles->addItems(il); + ui->lwFiles->addItems(il); } int qmpPlistWindow::on_pbAdd_clicked() { - QStringList sl; - if(settings->getOptionBool("Behavior/DialogStatus")) - sl=QFileDialog::getOpenFileNames(this,"Add File",settings->getOptionRaw("DialogStatus/FileDialogPath","").toString(),"Midi files (*.mid *.midi)"); - else - sl=QFileDialog::getOpenFileNames(this,"Add File","","Midi files (*.mid *.midi *.rmi)"); - if(sl.empty())return 0; - for(int i=0;i<sl.size();++i) - ui->lwFiles->addItem(new QListWidgetItem(sl.at(i))); - if(!isVisible())while(ui->lwFiles->count()>1)delete ui->lwFiles->item(0); - if(settings->getOptionBool("Behavior/DialogStatus")) - settings->setOptionRaw("DialogStatus/FileDialogPath", - QUrl(sl.at(0)).toString(QUrl::RemoveFilename)); - return 1; + QStringList sl; + if (settings->getOptionBool("Behavior/DialogStatus")) + sl = QFileDialog::getOpenFileNames(this, "Add File", settings->getOptionRaw("DialogStatus/FileDialogPath", "").toString(), "Midi files (*.mid *.midi)"); + else + sl = QFileDialog::getOpenFileNames(this, "Add File", "", "Midi files (*.mid *.midi *.rmi)"); + if (sl.empty()) + return 0; + for (int i = 0; i < sl.size(); ++i) + ui->lwFiles->addItem(new QListWidgetItem(sl.at(i))); + if (!isVisible()) + while (ui->lwFiles->count() > 1) + delete ui->lwFiles->item(0); + if (settings->getOptionBool("Behavior/DialogStatus")) + settings->setOptionRaw("DialogStatus/FileDialogPath", + QUrl(sl.at(0)).toString(QUrl::RemoveFilename)); + return 1; } void qmpPlistWindow::on_pbAddFolder_clicked() { - QDirIterator di(QFileDialog::getExistingDirectory(this,"Add Folder")); - while(di.hasNext()) - { - QString c=di.next(); - if((c.endsWith(".mid")||c.endsWith(".midi")||c.endsWith(".rmi"))&&fluid_is_midifile(c.toStdString().c_str())) - ui->lwFiles->addItem(new QListWidgetItem(c)); - } + QDirIterator di(QFileDialog::getExistingDirectory(this, "Add Folder")); + while (di.hasNext()) + { + QString c = di.next(); + if ((c.endsWith(".mid") || c.endsWith(".midi") || c.endsWith(".rmi")) && fluid_is_midifile(c.toStdString().c_str())) + ui->lwFiles->addItem(new QListWidgetItem(c)); + } } void qmpPlistWindow::on_pbRemove_clicked() { - QList<QListWidgetItem*> sl=ui->lwFiles->selectedItems(); - for(int i=0;i<sl.size();++i) - { - ui->lwFiles->removeItemWidget(sl.at(i)); - delete sl.at(i); - } + QList<QListWidgetItem *> sl = ui->lwFiles->selectedItems(); + for (int i = 0; i < sl.size(); ++i) + { + ui->lwFiles->removeItemWidget(sl.at(i)); + delete sl.at(i); + } } void qmpPlistWindow::on_pbClear_clicked() { - while(ui->lwFiles->count()>0) - { - QListWidgetItem *d=ui->lwFiles->item(0); - ui->lwFiles->removeItemWidget(d); - delete d; - } + while (ui->lwFiles->count() > 0) + { + QListWidgetItem *d = ui->lwFiles->item(0); + ui->lwFiles->removeItemWidget(d); + delete d; + } } void qmpPlistWindow::on_pbRepeat_clicked() { - ++repeat;repeat%=3; - switch(repeat) - { - case 0: - ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-non.svg"))); - ui->pbRepeat->setText(tr("Repeat Off")); - break; - case 1: - ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-one.svg"))); - ui->pbRepeat->setText(tr("Repeat One")); - break; - case 2: - ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-all.svg"))); - ui->pbRepeat->setText(tr("Repeat All")); - break; - } + ++repeat; + repeat %= 3; + switch (repeat) + { + case 0: + ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-non.svg"))); + ui->pbRepeat->setText(tr("Repeat Off")); + break; + case 1: + ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-one.svg"))); + ui->pbRepeat->setText(tr("Repeat One")); + break; + case 2: + ui->pbRepeat->setIcon(QIcon(getThemedIcon(":/img/repeat-all.svg"))); + ui->pbRepeat->setText(tr("Repeat All")); + break; + } } void qmpPlistWindow::on_pbShuffle_clicked() { - shuffle=1-shuffle; - switch(shuffle) - { - case 1: - ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle.svg"))); - ui->pbShuffle->setText(tr("Shuffle On")); - break; - case 0: - default: - ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle-off.svg"))); - ui->pbShuffle->setText(tr("Shuffle Off")); - break; - } + shuffle = 1 - shuffle; + switch (shuffle) + { + case 1: + ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle.svg"))); + ui->pbShuffle->setText(tr("Shuffle On")); + break; + case 0: + default: + ui->pbShuffle->setIcon(QIcon(getThemedIcon(":/img/shuffle-off.svg"))); + ui->pbShuffle->setText(tr("Shuffle Off")); + break; + } } QString qmpPlistWindow::getFirstItem(bool a) { - if(ui->lwFiles->count()==0)return QString(); - int id=0; - if(shuffle&&!a)id=rand()%ui->lwFiles->count(); - ui->lwFiles->setCurrentRow(id); - return ui->lwFiles->item(id)->text(); + if (ui->lwFiles->count() == 0) + return QString(); + int id = 0; + if (shuffle && !a) + id = rand() % ui->lwFiles->count(); + ui->lwFiles->setCurrentRow(id); + return ui->lwFiles->item(id)->text(); } QString qmpPlistWindow::getLastItem(bool a) { - if(ui->lwFiles->count()==0)return QString(); - int id=ui->lwFiles->count()-1; - if(shuffle&&!a)id=rand()%ui->lwFiles->count(); - ui->lwFiles->setCurrentRow(id); - return ui->lwFiles->item(id)->text(); + if (ui->lwFiles->count() == 0) + return QString(); + int id = ui->lwFiles->count() - 1; + if (shuffle && !a) + id = rand() % ui->lwFiles->count(); + ui->lwFiles->setCurrentRow(id); + return ui->lwFiles->item(id)->text(); } QString qmpPlistWindow::getNextItem() { - if(ui->lwFiles->count()==0)return QString(); - if(repeat==1)return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); - int id=ui->lwFiles->currentRow();++id;id%=ui->lwFiles->count(); - if(shuffle)id=rand()%ui->lwFiles->count(); - ui->lwFiles->setCurrentRow(id); - return ui->lwFiles->item(id)->text(); + if (ui->lwFiles->count() == 0) + return QString(); + if (repeat == 1) + return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); + int id = ui->lwFiles->currentRow(); + ++id; + id %= ui->lwFiles->count(); + if (shuffle) + id = rand() % ui->lwFiles->count(); + ui->lwFiles->setCurrentRow(id); + return ui->lwFiles->item(id)->text(); } QString qmpPlistWindow::getPrevItem() { - if(ui->lwFiles->count()==0)return QString(); - if(repeat==1)return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); - int id=ui->lwFiles->currentRow();--id; - id<0?id+=ui->lwFiles->count():0; - if(shuffle)id=rand()%ui->lwFiles->count(); - ui->lwFiles->setCurrentRow(id); - return ui->lwFiles->item(id)->text(); + if (ui->lwFiles->count() == 0) + return QString(); + if (repeat == 1) + return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); + int id = ui->lwFiles->currentRow(); + --id; + id < 0 ? id += ui->lwFiles->count() : 0; + if (shuffle) + id = rand() % ui->lwFiles->count(); + ui->lwFiles->setCurrentRow(id); + return ui->lwFiles->item(id)->text(); } QString qmpPlistWindow::getSelectedItem() { - if(ui->lwFiles->count()==0)return QString(); - return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); + if (ui->lwFiles->count() == 0) + return QString(); + return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); +} +int qmpPlistWindow::getRepeat() +{ + return repeat; } -int qmpPlistWindow::getRepeat(){return repeat;} void qmpPlistWindow::on_lwFiles_itemDoubleClicked() { - emit selectionChanging(); + emit selectionChanging(); } void qmpPlistWindow::on_pbSave_clicked() { - QSettings* plist=new QSettings(QFileDialog::getSaveFileName(this,tr("Save playlist"),""), - QSettings::IniFormat); - plist->setValue("Playlist/FileCount",ui->lwFiles->count()); - for(int i=0;i<ui->lwFiles->count();++i) - plist->setValue("Playlist/File"+QString("%1").arg(i,5,10,QChar('0')),ui->lwFiles->item(i)->text()); - plist->setValue("Playlist/Repeat",repeat); - plist->setValue("Playlist/Shuffle",shuffle); - plist->sync(); - delete plist; + QSettings *plist = new QSettings(QFileDialog::getSaveFileName(this, tr("Save playlist"), ""), + QSettings::IniFormat); + plist->setValue("Playlist/FileCount", ui->lwFiles->count()); + for (int i = 0; i < ui->lwFiles->count(); ++i) + plist->setValue("Playlist/File" + QString("%1").arg(i, 5, 10, QChar('0')), ui->lwFiles->item(i)->text()); + plist->setValue("Playlist/Repeat", repeat); + plist->setValue("Playlist/Shuffle", shuffle); + plist->sync(); + delete plist; } void qmpPlistWindow::on_pbLoad_clicked() { - QSettings* plist=new QSettings(QFileDialog::getOpenFileName(this,tr("Load playlist"),""), - QSettings::IniFormat); - int fc=plist->value("Playlist/FileCount",0).toInt(); - if(!fc){delete plist;return;} - ui->lwFiles->clear();for(int i=0;i<fc;++i) - ui->lwFiles->addItem(plist->value("Playlist/File"+QString("%1").arg(i,5,10,QChar('0')),"").toString()); - repeat=plist->value("Playlist/Repeat",0).toInt(); - shuffle=plist->value("Playlist/Shuffle",0).toInt(); - switch(shuffle) - { - case 1: - ui->pbShuffle->setIcon(QIcon(":/img/shuffle.svg")); - ui->pbShuffle->setText(tr("Shuffle On")); - break; - case 0: - default: - ui->pbShuffle->setIcon(QIcon(":/img/shuffle-off.svg")); - ui->pbShuffle->setText(tr("Shuffle Off")); - break; - } - switch(repeat) - { - case 0: - ui->pbRepeat->setIcon(QIcon(":/img/repeat-non.svg")); - ui->pbRepeat->setText(tr("Repeat Off")); - break; - case 1: - ui->pbRepeat->setIcon(QIcon(":/img/repeat-one.svg")); - ui->pbRepeat->setText(tr("Repeat One")); - break; - case 2: - ui->pbRepeat->setIcon(QIcon(":/img/repeat-all.svg")); - ui->pbRepeat->setText(tr("Repeat All")); - break; - } - delete plist; + QSettings *plist = new QSettings(QFileDialog::getOpenFileName(this, tr("Load playlist"), ""), + QSettings::IniFormat); + int fc = plist->value("Playlist/FileCount", 0).toInt(); + if (!fc) + { + delete plist; + return; + } + ui->lwFiles->clear(); + for (int i = 0; i < fc; ++i) + ui->lwFiles->addItem(plist->value("Playlist/File" + QString("%1").arg(i, 5, 10, QChar('0')), "").toString()); + repeat = plist->value("Playlist/Repeat", 0).toInt(); + shuffle = plist->value("Playlist/Shuffle", 0).toInt(); + switch (shuffle) + { + case 1: + ui->pbShuffle->setIcon(QIcon(":/img/shuffle.svg")); + ui->pbShuffle->setText(tr("Shuffle On")); + break; + case 0: + default: + ui->pbShuffle->setIcon(QIcon(":/img/shuffle-off.svg")); + ui->pbShuffle->setText(tr("Shuffle Off")); + break; + } + switch (repeat) + { + case 0: + ui->pbRepeat->setIcon(QIcon(":/img/repeat-non.svg")); + ui->pbRepeat->setText(tr("Repeat Off")); + break; + case 1: + ui->pbRepeat->setIcon(QIcon(":/img/repeat-one.svg")); + ui->pbRepeat->setText(tr("Repeat One")); + break; + case 2: + ui->pbRepeat->setIcon(QIcon(":/img/repeat-all.svg")); + ui->pbRepeat->setText(tr("Repeat All")); + break; + } + delete plist; } qmpPlistFunc::qmpPlistFunc(qmpPlistWindow *par) -{p=par;} +{ + p = par; +} void qmpPlistFunc::show() { - p->show(); + p->show(); } void qmpPlistFunc::close() { - p->close(); + p->close(); } |