File indexing completed on 2025-03-09 05:20:57

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2011 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_SINGLEDOCUMENTSTRATEGY_P_HPP
0010 #define KASTEN_SINGLEDOCUMENTSTRATEGY_P_HPP
0011 
0012 // lib
0013 #include "abstractdocumentstrategy_p.hpp"
0014 #include "singledocumentstrategy.hpp"
0015 // Kasten core
0016 #include <Kasten/DocumentManager>
0017 #include <Kasten/DocumentSyncManager>
0018 // Qt Core
0019 #include <QStringList>
0020 
0021 namespace Kasten {
0022 class ViewManager;
0023 
0024 class SingleDocumentStrategyPrivate : public AbstractDocumentStrategyPrivate
0025 {
0026 public:
0027     SingleDocumentStrategyPrivate(SingleDocumentStrategy* parent,
0028                                   DocumentManager* documentManager,
0029                                   ViewManager* viewManager);
0030     ~SingleDocumentStrategyPrivate() override;
0031 
0032 public:
0033     void init();
0034 
0035 public: // AbstractDocumentStrategy API
0036     void createNew();
0037     void createNewFromClipboard();
0038     void createNewWithGenerator(AbstractModelDataGenerator* generator);
0039 
0040     void load(const QUrl& url);
0041 
0042     void closeDocument(AbstractDocument* document);
0043     void closeAll();
0044     void closeAllOther(AbstractDocument* document);
0045 
0046 public: // const AbstractDocumentStrategy API
0047     QVector<AbstractDocument*> documents() const;
0048     QStringList supportedRemoteTypes() const;
0049 
0050     bool canClose(AbstractDocument* document) const;
0051     bool canCloseAll() const;
0052     bool canCloseAllOther(AbstractDocument* document) const;
0053 
0054 private:
0055     void triggerGeneration(AbstractModelDataGenerator* generator);
0056 
0057 private:
0058     Q_DECLARE_PUBLIC(SingleDocumentStrategy)
0059 
0060 private:
0061     DocumentManager* mDocumentManager;
0062     ViewManager* mViewManager;
0063 };
0064 
0065 inline
0066 SingleDocumentStrategyPrivate::SingleDocumentStrategyPrivate(SingleDocumentStrategy* parent,
0067                                                              DocumentManager* documentManager,
0068                                                              ViewManager* viewManager)
0069     : AbstractDocumentStrategyPrivate(parent)
0070     , mDocumentManager(documentManager)
0071     , mViewManager(viewManager)
0072 {
0073 }
0074 
0075 inline SingleDocumentStrategyPrivate::~SingleDocumentStrategyPrivate() = default;
0076 
0077 inline QVector<AbstractDocument*> SingleDocumentStrategyPrivate::documents() const
0078 {
0079     return mDocumentManager->documents();
0080 }
0081 
0082 inline QStringList SingleDocumentStrategyPrivate::supportedRemoteTypes() const
0083 {
0084     return mDocumentManager->syncManager()->supportedRemoteTypes();
0085 }
0086 
0087 inline bool SingleDocumentStrategyPrivate::canClose(AbstractDocument* document) const
0088 {
0089     return mDocumentManager->canClose(document);
0090 }
0091 
0092 inline bool SingleDocumentStrategyPrivate::canCloseAllOther(AbstractDocument* document) const
0093 {
0094     return mDocumentManager->canCloseAllOther(document);
0095 }
0096 
0097 inline bool SingleDocumentStrategyPrivate::canCloseAll() const
0098 {
0099     return mDocumentManager->canCloseAll();
0100 }
0101 
0102 inline void SingleDocumentStrategyPrivate::closeAll()
0103 {
0104     mDocumentManager->closeAll();
0105 }
0106 
0107 inline void SingleDocumentStrategyPrivate::closeAllOther(AbstractDocument* document)
0108 {
0109     mDocumentManager->closeAllOther(document);
0110 }
0111 
0112 inline void SingleDocumentStrategyPrivate::closeDocument(AbstractDocument* document)
0113 {
0114     mDocumentManager->closeDocument(document);
0115 }
0116 
0117 }
0118 
0119 #endif