diff options
Diffstat (limited to 'src/dolphintabpage.h')
| -rw-r--r-- | src/dolphintabpage.h | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/dolphintabpage.h b/src/dolphintabpage.h index 63a246328..e90bf99bf 100644 --- a/src/dolphintabpage.h +++ b/src/dolphintabpage.h @@ -1,5 +1,6 @@ /* * SPDX-FileCopyrightText: 2014 Emmanuel Pescosta <[email protected]> + * SPDX-FileCopyrightText: 2020 Felix Ernst <[email protected]> * * SPDX-License-Identifier: GPL-2.0-or-later */ @@ -14,8 +15,14 @@ class DolphinNavigatorsWidgetAction; class DolphinViewContainer; class QSplitter; +class QVariantAnimation; class KFileItemList; +enum Animated { + WithAnimation, + WithoutAnimation +}; + class DolphinTabPage : public QWidget { Q_OBJECT @@ -36,9 +43,15 @@ public: /** * Enables or disables the split view mode. * - * If \a enabled is true, it creates a secondary view with the url of the primary view. + * @param enabled If true, creates a secondary viewContainer in this tab. + * Otherwise deletes it. + * @param animated Decides wether the effects of this method call should + * happen instantly or be transitioned to smoothly. + * @param secondaryUrl If \p enabled is true, the new viewContainer will be opened at this + * parameter. The default value will set the Url of the new viewContainer + * to be the same as the existing one. */ - void setSplitViewEnabled(bool enabled, const QUrl &secondaryUrl = QUrl()); + void setSplitViewEnabled(bool enabled, Animated animated, const QUrl &secondaryUrl = QUrl()); /** * @return The primary view container. @@ -148,6 +161,17 @@ signals: private slots: /** + * Deletes all zombie viewContainers that were used for the animation + * and resets the minimum size of the others to a sane value. + */ + void slotAnimationFinished(); + + /** + * This method is called for every frame of the m_expandViewAnimation. + */ + void slotAnimationValueChanged(const QVariant &value); + + /** * Handles the view activated event. * * It sets the previous active view to inactive, updates the current @@ -170,6 +194,16 @@ private: */ DolphinViewContainer* createViewContainer(const QUrl& url) const; + /** + * Starts an animation that transitions between split view mode states. + * + * One of the viewContainers is always being expanded when toggling so + * this method can animate both opening and closing of viewContainers. + * @param expandingContainer The container that will increase in size + * over the course of the animation. + */ + void startExpandViewAnimation(DolphinViewContainer *expandingContainer); + private: QSplitter* m_splitter; @@ -177,6 +211,9 @@ private: QPointer<DolphinViewContainer> m_primaryViewContainer; QPointer<DolphinViewContainer> m_secondaryViewContainer; + DolphinViewContainer *m_expandingContainer; + QPointer<QVariantAnimation> m_expandViewAnimation; + bool m_primaryViewActive; bool m_splitViewEnabled; bool m_active; |
