X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/98a4aa10ef09087ce6498d09461036cb0ab9cb4d..7a593fc92bf28fbdcdec0e241e18ee8ba2ad7334:/src/views/dolphinview.h diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index f4b008236..06c09edc3 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -21,7 +21,7 @@ #ifndef DOLPHINVIEW_H #define DOLPHINVIEW_H -#include +#include #include "libdolphin_export.h" @@ -34,7 +34,6 @@ #include #include #include -#include #include typedef KIO::FileUndoManager::CommandType CommandType; @@ -45,6 +44,7 @@ class KActionCollection; class KFileItemModel; class KItemListContainer; class KItemModelBase; +class KItemSet; class KUrl; class ToolTipManager; class VersionControlObserver; @@ -181,8 +181,8 @@ public: void markUrlsAsSelected(const QList& urls); /** - * Marks the item indicated by \p url as the current item after the - * directory DolphinView::url() has been loaded. + * Marks the item indicated by \p url to be scrolled to and as the + * current item after directory DolphinView::url() has been loaded. */ void markUrlAsCurrent(const KUrl& url); @@ -217,7 +217,6 @@ public: QList visibleRoles() const; void reload(); - void stopLoading(); /** * Refreshes the view to get synchronized with the settings (e.g. icons size, @@ -237,6 +236,14 @@ public: void setNameFilter(const QString& nameFilter); QString nameFilter() const; + /** + * Filters the currently shown items by \a filters. All items + * whose content-type matches those given by the list of filters + * will be shown. + */ + void setMimeTypeFilters(const QStringList& filters); + QStringList mimeTypeFilters() const; + /** * Returns a textual representation of the state of the current * folder or selected items, suitable for use in the status bar. @@ -296,6 +303,14 @@ public: void setViewPropertiesContext(const QString& context); QString viewPropertiesContext() const; + /** + * Checks if the given \a item can be opened as folder (e.g. archives). + * This function will also adjust the \a url (e.g. change the protocol). + * @return a valid and adjusted url if the item can be opened as folder, + * otherwise return an empty url. + */ + static KUrl openItemAsFolderUrl(const KFileItem& item, const bool browseThroughArchives = true); + public slots: /** * Changes the directory to \a url. If the current directory is equal to @@ -353,6 +368,8 @@ public slots: */ void pasteIntoFolder(); + void stopLoading(); + /** Activates the view if the item list container gets focus. */ virtual bool eventFilter(QObject* watched, QEvent* event); @@ -377,6 +394,12 @@ signals: */ void itemActivated(const KFileItem& item); + /** + * Is emitted when multiple items have been activated by e. g. + * context menu open with. + */ + void itemsActivated(const KFileItemList& items); + /** * Is emitted if items have been added or deleted. */ @@ -475,6 +498,12 @@ signals: */ void directoryLoadingCompleted(); + /** + * Is emitted after the directory loading triggered by DolphinView::setUrl() + * has been canceled. + */ + void directoryLoadingCanceled(); + /** * Is emitted after DolphinView::setUrl() has been invoked and provides * the information how much percent of the current directory have been loaded. @@ -493,6 +522,12 @@ signals: */ void redirection(const KUrl& oldUrl, const KUrl& newUrl); + /** + * Is emitted when the URL set by DolphinView::setUrl() represents a file. + * In this case no signal errorMessage() will be emitted. + */ + void urlIsFileError(const KUrl& url); + /** * Is emitted when the write state of the folder has been changed. The application * should disable all actions like "Create New..." that depend on the write @@ -518,6 +553,7 @@ protected: /** @reimp */ virtual void hideEvent(QHideEvent* event); + virtual bool event(QEvent* event); private slots: /** @@ -527,7 +563,7 @@ private slots: void activate(); void slotItemActivated(int index); - void slotItemsActivated(const QSet& indexes); + void slotItemsActivated(const KItemSet& indexes); void slotItemMiddleClicked(int index); void slotItemContextMenuRequested(int index, const QPointF& pos); void slotViewContextMenuRequested(const QPointF& pos); @@ -539,6 +575,11 @@ private slots: void slotModelChanged(KItemModelBase* current, KItemModelBase* previous); void slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons); + /* + * Is called when new items get pasted or dropped. + */ + void slotAboutToCreate(const KUrl::List& urls); + /** * Emits the signal \a selectionChanged() with a small delay. This is * because getting all file items for the selection can be an expensive @@ -546,7 +587,7 @@ private slots: * the signal is emitted only after no selection change has been done * within a small delay. */ - void slotSelectionChanged(const QSet& current, const QSet& previous); + void slotSelectionChanged(const KItemSet& current, const KItemSet& previous); /** * Is called by emitDelayedSelectionChangedSignal() and emits the @@ -572,26 +613,14 @@ private slots: */ void updateSortFoldersFirst(bool foldersFirst); - /** - * Updates the status bar to show hover information for the - * item \a item. If currently other items are selected, - * no hover information is shown. - * @see DolphinView::clearHoverInformation() - */ - void showHoverInformation(const KFileItem& item); - - /** - * Clears the hover information shown in the status bar. - * @see DolphinView::showHoverInformation(). - */ - void clearHoverInformation(); - /** * Indicates in the status bar that the delete operation * of the job \a job has been finished. */ void slotDeleteFileFinished(KJob* job); + void slotRenamingFailed(const KUrl& oldUrl, const KUrl& newUrl); + /** * Invoked when the file item model has started the loading * of the directory specified by DolphinView::url(). @@ -628,24 +657,16 @@ private slots: void slotVisibleRolesChangedByHeader(const QList& current, const QList& previous); - void slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value); + void slotRoleEditingCanceled(); void slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value); /** * Observes the item with the URL \a url. As soon as the directory * model indicates that the item is available, the item will * get selected and it is assured that the item stays visible. - * - * @see selectAndScrollToCreatedItem() */ void observeCreatedItem(const KUrl& url); - /** - * Selects and scrolls to the item that got observed - * by observeCreatedItem(). - */ - void selectAndScrollToCreatedItem(); - /** * Called when a redirection happens. * Testcase: fish://localhost @@ -675,10 +696,17 @@ private: /** * Applies the view properties which are defined by the current URL - * to the DolphinView properties. + * to the DolphinView properties. The view properties are read from a + * .directory file either in the current directory, or in the + * share/apps/dolphin/view_properties/ subfolder of the user's .kde folder. */ void applyViewProperties(); + /** + * Applies the given view properties to the DolphinView. + */ + void applyViewProperties(const ViewProperties& props); + /** * Applies the m_mode property to the corresponding * itemlayout-property of the KItemListView. @@ -703,14 +731,6 @@ private: */ QMimeData* selectionMimeData() const; - /** - * Is invoked after a paste operation or a drag & drop - * operation and URLs from \a mimeData as selected. - * This allows to select all newly pasted - * items in restoreViewState(). - */ - void markPastedUrlsAsSelected(const QMimeData* mimeData); - /** * Updates m_isFolderWritable dependent on whether the folder represented by * the current URL is writable. If the state has changed, the signal @@ -749,16 +769,19 @@ private: QTimer* m_selectionChangedTimer; KUrl m_currentItemUrl; // Used for making the view to remember the current URL after F5 + bool m_scrollToCurrentItem; // Used for marking we need to scroll to current item or not QPoint m_restoredContentsPosition; - KUrl m_createdItemUrl; // URL for a new item that got created by the "Create New..." menu QList m_selectedUrls; // Used for making the view to remember selections after F5 + bool m_clearSelectionBeforeSelectingNewItems; + bool m_markFirstNewlySelectedItemAsCurrent; VersionControlObserver* m_versionControlObserver; // For unit tests friend class TestBase; friend class DolphinDetailsViewTest; + friend class DolphinPart; // Accesses m_model }; /// Allow using DolphinView::Mode in QVariant