summaryrefslogtreecommitdiff
path: root/qmpplistwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qmpplistwindow.cpp')
-rw-r--r--qmpplistwindow.cpp139
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();
+}