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
This commit is contained in:
Vishesh Handa 2013-05-06 18:41:21 +05:30
parent ff3b009e68
commit 38bb5f1547
4 changed files with 52 additions and 1 deletions

View file

@ -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()) {

View file

@ -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

View file

@ -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' ]]"

View file

@ -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;