diff options
| -rw-r--r-- | src/kitemviews/kstandarditemmodel.cpp | 9 | ||||
| -rw-r--r-- | src/kitemviews/kstandarditemmodel.h | 1 | ||||
| -rw-r--r-- | src/panels/places/placesitemmodel.cpp | 40 | ||||
| -rw-r--r-- | src/panels/places/placesitemmodel.h | 3 | ||||
| -rw-r--r-- | src/tests/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/views/dolphinviewactionhandler.cpp | 6 |
6 files changed, 64 insertions, 3 deletions
diff --git a/src/kitemviews/kstandarditemmodel.cpp b/src/kitemviews/kstandarditemmodel.cpp index dbf608c92..959d62cb8 100644 --- a/src/kitemviews/kstandarditemmodel.cpp +++ b/src/kitemviews/kstandarditemmodel.cpp @@ -122,6 +122,15 @@ void KStandardItemModel::removeItem(int index) } } +void KStandardItemModel::clear() +{ + int size = m_items.size(); + m_items.clear(); + m_indexesForItems.clear(); + + emit itemsRemoved(KItemRangeList() << KItemRange(0, size)); +} + KStandardItem* KStandardItemModel::item(int index) const { if (index < 0 || index >= m_items.count()) { diff --git a/src/kitemviews/kstandarditemmodel.h b/src/kitemviews/kstandarditemmodel.h index 34032bf07..0debd6a6f 100644 --- a/src/kitemviews/kstandarditemmodel.h +++ b/src/kitemviews/kstandarditemmodel.h @@ -78,6 +78,7 @@ public: virtual QString roleDescription(const QByteArray& role) const; virtual QList<QPair<int, QVariant> > groups() const; + virtual void clear(); protected: /** * Is invoked after an item has been inserted and before the signal diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 1acbb5771..caf6b7566 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -88,7 +88,11 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : m_storageSetupInProgress() { #ifdef HAVE_NEPOMUK - if (Nepomuk2::ResourceManager::instance()->initialized()) { + Nepomuk2::ResourceManager* rm = Nepomuk2::ResourceManager::instance(); + connect(rm, SIGNAL(nepomukSystemStarted()), this, SLOT(slotNepomukStarted())); + connect(rm, SIGNAL(nepomukSystemStopped()), this, SLOT(slotNepomukStopped())); + + if (rm->initialized()) { KConfig config("nepomukserverrc"); m_fileIndexingEnabled = config.group("Service-nepomukfileindexer").readEntry("autostart", true); } @@ -949,6 +953,40 @@ void PlacesItemModel::createSystemBookmarks() } } +void PlacesItemModel::clear() { + m_bookmarkedItems.clear(); + KStandardItemModel::clear(); +} + +void PlacesItemModel::slotNepomukStarted() +{ + KConfig config("nepomukserverrc"); + m_fileIndexingEnabled = config.group("Service-nepomukfileindexer").readEntry("autostart", true); + if (m_fileIndexingEnabled) { + m_systemBookmarks.clear(); + m_systemBookmarksIndexes.clear(); + createSystemBookmarks(); + + clear(); + loadBookmarks(); + } +} + +void PlacesItemModel::slotNepomukStopped() +{ + if (m_fileIndexingEnabled) { + m_fileIndexingEnabled = false; + + m_systemBookmarks.clear(); + m_systemBookmarksIndexes.clear(); + createSystemBookmarks(); + + clear(); + loadBookmarks(); + } +} + + void PlacesItemModel::initializeAvailableDevices() { QString predicate("[[[[ StorageVolume.ignored == false AND [ StorageVolume.usage == 'FileSystem' OR StorageVolume.usage == 'Encrypted' ]]" diff --git a/src/panels/places/placesitemmodel.h b/src/panels/places/placesitemmodel.h index e42187860..693836033 100644 --- a/src/panels/places/placesitemmodel.h +++ b/src/panels/places/placesitemmodel.h @@ -133,6 +133,7 @@ public: */ static KUrl convertedUrl(const KUrl& url); + virtual void clear(); signals: void errorMessage(const QString& message); void storageSetupDone(int index, bool success); @@ -163,6 +164,8 @@ private slots: */ void saveBookmarks(); + void slotNepomukStarted(); + void slotNepomukStopped(); private: struct SystemBookmarkData; diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 543261eac..83989d22c 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -20,7 +20,11 @@ set(kitemlistcontrollertest_SRCS ../kitemviews/kfileitemlistview.cpp ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemlistview.cpp + ../kitemviews/kitemlistcontainer.cpp + ../kitemviews/kitemlistwidget.cpp ../kitemviews/kitemlistviewaccessible.cpp + ../kitemviews/kstandarditemlistview.cpp + ../kitemviews/kstandarditemlistwidget.cpp ) kde4_add_unit_test(kitemlistcontrollertest TEST ${kitemlistcontrollertest_SRCS}) target_link_libraries(kitemlistcontrollertest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) @@ -34,6 +38,10 @@ set(kfileitemlistviewtest_SRCS ../kitemviews/kitemmodelbase.cpp ../kitemviews/kitemlistview.cpp ../kitemviews/kitemlistviewaccessible.cpp + ../kitemviews/kitemlistcontainer.cpp + ../kitemviews/kitemlistwidget.cpp + ../kitemviews/kstandarditemlistview.cpp + ../kitemviews/kstandarditemlistwidget.cpp ) kde4_add_unit_test(kfileitemlistviewtest TEST ${kfileitemlistviewtest_SRCS}) target_link_libraries(kfileitemlistviewtest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY}) diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index c7832d725..730723785 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -528,8 +528,10 @@ void DolphinViewActionHandler::slotSortRoleChanged(const QByteArray& role) if (action) { action->setChecked(true); - QAction* sortByMenu = m_actionCollection->action("sort"); - sortByMenu->setIcon(KIcon(action->icon())); + if (!action->icon().isNull()) { + QAction* sortByMenu = m_actionCollection->action("sort"); + sortByMenu->setIcon(KIcon(action->icon())); + } } } |
