From 6151a7aec0516570926cb1d15da48936e38e6765 Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Thu, 27 Aug 2020 18:55:18 +0200 Subject: Add the UrlNavigator to the toolbar automatically if needed This commit adds the DolphinUrlNavigatorWidgetAction::addToToolbarAndSave() method which changes the users toolbar configuration to contain an Url Navigator. This way the user doesn't need to do anything manually. Aside from that a bunch of minor fixes like renaming and reordering --- src/views/dolphinurlnavigatorwidgetaction.cpp | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/views/dolphinurlnavigatorwidgetaction.cpp') diff --git a/src/views/dolphinurlnavigatorwidgetaction.cpp b/src/views/dolphinurlnavigatorwidgetaction.cpp index d9c9a4bfa..108a5de13 100644 --- a/src/views/dolphinurlnavigatorwidgetaction.cpp +++ b/src/views/dolphinurlnavigatorwidgetaction.cpp @@ -24,6 +24,11 @@ #include "dolphinviewcontainer.h" #include +#include +#include + +#include +#include DolphinUrlNavigatorWidgetAction::DolphinUrlNavigatorWidgetAction(QWidget *parent) : QWidgetAction(parent) @@ -56,3 +61,31 @@ void DolphinUrlNavigatorWidgetAction::setUrlNavigatorVisible(bool visible) m_stackedWidget->setCurrentIndex(1); // urlNavigator } } + +bool DolphinUrlNavigatorWidgetAction::addToToolbarAndSave(KXmlGuiWindow *mainWindow) +{ + const QString rawXml = KXMLGUIFactory::readConfigFile(mainWindow->xmlFile()); + QDomDocument domDocument; + if (rawXml.isEmpty() || !domDocument.setContent(rawXml) || domDocument.isNull()) { + return false; + } + QDomNode toolbar = domDocument.elementsByTagName(QStringLiteral("ToolBar")).at(0); + if (toolbar.isNull()) { + return false; + } + + QDomElement urlNavigatorElement = domDocument.createElement(QStringLiteral("Action")); + urlNavigatorElement.setAttribute(QStringLiteral("name"), QStringLiteral("url_navigator")); + + QDomNode position = toolbar.lastChildElement(QStringLiteral("Spacer")); + if (position.isNull()) { + toolbar.appendChild(urlNavigatorElement); + } else { + toolbar.replaceChild(urlNavigatorElement, position); + } + + KXMLGUIFactory::saveConfigFile(domDocument, mainWindow->xmlFile()); + mainWindow->reloadXML(); + mainWindow->createGUI(); + return true; +} -- cgit v1.3