File indexing completed on 2024-04-28 05:49:59

0001 /*
0002     This file is part of the KDE project
0003     SPDX-FileCopyrightText: 2000 David Faure <faure@kde.org>
0004     SPDX-FileCopyrightText: 2002-2003 Alexander Kellett <lypanov@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "kbookmarkdombuilder.h"
0010 #include <kbookmarkmanager.h>
0011 
0012 #include <QDebug>
0013 
0014 BookmarkDomBuilder::BookmarkDomBuilder(const KBookmarkGroup &bkGroup)
0015 {
0016     m_stack.push(bkGroup);
0017 }
0018 
0019 BookmarkDomBuilder::~BookmarkDomBuilder()
0020 {
0021     m_list.clear();
0022     m_stack.clear();
0023 }
0024 
0025 void BookmarkDomBuilder::connectImporter(const QObject *importer)
0026 {
0027     // clang-format off
0028     connect(importer, SIGNAL(newBookmark(QString,QString,QString)), SLOT(newBookmark(QString,QString,QString)));
0029     connect(importer, SIGNAL(newFolder(QString,bool,QString)), SLOT(newFolder(QString,bool,QString)));
0030     // clang-format on
0031     connect(importer, SIGNAL(newSeparator()), SLOT(newSeparator()));
0032     connect(importer, SIGNAL(endFolder()), SLOT(endFolder()));
0033 }
0034 
0035 void BookmarkDomBuilder::newBookmark(const QString &text, const QString &url, const QString &additionalInfo)
0036 {
0037     if (!m_stack.isEmpty()) {
0038         KBookmark bk = m_stack.top().addBookmark(text, QUrl(url), QString());
0039         // store additional info
0040         bk.internalElement().setAttribute(QStringLiteral("netscapeinfo"), additionalInfo);
0041     } else {
0042         qWarning() << "m_stack is empty. This should not happen when importing a valid bookmarks file!";
0043     }
0044 }
0045 
0046 void BookmarkDomBuilder::newFolder(const QString &text, bool open, const QString &additionalInfo)
0047 {
0048     if (!m_stack.isEmpty()) {
0049         // we use a qvaluelist so that we keep pointers to valid objects in the stack
0050         KBookmarkGroup gp = m_stack.top().createNewFolder(text);
0051         m_list.append(gp);
0052         m_stack.push(m_list.last());
0053         // store additional info
0054         QDomElement element = m_list.last().internalElement();
0055         element.setAttribute(QStringLiteral("netscapeinfo"), additionalInfo);
0056         element.setAttribute(QStringLiteral("folded"), open ? QStringLiteral("no") : QStringLiteral("yes"));
0057     } else {
0058         qWarning() << "m_stack is empty. This should not happen when importing a valid bookmarks file!";
0059     }
0060 }
0061 
0062 void BookmarkDomBuilder::newSeparator()
0063 {
0064     if (!m_stack.isEmpty()) {
0065         m_stack.top().createNewSeparator();
0066     } else {
0067         qWarning() << "m_stack is empty. This should not happen when importing a valid bookmarks file!";
0068     }
0069 }
0070 
0071 void BookmarkDomBuilder::endFolder()
0072 {
0073     if (!m_stack.isEmpty()) {
0074         m_stack.pop();
0075     } else {
0076         qWarning() << "m_stack is empty. This should not happen when importing a valid bookmarks file!";
0077     }
0078 }
0079 
0080 #include "moc_kbookmarkdombuilder.cpp"