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
{
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);
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());
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);
}
}
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)
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);