]> git.sesse.net Git - kdenlive/commitdiff
Allow loading and saving of only one category of markers
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 20 Oct 2012 15:03:02 +0000 (17:03 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 20 Oct 2012 15:03:02 +0000 (17:03 +0200)
src/clipproperties.cpp
src/customtrackview.cpp
src/kdenlivesettings.kcfg
src/mainwindow.cpp
src/markerdialog.cpp
src/widgets/clipproperties_ui.ui

index 3fd5b351e4eca050e6bd5e3905f7879f5db89e31..991666340ad4d06ca4433574d84a162694cb3952 100644 (file)
@@ -773,11 +773,16 @@ void ClipProperties::slotEditMarker()
 void ClipProperties::slotDeleteMarker()
 {
     QList < CommentedTime > marks = m_clip->commentedSnapMarkers();
-    int pos = m_view.markers_list->currentIndex().row();
-    if (pos < 0 || pos > marks.count() - 1) return;
-    CommentedTime marker = marks.at(pos);
-    marker.setMarkerType(-1);
-    emit addMarker(m_clip->getId(), marker);
+    QList < CommentedTime > toDelete;
+    for (int i = 0; i < marks.count(); i++) {
+       if (m_view.markers_list->topLevelItem(i)->isSelected()) {
+           CommentedTime marker = marks.at(i);
+           marker.setMarkerType(-1);
+           toDelete << marker;
+       }
+    }
+    for (int i = 0; i < toDelete.count(); i++)
+       emit addMarker(m_clip->getId(), toDelete.at(i));
 }
 
 const QString &ClipProperties::clipId() const
index a82b48bb7994de8b9ae289ed4f5c829d6555001a..396625b5deb4101770251f36944502611001d9c1 100644 (file)
@@ -5296,18 +5296,39 @@ void CustomTrackView::slotSaveClipMarkers(const QString &id)
 {
     DocClipBase *base = m_document->clipManager()->getClipById(id);
     QList < CommentedTime > markers = base->commentedSnapMarkers();
-    QString data;
-    for (int i = 0; i < markers.count(); i++) {
-       data.append(QString::number(markers.at(i).time().seconds()));
-       data.append("\t");
-       data.append(QString::number(markers.at(i).time().seconds()));
-       data.append("\t");
-       data.append(markers.at(i).comment());
-       data.append("\n");
-    }
-    if (!data.isEmpty()) {
-       QString url = KFileDialog::getSaveFileName(KUrl("kfiledialog:///projectfolder"), "text/plain", this, i18n("Save markers"));
+    if (!markers.isEmpty()) {
+       // Set  up categories
+       QComboBox *cbox = new QComboBox;
+       cbox->insertItem(0, i18n("All categories"));
+       for (int i = 0; i < 5; ++i) {
+           cbox->insertItem(i + 1, i18n("Category %1", i));
+           cbox->setItemData(i + 1, CommentedTime::markerColor(i), Qt::DecorationRole);
+       }
+       cbox->setCurrentIndex(0);
+       KFileDialog fd(KUrl("kfiledialog:///projectfolder"), "text/plain", this, cbox);
+       fd.setMode(KFile::File);
+       fd.setOperationMode(KFileDialog::Saving);
+       fd.exec();
+       QString url = fd.selectedFile();
+       //QString url = KFileDialog::getSaveFileName(KUrl("kfiledialog:///projectfolder"), "text/plain", this, i18n("Save markers"));
        if (url.isEmpty()) return;
+
+       QString data;
+       int category = cbox->currentIndex() - 1;
+       for (int i = 0; i < markers.count(); i++) {
+           if (category >= 0) {
+               // Save only the markers in selected category
+               if (markers.at(i).markerType() != category) continue;
+           }
+           data.append(QString::number(markers.at(i).time().seconds()));
+           data.append("\t");
+           data.append(QString::number(markers.at(i).time().seconds()));
+           data.append("\t");
+           data.append(markers.at(i).comment());
+           data.append("\n");
+       }
+       delete cbox;
+       
        QFile file(url);
        if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
            emit displayMessage(i18n("Cannot open file %1", url), ErrorMessage);
@@ -5320,11 +5341,25 @@ void CustomTrackView::slotSaveClipMarkers(const QString &id)
 
 void CustomTrackView::slotLoadClipMarkers(const QString &id)
 {
-    KUrl url = KFileDialog::getOpenUrl(KUrl("kfiledialog:///projectfolder"), "text/plain", this, i18n("Load marker file"));
+    QComboBox *cbox = new QComboBox;
+    for (int i = 0; i < 5; ++i) {
+       cbox->insertItem(i, i18n("Category %1", i));
+       cbox->setItemData(i, CommentedTime::markerColor(i), Qt::DecorationRole);
+    }
+    cbox->setCurrentIndex(KdenliveSettings::default_marker_type());
+    KFileDialog fd(KUrl("kfiledialog:///projectfolder"), "text/plain", this, cbox);
+    fd.setMode(KFile::File);
+    fd.setOperationMode(KFileDialog::Opening);
+    fd.exec();
+    QString url = fd.selectedFile();
+       
+    //KUrl url = KFileDialog::getOpenUrl(KUrl("kfiledialog:///projectfolder"), "text/plain", this, i18n("Load marker file"));
     if (url.isEmpty()) return;
-    QFile file(url.path());
+    int category = cbox->currentIndex();
+    delete cbox;
+    QFile file(url);
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
-       emit displayMessage(i18n("Cannot open file %1", url.fileName()), ErrorMessage);
+       emit displayMessage(i18n("Cannot open file %1", KUrl(url).fileName()), ErrorMessage);
        return;
     }
     QString data = QString::fromUtf8(file.readAll());
@@ -5364,10 +5399,10 @@ void CustomTrackView::slotLoadClipMarkers(const QString &id)
        if (!markerText.isEmpty()) {
            // Marker found, add it
            //TODO: allow user to set a marker category
-           CommentedTime marker1(GenTime(time1), markerText);
+           CommentedTime marker1(GenTime(time1), markerText, category);
            slotAddClipMarker(id, marker1, command);
            if (time2 > 0 && time2 != time1) {
-               CommentedTime marker2(GenTime(time2), markerText);
+               CommentedTime marker2(GenTime(time2), markerText, category);
                slotAddClipMarker(id, marker2, command);
            }
        }
index 96a4f57f48eefabadc62ce5e059e6c4c73bc4576..ca30931725b8dec9b8207446dd919a77cae385d4 100644 (file)
       <default>true</default>
     </entry>
 
+    <entry name="default_marker_type" type="Int">
+      <label>Default category for newly created clip markers.</label>
+      <default>0</default>
+    </entry>
+
   </group>
 
 </kcfg>
index 9d6e64d0860d52981d47e3e480911d31d8a388dd..5f9e06618872c47faf56ea3e784c4772c0ee4c66 100644 (file)
@@ -2835,7 +2835,7 @@ void MainWindow::slotAddClipMarker()
         return;
     }
     QString id = clip->getId();
-    CommentedTime marker(pos, i18n("Marker"));
+    CommentedTime marker(pos, i18n("Marker"), KdenliveSettings::default_marker_type());
     QPointer<MarkerDialog> d = new MarkerDialog(clip, marker,
                        m_activeDocument->timecode(), i18n("Add Marker"), this);
     if (d->exec() == QDialog::Accepted)
@@ -2948,7 +2948,7 @@ void MainWindow::slotAddMarkerGuideQuickly()
             return;
         }
         //TODO: allow user to set default marker category
-       CommentedTime marker(pos, m_activeDocument->timecode().getDisplayTimecode(pos, false));
+       CommentedTime marker(pos, m_activeDocument->timecode().getDisplayTimecode(pos, false), KdenliveSettings::default_marker_type());
         m_activeTimeline->projectView()->slotAddClipMarker(clip->getId(), marker);
     } else {
         m_activeTimeline->projectView()->slotAddGuide(false);
index 5846662f56104bf8e62765a4779d4659516032a3..e789cc150da12e57378b42263a7d5dc74dea1644 100644 (file)
@@ -128,6 +128,7 @@ void MarkerDialog::slotUpdateThumb()
 
 CommentedTime MarkerDialog::newMarker()
 {
+    KdenliveSettings::setDefault_marker_type(marker_type->currentIndex());
     return CommentedTime(m_in->gentime(), marker_comment->text(), marker_type->currentIndex());
 }
 
index 21544e814c2855d8cadf2efa263d604348d5c57d..c926aa923399045f018e5cfdaed6c2dac97da480 100644 (file)
          <property name="alternatingRowColors">
           <bool>true</bool>
          </property>
+         <property name="selectionMode">
+          <enum>QAbstractItemView::ExtendedSelection</enum>
+         </property>
          <property name="rootIsDecorated">
           <bool>false</bool>
          </property>