summaryrefslogtreecommitdiff
path: root/src/filelist.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/filelist.cc')
-rw-r--r--src/filelist.cc76
1 files changed, 57 insertions, 19 deletions
diff --git a/src/filelist.cc b/src/filelist.cc
index 990ae4c..7b2ec2b 100644
--- a/src/filelist.cc
+++ b/src/filelist.cc
@@ -42,6 +42,7 @@
#include <QComboBox>
#include <QLineEdit>
+#include <QCheckBox>
#include <QStyledItemDelegate>
#include <QPainter>
#include <QHeaderView>
@@ -58,15 +59,22 @@ public:
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const override
{
- // Name:
+ // Main channel:
if(index.column() == 2)
{
+ auto w = new QCheckBox(parent);
+ return w;
+ }
+
+ // Name:
+ if(index.column() == 3)
+ {
auto w = new QLineEdit(parent);
return w;
}
// Channel Map ID:
- if(index.column() == 3)
+ if(index.column() == 4)
{
auto w = new QComboBox(parent);
w->addItem(tr("<None>"), -1);
@@ -84,16 +92,24 @@ public:
void setEditorData(QWidget *editor, const QModelIndex &index) const override
{
- // Name:
+ // Main channel:
if(index.column() == 2)
{
+ auto w = static_cast<QCheckBox*>(editor);
+ auto b = index.data(Qt::EditRole).toBool();
+ w->setCheckState(b ? Qt::Checked : Qt::Unchecked);
+ }
+
+ // Name:
+ if(index.column() == 3)
+ {
auto w = static_cast<QLineEdit*>(editor);
auto s = index.data(Qt::EditRole).toString();
w->setText(s);
}
// Channel Map ID:
- if(index.column() == 3)
+ if(index.column() == 4)
{
auto w = static_cast<QComboBox*>(editor);
auto i = w->findData(index.data(Qt::EditRole).toInt());
@@ -103,15 +119,24 @@ public:
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const override
- { // Name:
+ {
+ // Main channel:
if(index.column() == 2)
{
+ model->setData(index,
+ static_cast<QCheckBox*>(editor)->checkState() == Qt::Checked,
+ Qt::EditRole);
+ }
+
+ // Name:
+ if(index.column() == 3)
+ {
model->setData(index, static_cast<QLineEdit*>(editor)->text(),
Qt::EditRole);
}
// Channel Map ID:
- if(index.column() == 3)
+ if(index.column() == 4)
{
model->setData(index, static_cast<QComboBox*>(editor)->currentData(),
Qt::EditRole);
@@ -189,7 +214,7 @@ public:
int columnCount(const QModelIndex &parent = QModelIndex()) const override
{
- return 4;
+ return 5;
}
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
@@ -223,9 +248,11 @@ public:
{
switch(index.column())
{
+ case 0: return QVariant(); // Master
case 1: return audiofile.getFile();
- case 2: return audiofile.getName();
- case 3:
+ case 2: return audiofile.getMainChannel() ? "x" : " ";
+ case 3: return audiofile.getName();
+ case 4:
{
auto channelMapId = audiofile.getChannelMapId();
if(channelMapId == -1)
@@ -241,9 +268,11 @@ public:
{
switch(index.column())
{
+ case 0: return QVariant(); // Master
case 1: return audiofile.getFile();
- case 2: return audiofile.getName();
- case 3: return audiofile.getChannelMapId();
+ case 2: return audiofile.getMainChannel();
+ case 3: return audiofile.getName();
+ case 4: return audiofile.getChannelMapId();
default: return QVariant();
}
}
@@ -262,8 +291,9 @@ public:
{
case 0: return tr("M");
case 1: return tr("Filename");
- case 2: return tr("Name");
- case 3: return tr("Kit Channel");
+ case 2: return tr("m");
+ case 3: return tr("Name");
+ case 4: return tr("Kit Channel");
default: return QVariant();
}
}
@@ -283,10 +313,12 @@ public:
case 0: // Master
return QAbstractItemModel::flags(index);
case 1: // File
- return QAbstractItemModel::flags(index); // only column 1 is editable
- case 2: // Name
+ return QAbstractItemModel::flags(index);
+ case 2: // Main channel
+ return Qt::ItemIsEditable | QAbstractItemModel::flags(index);
+ case 3: // Name
return Qt::ItemIsEditable | QAbstractItemModel::flags(index);
- case 3: // Channel map id
+ case 4: // Channel map id
return Qt::ItemIsEditable | QAbstractItemModel::flags(index);
}
}
@@ -296,7 +328,8 @@ public:
{
auto audiofile_ids = instrument.getAudioFileList();
- if(index.row() > audiofile_ids.size() || index.column() > 2)
+ if(index.row() > audiofile_ids.size() ||
+ index.column() > (columnCount() - 1))
{
return false;
}
@@ -310,10 +343,13 @@ public:
break;
case 1: // File
break;
- case 2: // Name
+ case 2: // Main Channel
+ audiofile.setMainChannel(value.toBool());
+ break;
+ case 3: // Name
audiofile.setName(value.toString());
break;
- case 3: // Channel map id
+ case 4: // Channel map id
audiofile.setChannelMapId(value.toInt());
break;
default: break;
@@ -345,6 +381,7 @@ FileList::FileList(Instrument& instrument)
this, SLOT(onCustomContextMenu(const QPoint &)));
setRootIsDecorated(false);
header()->resizeSection(0, 24);
+ header()->resizeSection(2, 24);
connect(this, SIGNAL(doubleClicked(const QModelIndex&)),
this, SLOT(selectionChanged(const QModelIndex&)));
@@ -380,6 +417,7 @@ void FileList::addFiles()
audiofile.setName(name);
audiofile.setFile(file);
audiofile.setChannelMapId(-1);
+ audiofile.setMainChannel(false);
i++;
}