File indexing completed on 2024-05-12 15:59:14

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2012 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef DOCUMENTMANAGER_H
0008 #define DOCUMENTMANAGER_H
0009 
0010 #include <QObject>
0011 #include <QVariantMap>
0012 
0013 #include "krita_sketch_export.h"
0014 
0015 class RecentFileManager;
0016 class Settings;
0017 class ProgressProxy;
0018 class KisDocument;
0019 
0020 class KRITA_SKETCH_EXPORT DocumentManager : public QObject
0021 {
0022     Q_OBJECT
0023 public:
0024     KisDocument* document() const;
0025     ProgressProxy* progressProxy() const;
0026     Settings* settingsManager() const;
0027     void setSettingsManager(Settings* newManager);
0028     RecentFileManager* recentFileManager() const;
0029     bool isTemporaryFile() const;
0030 
0031 public Q_SLOTS:
0032     void newDocument(int width, int height, float resolution);
0033     void newDocument(const QVariantMap& options);
0034     void openDocument(const QString& document, bool import = false);
0035     void closeDocument();
0036     bool save();
0037     void saveAs(const QString &filename, const QString &mimetype);
0038     void reload();
0039     void setTemporaryFile(bool temp);
0040 
0041     static DocumentManager* instance();
0042 
0043 Q_SIGNALS:
0044     void documentChanged();
0045     void aboutToDeleteDocument();
0046     void documentSaved();
0047 
0048 private:
0049     explicit DocumentManager(QObject *parent = 0);
0050     virtual ~DocumentManager();
0051 
0052     class Private;
0053     Private * const d;
0054 
0055     static DocumentManager *sm_instance;
0056 
0057 private Q_SLOTS:
0058     void delayedNewDocument();
0059     void delayedSaveAs();
0060     void delayedOpenDocument();
0061 
0062     void onLoadCompleted();
0063     void onLoadCanceled(const QString &errMsg);
0064 };
0065 
0066 #endif // DOCUMENTMANAGER_H