This repository has been archived by the owner. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3631ad1
commit a8e4f0b
Showing
13 changed files
with
749 additions
and
321 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,288 @@ | ||
#include "FileSelectionWidget.h" | ||
#include "ui_FileSelectionWidget.h" | ||
#include <QFileDialog> | ||
#include <QDebug> | ||
|
||
FileSelectionWidget::FileSelectionWidget(QWidget *parent) : | ||
QWidget(parent), | ||
ui(new Ui::FileSelectionWidget) | ||
{ | ||
ui->setupUi(this); | ||
QIcon::setThemeName("Tango"); | ||
|
||
ui->pushButton_moveUp->setIcon(QIcon(":icons/go-up")); | ||
ui->pushButton_moveDown->setIcon(QIcon(":icons/go-down")); | ||
ui->pushButton_remove->setIcon(QIcon(":icons/list-remove")); | ||
ui->pushButton_addFile->setIcon(QIcon(":icons/document-new")); | ||
ui->pushButton_addFolder->setIcon(QIcon(":icons/folder-new")); | ||
|
||
ui->lineEdit_defaultRepetitions->setText(QString::number(defaultRepetitions)); | ||
ui->lineEdit_defaultDuration->setText(QString::number(defaultDuration)); | ||
|
||
QList<int> sizes; | ||
sizes.push_back(5); | ||
sizes.push_back(600); | ||
sizes.push_back(5); | ||
sizes.push_back(20); | ||
ui->splitter->setSizes(sizes); | ||
|
||
connect(ui->listWidget_fileName,SIGNAL(itemSelectionChanged()),this,SLOT(fileSelectionChanged())); | ||
connect(ui->listWidget_repetitions,SIGNAL(itemSelectionChanged()), this, SLOT(repetitionSelectionChanged())); | ||
connect(ui->listWidget_duration,SIGNAL(itemSelectionChanged()), this, SLOT(durationSelectionChanged())); | ||
connect(ui->listWidget_repetitions, SIGNAL(currentTextChanged(QString)), this, SLOT(repetitionSelectionChanged())); | ||
connect(ui->listWidget_duration, SIGNAL(currentTextChanged(QString)), this, SLOT(durationSelectionChanged())); | ||
|
||
QIntValidator* intValidator = new QIntValidator(0, 999999, this); | ||
QDoubleValidator* doubleValidator = new QDoubleValidator(0, 999999, 2, this); | ||
|
||
ui->lineEdit_defaultRepetitions->setValidator(intValidator); | ||
ui->lineEdit_defaultDuration->setValidator(doubleValidator); | ||
|
||
fileFilter = tr("Audio Files (*.rcx)"); | ||
} | ||
|
||
FileSelectionWidget::~FileSelectionWidget() | ||
{ | ||
delete ui; | ||
} | ||
|
||
QStringList FileSelectionWidget::getFilenames() | ||
{ | ||
QStringList filenames; | ||
|
||
for(int i=0;i<ui->listWidget_fileName->count();i++){ | ||
int repetitions = ui->listWidget_repetitions->item(i)->text().toInt(); | ||
for(int j = 1; j<=repetitions; j++){ | ||
filenames.append(ui->listWidget_fileName->item(i)->text()); | ||
} | ||
} | ||
return filenames; | ||
} | ||
|
||
QVector<double> FileSelectionWidget::getDurations() | ||
{ | ||
QVector<double> durations; | ||
|
||
for(int i=0;i<ui->listWidget_duration->count();i++){ | ||
int repetitions = ui->listWidget_repetitions->item(i)->text().toInt(); | ||
for(int j = 1; j<=repetitions; j++){ | ||
durations.append(ui->listWidget_duration->item(i)->text().toInt()); | ||
} | ||
} | ||
return durations; | ||
} | ||
void FileSelectionWidget::setFilenames(QStringList filenames){ | ||
for(int i=0;i<filenames.size();i++){ | ||
QListWidgetItem *newItem = new QListWidgetItem; | ||
newItem->setText(filenames.at(i)); | ||
ui->listWidget_fileName->addItem(newItem); | ||
|
||
QListWidgetItem *newRepetitionItem = new QListWidgetItem; | ||
newRepetitionItem->setText(QString::number(defaultRepetitions)); | ||
newRepetitionItem->setFlags(newRepetitionItem->flags() |= Qt::ItemIsEditable); | ||
ui->listWidget_repetitions->addItem(newRepetitionItem); | ||
|
||
QListWidgetItem *newDurationItem = new QListWidgetItem; | ||
newDurationItem->setText(QString::number(defaultDuration)); | ||
newDurationItem->setFlags(newRepetitionItem->flags() |= Qt::ItemIsEditable); | ||
ui->listWidget_duration->addItem(newDurationItem); | ||
} | ||
ui->listWidget_repetitions->setCurrentRow(0); | ||
|
||
filesChanged(); | ||
} | ||
|
||
void FileSelectionWidget::setFolder(QString dirName){ | ||
QDir dir(dirName, this->fileFilter); | ||
QStringList fileNames = dir.entryList(); | ||
if(!fileNames.isEmpty()){ | ||
for(int i=0;i<fileNames.size();i++){ | ||
QListWidgetItem *newItem = new QListWidgetItem; | ||
newItem->setText(dirName + "/" + fileNames.at(i)); | ||
QListWidgetItem *newRepetitionItem = new QListWidgetItem; | ||
newRepetitionItem->setText(QString::number(defaultRepetitions)); | ||
newRepetitionItem->setFlags(newRepetitionItem->flags() |= Qt::ItemIsEditable); | ||
QListWidgetItem *newDurationItem = new QListWidgetItem; | ||
newDurationItem->setText(QString::number(defaultDuration)); | ||
newDurationItem->setFlags(newDurationItem->flags() |= Qt::ItemIsEditable); | ||
QListWidgetItem *selectedItem = ui->listWidget_fileName->currentItem(); | ||
if(selectedItem){ /*Add item at current position*/ | ||
ui->listWidget_fileName->insertItem(ui->listWidget_fileName->row(selectedItem), newItem); | ||
ui->listWidget_repetitions->insertItem(ui->listWidget_fileName->row(selectedItem), newRepetitionItem); | ||
ui->listWidget_duration->insertItem(ui->listWidget_fileName->row(selectedItem), newDurationItem); | ||
}else{/*Add item to the end if nothing is selected*/ | ||
ui->listWidget_fileName->addItem(newItem); | ||
ui->listWidget_repetitions->addItem(newRepetitionItem); | ||
ui->listWidget_duration->addItem(newDurationItem); | ||
} | ||
} | ||
ui->listWidget_repetitions->setCurrentRow(0); | ||
|
||
filesChanged(); | ||
} | ||
|
||
} | ||
|
||
void FileSelectionWidget::setCurrent(int idx){ | ||
if(idx < ui->listWidget_fileName->count()){ | ||
ui->listWidget_fileName->setCurrentRow(idx); | ||
} | ||
} | ||
|
||
void FileSelectionWidget::fileSelectionChanged() | ||
{ | ||
int currentRow = ui->listWidget_fileName->row(ui->listWidget_fileName->currentItem()); | ||
if(ui->listWidget_repetitions->row(ui->listWidget_repetitions->currentItem()) != currentRow){ | ||
ui->listWidget_repetitions->setCurrentRow(currentRow); | ||
} | ||
if(ui->listWidget_duration->row(ui->listWidget_duration->currentItem()) != currentRow){ | ||
ui->listWidget_duration->setCurrentRow(currentRow); | ||
} | ||
emit(selectedFileChanged(ui->listWidget_fileName->item(currentRow)->text())); | ||
} | ||
|
||
void FileSelectionWidget::repetitionSelectionChanged() | ||
{ | ||
int currentRow = ui->listWidget_repetitions->row(ui->listWidget_repetitions->currentItem()); | ||
if(ui->listWidget_fileName->row(ui->listWidget_fileName->currentItem()) != currentRow){ | ||
ui->listWidget_fileName->setCurrentRow(currentRow); | ||
} | ||
if(ui->listWidget_duration->row(ui->listWidget_duration->currentItem()) != currentRow){ | ||
ui->listWidget_duration->setCurrentRow(currentRow); | ||
} | ||
emit(selectedFileChanged(ui->listWidget_fileName->item(currentRow)->text())); | ||
} | ||
|
||
void FileSelectionWidget::durationSelectionChanged() | ||
{ | ||
int currentRow = ui->listWidget_duration->row(ui->listWidget_duration->currentItem()); | ||
if(ui->listWidget_fileName->row(ui->listWidget_fileName->currentItem()) != currentRow){ | ||
ui->listWidget_fileName->setCurrentRow(currentRow); | ||
} | ||
if(ui->listWidget_repetitions->row(ui->listWidget_repetitions->currentItem()) != currentRow){ | ||
ui->listWidget_repetitions->setCurrentRow(currentRow); | ||
} | ||
emit(selectedFileChanged(ui->listWidget_fileName->item(currentRow)->text())); | ||
} | ||
|
||
void FileSelectionWidget::on_pushButton_moveUp_clicked() | ||
{ | ||
QListWidgetItem *selectedItem = ui->listWidget_fileName->currentItem(); | ||
if(!selectedItem) | ||
return; | ||
int currentRow = ui->listWidget_fileName->row(selectedItem); | ||
ui->listWidget_fileName->takeItem(currentRow); | ||
ui->listWidget_fileName->insertItem (currentRow-1, selectedItem); | ||
ui->listWidget_fileName->setCurrentItem(selectedItem); | ||
|
||
selectedItem = ui->listWidget_repetitions->item(currentRow); | ||
ui->listWidget_repetitions->takeItem(currentRow); | ||
ui->listWidget_repetitions->insertItem (currentRow-1, selectedItem); | ||
ui->listWidget_repetitions->setCurrentItem(selectedItem); | ||
|
||
selectedItem = ui->listWidget_duration->item(currentRow); | ||
ui->listWidget_duration->takeItem(currentRow); | ||
ui->listWidget_duration->insertItem (currentRow-1, selectedItem); | ||
ui->listWidget_duration->setCurrentItem(selectedItem); | ||
|
||
filesChanged(); | ||
} | ||
|
||
void FileSelectionWidget::on_pushButton_moveDown_clicked() | ||
{ | ||
QListWidgetItem *selectedItem = ui->listWidget_fileName->currentItem(); | ||
if(!selectedItem) | ||
return; | ||
int currentRow = ui->listWidget_fileName->row(selectedItem); | ||
ui->listWidget_fileName->takeItem(currentRow); | ||
ui->listWidget_fileName->insertItem (currentRow+1, selectedItem); | ||
ui->listWidget_fileName->setCurrentItem(selectedItem); | ||
|
||
selectedItem = ui->listWidget_repetitions->item(currentRow); | ||
ui->listWidget_repetitions->takeItem(currentRow); | ||
ui->listWidget_repetitions->insertItem (currentRow+1, selectedItem); | ||
ui->listWidget_repetitions->setCurrentItem(selectedItem); | ||
|
||
selectedItem = ui->listWidget_duration->item(currentRow); | ||
ui->listWidget_duration->takeItem(currentRow); | ||
ui->listWidget_duration->insertItem (currentRow+1, selectedItem); | ||
ui->listWidget_duration->setCurrentItem(selectedItem); | ||
|
||
filesChanged(); | ||
} | ||
|
||
void FileSelectionWidget::on_pushButton_remove_clicked() | ||
{ | ||
QListWidgetItem *selectedItem = ui->listWidget_fileName->currentItem(); | ||
if(selectedItem){ /*Delete selected item*/ | ||
/*necessary?*/ | ||
ui->listWidget_fileName->clearSelection(); | ||
int currentRow = ui->listWidget_fileName->row(selectedItem); | ||
ui->listWidget_fileName->takeItem(currentRow); | ||
ui->listWidget_repetitions->takeItem(currentRow); | ||
ui->listWidget_duration->takeItem(currentRow); | ||
}else{/*Delete last item if nothing is selected*/ | ||
delete ui->listWidget_fileName->item( ui->listWidget_fileName->count() - 1 ); | ||
delete ui->listWidget_repetitions->item( ui->listWidget_repetitions->count() - 1 ); | ||
delete ui->listWidget_duration->item( ui->listWidget_repetitions->count() - 1 ); | ||
} | ||
filesChanged(); | ||
} | ||
|
||
void FileSelectionWidget::on_pushButton_addFile_clicked() | ||
{ | ||
// if (!selectedPositiveFileName.isEmpty()) { | ||
// QDir currentDir; | ||
// // remember this directory next time the selector is opened | ||
// appSettings.setValue(DEFAULT_DIR_KEY, | ||
// currentDir.absoluteFilePath(selectedPositiveFileName)); | ||
|
||
// ui->lineEdit_filePositive->setText(selectedPositiveFileName); | ||
// } | ||
|
||
QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open File"), | ||
"", | ||
this->fileFilter); | ||
if(!fileNames.isEmpty()){ | ||
for(int i=0;i<fileNames.size();i++){ | ||
QListWidgetItem *newItem = new QListWidgetItem; | ||
QListWidgetItem *newRepetitionItem = new QListWidgetItem; | ||
QListWidgetItem *newDurationItem = new QListWidgetItem; | ||
newRepetitionItem->setText(QString::number(defaultRepetitions)); | ||
newRepetitionItem->setFlags(newRepetitionItem->flags() |= Qt::ItemIsEditable); | ||
newDurationItem->setText(QString::number(defaultDuration)); | ||
newDurationItem->setFlags(newDurationItem->flags() |= Qt::ItemIsEditable); | ||
newItem->setText(fileNames.at(i)); | ||
QListWidgetItem *selectedItem = ui->listWidget_fileName->currentItem(); | ||
int currentRow = ui->listWidget_fileName->row(selectedItem); | ||
if(selectedItem){ /*Add item at current position*/ | ||
ui->listWidget_fileName->insertItem(currentRow, newItem); | ||
ui->listWidget_repetitions->insertItem(currentRow, newRepetitionItem); | ||
ui->listWidget_duration->insertItem(currentRow, newDurationItem); | ||
}else{/*Add item to the end if nothing is selected*/ | ||
ui->listWidget_fileName->addItem(newItem); | ||
ui->listWidget_repetitions->addItem(newRepetitionItem); | ||
ui->listWidget_duration->addItem(newDurationItem); | ||
} | ||
} | ||
filesChanged(); | ||
} | ||
} | ||
|
||
void FileSelectionWidget::on_pushButton_addFolder_clicked() | ||
{ | ||
QString dirName = QFileDialog::getExistingDirectory(this, tr("Open Directory"), | ||
tr(""), | ||
QFileDialog::ShowDirsOnly); | ||
setFolder(dirName); | ||
} | ||
|
||
void FileSelectionWidget::on_lineEdit_defaultRepetitions_editingFinished() | ||
{ | ||
defaultRepetitions = ui->lineEdit_defaultRepetitions->text().toInt(); | ||
} | ||
|
||
void FileSelectionWidget::on_lineEdit_defaultDuration_editingFinished() | ||
{ | ||
defaultDuration = ui->lineEdit_defaultDuration->text().toDouble(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
#ifndef FILESELECTIONWIDGET_H | ||
#define FILESELECTIONWIDGET_H | ||
|
||
#include <QWidget> | ||
|
||
namespace Ui { | ||
class FileSelectionWidget; | ||
} | ||
|
||
class FileSelectionWidget : public QWidget | ||
{ | ||
Q_OBJECT | ||
|
||
public: | ||
explicit FileSelectionWidget(QWidget *parent = 0); | ||
~FileSelectionWidget(); | ||
void setFilenames(QStringList); | ||
QStringList getFilenames(); | ||
//QVector<int> getRepetitions(); | ||
QVector<double> getDurations(); | ||
void setFolder(QString); | ||
void setCurrent(int); | ||
QString fileFilter; | ||
int defaultRepetitions = 10; | ||
double defaultDuration = 10; | ||
|
||
private: | ||
|
||
private slots: | ||
void fileSelectionChanged(); | ||
void repetitionSelectionChanged(); | ||
void durationSelectionChanged(); | ||
void on_pushButton_moveUp_clicked(); | ||
void on_pushButton_moveDown_clicked(); | ||
void on_pushButton_remove_clicked(); | ||
void on_pushButton_addFile_clicked(); | ||
void on_pushButton_addFolder_clicked(); | ||
|
||
void on_lineEdit_defaultRepetitions_editingFinished(); | ||
|
||
void on_lineEdit_defaultDuration_editingFinished(); | ||
|
||
signals: | ||
void filesChanged(); | ||
void selectedFileChanged(QString filename); | ||
|
||
private: | ||
Ui::FileSelectionWidget *ui; | ||
}; | ||
|
||
#endif // FILESELECTIONWIDGET_H |
Oops, something went wrong.