diff options
Diffstat (limited to 'qmpplistwindow.cpp')
-rw-r--r-- | qmpplistwindow.cpp | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/qmpplistwindow.cpp b/qmpplistwindow.cpp new file mode 100644 index 0000000..65c01f8 --- /dev/null +++ b/qmpplistwindow.cpp @@ -0,0 +1,139 @@ +#include <cstdlib> +#include <ctime> +#include <QFileDialog> +#include "qmpplistwindow.hpp" +#include "ui_qmpplistwindow.h" +#include "qmpmainwindow.hpp" + +qmpplistwindow::qmpplistwindow(QWidget *parent) : + QDialog(parent), + ui(new Ui::qmpplistwindow) +{ + ui->setupUi(this); + connect(this,SIGNAL(dialogClosing()),parent,SLOT(dialogClosed())); + connect(this,SIGNAL(selectionChanging()),parent,SLOT(selectionChanged())); + repeat=0;shuffle=0; +} + +qmpplistwindow::~qmpplistwindow() +{ + delete ui; +} + +void qmpplistwindow::closeEvent(QCloseEvent *event) +{ + setVisible(false); + emit dialogClosing(); + event->accept(); +} + +void qmpplistwindow::on_pbAdd_clicked() +{ + QStringList sl=QFileDialog::getOpenFileNames(this,"Add File","","Midi files (*.mid *.midi)"); + for(int i=0;i<sl.size();++i) + { + ui->lwFiles->addItem(new QListWidgetItem(sl.at(i))); + } +} + +void qmpplistwindow::on_pbAddFolder_clicked() +{ + QFileDialog::getExistingDirectory(this,"Add Folder"); + //... +} + +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); + } +} + +void qmpplistwindow::on_pbClear_clicked() +{ + 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(":/img/repeat-non.png")); + ui->pbRepeat->setText("Repeat Off"); + break; + case 1: + ui->pbRepeat->setIcon(QIcon(":/img/repeat-one.png")); + ui->pbRepeat->setText("Repeat One"); + break; + case 2: + ui->pbRepeat->setIcon(QIcon(":/img/repeat-all.png")); + ui->pbRepeat->setText("Repeat All"); + break; + } +} + +void qmpplistwindow::on_pbShuffle_clicked() +{ + shuffle=1-shuffle; + switch(shuffle) + { + case 1: + ui->pbShuffle->setIcon(QIcon(":/img/shuffle.png")); + ui->pbShuffle->setText("Shuffle On"); + break; + case 0: + default: + ui->pbShuffle->setIcon(QIcon(":/img/shuffle-off.png")); + ui->pbShuffle->setText("Shuffle Off"); + break; + } +} + +QString qmpplistwindow::getFirstItem() +{ + if(ui->lwFiles->count()==0)return QString(); + int id=0; + if(shuffle)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(); +} +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(); +} +QString qmpplistwindow::getSelectedItem() +{ + if(ui->lwFiles->count()==0)return QString(); + return ui->lwFiles->item(ui->lwFiles->currentRow())->text(); +} +int qmpplistwindow::getRepeat(){return repeat;} + +void qmpplistwindow::on_lwFiles_itemDoubleClicked() +{ + emit selectionChanging(); +} |