File indexing completed on 2025-02-02 05:43:14
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_ABSTRACTFILESYSTEMSYNCTOREMOTEJOB_P_HPP 0010 #define KASTEN_ABSTRACTFILESYSTEMSYNCTOREMOTEJOB_P_HPP 0011 0012 #include "abstractfilesystemsynctoremotejob.hpp" 0013 #include <abstractsynctoremotejob_p.hpp> 0014 0015 // library 0016 #include "abstractmodelfilesystemsynchronizer.hpp" 0017 // Qt 0018 #include <QUrl> 0019 #include <QTemporaryFile> 0020 0021 namespace Kasten { 0022 class AbstractFileSystemSyncToRemoteJobPrivate : public AbstractSyncToRemoteJobPrivate 0023 { 0024 public: 0025 AbstractFileSystemSyncToRemoteJobPrivate(AbstractFileSystemSyncToRemoteJob* parent, AbstractModelFileSystemSynchronizer* synchronizer); 0026 0027 ~AbstractFileSystemSyncToRemoteJobPrivate() override; 0028 0029 public: // KJob API 0030 void start(); 0031 0032 public: 0033 AbstractModelFileSystemSynchronizer* synchronizer() const; 0034 QFile* file() const; 0035 0036 public: 0037 void completeWrite(bool success); 0038 0039 public: // slots 0040 void syncToRemote(); 0041 0042 protected: 0043 AbstractModelFileSystemSynchronizer* const mSynchronizer; 0044 QFile* mFile = nullptr; 0045 QString mWorkFilePath; 0046 0047 private: 0048 Q_DECLARE_PUBLIC(AbstractFileSystemSyncToRemoteJob) 0049 }; 0050 0051 inline AbstractFileSystemSyncToRemoteJobPrivate::AbstractFileSystemSyncToRemoteJobPrivate(AbstractFileSystemSyncToRemoteJob* parent, 0052 AbstractModelFileSystemSynchronizer* synchronizer) 0053 : AbstractSyncToRemoteJobPrivate(parent) 0054 , mSynchronizer(synchronizer) 0055 {} 0056 0057 inline QFile* AbstractFileSystemSyncToRemoteJobPrivate::file() const { return mFile; } 0058 // TODO: setup a notification system 0059 inline AbstractModelFileSystemSynchronizer* AbstractFileSystemSyncToRemoteJobPrivate::synchronizer() const 0060 { 0061 return mSynchronizer; 0062 } 0063 0064 inline void AbstractFileSystemSyncToRemoteJobPrivate::start() 0065 { 0066 Q_Q(AbstractFileSystemSyncToRemoteJob); 0067 0068 QMetaObject::invokeMethod(q, "syncToRemote", Qt::QueuedConnection); 0069 } 0070 0071 } 0072 0073 #endif