]> git.sesse.net Git - kdenlive/blobdiff - src/tracksconfigdialog.cpp
Integrate with the required MLT hooks for getting Movit to work.
[kdenlive] / src / tracksconfigdialog.cpp
index e018283c681dfc6132a9182e9a2964fbbca8af69..d2736deaf50f5b0461d009934195bdf5988f96f5 100644 (file)
@@ -23,6 +23,7 @@
 #include <QTableWidget>
 #include <QComboBox>
 #include <KDebug>
+#include <KIcon>
 
 TracksDelegate::TracksDelegate(QObject *parent) :
         QItemDelegate(parent)
@@ -43,7 +44,7 @@ void TracksDelegate::setEditorData(QWidget *editor, const QModelIndex &index) co
     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);
 }
 
@@ -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 <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);
@@ -102,19 +123,24 @@ const QList <TrackInfo> TracksConfigDialog::tracksList()
     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);
@@ -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<int>();
 }
 
 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"