File indexing completed on 2024-04-14 05:43:09
0001 // vim: set ts=4 sts=4 sw=4 et: 0002 /* This file is part of the KDE project 0003 Copyright (C) 2000 David Faure <faure@kde.org> 0004 Copyright (C) 2002-2003 Alexander Kellett <lypanov@kde.org> 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License as 0008 published by the Free Software Foundation; either version 2 of 0009 the License, or (at your option) version 3. 0010 0011 This program is distributed in the hope that it will be useful, 0012 but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0014 GNU General Public License for more details. 0015 0016 You should have received a copy of the GNU General Public License 0017 along with this program. If not, see <http://www.gnu.org/licenses/> 0018 */ 0019 0020 #ifndef __importers_h 0021 #define __importers_h 0022 0023 #include "kbookmarkmodel/commands.h" 0024 #include <KLocalizedString> 0025 0026 #include <QObject> 0027 0028 class KBookmark; 0029 0030 // TODO: remove QObject base class? doesn't seem to be used. 0031 class ImportCommand : public QObject, public QUndoCommand, public IKEBCommand 0032 { 0033 Q_OBJECT 0034 public: 0035 explicit ImportCommand(KBookmarkModel *model); 0036 0037 virtual void import(const QString &fileName, bool folder) = 0; 0038 0039 void setVisibleName(const QString &visibleName); 0040 QString visibleName() const 0041 { 0042 return m_visibleName; 0043 } 0044 virtual QString requestFilename() const = 0; 0045 0046 static ImportCommand *performImport(KBookmarkModel *model, const QString &, QWidget *); 0047 static ImportCommand *importerFactory(KBookmarkModel *model, const QString &); 0048 0049 ~ImportCommand() override 0050 { 0051 } 0052 0053 void redo() override; 0054 void undo() override; 0055 QString affectedBookmarks() const override; 0056 0057 QString groupAddress() const 0058 { 0059 return m_group; 0060 } 0061 QString folder() const; 0062 0063 protected: 0064 /** 0065 * @param fileName HTML file to import 0066 * @param folder name of the folder to create. Empty for no creation (root()). 0067 * @param icon icon for the new folder, if @p folder isn't empty 0068 * @param utf8 true if the HTML is in utf-8 encoding 0069 */ 0070 void init(const QString &fileName, bool folder, const QString &icon, bool utf8) 0071 { 0072 m_fileName = fileName; 0073 m_folder = folder; 0074 m_icon = icon; 0075 m_utf8 = utf8; 0076 } 0077 0078 virtual void doCreateHoldingFolder(KBookmarkGroup &bkGroup); 0079 virtual void doExecute(const KBookmarkGroup &) = 0; 0080 0081 protected: 0082 KBookmarkModel *m_model; 0083 QString m_visibleName; 0084 QString m_fileName; 0085 QString m_icon; 0086 QString m_group; 0087 bool m_utf8; 0088 0089 private: 0090 bool m_folder; 0091 QUndoCommand *m_cleanUpCmd; 0092 }; 0093 0094 // part pure 0095 class XBELImportCommand : public ImportCommand 0096 { 0097 public: 0098 explicit XBELImportCommand(KBookmarkModel *model) 0099 : ImportCommand(model) 0100 { 0101 } 0102 void import(const QString &fileName, bool folder) override = 0; 0103 QString requestFilename() const override = 0; 0104 0105 private: 0106 void doCreateHoldingFolder(KBookmarkGroup &bkGroup) override; 0107 void doExecute(const KBookmarkGroup &) override; 0108 }; 0109 0110 class GaleonImportCommand : public XBELImportCommand 0111 { 0112 public: 0113 explicit GaleonImportCommand(KBookmarkModel *model) 0114 : XBELImportCommand(model) 0115 { 0116 setVisibleName(i18n("Galeon")); 0117 } 0118 void import(const QString &fileName, bool folder) override 0119 { 0120 init(fileName, folder, QLatin1String(""), false); 0121 } 0122 QString requestFilename() const override; 0123 }; 0124 0125 class KDE2ImportCommand : public XBELImportCommand 0126 { 0127 public: 0128 explicit KDE2ImportCommand(KBookmarkModel *model) 0129 : XBELImportCommand(model) 0130 { 0131 setVisibleName(i18n("KDE")); 0132 } 0133 void import(const QString &fileName, bool folder) override 0134 { 0135 init(fileName, folder, QLatin1String(""), false); 0136 } 0137 QString requestFilename() const override; 0138 }; 0139 0140 // part pure 0141 class HTMLImportCommand : public ImportCommand 0142 { 0143 public: 0144 explicit HTMLImportCommand(KBookmarkModel *model) 0145 : ImportCommand(model) 0146 { 0147 } 0148 void import(const QString &fileName, bool folder) override = 0; 0149 QString requestFilename() const override = 0; 0150 0151 private: 0152 void doExecute(const KBookmarkGroup &) override; 0153 }; 0154 0155 class NSImportCommand : public HTMLImportCommand 0156 { 0157 public: 0158 explicit NSImportCommand(KBookmarkModel *model) 0159 : HTMLImportCommand(model) 0160 { 0161 setVisibleName(i18n("Netscape")); 0162 } 0163 void import(const QString &fileName, bool folder) override 0164 { 0165 init(fileName, folder, QStringLiteral("netscape"), false); 0166 } 0167 QString requestFilename() const override; 0168 }; 0169 0170 class MozImportCommand : public HTMLImportCommand 0171 { 0172 public: 0173 explicit MozImportCommand(KBookmarkModel *model) 0174 : HTMLImportCommand(model) 0175 { 0176 setVisibleName(i18n("Mozilla")); 0177 } 0178 void import(const QString &fileName, bool folder) override 0179 { 0180 init(fileName, folder, QStringLiteral("mozilla"), true); 0181 } 0182 QString requestFilename() const override; 0183 }; 0184 0185 class IEImportCommand : public ImportCommand 0186 { 0187 public: 0188 explicit IEImportCommand(KBookmarkModel *model) 0189 : ImportCommand(model) 0190 { 0191 setVisibleName(i18n("IE")); 0192 } 0193 void import(const QString &fileName, bool folder) override 0194 { 0195 init(fileName, folder, QLatin1String(""), false); 0196 } 0197 QString requestFilename() const override; 0198 0199 private: 0200 void doExecute(const KBookmarkGroup &) override; 0201 }; 0202 0203 class OperaImportCommand : public ImportCommand 0204 { 0205 public: 0206 explicit OperaImportCommand(KBookmarkModel *model) 0207 : ImportCommand(model) 0208 { 0209 setVisibleName(i18n("Opera")); 0210 } 0211 void import(const QString &fileName, bool folder) override 0212 { 0213 init(fileName, folder, QStringLiteral("opera"), false); 0214 } 0215 QString requestFilename() const override; 0216 0217 private: 0218 void doExecute(const KBookmarkGroup &) override; 0219 }; 0220 0221 #endif