File indexing completed on 2024-04-14 05:43:09

0001 /* This file is part of the KDE project
0002    Copyright (C) 2000, 2010 David Faure <faure@kde.org>
0003    Copyright (C) 2002-2003 Alexander Kellett <lypanov@kde.org>
0004 
0005    This program is free software; you can redistribute it and/or
0006    modify it under the terms of the GNU General Public License as
0007    published by the Free Software Foundation; either version 2 of
0008    the License, or (at your option) version 3.
0009 
0010    This program is distributed in the hope that it will be useful,
0011    but WITHOUT ANY WARRANTY; without even the implied warranty of
0012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0013    GNU General Public License for more details.
0014 
0015    You should have received a copy of the GNU General Public License
0016    along with this program.  If not, see <http://www.gnu.org/licenses/>
0017 */
0018 
0019 #ifndef GLOBALBOOKMARKMANAGER_H
0020 #define GLOBALBOOKMARKMANAGER_H
0021 
0022 #include <KBookmark>
0023 #include <QObject>
0024 
0025 class CommandHistory;
0026 class KBookmarkModel;
0027 class KBookmarkManager;
0028 
0029 class GlobalBookmarkManager : public QObject
0030 {
0031     Q_OBJECT
0032 public:
0033     typedef enum { HTMLExport, OperaExport, IEExport, MozillaExport, NetscapeExport } ExportType;
0034 
0035     // TODO port to K_GLOBAL_STATIC if we keep this class
0036     static GlobalBookmarkManager *self()
0037     {
0038         if (!s_mgr) {
0039             s_mgr = new GlobalBookmarkManager();
0040         }
0041         return s_mgr;
0042     }
0043     ~GlobalBookmarkManager() override;
0044     KBookmarkGroup root();
0045     static KBookmark bookmarkAt(const QString &a);
0046 
0047     KBookmarkModel *model() const
0048     {
0049         return m_model;
0050     }
0051     KBookmarkManager *mgr() const
0052     {
0053         return m_mgr.get();
0054     }
0055     QString path() const;
0056 
0057     void createManager(const QString &filename, const QString &dbusObjectName, CommandHistory *commandHistory);
0058     void notifyManagers(const KBookmarkGroup &grp);
0059     void notifyManagers();
0060     bool managerSave();
0061     void saveAs(const QString &fileName);
0062     void doExport(ExportType type, const QString &path = QString());
0063 
0064     // TODO move out
0065     static QString makeTimeStr(const QString &);
0066     static QString makeTimeStr(int);
0067 
0068 Q_SIGNALS:
0069     void error(const QString &errorMessage);
0070 
0071 private:
0072     GlobalBookmarkManager();
0073     std::unique_ptr<KBookmarkManager> m_mgr;
0074     KBookmarkModel *m_model;
0075     static GlobalBookmarkManager *s_mgr;
0076 };
0077 
0078 #endif /* GLOBALBOOKMARKMANAGER_H */