File indexing completed on 2024-05-19 05:45:41

0001 /*
0002 SPDX-FileCopyrightText: 2021 Hamed Masafi <hamed.masfi@gmail.com>
0003 
0004 SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QList>
0010 
0011 #include "actions.h"
0012 
0013 #include <Dolphin/KVersionControlPlugin>
0014 
0015 class StatusCache;
0016 class DolphinPlugin : public KVersionControlPlugin
0017 {
0018     Q_OBJECT
0019 
0020     enum class ChangeStatus {
0021         Unknown,
0022         Unmodified,
0023         Modified,
0024         Added,
0025         Removed,
0026         Renamed,
0027         Copied,
0028         UpdatedButInmerged,
0029         Ignored,
0030         Untracked,
0031     };
0032 
0033 public:
0034     explicit DolphinPlugin(QObject *parent, const QList<QVariant> &args);
0035     ~DolphinPlugin();
0036 
0037     QString fileName() const override;
0038     bool beginRetrieval(const QString &directory) override;
0039     void endRetrieval() override;
0040     ItemVersion itemVersion(const KFileItem &item) const override;
0041     QList<QAction *> versionControlActions(const KFileItemList &items) const override;
0042     QList<QAction *> outOfVersionControlActions(const KFileItemList &items) const override;
0043 
0044 private Q_SLOTS:
0045 #define f(name, text, args, icon) void name##Clicked();
0046     ACTIONS_FOR_EACH(f)
0047 #undef f
0048 
0049 private:
0050     StatusCache *mCache;
0051     QAction *mMainActionGit = nullptr;
0052     QAction *mMainActionNonGit = nullptr;
0053     QString mPath;
0054 
0055 #define decl(name, text, args, icon) QAction *name;
0056     ACTIONS_FOR_EACH(decl)
0057 #undef decl
0058 };