X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/050992c5641e2de3d98df78ecfe91e9a5504c4cf..5454283008f2:/src/views/versioncontrol/versioncontrolobserver.h diff --git a/src/views/versioncontrol/versioncontrolobserver.h b/src/views/versioncontrol/versioncontrolobserver.h index eb1e74580..c817c2187 100644 --- a/src/views/versioncontrol/versioncontrolobserver.h +++ b/src/views/versioncontrol/versioncontrolobserver.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Peter Penz * + * Copyright (C) 2009 by Peter Penz * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -20,20 +20,19 @@ #ifndef VERSIONCONTROLOBSERVER_H #define VERSIONCONTROLOBSERVER_H -#include +#include "dolphin_export.h" -#include -#include +#include "kversioncontrolplugin.h" + +#include + +#include #include -#include #include -#include #include -class DolphinModel; -class KDirLister; class KFileItemList; -class QAbstractItemView; +class KFileItemModel; class QAction; class QTimer; class UpdateItemStatesThread; @@ -41,22 +40,24 @@ class UpdateItemStatesThread; /** * @brief Observes all version control plugins. * - * The item view gets updated automatically if the currently shown - * directory is under version control. + * The items of the directory-model get updated automatically if the currently + * shown directory is under version control. * * @see VersionControlPlugin */ -class LIBDOLPHINPRIVATE_EXPORT VersionControlObserver : public QObject +class DOLPHIN_EXPORT VersionControlObserver : public QObject { Q_OBJECT public: - VersionControlObserver(QAbstractItemView* view); + explicit VersionControlObserver(QObject* parent = 0); virtual ~VersionControlObserver(); - QList contextMenuActions(const KFileItemList& items) const; - QList contextMenuActions(const QString& directory) const; - + void setModel(KFileItemModel* model); + KFileItemModel* model() const; + + QList actions(const KFileItemList& items) const; + signals: /** * Is emitted if an information message with the content \a msg @@ -75,7 +76,7 @@ signals: * should be shown. */ void operationCompletedMessage(const QString& msg); - + private slots: /** * Invokes verifyDirectory() with a small delay. If delayedDirectoryVerification() @@ -90,7 +91,7 @@ private slots: * delayedDirectoryVerification() it and assures that the verification of * the directory is done silently without information messages. */ - void silentDirectoryVerification(); + void silentDirectoryVerification(); void verifyDirectory(); @@ -99,28 +100,33 @@ private slots: * and applys the item states. */ void slotThreadFinished(); - + private: - struct ItemState - { - QPersistentModelIndex index; - KFileItem item; - KVersionControlPlugin::VersionState version; - }; + typedef QPair ItemState; void updateItemStates(); /** - * Adds recursively all items from the directory \p parentIndex into - * the list \p itemStates. + * It creates a item state list for every expanded directory and stores + * this list together with the directory url in the \a itemStates map. + * + * @itemStates A map of item state lists for every expanded directory + * and its items, where the "key" is the directory url and + * the "value" is a list of ItemStates for every item + * within this directory. + * @firstIndex The index to start the processing from, this is needed + * because this function is recursively called. + * + * @return The number of (recursive) processed items. */ - void addDirectory(const QModelIndex& parentIndex, QList& itemStates); + int createItemStatesList(QMap >& itemStates, + const int firstIndex = 0); /** * Returns a matching plugin for the given directory. * 0 is returned, if no matching plugin has been found. */ - KVersionControlPlugin* searchPlugin(const KUrl& directory) const; + KVersionControlPlugin* searchPlugin(const QUrl& directory) const; /** * Returns true, if the directory contains a version control information. @@ -132,11 +138,9 @@ private: bool m_versionedDirectory; bool m_silentUpdate; // if true, no messages will be send during the update // of version states - - QAbstractItemView* m_view; - KDirLister* m_dirLister; - DolphinModel* m_dolphinModel; - + + KFileItemModel* m_model; + QTimer* m_dirVerificationTimer; KVersionControlPlugin* m_plugin;