#ifndef PLACESITEMMODEL_H
#define PLACESITEMMODEL_H
-#include <config-nepomuk.h>
+#include <config-baloo.h>
#include <kitemviews/kstandarditemmodel.h>
-#include <KUrl>
+#include <QUrl>
#include <QHash>
#include <QList>
#include <QSet>
class QAction;
class QTimer;
-#ifdef HAVE_NEPOMUK
- namespace Nepomuk
- {
- namespace Query
- {
- class Term;
- }
- }
-#endif
-
// #define PLACESITEMMODEL_DEBUG
/**
* attributes.
*/
PlacesItem* createPlacesItem(const QString& text,
- const KUrl& url,
- const QString& iconName);
+ const QUrl& url,
+ const QString& iconName = QString());
PlacesItem* placesItem(int index) const;
* range of the URL. -1 is returned if no closest item
* could be found.
*/
- int closestItem(const KUrl& url) const;
+ int closestItem(const QUrl& url) const;
+
+ /**
+ * Appends the item \a item as last element of the group
+ * the item belongs to. If no item with the same group is
+ * present, the item gets appended as last element of the
+ * model. PlacesItemModel takes the ownership
+ * of the item.
+ */
+ void appendItemToGroup(PlacesItem* item);
QAction* ejectAction(int index) const;
QAction* teardownAction(int index) const;
void requestEject(int index);
void requestTeardown(int index);
- /** @reimp */
- virtual QMimeData* createMimeData(const QSet<int>& indexes) const;
+ bool storageSetupNeeded(int index) const;
+ void requestStorageSetup(int index);
+
+ virtual QMimeData* createMimeData(const KItemSet& indexes) const Q_DECL_OVERRIDE;
+
+ virtual bool supportsDropping(int index) const Q_DECL_OVERRIDE;
+
+ void dropMimeDataBefore(int index, const QMimeData* mimeData);
/**
* @return Converts the URL, which contains "virtual" URLs for system-items like
- * "search:/documents" into a Nepomuk-Query-URL that will be handled by
+ * "search:/documents" into a Query-URL that will be handled by
* the corresponding IO-slave. Virtual URLs for bookmarks are used to
* be independent from internal format changes.
*/
- static KUrl convertedUrl(const KUrl& url);
+ static QUrl convertedUrl(const QUrl& url);
+
+ virtual void clear() Q_DECL_OVERRIDE;
+
+ /**
+ * Saves the bookmarks and indicates to other applications that the
+ * state of the bookmarks has been changed. Is only called by the
+ * timeout of m_saveBookmarksTimer to prevent unnecessary savings.
+ */
+ void saveBookmarks();
signals:
void errorMessage(const QString& message);
+ void storageSetupDone(int index, bool success);
protected:
- virtual void onItemInserted(int index);
- virtual void onItemRemoved(int index, KStandardItem* removedItem);
- virtual void onItemChanged(int index, const QSet<QByteArray>& changedRoles);
+ virtual void onItemInserted(int index) Q_DECL_OVERRIDE;
+ virtual void onItemRemoved(int index, KStandardItem* removedItem) Q_DECL_OVERRIDE;
+ virtual void onItemChanged(int index, const QSet<QByteArray>& changedRoles) Q_DECL_OVERRIDE;
private slots:
void slotDeviceAdded(const QString& udi);
void slotDeviceRemoved(const QString& udi);
void slotStorageTeardownDone(Solid::ErrorType error, const QVariant& errorData);
+ void slotStorageSetupDone(Solid::ErrorType error, const QVariant& errorData, const QString& udi);
void hideItem();
/**
*/
void updateBookmarks();
- /**
- * Saves the bookmarks and indicates to other applications that the
- * state of the bookmarks has been changed. Is only called by the
- * timeout of m_saveBookmarksTimer to prevent unnecessary savings.
- */
- void saveBookmarks();
-
private:
struct SystemBookmarkData;
* current application (e.g. bookmarks from other applications
* will be ignored).
*/
- bool acceptBookmark(const KBookmark& bookmark) const;
+ bool acceptBookmark(const KBookmark& bookmark,
+ const QSet<QString>& availableDevices) const;
/**
* Creates a PlacesItem for a system-bookmark:
*/
void hideItem(int index);
+ QString internalMimeType() const;
+
/**
- * Triggers a delayed saving of bookmarks by starting
- * m_saveBookmarksTimer.
+ * @return Adjusted drop index which assures that the item is aligned
+ * into the same group as specified by PlacesItem::groupType().
*/
- void triggerBookmarksSaving();
+ int groupedDropIndex(int index, const PlacesItem* item) const;
/**
* @return True if the bookmarks have the same identifiers. The identifier
/**
* @return URL using the timeline-protocol for searching (see convertedUrl()).
*/
- static KUrl createTimelineUrl(const KUrl& url);
+ static QUrl createTimelineUrl(const QUrl& url);
/**
* Helper method for createTimelineUrl().
* for a given term. The URL \a url represents a places-internal
* URL like e.g. "search:/documents" (see convertedUrl()).
*/
- static KUrl createSearchUrl(const KUrl& url);
+ static QUrl createSearchUrl(const QUrl& url);
-#ifdef HAVE_NEPOMUK
+#ifdef HAVE_BALOO
/**
- * Helper method for createSearchUrl().
+ * Helper method for createSearchUrl()
* @return URL that can be listed by KIO and results in searching
- * for the given term.
+ * for the given type
*/
- static KUrl searchUrlForTerm(const Nepomuk::Query::Term& term);
+ static QUrl searchUrlForType(const QString& type);
#endif
#ifdef PLACESITEMMODEL_DEBUG
#endif
private:
- bool m_nepomukRunning;
+ bool m_fileIndexingEnabled;
bool m_hiddenItemsShown;
QSet<QString> m_availableDevices;
struct SystemBookmarkData
{
- SystemBookmarkData(const KUrl& url,
+ SystemBookmarkData(const QUrl& url,
const QString& icon,
const QString& text) :
url(url), icon(icon), text(text) {}
- KUrl url;
+ QUrl url;
QString icon;
QString text;
};
QList<SystemBookmarkData> m_systemBookmarks;
- QHash<KUrl, int> m_systemBookmarksIndexes;
+ QHash<QUrl, int> m_systemBookmarksIndexes;
// Contains hidden and unhidden items that are stored as
// bookmark (the model itself only contains items that
// removing an item is not allowed.
int m_hiddenItemToRemove;
- QTimer* m_saveBookmarksTimer;
QTimer* m_updateBookmarksTimer;
+
+ QHash<QObject*, int> m_storageSetupInProgress;
};
#endif