File indexing completed on 2024-04-21 05:40:57
0001 /* 0002 SPDX-FileCopyrightText: 2014 Emmanuel Pescosta <emmanuelpescosta099@gmail.com> 0003 SPDX-FileCopyrightText: 2012 Sergei Stolyarov <sergei@regolit.com> 0004 SPDX-FileCopyrightText: 2010 Thomas Richard <thomas.richard@proan.be> 0005 SPDX-FileCopyrightText: 2009-2010 Peter Penz <peter.penz19@gmail.com> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef FILEVIEWDROPBOXPLUGIN_H 0011 #define FILEVIEWDROPBOXPLUGIN_H 0012 0013 #include <Dolphin/KVersionControlPlugin> 0014 0015 #include <QMap> 0016 0017 class QLocalSocket; 0018 0019 //The dropbox protocol info can be found in the dropboxd-protocol file 0020 //it can be found here https://build.opensuse.org/package/view_file/home:faco84/dolphin-box-plugin/dropboxd-protocol 0021 //Thanks Steffen Schuldenzucker! 0022 0023 /** 0024 * @brief Dropbox implementation for the KVersionControlPlugin interface. 0025 */ 0026 class FileViewDropboxPlugin : public KVersionControlPlugin 0027 { 0028 Q_OBJECT 0029 0030 private: 0031 enum SendCommandMode 0032 { 0033 WaitForReply, 0034 SendCommandOnly 0035 }; 0036 0037 enum SendCommandTimeout 0038 { 0039 ShortTimeout, 0040 LongTimeout 0041 }; 0042 0043 public: 0044 FileViewDropboxPlugin(QObject* parent, const QVariantList& args); 0045 ~FileViewDropboxPlugin() override; 0046 0047 QString fileName() const override; 0048 0049 bool beginRetrieval(const QString& directory) override; 0050 KVersionControlPlugin::ItemVersion itemVersion(const KFileItem& item) const override; 0051 void endRetrieval() override; 0052 0053 QList<QAction*> versionControlActions(const KFileItemList& items) const override; 0054 QList<QAction*> outOfVersionControlActions(const KFileItemList& items) const override; 0055 0056 private Q_SLOTS: 0057 void handleContextAction(QAction* action); 0058 0059 private: 0060 QStringList sendCommand(const QString& command, 0061 const QStringList& paths, 0062 const QPointer<QLocalSocket>& socket, 0063 SendCommandMode mode = SendCommandOnly, 0064 SendCommandTimeout timeout = ShortTimeout) const; 0065 0066 bool connectWithDropbox(const QPointer<QLocalSocket>& socket, SendCommandTimeout timeout) const; 0067 0068 private: 0069 class Private; 0070 Private* const d; 0071 0072 static QMap<QString, KVersionControlPlugin::ItemVersion> m_itemVersions; 0073 }; 0074 0075 #endif // FILEVIEWDROPBOXPLUGIN_H 0076