X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/67ebd66f94356b4e66005b1072919cb7b5e858bb..56888a56:/src/views/dolphinview.h diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 50a88e936..be8263917 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -32,6 +33,7 @@ class KItemSet; class ToolTipManager; class VersionControlObserver; class ViewProperties; +class QLabel; class QGraphicsSceneDragDropEvent; class QRegularExpression; @@ -239,10 +241,13 @@ public: QStringList mimeTypeFilters() const; /** - * Returns a textual representation of the state of the current + * Tells the view to generate an updated status bar text. The result + * is returned through the statusBarTextChanged(QString statusBarText) signal. + * It will carry a textual representation of the state of the current * folder or selected items, suitable for use in the status bar. + * Any pending requests of status bar text are killed. */ - QString statusBarText() const; + void requestStatusBarText(); /** * Returns the version control actions that are provided for the items \p items. @@ -310,7 +315,7 @@ public: */ void hideToolTip(const ToolTipManager::HideBehavior behavior = ToolTipManager::HideBehavior::Later); -public slots: +public Q_SLOTS: /** * Changes the directory to \a url. If the current directory is equal to * \a url, nothing will be done (use DolphinView::reload() instead). @@ -404,7 +409,7 @@ public slots: /** Activates the view if the item list container gets focus. */ bool eventFilter(QObject* watched, QEvent* event) override; -signals: +Q_SIGNALS: /** * Is emitted if the view has been activated by e. g. a mouse click. */ @@ -432,7 +437,7 @@ signals: /** * Is emitted if a new tab should be opened for the URL \a url. */ - void tabRequested(const QUrl& url, DolphinTabWidget::TabPlacement tabPlacement); + void tabRequested(const QUrl& url); /** * Is emitted if the view mode (IconsView, DetailsView, @@ -449,6 +454,10 @@ signals: /** Is emitted if the 'grouped sorting' property has been changed. */ void groupedSortingChanged(bool groupedSorting); + /** Is emmited in reaction to a requestStatusBarText() call. + * @see requestStatusBarText() */ + void statusBarTextChanged(QString statusBarText); + /** Is emitted if the sorting by name, size or date has been changed. */ void sortRoleChanged(const QByteArray& role); @@ -582,6 +591,8 @@ signals: */ void urlActivated(const QUrl& url); + void goUpRequested(); + protected: /** Changes the zoom level if Control is pressed during a wheel event. */ void wheelEvent(QWheelEvent* event) override; @@ -589,7 +600,7 @@ protected: void hideEvent(QHideEvent* event) override; bool event(QEvent* event) override; -private slots: +private Q_SLOTS: /** * Marks the view as active (DolphinView:isActive() will return true) * and emits the 'activated' signal if it is not already active. @@ -611,6 +622,9 @@ private slots: void slotRenameDialogRenamingFinished(const QList& urls); void slotSelectedItemTextPressed(int index); void slotCopyingDone(KIO::Job *, const QUrl &, const QUrl &to); + void slotIncreaseZoom(); + void slotDecreaseZoom(); + void slotSwipeUp(); /* * Is called when new items get pasted or dropped. @@ -636,6 +650,15 @@ private slots: */ void emitSelectionChangedSignal(); + /** + * Helper method for DolphinView::requestStatusBarText(). + * Calculates the amount of folders and files and their total size in + * response to a KStatJob::result(), then calls emitStatusBarText(). + * @see requestStatusBarText() + * @see emitStatusBarText() + */ + void slotStatJobResult(KJob *job); + /** * Updates the view properties of the current URL to the * sorting given by \a role. @@ -683,6 +706,12 @@ private slots: */ void slotDirectoryLoadingCompleted(); + /** + * Invoked when the file item model indicates that the loading of a directory has + * been canceled. + */ + void slotDirectoryLoadingCanceled(); + /** * Is invoked when items of KFileItemModel have been changed. */ @@ -723,16 +752,6 @@ private slots: */ void slotDirectoryRedirection(const QUrl& oldUrl, const QUrl& newUrl); - /** - * 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, KIO::filesize_t& totalFileSize) const; - void slotTwoClicksRenamingTimerTimeout(); private: @@ -757,6 +776,21 @@ private: */ void applyModeToView(); + enum Selection { + HasSelection, + NoSelection + }; + /** + * Helper method for DolphinView::requestStatusBarText(). + * Generates the status bar text from the parameters and + * then emits statusBarTextChanged(). + * @param totalFileSize the sum of the sizes of the files + * @param selection if HasSelection is passed, the emitted status bar text will say + * that the folders and files which are counted here are selected. + */ + void emitStatusBarText(const int folderCount, const int fileCount, + KIO::filesize_t totalFileSize, const Selection selection); + /** * Helper method for DolphinView::paste() and DolphinView::pasteIntoFolder(). * Pastes the clipboard data into the URL \a url. @@ -799,6 +833,8 @@ private: void abortTwoClicksRenaming(); + void updatePlaceholderLabel(); + private: void updatePalette(); @@ -808,12 +844,15 @@ private: bool m_isFolderWritable; bool m_dragging; // True if a dragging is done. Required to be able to decide whether a // tooltip may be shown when hovering an item. + bool m_loading; QUrl m_url; QString m_viewPropertiesContext; Mode m_mode; QList m_visibleRoles; + QPointer m_statJobForStatusBarText; + QVBoxLayout* m_topLayout; KFileItemModel* m_model; @@ -836,6 +875,7 @@ private: QTimer* m_twoClicksRenamingTimer; QUrl m_twoClicksRenamingItemUrl; + QLabel* m_placeholderLabel; // For unit tests friend class TestBase;