X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e1d76541ba62e2eec5874ace02049be96bf3378e..b1c9b5126d:/src/dolphinview.h diff --git a/src/dolphinview.h b/src/dolphinview.h index 63afaba58..5cedeecfa 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -41,15 +41,15 @@ class DolphinController; class DolphinColumnView; class DolphinDetailsView; +class DolphinFileItemDelegate; class DolphinIconsView; class DolphinMainWindow; class DolphinModel; class DolphinSortFilterProxyModel; -class IconManager; +class KFilePreviewGenerator; class KAction; class KActionCollection; class KDirLister; -class KFileItemDelegate; class KUrl; class KToggleAction; class ToolTipManager; @@ -85,7 +85,8 @@ public: { /** * The directory items are shown as icons including an - * icon name. */ + * icon name. + */ IconsView = 0, /** @@ -236,24 +237,21 @@ public: /** * Sets the zoom level to \a level. It is assured that the used - * level is adjusted to be inside the range DolphinView::zoomLevelMinimum() and - * DolphinView::zoomLevelMaximum(). + * level is adjusted to be inside the range ZoomLevelInfo::minimumLevel() and + * ZoomLevelInfo::maximumLevel(). */ void setZoomLevel(int level); int zoomLevel() const; - - int zoomLevelMinimum() const; - int zoomLevelMaximum() const; - + /** * Returns true, if zooming in is possible. If false is returned, - * the minimal zoom size is possible. + * the maximum zooming level has been reached. */ bool isZoomInPossible() const; /** * Returns true, if zooming out is possible. If false is returned, - * the maximum zoom size is possible. + * the minimum zooming level has been reached. */ bool isZoomOutPossible() const; @@ -304,11 +302,18 @@ public: /** * Calculates the number of currently shown files into * \a fileCount and the number of folders into \a folderCount. + * The size of all files is written into \a totalFileSize. * It is recommend using this method instead of asking the * directory lister or the model directly, as it takes * filtering and hierarchical previews into account. */ - void calculateItemCount(int& fileCount, int& folderCount); + void calculateItemCount(int& fileCount, int& folderCount, KIO::filesize_t& totalFileSize) const; + + /** + * Returns a textual representation of the state of the current + * folder or selected items, suitable for use in the status bar. + */ + QString statusBarText() const; /** * Updates the state of the 'Additional Information' actions in \a collection. @@ -331,6 +336,12 @@ public: void setTabsForFilesEnabled(bool tabsForFiles); bool isTabsForFilesEnabled() const; + /** + * Returns true if the current view allows folders to be expanded, + * i.e. presents a hierarchical view to the user. + */ + bool itemsExpandable() const; + public slots: /** * Changes the directory to \a url. If the current directory is equal to @@ -465,12 +476,12 @@ signals: /** Is emitted if the additional information shown for this view has been changed. */ void additionalInfoChanged(); - + /** Is emitted if the zoom level has been changed by zooming in or out. */ void zoomLevelChanged(int level); /** - * Is emitted if information of an item is requested to be shown e. g. in the sidebar. + * Is emitted if information of an item is requested to be shown e. g. in the panel. * If item is null, no item information request is pending. */ void requestItemInfo(const KFileItem& item); @@ -485,10 +496,13 @@ signals: /** * Is emitted if a context menu is requested for the item \a item, - * which is part of \a url. If the item is 0, the context menu - * for the URL should be shown. + * which is part of \a url. If the item is null, the context menu + * for the URL should be shown and the custom actions \a customActions + * will be added. */ - void requestContextMenu(const KFileItem& item, const KUrl& url); + void requestContextMenu(const KFileItem& item, + const KUrl& url, + const QList& customActions); /** * Is emitted if an information message with the content \a msg @@ -517,10 +531,10 @@ signals: void startedPathLoading(const KUrl& url); /** - * Is emitted when renaming, copying, moving, linking etc. - * Used for feedback in the mainwindow. + * Emitted when KDirLister emits redirection. + * Testcase: fish://localhost */ - void doingOperation(KIO::FileUndoManager::CommandType type); + void redirection(const KUrl& oldUrl, const KUrl& newUrl); protected: /** @see QWidget::mouseReleaseEvent */ @@ -549,16 +563,16 @@ private slots: * is used to check whether the context menu is related to an * item or to the viewport. */ - void openContextMenu(const QPoint& pos); + void openContextMenu(const QPoint& pos, const QList& customActions); /** - * Drops the URLs \a urls to the destination path \a destPath. If + * Drops dragged URLs to the destination path \a destPath. If * the URLs are dropped above an item inside the destination path, * the item is indicated by \a destItem. */ - void dropUrls(const KUrl::List& urls, + void dropUrls(const KFileItem& destItem, const KUrl& destPath, - const KFileItem& destItem); + QDropEvent* event); /** * Updates the view properties of the current URL to the @@ -604,12 +618,6 @@ private slots: */ void slotDeleteFileFinished(KJob* job); - /** - * Called when KDirLister emits redirection. - * Testcase: fish://localhost - */ - void slotRedirection(const KUrl& oldUrl, const KUrl& newUrl); - /** * Is emitted if the controller requests a changing of the current * URL to \a url @@ -622,6 +630,13 @@ private slots: */ void restoreCurrentItem(); + /** + * If \a view can be positively identified as not being the source for the + * current drag operation, deleteLater() it immediately. Else stores + * it for later deletion. + */ + void deleteWhenNotDragSource(QAbstractItemView* view); + private: void loadDirectory(const KUrl& url, bool reload = false); @@ -665,7 +680,7 @@ private: * Pastes the clipboard data into the URL \a url. */ void pasteToUrl(const KUrl& url); - + /** * Checks whether the current item view has the same zoom level * as \a oldZoomLevel. If this is not the case, the zoom level @@ -674,15 +689,24 @@ private: */ void updateZoomLevel(int oldZoomLevel); + /** + * Returns a list of URLs for all selected items. The list is + * simplified, so that when the URLs are part of different tree + * levels, only the parent is returned. + */ + KUrl::List simplifiedSelectedUrls() const; + /** * Returns true, if the ColumnView is activated. As the column view * requires some special handling for iterating through directories, * this method has been introduced for convenience. */ - bool isColumnViewActive() const - { - return m_columnView != 0; - } + bool isColumnViewActive() const; + + /** + * Returns the MIME data for all selected items. + */ + QMimeData* selectionMimeData() const; private: bool m_active : 1; @@ -691,6 +715,7 @@ private: bool m_storedCategorizedSorting : 1; bool m_tabsForFiles : 1; bool m_isContextMenuOpen : 1; // TODO: workaround for Qt-issue 207192 + bool m_ignoreViewProperties : 1; Mode m_mode; @@ -701,20 +726,27 @@ private: DolphinIconsView* m_iconsView; DolphinDetailsView* m_detailsView; DolphinColumnView* m_columnView; - KFileItemDelegate* m_fileItemDelegate; + DolphinFileItemDelegate* m_fileItemDelegate; QItemSelectionModel* m_selectionModel; DolphinModel* m_dolphinModel; KDirLister* m_dirLister; DolphinSortFilterProxyModel* m_proxyModel; - IconManager* m_iconManager; + KFilePreviewGenerator* m_previewGenerator; ToolTipManager* m_toolTipManager; KUrl m_rootUrl; KUrl m_currentItemUrl; + + QAbstractItemView* m_expandedDragSource; }; +inline bool DolphinView::isColumnViewActive() const +{ + return m_columnView != 0; +} + /// Allow using DolphinView::Mode in QVariant Q_DECLARE_METATYPE(DolphinView::Mode)