/*
This file is part of the KDE project
- SPDX-FileCopyrightText: 2020 Felix Ernst <fe.a.ernst@gmail.com>
+ SPDX-FileCopyrightText: 2020 Felix Ernst <felixernst@kde.org>
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
* The secondary side only exists for split view and is created by
* createSecondaryUrlNavigator() when necessary.
* - Each side is a QWidget which I call NavigatorWidget with a QHBoxLayout.
- * - Each NavigatorWidget consists an UrlNavigator, an emptyTrashButton and spacing.
+ * - Each NavigatorWidget consists an UrlNavigator, an emptyTrashButton, a
+ * networkFolderButton, and spacing.
* - Only the primary navigatorWidget has leading spacing. Both have trailing spacing.
* The spacing is there to align the UrlNavigator with its DolphinViewContainer.
*/
* This method should preferably only be called when:
* - Split view is activated in the active tab
* OR
- * - A switch to a tab that is already in split view mode is occuring
+ * - A switch to a tab that is already in split view mode is occurring
*/
void createSecondaryUrlNavigator();
* Notify this widget of changes in geometry of the ViewContainers it tries to be
* aligned with.
*/
- void followViewContainersGeometry(QWidget *primaryViewContainer,
- QWidget *secondaryViewContainer = nullptr);
+ void followViewContainersGeometry(QWidget *primaryViewContainer, QWidget *secondaryViewContainer = nullptr);
bool isInToolbar() const;
*/
void setSecondaryNavigatorVisible(bool visible);
+ /**
+ * Sets the background cosmetic of the location bar(s) visible or hidden.
+ * In frameless designs it's better to hide the background.
+ * @param enabled True for showing background cosmetic, false for hiding it.
+ */
+ void setBackgroundEnabled(bool enabled);
+
protected:
/**
* There should always ever be one navigatorsWidget for this action so
* this method always returns the same widget and reparents it.
* You normally don't have to use this method directly because
* QWidgetAction::requestWidget() is used to obtain the navigatorsWidget
- * and to steal it from whereever it was prior.
+ * and to steal it from wherever it was prior.
* @param parent the new parent of the navigatorsWidget.
*/
QWidget *createWidget(QWidget *parent) override;
/**
* In Left-to-right languages the Primary side will be the left one.
*/
- enum Side {
- Primary,
- Secondary
- };
+ enum Side { Primary, Secondary };
/**
* Used to create the navigatorWidgets for both sides of the QSplitter.
*/
*/
QPushButton *newEmptyTrashButton(const DolphinUrlNavigator *urlNavigator, QWidget *parent) const;
- enum Position {
- Leading,
- Trailing
- };
+ /**
+ * Used to retrieve the networkFolderButtons for the navigatorWidgets on
+ * both sides.
+ */
+ QPushButton *networkFolderButton(Side side);
+
+ /**
+ * Creates a new add "network folder" button.
+ * @param urlNavigator Only when this UrlNavigator shows the remote directory
+ * will the button be visible.
+ * @param parent The object that should be the button's parent.
+ */
+ QPushButton *newNetworkFolderButton(const DolphinUrlNavigator *urlNavigator, QWidget *parent) const;
+
+ enum Position { Leading, Trailing };
/**
* Used to retrieve both the leading and trailing spacing for the navigatorWidgets
* on both sides. A secondary leading spacing does not exist.
/**
* Sets the ViewContainers whose geometry is obtained when viewGeometries() is called.
*/
- void setViewContainers(QWidget *primaryViewContainer,
- QWidget *secondaryViewContainer = nullptr);
+ void setViewContainers(QWidget *primaryViewContainer, QWidget *secondaryViewContainer = nullptr);
struct Geometries {
int globalXOfNavigatorsWidget;
};
ViewGeometriesHelper m_viewGeometriesHelper;
+
+ /**
+ * Used to check if the window has been resized.
+ * @see ViewGeometriesHelper::eventFilter() for why this is needed.
+ */
+ int m_previousWindowWidth = -1;
};
#endif // DOLPHINNAVIGATORSWIDGETACTION_H