X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftracksconfigdialog.cpp;h=d2736deaf50f5b0461d009934195bdf5988f96f5;hb=64834d517d243b2a7672080453324bf8872ed60d;hp=e018283c681dfc6132a9182e9a2964fbbca8af69;hpb=2de6a4383d1837c573e064307cd7f8d82eec6b6b;p=kdenlive diff --git a/src/tracksconfigdialog.cpp b/src/tracksconfigdialog.cpp index e018283c..d2736dea 100644 --- a/src/tracksconfigdialog.cpp +++ b/src/tracksconfigdialog.cpp @@ -23,6 +23,7 @@ #include #include #include +#include TracksDelegate::TracksDelegate(QObject *parent) : QItemDelegate(parent) @@ -43,7 +44,7 @@ void TracksDelegate::setEditorData(QWidget *editor, const QModelIndex &index) co QComboBox *comboBox = qobject_cast(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); } @@ -77,22 +78,42 @@ TracksConfigDialog::TracksConfigDialog(KdenliveDoc * doc, int selected, QWidget* 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 TracksConfigDialog::tracksList() { QList 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); @@ -102,19 +123,24 @@ const QList TracksConfigDialog::tracksList() return tracks; } +QList 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); @@ -122,7 +148,7 @@ void TracksConfigDialog::setupOriginal(int selected) 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); @@ -141,6 +167,8 @@ void TracksConfigDialog::setupOriginal(int selected) table->resizeColumnsToContents(); if (selected != -1) table->selectRow(selected); + + m_deletedRows = QList(); } void TracksConfigDialog::slotUpdateRow(QTableWidgetItem* item) @@ -157,4 +185,23 @@ 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"