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