File indexing completed on 2024-04-14 05:34:14
0001 /* 0002 SPDX-FileCopyrightText: 2011 Vishesh Yadav <vishesh3y@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef FILEVIEWHGPLUGIN_H 0008 #define FILEVIEWHGPLUGIN_H 0009 0010 #include "hgwrapper.h" 0011 0012 #include <KFileItem> 0013 #include <Dolphin/KVersionControlPlugin> 0014 #include <QHash> 0015 #include <QString> 0016 #include <QProcess> 0017 0018 class QAction; 0019 class QMenu; 0020 0021 class FileViewHgPlugin : public KVersionControlPlugin 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 FileViewHgPlugin(QObject *parent, const QList<QVariant> &args); 0027 ~FileViewHgPlugin() override; 0028 QString fileName() const override; 0029 QString localRepositoryRoot(const QString& directory) const override; 0030 bool beginRetrieval(const QString& directory) override; 0031 void endRetrieval() override; 0032 KVersionControlPlugin::ItemVersion itemVersion(const KFileItem& item) const override; 0033 QList<QAction*> versionControlActions(const KFileItemList& items) const override; 0034 virtual QList<QAction*> outOfVersionControlActions(const KFileItemList& items) const override; 0035 0036 0037 private: 0038 /** 0039 * Check if HgWrapper is created and connect some signals/slots. Created 0040 * to ensure that HgWrapper singleton is instantiated not during 0041 * plugin construction hence not in other thread which ends up giving 0042 * a lot of warnings. 0043 */ 0044 void createHgWrapper() const; 0045 0046 /** 0047 * Simply clear status messages ie m_errorMsg and m_operationCompletedMsg 0048 */ 0049 void clearMessages() const; 0050 0051 /** 0052 * Read executable file path to open diff patches with from 0053 * $HOME/.dolphin-hg file in INI format 0054 */ 0055 QString visualDiffExecPath(); 0056 0057 QList<QAction*> itemContextMenu(const KFileItemList &items) const; 0058 QList<QAction*> directoryContextMenu(const QString &directory) const; 0059 QList<QAction*> universalContextMenuActions(const QString &directory) const; 0060 0061 private Q_SLOTS: 0062 void addFiles(); 0063 void removeFiles(); 0064 void renameFile(); 0065 void commit(); 0066 void branch(); 0067 void tag(); 0068 void update(); 0069 void clone(); 0070 void create(); 0071 void global_config(); 0072 void repo_config(); 0073 void push(); 0074 void pull(); 0075 void revert(); 0076 void revertAll(); 0077 void rollback(); 0078 void backout(); 0079 void diff(); 0080 void serve(); 0081 void merge(); 0082 void bundle(); 0083 void unbundle(); 0084 void exportChangesets(); 0085 void importChangesets(); 0086 0087 void slotOperationCompleted(int exitCode, QProcess::ExitStatus exitStatus); 0088 void slotOperationError(); 0089 0090 private: 0091 QHash<QString, ItemVersion> m_versionInfoHash; 0092 0093 QMenu *m_mainContextMenu; 0094 0095 QAction *m_menuAction; 0096 QAction *m_addAction; 0097 QAction *m_removeAction; 0098 QAction *m_renameAction; 0099 QAction *m_commitAction; 0100 QAction *m_branchAction; 0101 QAction *m_tagAction; 0102 QAction *m_updateAction; 0103 QAction *m_cloneAction; 0104 QAction *m_createAction; 0105 QAction *m_configAction; 0106 QAction *m_globalConfigAction; 0107 QAction *m_repoConfigAction; 0108 QAction *m_pushAction; 0109 QAction *m_pullAction; 0110 QAction *m_revertAction; 0111 QAction *m_revertAllAction; 0112 QAction *m_rollbackAction; 0113 QAction *m_mergeAction; 0114 QAction *m_bundleAction; 0115 QAction *m_exportAction; 0116 QAction *m_unbundleAction; 0117 QAction *m_importAction; 0118 QAction *m_diffAction; 0119 QAction *m_serveAction; 0120 QAction *m_backoutAction; 0121 0122 QWidget* m_parentWidget; 0123 0124 mutable KFileItemList m_contextItems; 0125 mutable QString m_universalCurrentDirectory; 0126 mutable QString m_currentDir; 0127 bool m_isCommitable; 0128 0129 mutable QString m_operationCompletedMsg; 0130 mutable QString m_errorMsg; 0131 mutable HgWrapper *m_hgWrapper; 0132 HgWrapper *m_retrievalHgw; 0133 }; 0134 0135 #endif // FILEVIEWHGPLUGIN_H 0136