summaryrefslogblamecommitdiff
path: root/qmpplistwindow.cpp
blob: 65c01f8408c42c5bc143ab8b2ad72f361bc20e7f (plain) (tree)










































































































































                                                                                                     
#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();
}