1 /* 2 This file is part of the Kasten Framework, made within the KDE community. 3 4 SPDX-FileCopyrightText: 2011 Friedrich W. H. Kossebau <kossebau@kde.org> 5 6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 7 */ 8 9 #ifndef KASTEN_MULTIDOCUMENTSTRATEGY_P_HPP 10 #define KASTEN_MULTIDOCUMENTSTRATEGY_P_HPP 11 12 // lib 13 #include "abstractdocumentstrategy_p.hpp" 14 #include "multidocumentstrategy.hpp" 15 // Kasten core 16 #include <Kasten/DocumentManager> 17 #include <Kasten/DocumentSyncManager> 18 #include <Kasten/DocumentCreateManager> 19 // Qt Core 20 #include <QStringList> 21 22 namespace Kasten { 23 class ViewManager; 24 class MultiDocumentStrategy; 25 26 class MultiDocumentStrategyPrivate : public AbstractDocumentStrategyPrivate 27 { 28 public: 29 MultiDocumentStrategyPrivate(MultiDocumentStrategy* parent, 30 DocumentManager* documentManager, 31 ViewManager* viewManager); 32 ~MultiDocumentStrategyPrivate() override; 33 34 public: 35 void init(); 36 37 public: // AbstractDocumentStrategy API 38 void createNew(); 39 void createNewFromClipboard(); 40 void createNewWithGenerator(AbstractModelDataGenerator* generator); 41 42 void load(const QUrl& url); 43 44 void closeDocument(AbstractDocument* document); 45 void closeAll(); 46 void closeAllOther(AbstractDocument* document); 47 48 public: // const AbstractDocumentStrategy API 49 QVector<AbstractDocument*> documents() const; 50 QStringList supportedRemoteTypes() const; 51 52 bool canClose(AbstractDocument* document) const; 53 bool canCloseAll() const; 54 bool canCloseAllOther(AbstractDocument* document) const; 55 56 private: 57 void triggerGeneration(AbstractModelDataGenerator* generator); 58 59 private: 60 Q_DECLARE_PUBLIC(MultiDocumentStrategy) 61 62 private: 63 DocumentManager* mDocumentManager; 64 ViewManager* mViewManager; 65 }; 66 67 inline MultiDocumentStrategyPrivate(MultiDocumentStrategy * parent,DocumentManager * documentManager,ViewManager * viewManager)68MultiDocumentStrategyPrivate::MultiDocumentStrategyPrivate(MultiDocumentStrategy* parent, 69 DocumentManager* documentManager, 70 ViewManager* viewManager) 71 : AbstractDocumentStrategyPrivate(parent) 72 , mDocumentManager(documentManager) 73 , mViewManager(viewManager) 74 { 75 } 76 77 inline MultiDocumentStrategyPrivate::~MultiDocumentStrategyPrivate() = default; 78 documents() const79inline QVector<AbstractDocument*> MultiDocumentStrategyPrivate::documents() const 80 { 81 return mDocumentManager->documents(); 82 } 83 supportedRemoteTypes() const84inline QStringList MultiDocumentStrategyPrivate::supportedRemoteTypes() const 85 { 86 return mDocumentManager->syncManager()->supportedRemoteTypes(); 87 } 88 canClose(AbstractDocument * document) const89inline bool MultiDocumentStrategyPrivate::canClose(AbstractDocument* document) const 90 { 91 return mDocumentManager->canClose(document); 92 } 93 canCloseAllOther(AbstractDocument * document) const94inline bool MultiDocumentStrategyPrivate::canCloseAllOther(AbstractDocument* document) const 95 { 96 return mDocumentManager->canCloseAllOther(document); 97 } 98 canCloseAll() const99inline bool MultiDocumentStrategyPrivate::canCloseAll() const 100 { 101 return mDocumentManager->canCloseAll(); 102 } 103 createNew()104inline void MultiDocumentStrategyPrivate::createNew() 105 { 106 mDocumentManager->createManager()->createNew(); 107 } 108 load(const QUrl & url)109inline void MultiDocumentStrategyPrivate::load(const QUrl& url) 110 { 111 mDocumentManager->syncManager()->load(url); 112 } 113 closeAll()114inline void MultiDocumentStrategyPrivate::closeAll() 115 { 116 mDocumentManager->closeAll(); 117 } 118 closeAllOther(AbstractDocument * document)119inline void MultiDocumentStrategyPrivate::closeAllOther(AbstractDocument* document) 120 { 121 mDocumentManager->closeAllOther(document); 122 } 123 closeDocument(AbstractDocument * document)124inline void MultiDocumentStrategyPrivate::closeDocument(AbstractDocument* document) 125 { 126 mDocumentManager->closeDocument(document); 127 } 128 129 } 130 131 #endif 132