File indexing completed on 2024-06-23 05:49:22

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2007, 2009, 2011, 2019 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_DOCUMENTSYNCMANAGER_P_HPP
0010 #define KASTEN_DOCUMENTSYNCMANAGER_P_HPP
0011 
0012 // lib
0013 #include "documentsyncmanager.hpp"
0014 
0015 namespace Kasten {
0016 
0017 class DocumentSyncManagerPrivate
0018 {
0019 public:
0020     explicit DocumentSyncManagerPrivate(DocumentSyncManager* q, DocumentManager* manager);
0021     DocumentSyncManagerPrivate(const DocumentSyncManagerPrivate&) = delete;
0022 
0023     ~DocumentSyncManagerPrivate();
0024 
0025     DocumentSyncManagerPrivate& operator=(const DocumentSyncManagerPrivate&) = delete;
0026 
0027 public:
0028     void load(const QUrl& url);
0029     bool setSynchronizer(AbstractDocument* document);
0030     bool canClose(AbstractDocument* document);
0031     void reload(AbstractDocument* document);
0032     void save(AbstractDocument* document);
0033 
0034 public:
0035     QStringList supportedRemoteTypes() const;
0036     bool hasSynchronizerForLocal(const QString& workDocumentType) const;
0037     QUrl urlOf(AbstractDocument* document) const;
0038 
0039 public:
0040     void setDocumentSynchronizerFactory(AbstractModelSynchronizerFactory* synchronizerFactory);
0041     void setSaveDiscardDialog(AbstractSaveDiscardDialog* saveDiscardDialog);
0042     void setOverwriteDialog(AbstractOverwriteDialog* overwriteDialog);
0043 
0044 private: // slots
0045     void onDocumentLoaded(Kasten::AbstractDocument* document);
0046 
0047 private:
0048     DocumentSyncManager* const q_ptr;
0049 
0050     // unless there is a singleton
0051     DocumentManager* mManager;
0052 
0053     // temporary hack: hard coded factories for byte arrays
0054     AbstractModelSynchronizerFactory* mSynchronizerFactory = nullptr;
0055 
0056     AbstractSaveDiscardDialog* mSaveDiscardDialog = nullptr;
0057     AbstractOverwriteDialog* mOverwriteDialog = nullptr;
0058 
0059     Q_DECLARE_PUBLIC(DocumentSyncManager)
0060 };
0061 
0062 }
0063 
0064 #endif