KUrlNavigator Class
Widget that allows to navigate through the paths of an URL. More...
Header: | #include <KUrlNavigator> |
CMake: | find_package(KF6 REQUIRED COMPONENTS KIO) target_link_libraries(mytarget PRIVATE KF6::KIOFileWidgets) |
Inherits: | QWidget |
Public Functions
(since 4.5) | KUrlNavigator(QWidget *parent = nullptr) |
KUrlNavigator(KFilePlacesModel *placesModel, const QUrl &url, QWidget *parent) | |
(since 6.2) QWidget * | badgeWidget() const |
(since 5.37) QWidget * | dropWidget() const |
KUrlComboBox * | editor() const |
bool | goBack() |
bool | goForward() |
bool | goUp() |
int | historyIndex() const |
int | historySize() const |
QUrl | homeUrl() const |
bool | isActive() const |
bool | isPlacesSelectorVisible() const |
bool | isUrlEditable() const |
(since 4.5) QByteArray | locationState(int historyIndex = -1) const |
(since 4.5) QUrl | locationUrl(int historyIndex = -1) const |
void | saveLocationState(const QByteArray &state) |
void | setActive(bool active) |
(since 6.2) void | setBadgeWidget(QWidget *widget) |
void | setPlacesSelectorVisible(bool visible) |
void | setShowFullPath(bool show) |
(since 5.87) void | setShowHiddenFolders(bool showHiddenFolders) |
(since 5.87) void | setSortHiddenFoldersLast(bool sortHiddenFoldersLast) |
(since 5.103) void | setSupportedSchemes(const QStringList &schemes) |
void | setUrlEditable(bool editable) |
(since 4.2) bool | showFullPath() const |
(since 5.87) bool | showHiddenFolders() const |
(since 5.87) bool | sortHiddenFoldersLast() const |
(since 5.103) QStringList | supportedSchemes() const |
QUrl | uncommittedUrl() const |
Public Slots
void | requestActivation() |
void | setLocationUrl(const QUrl &url) |
Signals
void | activated() |
(since 5.89) void | activeTabRequested(const QUrl &url) |
void | editableStateChanged(bool editable) |
void | historyChanged() |
(since 5.89) void | newWindowRequested(const QUrl &url) |
void | returnPressed() |
void | tabRequested(const QUrl &url) |
void | urlAboutToBeChanged(const QUrl &newUrl) |
void | urlChanged(const QUrl &url) |
(since 5.37.0) void | urlSelectionRequested(const QUrl &url) |
void | urlsDropped(const QUrl &destination, QDropEvent *event) |
Detailed Description
The URL navigator offers two modes:
- Editable: The URL of the location is editable inside an editor. By pressing RETURN the URL will get activated.
- Non editable ("breadcrumb view"): The URL of the location is represented by a number of buttons, where each button represents a path of the URL. By clicking on a button the path will get activated. This mode also supports drag and drop of items.
The mode can be changed by clicking on the empty area of the URL navigator. It is recommended that the application remembers the setting or allows to configure the default mode (see KUrlNavigator::setUrlEditable()).
The URL navigator remembers the URL history during navigation and allows to go back and forward within this history.
In the non editable mode ("breadcrumb view") it can be configured whether the full path should be shown. It is recommended that the application remembers the setting or allows to configure the default mode (see KUrlNavigator::setShowFullPath()).
The typical usage of the KUrlNavigator is:
- Create an instance providing a places model and an URL.
- Create an instance of QAbstractItemView which shows the content of the URL given by the URL navigator.
- Connect to the signal KUrlNavigator::urlChanged() and synchronize the content of QAbstractItemView with the URL given by the URL navigator.
It is recommended, that the application remembers the state of the QAbstractItemView when the URL has been changed. This allows to restore the view state when going back in history. KUrlNavigator offers support for remembering the view state:
- The signal urlAboutToBeChanged() will be emitted before the URL change takes places. This allows the application to store the view state by KUrlNavigator::saveLocationState().
- The signal urlChanged() will be emitted after the URL change took place. This allows the application to restore the view state by getting the values from KUrlNavigator::locationState().
Member Function Documentation
[since 4.5]
KUrlNavigator::KUrlNavigator(QWidget *parent = nullptr)
This function was introduced in 4.5.
KUrlNavigator::KUrlNavigator(KFilePlacesModel *placesModel, const QUrl &url, QWidget *parent)
placesModel Model for the places which are selectable inside a menu. A place can be a bookmark or a device. If it is 0, no places selector is displayed.
url URL which is used for the navigation or editing.
parent Parent widget.
[signal]
void KUrlNavigator::activated()
Is emitted, if the URL navigator has been activated by an user interaction
See also KUrlNavigator::setActive().
[signal, since 5.89]
void KUrlNavigator::activeTabRequested(const QUrl &url)
Is emitted if the URL url should be opened in a new active tab because the user clicked on a breadcrumb with the middle mouse button with the shift modifier pressed or left-clicked with both the ctrl and shift modifiers pressed or pressed return with both the alt and shift modifiers pressed.
This function was introduced in 5.89.
[since 6.2]
QWidget *KUrlNavigator::badgeWidget() const
Returns the badge widget set by setBadgeWidget(). If setBadgeWidget() hasn't been called, returns nullptr.
This function was introduced in 6.2.
See also setBadgeWidget().
[since 5.37]
QWidget *KUrlNavigator::dropWidget() const
The child widget that received the QDropEvent when dropping on the URL navigator. You can pass this widget to KJobWidgets::setWindow() if you need to show a drop menu with KIO::drop().
Returns Child widget that has received the last drop event, or nullptr if nothing has been dropped yet on the URL navigator.
This function was introduced in 5.37.
See also KIO::drop().
[signal]
void KUrlNavigator::editableStateChanged(bool editable)
Is emitted, if the editable state for the URL has been changed (see KUrlNavigator::setUrlEditable()).
KUrlComboBox *KUrlNavigator::editor() const
Returns the used editor when the navigator is in the edit mode
See also KUrlNavigator::setUrlEditable().
bool KUrlNavigator::goBack()
Goes back one step in the URL history. The signals KUrlNavigator::urlAboutToBeChanged(), KUrlNavigator::urlChanged() and KUrlNavigator::historyChanged() are emitted if true is returned. False is returned if the beginning of the history has already been reached and hence going back was not possible. The history index (see KUrlNavigator::historyIndex()) is increased by one if the operation was successful.
bool KUrlNavigator::goForward()
Goes forward one step in the URL history. The signals KUrlNavigator::urlAboutToBeChanged(), KUrlNavigator::urlChanged() and KUrlNavigator::historyChanged() are emitted if true is returned. False is returned if the end of the history has already been reached and hence going forward was not possible. The history index (see KUrlNavigator::historyIndex()) is decreased by one if the operation was successful.
bool KUrlNavigator::goUp()
Goes up one step of the URL path and remembers the old path in the history. The signals KUrlNavigator::urlAboutToBeChanged(), KUrlNavigator::urlChanged() and KUrlNavigator::historyChanged() are emitted if true is returned. False is returned if going up was not possible as the root has been reached.
[signal]
void KUrlNavigator::historyChanged()
Is emitted, if the history has been changed. Usually the history is changed if a new URL has been selected.
int KUrlNavigator::historyIndex() const
Returns the history index of the current location, where 0 <= history index < KUrlNavigator::historySize(). 0 is the most recent history entry.
int KUrlNavigator::historySize() const
Returns the amount of locations in the history. The data for each location can be retrieved by KUrlNavigator::locationUrl() and KUrlNavigator::locationState().
QUrl KUrlNavigator::homeUrl() const
bool KUrlNavigator::isActive() const
Returns true
, if the URL navigator is in the active mode.
See also KUrlNavigator::setActive().
bool KUrlNavigator::isPlacesSelectorVisible() const
Returns true
, if the places selector is visible.
bool KUrlNavigator::isUrlEditable() const
Returns true
, if the URL is editable within a line editor. If false is returned, each part of the URL is presented by a button for fast navigation ("breadcrumb view").
[since 4.5]
QByteArray KUrlNavigator::locationState(int historyIndex = -1) const
Returns Location state given by historyIndex. If historyIndex is smaller than 0, the state of the current location is returned.
This function was introduced in 4.5.
See also KUrlNavigator::saveLocationState().
[since 4.5]
QUrl KUrlNavigator::locationUrl(int historyIndex = -1) const
Returns URL of the location given by the historyIndex. If historyIndex is smaller than 0, the URL of the current location is returned.
This function was introduced in 4.5.
See also setLocationUrl().
[signal, since 5.89]
void KUrlNavigator::newWindowRequested(const QUrl &url)
Is emitted if the URL url should be opened in a new window because the user left-clicked on a breadcrumb with the shift modifier pressed or pressed return with the shift modifier pressed.
This function was introduced in 5.89.
[slot]
void KUrlNavigator::requestActivation()
Activates the URL navigator (KUrlNavigator::isActive() will return true) and emits the signal KUrlNavigator::activated().
See also KUrlNavigator::setActive().
[signal]
void KUrlNavigator::returnPressed()
This signal is emitted when the Return or Enter key is pressed.
void KUrlNavigator::saveLocationState(const QByteArray &state)
Saves the location state described by state for the current location. It is recommended that at least the scroll position of a view is remembered and restored when traversing through the history. Saving the location state should be done when the signal KUrlNavigator::urlAboutToBeChanged() has been emitted. Restoring the location state (see KUrlNavigator::locationState()) should be done when the signal KUrlNavigator::urlChanged() has been emitted.
Example:
QByteArray state; QDataStream data(&state, QIODevice::WriteOnly); data << QPoint(x, y); data << ...; ... urlNavigator->saveLocationState(state);
void KUrlNavigator::setActive(bool active)
Set the URL navigator to the active mode, if active is true. The active mode is default. The inactive mode only differs visually from the active mode, no change of the behavior is given.
Using the URL navigator in the inactive mode is useful when having split views, where the inactive view is indicated by an inactive URL navigator visually.
See also isActive().
[since 6.2]
void KUrlNavigator::setBadgeWidget(QWidget *widget)
Puts widget to the right of the breadcrumb.
KUrlNavigator takes ownership over widget. Any existing badge widget is deleted.
Note: There is no limit to the size of the badge widget. If your badge widget is taller than other controls in KUrlNavigator, then the whole KUrlNavigator will be resized to accommodate it. Also, KUrlNavigator has fixed minimumWidth of 100, so if your badge widget is too wide, it might be clipped when the space is tight. You might want to call KUrlNavigator::setMinimumWidth() with a larger value in that case. In general, it is recommended to keep the badge widget small and not expanding, to avoid layout issues.
This function was introduced in 6.2.
See also badgeWidget().
[slot]
void KUrlNavigator::setLocationUrl(const QUrl &url)
Sets the location to url. The old URL is added to the history. The signals KUrlNavigator::urlAboutToBeChanged(), KUrlNavigator::urlChanged() and KUrlNavigator::historyChanged() are emitted. Use KUrlNavigator::locationUrl() to read the location.
See also locationUrl().
void KUrlNavigator::setPlacesSelectorVisible(bool visible)
Sets the places selector visible, if visible is true. The places selector allows to select the places provided by the places model passed in the constructor. Per default the places selector is visible.
See also isPlacesSelectorVisible().
void KUrlNavigator::setShowFullPath(bool show)
Shows the full path of the URL even if a place represents a part of the URL. Assuming that a place called "Pictures" uses the URL /home/user/Pictures. An URL like /home/user/Pictures/2008 is shown as [Pictures] > [2008] in the breadcrumb view, if showing the full path is turned off. If showing the full path is turned on, the URL is shown as [/] > [home] > [Pictures] > [2008].
See also showFullPath().
[since 5.87]
void KUrlNavigator::setShowHiddenFolders(bool showHiddenFolders)
Sets whether to show hidden folders in the subdirectories popup.
This function was introduced in 5.87.
See also showHiddenFolders().
[since 5.87]
void KUrlNavigator::setSortHiddenFoldersLast(bool sortHiddenFoldersLast)
Sets whether to sort hidden folders in the subdirectories popup last.
This function was introduced in 5.87.
See also sortHiddenFoldersLast().
[since 5.103]
void KUrlNavigator::setSupportedSchemes(const QStringList &schemes)
Set the URL schemes that the navigator should allow navigating to.
If the passed list is empty, all schemes are supported. Examples for schemes are "file"
or "ftp"
.
This function was introduced in 5.103.
See also supportedSchemes() and QFileDialog::setSupportedSchemes.
void KUrlNavigator::setUrlEditable(bool editable)
Allows to edit the URL of the navigation bar if editable is true, and sets the focus accordingly. If editable is false, each part of the URL is presented by a button for a fast navigation ("breadcrumb view").
See also isUrlEditable().
[since 4.2]
bool KUrlNavigator::showFullPath() const
Returns true
, if the full path of the URL should be shown in the breadcrumb view.
This function was introduced in 4.2.
See also setShowFullPath().
[since 5.87]
bool KUrlNavigator::showHiddenFolders() const
Returns whether to show hidden folders in the subdirectories popup.
This function was introduced in 5.87.
See also setShowHiddenFolders().
[since 5.87]
bool KUrlNavigator::sortHiddenFoldersLast() const
Returns whether to sort hidden folders in the subdirectories popup last.
This function was introduced in 5.87.
See also setSortHiddenFoldersLast().
[since 5.103]
QStringList KUrlNavigator::supportedSchemes() const
Returns the URL schemes that the navigator should allow navigating to.
If the returned list is empty, all schemes are supported.
This function was introduced in 5.103.
See also setSupportedSchemes() and QFileDialog::supportedSchemes.
[signal]
void KUrlNavigator::tabRequested(const QUrl &url)
Is emitted if the URL url should be opened in a new inactive tab because the user clicked on a breadcrumb with the middle mouse button or left-clicked with the ctrl modifier pressed or pressed return with the alt modifier pressed.
QUrl KUrlNavigator::uncommittedUrl() const
Returns the currently entered, but not accepted URL. It is possible that the returned URL is not valid.
[signal]
void KUrlNavigator::urlAboutToBeChanged(const QUrl &newUrl)
Is emitted, before the location URL is going to be changed to newUrl. The signal KUrlNavigator::urlChanged() will be emitted after the change has been done. Connecting to this signal is useful to save the state of a view with KUrlNavigator::saveLocationState().
[signal]
void KUrlNavigator::urlChanged(const QUrl &url)
Is emitted, if the location URL has been changed e. g. by the user.
See also KUrlNavigator::setUrl().
[signal, since 5.37.0]
void KUrlNavigator::urlSelectionRequested(const QUrl &url)
When the URL is changed and the new URL (e.g. /home/user1/) is a parent of the previous URL (e.g. /home/user1/data/stuff), then this signal is emitted and \p
url is set to the child directory of the new URL which is an ancestor of the old URL (in the example paths this would be /home/user1/data/). This signal allows file managers to pre-select the directory that the user is navigating up from.
This function was introduced in 5.37.0.
[signal]
void KUrlNavigator::urlsDropped(const QUrl &destination, QDropEvent *event)
Is emitted if a dropping has been done above the destination destination. The receiver must accept the drop event if the dropped data can be handled.