From f01893e9e1a3a2c98712affacb369559862297b0 Mon Sep 17 00:00:00 2001 From: Dan Dennedy Date: Sat, 4 Jan 2025 12:08:38 -0800 Subject: [PATCH] automatically refresh Not In Timeline playlist bin --- src/docks/playlistdock.cpp | 10 ++++++++++ src/docks/playlistdock.h | 1 + src/mainwindow.cpp | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/docks/playlistdock.cpp b/src/docks/playlistdock.cpp index 5278d494b4..75f202ed30 100644 --- a/src/docks/playlistdock.cpp +++ b/src/docks/playlistdock.cpp @@ -294,6 +294,7 @@ class PlaylistProxyModel : public QSortFilterProxyModel { m_bin.clear(); m_smartBin = static_cast(bin); + LOG_DEBUG() << m_smartBin; switch (bin) { case PlaylistDock::SmartBinDuplicates: { @@ -1751,6 +1752,15 @@ void PlaylistDock::onPlaylistCleared() Actions["playlistSelectAllAction"]->setEnabled(nonEmptyModel); } +void PlaylistDock::refreshTimelineSmartBins() +{ + auto items = ui->treeWidget->selectedItems(); + if (!items.isEmpty() && SmartBinNotInTimeline == items.first()->data(0, Qt::UserRole).toInt() + && m_proxyModel->rowCount() > 0) { + m_proxyModel->setSmartBin(SmartBinNotInTimeline); + } +} + void PlaylistDock::onDropped(const QMimeData *data, int row) { if (data && data->hasUrls()) { diff --git a/src/docks/playlistdock.h b/src/docks/playlistdock.h index bba67493c2..12ae59db98 100644 --- a/src/docks/playlistdock.h +++ b/src/docks/playlistdock.h @@ -98,6 +98,7 @@ public slots: void onPlaylistCreated(); void onPlaylistLoaded(); void onPlaylistCleared(); + void refreshTimelineSmartBins(); private slots: diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 20b288dd1d..85b73a7d4d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -488,6 +488,8 @@ void MainWindow::setupAndConnectDocks() connect(m_timelineDock->model(), SIGNAL(created()), SLOT(onMultitrackCreated())); connect(m_timelineDock->model(), SIGNAL(closed()), SLOT(onMultitrackClosed())); connect(m_timelineDock->model(), SIGNAL(modified()), SLOT(onMultitrackModified())); + connect(m_timelineDock->model(), &MultitrackModel::modified, m_playlistDock, + &PlaylistDock::refreshTimelineSmartBins); connect(m_timelineDock->model(), SIGNAL(durationChanged()), SLOT(onMultitrackDurationChanged())); connect(m_timelineDock, SIGNAL(clipOpened(Mlt::Producer *)), SLOT(openCut(Mlt::Producer *))); connect(m_timelineDock->model(), &MultitrackModel::seeked, this, &MainWindow::seekTimeline);