Commit 24609e78 authored by Vishesh Handa's avatar Vishesh Handa

Dolphin Places: React to Nepomuk system changes

Reload the places panel when Nepomuk starts up and shutsdown. This way
the user does not need to restart Dolphin to see the custom searches and
places after Nepomuk switches on.

BUG: 304918
REVIEW: 110323
parent 29196648
......@@ -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()) {
......
......@@ -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
......
......@@ -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' ]]"
......
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment