#include <QKeyEvent>
#include <QLinkedList>
#include <QListView>
+#include <QSet>
#include <QWidget>
+typedef KIO::FileUndoManager::CommandType CommandType;
+
class DolphinController;
class DolphinColumnView;
class DolphinDetailsView;
class KActionCollection;
class KDirLister;
class KUrl;
-class KToggleAction;
class ToolTipManager;
-class QModelIndex;
+class VersionControlObserver;
class ViewProperties;
/**
*/
QString statusBarText() const;
+ /**
+ * Returns the version control actions that are provided for the items \p items.
+ * Usually the actions are presented in the context menu.
+ */
+ QList<QAction*> versionControlActions(const KFileItemList& items) const;
+
/**
* Updates the state of the 'Additional Information' actions in \a collection.
*/
void setTabsForFilesEnabled(bool tabsForFiles);
bool isTabsForFilesEnabled() const;
+ /**
+ * Marks the item \a url as active item as soon as it has
+ * been loaded by the directory lister. This is useful mark
+ * the previously visited directory as active when going
+ * back in history (the URL is known, but the item is not
+ * loaded yet).
+ */
+ void activateItem(const KUrl& url);
+
/**
* Returns true if the current view allows folders to be expanded,
* i.e. presents a hierarchical view to the user.
*/
void triggerItem(const KFileItem& index);
+ /**
+ * Emits the signal \a selectionChanged() with a small delay. This is
+ * because getting all file items for the signal can be an expensive
+ * operation. Fast selection changes are collected in this case and
+ * the signal is emitted only after no selection change has been done
+ * within a small delay.
+ */
+ void emitDelayedSelectionChangedSignal();
+
+ /**
+ * Is called by emitDelayedSelectionChangedSignal() and emits the
+ * signal \a selectionChanged() with all selected file items as parameter.
+ */
void emitSelectionChangedSignal();
/**
void slotRequestUrlChange(const KUrl& url);
/**
- * Restores the current item (= item that has the keyboard focus)
- * to m_currentItemUrl.
+ * Invoked when the directory lister has completed the loading of
+ * items. Assures that pasted items and renamed items get seleced.
*/
- void restoreCurrentItem();
+ void slotDirListerCompleted();
/**
* Is invoked when the KDirLister indicates refreshed items.
*/
QAbstractItemView* itemView() const;
- /**
- * Returns true, if the item \a item has been cut into
- * the clipboard.
- */
- bool isCutItem(const KFileItem& item) const;
-
/**
* Helper method for DolphinView::paste() and DolphinView::pasteIntoFolder().
* Pastes the clipboard data into the URL \a url.
*/
QMimeData* selectionMimeData() const;
+ /**
+ * Is invoked after a paste operation or a drag & drop
+ * operation and adds the filenames of all URLs from \a mimeData to
+ * m_newFileNames. This allows to select all newly added
+ * items in slotDirListerCompleted().
+ */
+ void addNewFileNames(const QMimeData* mimeData);
+
private:
bool m_active : 1;
bool m_showPreview : 1;
DolphinDetailsView* m_detailsView;
DolphinColumnView* m_columnView;
DolphinFileItemDelegate* m_fileItemDelegate;
+
QItemSelectionModel* m_selectionModel;
+ QTimer* m_selectionChangedTimer;
DolphinModel* m_dolphinModel;
KDirLister* m_dirLister;
KFilePreviewGenerator* m_previewGenerator;
ToolTipManager* m_toolTipManager;
+ VersionControlObserver* m_versionControlObserver;
+
KUrl m_rootUrl;
- KUrl m_currentItemUrl;
+ KUrl m_activeItemUrl;
KUrl m_createdItemUrl; // URL for a new item that got created by the "Create New..." menu
- KFileItemList m_selectedItems; //this is used for making the View to remember selections after F5
+ KFileItemList m_selectedItems; // this is used for making the View to remember selections after F5
+
+ /**
+ * Remembers the filenames that have been added by a paste operation
+ * or a drag & drop operation. Allows to select the items in
+ * slotDirListerCompleted().
+ */
+ QSet<QString> m_newFileNames;
QAbstractItemView* m_expandedDragSource;
};