-void DolphinMainWindow::toggleLocationInToolbar()
-{
- // collect needed variables
- QAction *locationInToolbarAction = actionCollection()->action(QStringLiteral("location_in_toolbar"));
- const bool locationInToolbar = locationInToolbarAction->isChecked();
- auto viewContainers = this->viewContainers();
- auto urlNavigatorWidgetAction = static_cast<DolphinUrlNavigatorWidgetAction *>
- (actionCollection()->action(QStringLiteral("url_navigator")));
- const bool isEditable = m_activeViewContainer->urlNavigator()->isUrlEditable();
- const QLineEdit *lineEdit = m_activeViewContainer->urlNavigator()->editor()->lineEdit();
- const bool hasFocus = lineEdit->hasFocus();
- const int cursorPosition = lineEdit->cursorPosition();
- const int selectionStart = lineEdit->selectionStart();
- const int selectionLength = lineEdit->selectionLength();
-
- if (locationInToolbar && !toolBar()->actions().contains(urlNavigatorWidgetAction)) {
- // There is no UrlNavigator on the toolbar. Try to fix it. Otherwise show an error.
- if (!urlNavigatorWidgetAction->addToToolbarAndSave(this)) {
- QAction *configureToolbars = actionCollection()->action(KStandardAction::name(KStandardAction::ConfigureToolbars));
- KMessageWidget *messageWidget = m_activeViewContainer->showMessage(
- xi18nc("@info 2 is the visible text on a button just below the message",
- "The location could not be moved onto the toolbar because there is currently "
- "no \"%1\" item on the toolbar. Select <interface>%2</interface> and add the "
- "\"%1\" item. Then this will work.", urlNavigatorWidgetAction->iconText(),
- configureToolbars->iconText()), DolphinViewContainer::Information);
- messageWidget->addAction(configureToolbars);
- messageWidget->addAction(locationInToolbarAction);
- locationInToolbarAction->setChecked(false);
- return;
- }
- }
-
- // do the switching
- GeneralSettings::setLocationInToolbar(locationInToolbar);
- if (locationInToolbar) {
- for (const auto viewContainer : viewContainers) {
- viewContainer->disconnectUrlNavigator();
- }
- m_activeViewContainer->connectUrlNavigator(urlNavigatorWidgetAction->urlNavigator());
- } else {
- m_activeViewContainer->disconnectUrlNavigator();
- for (const auto viewContainer : viewContainers) {
- viewContainer->connectToInternalUrlNavigator();
- }
- }