SVN commit 969391 by cgilles:
bugfix : same here than Light Table : if BatchQueueManager is not busy. Remove items in Queue deleted from Album Gui CCMAIL: [hidden email] M +0 -4 lighttable/lighttablebar.cpp M +41 -3 queuemanager/queuelist.cpp M +4 -0 queuemanager/queuelist.h M +5 -0 queuemanager/queuemgrwindow.cpp M +1 -0 queuemanager/queuemgrwindow.h --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablebar.cpp #969390:969391 @@ -683,10 +683,6 @@ void LightTableBar::slotCollectionImageChange(const CollectionImageChangeset& changeset) { - // ignore when closed - if (!isVisible()) - return; - switch(changeset.operation()) { case CollectionImageChangeset::Removed: --- trunk/extragear/graphics/digikam/utilities/queuemanager/queuelist.cpp #969390:969391 @@ -53,6 +53,8 @@ #include "ddragobjects.h" #include "queuemgrwindow.h" #include "queuetooltip.h" +#include "databasewatch.h" +#include "databasechangesets.h" namespace Digikam { @@ -250,6 +252,10 @@ // ----------------------------------------------------------- + connect(DatabaseAccess::databaseWatch(), SIGNAL(collectionImageChange(const CollectionImageChangeset&)), + this, SLOT(slotCollectionImageChange(const CollectionImageChangeset&)), + Qt::QueuedConnection); + connect(d->thumbLoadThread, SIGNAL(signalThumbnailLoaded(const LoadingDescription&, const QPixmap&)), this, SLOT(slotThumbnailLoaded(const LoadingDescription&, const QPixmap&))); @@ -668,6 +674,11 @@ void QueueListView::removeItemByInfo(const ImageInfo& info) { + removeItemById(info.id()); +} + +void QueueListView::removeItemById(qlonglong id) +{ hideToolTip(); bool find; @@ -678,7 +689,7 @@ while (*it) { QueueListViewItem* item = dynamic_cast<QueueListViewItem*>(*it); - if (item->info() == info) + if (item->info().id() == id) { delete item; find = true; @@ -694,16 +705,20 @@ bool QueueListView::findItemByInfo(const ImageInfo& info) { + return findItemById(info.id()); +} + +bool QueueListView::findItemById(qlonglong id) +{ QTreeWidgetItemIterator it(this); while (*it) { QueueListViewItem* item = dynamic_cast<QueueListViewItem*>(*it); - if (item->info() == info) + if (item->info().id() == id) return true; ++it; } - return false; } @@ -839,4 +854,27 @@ popmenu.exec(QCursor::pos()); } +void QueueListView::slotCollectionImageChange(const CollectionImageChangeset& changeset) +{ + if (QueueMgrWindow::queueManagerWindow()->isBusy()) + return; + + switch(changeset.operation()) + { + case CollectionImageChangeset::Removed: + case CollectionImageChangeset::RemovedAll: + { + foreach(qlonglong id, changeset.ids()) + { + removeItemById(id); + } + break; + } + default: + { + break; + } + } +} + } // namespace Digikam --- trunk/extragear/graphics/digikam/utilities/queuemanager/queuelist.h #969390:969391 @@ -83,6 +83,7 @@ // ------------------------------------------------------------------------- +class CollectionImageChangeset; class QueueListViewPriv; class QueueListView : public QTreeWidget @@ -96,6 +97,7 @@ int itemsCount(); void removeItemByInfo(const ImageInfo& info); + void removeItemById(qlonglong id); ImageInfoList pendingItemsList(); int pendingItemsCount(); @@ -125,6 +127,7 @@ private Q_SLOTS: + void slotCollectionImageChange(const CollectionImageChangeset&); void slotThumbnailLoaded(const LoadingDescription&, const QPixmap&); void slotContextMenu(); void slotToolTip(); @@ -132,6 +135,7 @@ private: bool findItemByInfo(const ImageInfo& info); + bool findItemById(qlonglong id); void removeItems(int removeType); void updateDestFileNames(); void hideToolTip(); --- trunk/extragear/graphics/digikam/utilities/queuemanager/queuemgrwindow.cpp #969390:969391 @@ -165,6 +165,11 @@ return QMap<int, QString>(); } +bool QueueMgrWindow::isBusy() const +{ + return d->busy; +} + void QueueMgrWindow::closeEvent(QCloseEvent* e) { if (!e) return; --- trunk/extragear/graphics/digikam/utilities/queuemanager/queuemgrwindow.h #969390:969391 @@ -61,6 +61,7 @@ static QueueMgrWindow *queueManagerWindow(); static bool queueManagerWindowCreated(); + bool isBusy() const; void addNewQueue(); void loadImageInfos(const ImageInfoList& list, int queueId); void refreshView(); _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |