File indexing completed on 2025-02-09 07:11:24
0001 /* 0002 This file is part of the Kasten Framework, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2008-2009, 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_ABSTRACTFILESYSTEMCONNECTJOB_P_HPP 0010 #define KASTEN_ABSTRACTFILESYSTEMCONNECTJOB_P_HPP 0011 0012 // library 0013 #include "abstractfilesystemconnectjob.hpp" 0014 #include <abstractconnectjob_p.hpp> 0015 // Qt 0016 #include <QUrl> 0017 #include <QTemporaryFile> 0018 0019 namespace Kasten { 0020 0021 class AbstractFileSystemConnectJobPrivate : public AbstractConnectJobPrivate 0022 { 0023 public: 0024 AbstractFileSystemConnectJobPrivate(AbstractFileSystemConnectJob* parent, 0025 AbstractModelFileSystemSynchronizer* synchronizer, AbstractDocument* document, 0026 const QUrl& url, AbstractModelSynchronizer::ConnectOption option); 0027 0028 ~AbstractFileSystemConnectJobPrivate() override; 0029 0030 public: // KJob API 0031 void start(); 0032 0033 public: 0034 void complete(bool success); 0035 0036 public: 0037 AbstractModelFileSystemSynchronizer* synchronizer() const; 0038 AbstractDocument* document() const; 0039 QFile* file() const; 0040 0041 public: 0042 void connectWithFile(); 0043 0044 protected: 0045 AbstractModelFileSystemSynchronizer* const mSynchronizer; 0046 AbstractDocument* const mDocument; 0047 const QUrl mUrl; 0048 const AbstractModelSynchronizer::ConnectOption mOption; 0049 QFile* mFile = nullptr; 0050 QString mWorkFilePath; 0051 QString mTempFilePath; 0052 0053 private: 0054 Q_DECLARE_PUBLIC(AbstractFileSystemConnectJob) 0055 }; 0056 0057 inline AbstractFileSystemConnectJobPrivate::AbstractFileSystemConnectJobPrivate(AbstractFileSystemConnectJob* parent, 0058 AbstractModelFileSystemSynchronizer* synchronizer, AbstractDocument* document, 0059 const QUrl& url, AbstractModelSynchronizer::ConnectOption option) 0060 : AbstractConnectJobPrivate(parent) 0061 , mSynchronizer(synchronizer) 0062 , mDocument(document) 0063 , mUrl(url) 0064 , mOption(option) 0065 {} 0066 0067 inline AbstractFileSystemConnectJobPrivate::~AbstractFileSystemConnectJobPrivate() = default; 0068 0069 inline AbstractModelFileSystemSynchronizer* AbstractFileSystemConnectJobPrivate::synchronizer() const 0070 { 0071 return mSynchronizer; 0072 } 0073 inline AbstractDocument* AbstractFileSystemConnectJobPrivate::document() const { return mDocument; } 0074 inline QFile* AbstractFileSystemConnectJobPrivate::file() const { return mFile; } 0075 // TODO: setup a notification system 0076 0077 inline void AbstractFileSystemConnectJobPrivate::start() 0078 { 0079 Q_Q(AbstractFileSystemConnectJob); 0080 0081 QMetaObject::invokeMethod(q, "connectWithFile", Qt::QueuedConnection); 0082 } 0083 0084 } 0085 0086 #endif