File indexing completed on 2024-05-05 04:41:00

0001 /*
0002     SPDX-FileCopyrightText: 2007 Dukju Ahn <dukjuahn@gmail.com>
0003     SPDX-FileCopyrightText: 2008 Andreas Pakulat <apaku@gmx.de>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef KDEVPLATFORM_PLUGIN_KDEVSVNPLUGIN_H
0009 #define KDEVPLATFORM_PLUGIN_KDEVSVNPLUGIN_H
0010 
0011 #include <vcs/interfaces/icentralizedversioncontrol.h>
0012 #include <vcs/vcsdiff.h>
0013 #include <vcs/vcslocation.h>
0014 #include <interfaces/iplugin.h>
0015 
0016 class QUrl;
0017 class SvnStatusHolder;
0018 class SvnCommitDialog;
0019 
0020 namespace ThreadWeaver
0021 {
0022     class Queue;
0023 }
0024 
0025 namespace KDevelop
0026 {
0027 class VcsPluginHelper;
0028 }
0029 
0030 class KDevSvnPlugin: public KDevelop::IPlugin, public KDevelop::ICentralizedVersionControl
0031 {
0032     Q_OBJECT
0033     Q_INTERFACES(KDevelop::IBasicVersionControl KDevelop::ICentralizedVersionControl)
0034 public:
0035     explicit KDevSvnPlugin(QObject *parent, const QVariantList & = QVariantList());
0036     ~KDevSvnPlugin() override;
0037 
0038     QString name() const override;
0039     KDevelop::VcsImportMetadataWidget* createImportMetadataWidget(QWidget* parent) override;
0040 
0041     // Begin:  KDevelop::IBasicVersionControl
0042     bool isValidRemoteRepositoryUrl(const QUrl& remoteLocation) override;
0043     bool isVersionControlled(const QUrl &localLocation) override;
0044 
0045     KDevelop::VcsJob* repositoryLocation(const QUrl &localLocation) override;
0046 
0047     KDevelop::VcsJob* status(const QList<QUrl>& localLocations,
0048                              KDevelop::IBasicVersionControl::RecursionMode recursion
0049                              = KDevelop::IBasicVersionControl::Recursive) override;
0050 
0051     KDevelop::VcsJob* add(const QList<QUrl>& localLocations,
0052                           KDevelop::IBasicVersionControl::RecursionMode recursion
0053                           = KDevelop::IBasicVersionControl::Recursive) override;
0054 
0055     KDevelop::VcsJob* remove(const QList<QUrl>& localLocations) override;
0056 
0057     KDevelop::VcsJob* copy(const QUrl &localLocationSrc,
0058                            const QUrl &localLocationDstn) override;
0059 
0060     KDevelop::VcsJob* move(const QUrl &localLocationSrc,
0061                            const QUrl &localLocationDst) override;
0062 
0063     KDevelop::VcsJob* revert(const QList<QUrl>& localLocations,
0064                              KDevelop::IBasicVersionControl::RecursionMode recursion
0065                              = KDevelop::IBasicVersionControl::Recursive) override;
0066 
0067     KDevelop::VcsJob* update(const QList<QUrl>& localLocations,
0068                              const KDevelop::VcsRevision& rev,
0069                              KDevelop::IBasicVersionControl::RecursionMode recursion
0070                              = KDevelop::IBasicVersionControl::Recursive) override;
0071 
0072     KDevelop::VcsJob* commit(const QString& message,
0073                              const QList<QUrl>& localLocations,
0074                              KDevelop::IBasicVersionControl::RecursionMode recursion
0075                              = KDevelop::IBasicVersionControl::Recursive) override;
0076 
0077     KDevelop::VcsJob* diff(const QUrl &fileOrDirectory,
0078                            const KDevelop::VcsRevision& srcRevision,
0079                            const KDevelop::VcsRevision& dstRevision,
0080                            KDevelop::IBasicVersionControl::RecursionMode recursion
0081                            = KDevelop::IBasicVersionControl::Recursive) override;
0082 
0083     /**
0084      * Retrieves a diff between the two locations at the given revisions
0085      *
0086      * The diff is in unified diff format for text files by default
0087      */
0088     KDevelop::VcsJob* diff2(const KDevelop::VcsLocation& localOrRepoLocationSrc,
0089                             const KDevelop::VcsLocation& localOrRepoLocationDst,
0090                             const KDevelop::VcsRevision& srcRevision,
0091                             const KDevelop::VcsRevision& dstRevision,
0092                             KDevelop::IBasicVersionControl::RecursionMode = KDevelop::IBasicVersionControl::Recursive);
0093 
0094     KDevelop::VcsJob* log(const QUrl &localLocation,
0095                           const KDevelop::VcsRevision& rev,
0096                           unsigned long limit) override;
0097 
0098     KDevelop::VcsJob* log(const QUrl &localLocation,
0099                           const KDevelop::VcsRevision& rev,
0100                           const KDevelop::VcsRevision& limit) override;
0101 
0102     KDevelop::VcsJob* annotate(const QUrl &localLocation,
0103                                const KDevelop::VcsRevision& rev) override;
0104 
0105     KDevelop::VcsJob* merge(const KDevelop::VcsLocation& localOrRepoLocationSrc,
0106                             const KDevelop::VcsLocation& localOrRepoLocationDst,
0107                             const KDevelop::VcsRevision& srcRevision,
0108                             const KDevelop::VcsRevision& dstRevision,
0109                             const QUrl &localLocation);
0110 
0111     KDevelop::VcsJob* resolve(const QList<QUrl>& localLocations,
0112                               KDevelop::IBasicVersionControl::RecursionMode recursion) override;
0113     KDevelop::VcsLocationWidget* vcsLocation(QWidget* parent) const override;
0114     // End:  KDevelop::IBasicVersionControl
0115 
0116     // Begin:  KDevelop::ICentralizedVersionControl
0117     KDevelop::VcsJob* import(const QString & commitMessage, const QUrl &sourceDirectory, const KDevelop::VcsLocation & destinationRepository) override;
0118 
0119     KDevelop::VcsJob* createWorkingCopy(const KDevelop::VcsLocation & sourceRepository, const QUrl &destinationDirectory, KDevelop::IBasicVersionControl::RecursionMode recursion = KDevelop::IBasicVersionControl::Recursive) override;
0120 
0121     KDevelop::VcsJob* edit(const QUrl &localLocation) override;
0122 
0123     KDevelop::VcsJob* unedit(const QUrl &localLocation) override;
0124 
0125     KDevelop::VcsJob* localRevision(const QUrl &localLocation,
0126                                     KDevelop::VcsRevision::RevisionType) override;
0127     // End:  KDevelop::ICentralizedVersionControl
0128 
0129     KDevelop::ContextMenuExtension contextMenuExtension(KDevelop::Context* context, QWidget* parent) override;
0130 
0131     ThreadWeaver::Queue* jobQueue() const;
0132 
0133 public Q_SLOTS:
0134 
0135     // invoked by context-menu
0136     void ctxCopy();
0137     void ctxMove();
0138 private:
0139     QScopedPointer<KDevelop::VcsPluginHelper> m_common;
0140     QAction* copy_action;
0141     QAction* move_action;
0142     ThreadWeaver::Queue* m_jobQueue;
0143 };
0144 #endif
0145