#include <QTableWidget>
#include <QComboBox>
#include <KDebug>
+#include <KIcon>
TracksDelegate::TracksDelegate(QObject *parent) :
QItemDelegate(parent)
QComboBox *comboBox = qobject_cast<QComboBox *>(editor);
if (!comboBox)
return;
- int pos = comboBox->findText(index.model()->data(index).toString(), Qt::MatchExactly);
+ const int pos = comboBox->findText(index.model()->data(index).toString(), Qt::MatchExactly);
comboBox->setCurrentIndex(pos);
}
table->setItemDelegateForColumn(1, new TracksDelegate(this));
+ buttonReset->setIcon(KIcon("document-revert"));
+ buttonReset->setToolTip(i18n("Reset"));
+ connect(buttonReset, SIGNAL(clicked()), this, SLOT(setupOriginal()));
+
+ buttonAdd->setIcon(KIcon("list-add"));
+ buttonAdd->setToolTip(i18n("Add Track"));
+ buttonAdd->setEnabled(false);
+
+ buttonDelete->setIcon(KIcon("list-remove"));
+ buttonDelete->setToolTip(i18n("Delete Track"));
+ connect(buttonDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
+
+ buttonUp->setIcon(KIcon("arrow-up"));
+ buttonUp->setToolTip(i18n("Move Track upwards"));
+ buttonUp->setEnabled(false);
+
+ buttonDown->setIcon(KIcon("arrow-down"));
+ buttonDown->setToolTip(i18n("Move Track downwards"));
+ buttonDown->setEnabled(false);
+
setupOriginal(selected);
- connect(table, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(slotUpdateRow(QTableWidgetItem *)));
+ connect(table, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(slotUpdateRow(QTableWidgetItem*)));
}
const QList <TrackInfo> TracksConfigDialog::tracksList()
{
QList <TrackInfo> tracks;
TrackInfo info;
- for (int i = table->rowCount() - 1; i >= 0; i--) {
+ for (int i = table->rowCount() - 1; i >= 0; --i) {
info.trackName = table->item(i, 0)->text();
QTableWidgetItem *item = table->item(i, 1);
if (item->text() == i18n("Audio")) {
- info.type = AUDIOTRACK;
+ info.type = AudioTrack;
info.isBlind = true;
} else {
- info.type = VIDEOTRACK;
+ info.type = VideoTrack;
info.isBlind = (table->item(i, 2)->checkState() == Qt::Checked);
}
info.isMute = (table->item(i, 3)->checkState() == Qt::Checked);
return tracks;
}
+QList <int> TracksConfigDialog::deletedTracks() const
+{
+ return m_deletedRows;
+}
+
void TracksConfigDialog::setupOriginal(int selected)
{
table->setRowCount(m_doc->tracksCount());
QStringList numbers;
TrackInfo info;
- for (int i = m_doc->tracksCount() - 1; i >= 0; i--) {
+ for (int i = m_doc->tracksCount() - 1; i >= 0; --i) {
numbers << QString::number(i);
info = m_doc->trackInfoAt(m_doc->tracksCount() - i - 1);
table->setItem(i, 0, new QTableWidgetItem(info.trackName));
QTableWidgetItem *item1 = new QTableWidgetItem(i18n("Video"));
- if (info.type == AUDIOTRACK)
+ if (info.type == AudioTrack)
item1->setText(i18n("Audio"));
table->setItem(i, 1, item1);
table->openPersistentEditor(item1);
QTableWidgetItem *item2 = new QTableWidgetItem("");
item2->setFlags(item2->flags() & ~Qt::ItemIsEditable);
item2->setCheckState(info.isBlind ? Qt::Checked : Qt::Unchecked);
- if (info.type == AUDIOTRACK)
+ if (info.type == AudioTrack)
item2->setFlags(item2->flags() & ~Qt::ItemIsEnabled);
table->setItem(i, 2, item2);
table->resizeColumnsToContents();
if (selected != -1)
table->selectRow(selected);
+
+ m_deletedRows = QList<int>();
}
void TracksConfigDialog::slotUpdateRow(QTableWidgetItem* item)
}
}
+void TracksConfigDialog::slotDelete()
+{
+ int row = table->currentRow();
+ int i = 0;
+ while (i < m_deletedRows.count()) {
+ if (m_deletedRows.at(i) == row)
+ return;
+ if (m_deletedRows.at(i) > row)
+ break;
+ ++i;
+ }
+ m_deletedRows.insert(i, row);
+ for (i = 0; i < table->columnCount(); ++i) {
+ QTableWidgetItem *item = table->item(row, i);
+ item->setFlags(Qt::NoItemFlags);
+ item->setBackground(palette().dark());
+ }
+}
+
#include "tracksconfigdialog.moc"