]> git.sesse.net Git - kdenlive/blobdiff - src/tracksconfigdialog.cpp
Const'ref
[kdenlive] / src / tracksconfigdialog.cpp
index e018283c681dfc6132a9182e9a2964fbbca8af69..f709d00c69173c3aa397c6cddc9ba5d08883fc57 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,15 +78,35 @@ 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")) {
@@ -102,13 +123,18 @@ 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));
@@ -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"