diff options
Diffstat (limited to 'src/views/dolphinurlnavigatorwidgetaction.cpp')
| -rw-r--r-- | src/views/dolphinurlnavigatorwidgetaction.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
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 <KLocalizedString> +#include <KXMLGUIFactory> +#include <KXmlGuiWindow> + +#include <QDomDocument> +#include <QStackedWidget> 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; +} |
