diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp index be618fbcc3d..e69de29bb2d 100644 --- a/src/plugins/cvs/cvscontrol.cpp +++ b/src/plugins/cvs/cvscontrol.cpp @@ -1,166 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "cvscontrol.h" - -#include "cvsclient.h" -#include "cvsplugin.h" -#include "cvssettings.h" - -#include -#include - -#include -#include -#include - -#include - -using namespace Cvs; -using namespace Cvs::Internal; - -CvsControl::CvsControl(CvsPluginPrivate *plugin) : - m_plugin(plugin) -{ } - -QString CvsControl::displayName() const -{ - return QLatin1String("cvs"); -} - -Core::Id CvsControl::id() const -{ - return Core::Id(VcsBase::Constants::VCS_ID_CVS); -} - -bool CvsControl::isVcsFileOrDirectory(const Utils::FilePath &fileName) const -{ - return fileName.isDir() - && !fileName.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity()); -} - -bool CvsControl::isConfigured() const -{ - const Utils::FilePath binary = m_plugin->client()->vcsBinary(); - if (binary.isEmpty()) - return false; - QFileInfo fi = binary.toFileInfo(); - return fi.exists() && fi.isFile() && fi.isExecutable(); -} - -bool CvsControl::supportsOperation(Operation operation) const -{ - bool rc = isConfigured(); - switch (operation) { - case AddOperation: - case DeleteOperation: - case AnnotateOperation: - case InitialCheckoutOperation: - break; - case MoveOperation: - case CreateRepositoryOperation: - case SnapshotOperations: - rc = false; - break; - } - return rc; -} - -Core::IVersionControl::OpenSupportMode CvsControl::openSupportMode(const QString &fileName) const -{ - Q_UNUSED(fileName) - return OpenOptional; -} - -bool CvsControl::vcsOpen(const QString &fileName) -{ - const QFileInfo fi(fileName); - return m_plugin->edit(fi.absolutePath(), QStringList(fi.fileName())); -} - -bool CvsControl::vcsAdd(const QString &fileName) -{ - const QFileInfo fi(fileName); - return m_plugin->vcsAdd(fi.absolutePath(), fi.fileName()); -} - -bool CvsControl::vcsDelete(const QString &fileName) -{ - const QFileInfo fi(fileName); - return m_plugin->vcsDelete(fi.absolutePath(), fi.fileName()); -} - -bool CvsControl::vcsMove(const QString &from, const QString &to) -{ - Q_UNUSED(from) - Q_UNUSED(to) - return false; -} - -bool CvsControl::vcsCreateRepository(const QString &) -{ - return false; -} - -bool CvsControl::vcsAnnotate(const QString &file, int line) -{ - const QFileInfo fi(file); - m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line); - return true; -} - -QString CvsControl::vcsOpenText() const -{ - return tr("&Edit"); -} - -Core::ShellCommand *CvsControl::createInitialCheckoutCommand(const QString &url, - const Utils::FilePath &baseDirectory, - const QString &localName, - const QStringList &extraArgs) -{ - QTC_ASSERT(localName == url, return nullptr); - - const CvsSettings settings = m_plugin->client()->settings(); - - QStringList args; - args << QLatin1String("checkout") << url << extraArgs; - - auto command = new VcsBase::VcsCommand(baseDirectory.toString(), - QProcessEnvironment::systemEnvironment()); - command->setDisplayName(tr("CVS Checkout")); - command->addJob({m_plugin->client()->vcsBinary(), settings.addOptions(args)}, -1); - return command; -} - -bool CvsControl::managesDirectory(const QString &directory, QString *topLevel) const -{ - return m_plugin->managesDirectory(directory, topLevel); -} - -bool CvsControl::managesFile(const QString &workingDirectory, const QString &fileName) const -{ - return m_plugin->managesFile(workingDirectory, fileName); -} diff --git a/src/plugins/cvs/cvscontrol.h b/src/plugins/cvs/cvscontrol.h index 5a854ebf1a5..e69de29bb2d 100644 --- a/src/plugins/cvs/cvscontrol.h +++ b/src/plugins/cvs/cvscontrol.h @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include - -namespace Cvs { -namespace Internal { - -class CvsPluginPrivate; - -// Just a proxy for CVSPlugin -class CvsControl : public Core::IVersionControl -{ - Q_OBJECT - -public: - explicit CvsControl(CvsPluginPrivate *plugin); - QString displayName() const final; - Core::Id id() const final; - - bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; - - bool managesDirectory(const QString &directory, QString *topLevel = nullptr) const final; - bool managesFile(const QString &workingDirectory, const QString &fileName) const final; - - bool isConfigured() const final; - bool supportsOperation(Operation operation) const final; - OpenSupportMode openSupportMode(const QString &fileName) const final; - bool vcsOpen(const QString &fileName) final; - bool vcsAdd(const QString &fileName) final; - bool vcsDelete(const QString &filename) final; - bool vcsMove(const QString &from, const QString &to) final; - bool vcsCreateRepository(const QString &directory) final; - bool vcsAnnotate(const QString &file, int line) final; - - QString vcsOpenText() const final; - - Core::ShellCommand *createInitialCheckoutCommand(const QString &url, - const Utils::FilePath &baseDirectory, - const QString &localName, - const QStringList &extraArgs) final; - -private: - CvsPluginPrivate *const m_plugin; -}; - -} // namespace Internal -} // namespace Cvs diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 2756c690698..5d488b9c3cb 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -29,11 +29,13 @@ #include "cvssubmiteditor.h" #include "cvsclient.h" #include "cvscontrol.h" +#include "cvsutils.h" #include #include #include #include +#include #include #include @@ -80,17 +82,6 @@ using namespace Utils; namespace Cvs { namespace Internal { -static inline QString msgCannotFindTopLevel(const QString &f) -{ - return CvsPluginPrivate::tr("Cannot find repository for \"%1\"."). - arg(QDir::toNativeSeparators(f)); -} - -static inline QString msgLogParsingFailed() -{ - return CvsPluginPrivate::tr("Parsing of the log output failed."); -} - const char CVS_CONTEXT[] = "CVS Context"; const char CMD_ID_CVS_MENU[] = "CVS.Menu"; const char CMD_ID_ADD[] = "CVS.Add"; @@ -121,6 +112,17 @@ const char CVS_SUBMIT_MIMETYPE[] = "text/vnd.qtcreator.cvs.submit"; const char CVSCOMMITEDITOR_ID[] = "CVS Commit Editor"; const char CVSCOMMITEDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("VCS", "CVS Commit Editor"); +class CvsResponse +{ +public: + enum Result { Ok, NonNullExitCode, OtherError }; + + Result result = Ok; + QString stdOut; + QString stdErr; + QString message; +}; + const VcsBaseEditorParameters editorParameters[] = { { OtherContent, @@ -154,6 +156,282 @@ static inline bool messageBoxQuestion(const QString &title, const QString &quest return QMessageBox::question(ICore::dialogParent(), title, question, QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes; } + +class CvsPluginPrivate final : public VcsBasePluginPrivate +{ + Q_DECLARE_TR_FUNCTIONS(Cvs::Internal::CvsPlugin) + +public: + CvsPluginPrivate(); + ~CvsPluginPrivate() final; + + CvsClient *client() const; + + CvsSubmitEditor *openCVSSubmitEditor(const QString &fileName); + + // IVersionControl + bool vcsAdd(const QString &workingDir, const QString &fileName); + bool vcsDelete(const QString &workingDir, const QString &fileName); + bool managesDirectory(const QString &directory, QString *topLevel = nullptr) const; + bool managesFile(const QString &workingDirectory, const QString &fileName) const; + // cvs 'edit' is used to implement 'open' (cvsnt). + bool edit(const QString &topLevel, const QStringList &files); + + void vcsAnnotate(const QString &workingDirectory, const QString &file, + const QString &revision, int lineNumber); + +protected: + void updateActions(ActionState) final; + bool submitEditorAboutToClose() final; + +private: + void addCurrentFile(); + void revertCurrentFile(); + void diffProject(); + void diffCurrentFile(); + void revertAll(); + void startCommitAll(); + void startCommitDirectory(); + void startCommitCurrentFile(); + void filelogCurrentFile(); + void annotateCurrentFile(); + void projectStatus(); + void updateDirectory(); + void updateProject(); + void commitFromEditor() final; + void diffCommitFiles(const QStringList &); + void logProject(); + void logRepository(); + void commitProject(); + void diffRepository(); + void statusRepository(); + void updateRepository(); + void editCurrentFile(); + void uneditCurrentFile(); + void uneditCurrentRepository(); + + bool isCommitEditorOpen() const; + Core::IEditor *showOutputInEditor(const QString& title, const QString &output, + int editorType, const QString &source, + QTextCodec *codec); + + CvsResponse runCvs(const QString &workingDirectory, + const QStringList &arguments, + int timeOutS, + unsigned flags, + QTextCodec *outputCodec = nullptr) const; + + void annotate(const QString &workingDir, const QString &file, + const QString &revision = QString(), int lineNumber= -1); + bool describe(const QString &source, const QString &changeNr, QString *errorMessage); + bool describe(const QString &toplevel, const QString &source, const QString &changeNr, QString *errorMessage); + bool describe(const QString &repository, QList entries, QString *errorMessage); + void filelog(const QString &workingDir, + const QString &file = QString(), + bool enableAnnotationContextMenu = false); + bool unedit(const QString &topLevel, const QStringList &files); + bool status(const QString &topLevel, const QString &file, const QString &title); + bool update(const QString &topLevel, const QString &file); + bool checkCVSDirectory(const QDir &directory) const; + // Quick check if files are modified + bool diffCheckModified(const QString &topLevel, const QStringList &files, bool *modified); + QString findTopLevelForDirectoryI(const QString &directory) const; + void startCommit(const QString &workingDir, const QString &file = QString()); + bool commit(const QString &messageFile, const QStringList &subVersionFileList); + void cleanCommitMessageFile(); + + CvsSettings m_settings; + CvsClient *m_client = nullptr; + + QString m_commitMessageFileName; + QString m_commitRepository; + + Core::CommandLocator *m_commandLocator = nullptr; + Utils::ParameterAction *m_addAction = nullptr; + Utils::ParameterAction *m_deleteAction = nullptr; + Utils::ParameterAction *m_revertAction = nullptr; + Utils::ParameterAction *m_editCurrentAction = nullptr; + Utils::ParameterAction *m_uneditCurrentAction = nullptr; + QAction *m_uneditRepositoryAction = nullptr; + Utils::ParameterAction *m_diffProjectAction = nullptr; + Utils::ParameterAction *m_diffCurrentAction = nullptr; + Utils::ParameterAction *m_logProjectAction = nullptr; + QAction *m_logRepositoryAction = nullptr; + QAction *m_commitAllAction = nullptr; + QAction *m_revertRepositoryAction = nullptr; + Utils::ParameterAction *m_commitCurrentAction = nullptr; + Utils::ParameterAction *m_filelogCurrentAction = nullptr; + Utils::ParameterAction *m_annotateCurrentAction = nullptr; + Utils::ParameterAction *m_statusProjectAction = nullptr; + Utils::ParameterAction *m_updateProjectAction = nullptr; + Utils::ParameterAction *m_commitProjectAction = nullptr; + Utils::ParameterAction *m_updateDirectoryAction = nullptr; + Utils::ParameterAction *m_commitDirectoryAction = nullptr; + QAction *m_diffRepositoryAction = nullptr; + QAction *m_updateRepositoryAction = nullptr; + QAction *m_statusRepositoryAction = nullptr; + + QAction *m_menuAction = nullptr; + bool m_submitActionTriggered = false; +}; + +// Just a proxy for CVSPlugin +class CvsControl : public Core::IVersionControl +{ + Q_DECLARE_TR_FUNCTIONS(Cvs::Internal::CvsControl) + +public: + explicit CvsControl(CvsPluginPrivate *plugin) : m_plugin(plugin) {} + + QString displayName() const final; + Core::Id id() const final; + + bool isVcsFileOrDirectory(const Utils::FilePath &fileName) const final; + + bool managesDirectory(const QString &directory, QString *topLevel = nullptr) const final; + bool managesFile(const QString &workingDirectory, const QString &fileName) const final; + + bool isConfigured() const final; + bool supportsOperation(Operation operation) const final; + OpenSupportMode openSupportMode(const QString &fileName) const final; + bool vcsOpen(const QString &fileName) final; + bool vcsAdd(const QString &fileName) final; + bool vcsDelete(const QString &filename) final; + bool vcsMove(const QString &from, const QString &to) final; + bool vcsCreateRepository(const QString &directory) final; + bool vcsAnnotate(const QString &file, int line) final; + + QString vcsOpenText() const final; + + Core::ShellCommand *createInitialCheckoutCommand(const QString &url, + const Utils::FilePath &baseDirectory, + const QString &localName, + const QStringList &extraArgs) final; + +private: + CvsPluginPrivate *const m_plugin; +}; + +QString CvsControl::displayName() const +{ + return QLatin1String("cvs"); +} + +Core::Id CvsControl::id() const +{ + return Core::Id(VcsBase::Constants::VCS_ID_CVS); +} + +bool CvsControl::isVcsFileOrDirectory(const Utils::FilePath &fileName) const +{ + return fileName.isDir() + && !fileName.fileName().compare("CVS", Utils::HostOsInfo::fileNameCaseSensitivity()); +} + +bool CvsControl::isConfigured() const +{ + const Utils::FilePath binary = m_plugin->client()->vcsBinary(); + if (binary.isEmpty()) + return false; + QFileInfo fi = binary.toFileInfo(); + return fi.exists() && fi.isFile() && fi.isExecutable(); +} + +bool CvsControl::supportsOperation(Operation operation) const +{ + bool rc = isConfigured(); + switch (operation) { + case AddOperation: + case DeleteOperation: + case AnnotateOperation: + case InitialCheckoutOperation: + break; + case MoveOperation: + case CreateRepositoryOperation: + case SnapshotOperations: + rc = false; + break; + } + return rc; +} + +Core::IVersionControl::OpenSupportMode CvsControl::openSupportMode(const QString &fileName) const +{ + Q_UNUSED(fileName) + return OpenOptional; +} + +bool CvsControl::vcsOpen(const QString &fileName) +{ + const QFileInfo fi(fileName); + return m_plugin->edit(fi.absolutePath(), QStringList(fi.fileName())); +} + +bool CvsControl::vcsAdd(const QString &fileName) +{ + const QFileInfo fi(fileName); + return m_plugin->vcsAdd(fi.absolutePath(), fi.fileName()); +} + +bool CvsControl::vcsDelete(const QString &fileName) +{ + const QFileInfo fi(fileName); + return m_plugin->vcsDelete(fi.absolutePath(), fi.fileName()); +} + +bool CvsControl::vcsMove(const QString &from, const QString &to) +{ + Q_UNUSED(from) + Q_UNUSED(to) + return false; +} + +bool CvsControl::vcsCreateRepository(const QString &) +{ + return false; +} + +bool CvsControl::vcsAnnotate(const QString &file, int line) +{ + const QFileInfo fi(file); + m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line); + return true; +} + +QString CvsControl::vcsOpenText() const +{ + return tr("&Edit"); +} + +Core::ShellCommand *CvsControl::createInitialCheckoutCommand(const QString &url, + const Utils::FilePath &baseDirectory, + const QString &localName, + const QStringList &extraArgs) +{ + QTC_ASSERT(localName == url, return nullptr); + + const CvsSettings settings = m_plugin->client()->settings(); + + QStringList args; + args << QLatin1String("checkout") << url << extraArgs; + + auto command = new VcsBase::VcsCommand(baseDirectory.toString(), + QProcessEnvironment::systemEnvironment()); + command->setDisplayName(tr("CVS Checkout")); + command->addJob({m_plugin->client()->vcsBinary(), settings.addOptions(args)}, -1); + return command; +} + +bool CvsControl::managesDirectory(const QString &directory, QString *topLevel) const +{ + return m_plugin->managesDirectory(directory, topLevel); +} + +bool CvsControl::managesFile(const QString &workingDirectory, const QString &fileName) const +{ + return m_plugin->managesFile(workingDirectory, fileName); +} + // ------------- CVSPlugin static CvsPluginPrivate *dd = nullptr; @@ -221,7 +499,7 @@ CvsPluginPrivate::CvsPluginPrivate() m_client = new CvsClient(&m_settings); - new CvsSettingsPage(vcsCtrl, &m_settings, this); + new CvsSettingsPage([vcsCtrl] { vcsCtrl->configurationChanged(); }, &m_settings, this); new VcsSubmitEditorFactory(&submitParameters, []() { return new CvsSubmitEditor(&submitParameters); }, this); @@ -968,7 +1246,8 @@ bool CvsPluginPrivate::describe(const QString &file, const QString &changeNr, QS QString toplevel; const bool manages = managesDirectory(QFileInfo(file).absolutePath(), &toplevel); if (!manages || toplevel.isEmpty()) { - *errorMessage = msgCannotFindTopLevel(file); + *errorMessage = tr("Cannot find repository for \"%1\".") + .arg(QDir::toNativeSeparators(file)); return false; } return describe(toplevel, QDir(toplevel).relativeFilePath(file), changeNr, errorMessage); @@ -1000,7 +1279,7 @@ bool CvsPluginPrivate::describe(const QString &toplevel, const QString &file, co } const QList fileLog = parseLogEntries(logResponse.stdOut); if (fileLog.empty() || fileLog.front().revisions.empty()) { - *errorMessage = msgLogParsingFailed(); + *errorMessage = tr("Parsing of the log output failed."); return false; } if (m_settings.boolValue(CvsSettings::describeByCommitIdKey)) { diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h index 94314773ad5..1cc19e13aa4 100644 --- a/src/plugins/cvs/cvsplugin.h +++ b/src/plugins/cvs/cvsplugin.h @@ -25,161 +25,11 @@ #pragma once -#include "cvssettings.h" -#include "cvsutils.h" - -#include - -QT_BEGIN_NAMESPACE -class QDir; -class QAction; -class QTextCodec; -QT_END_NAMESPACE - -namespace Core { -class CommandLocator; -class IVersionControl; -} // namespace Core - -namespace Utils { class ParameterAction; } -namespace VcsBase { class VcsBaseSubmitEditor; } +#include namespace Cvs { namespace Internal { -class CvsSubmitEditor; -class CvsControl; -class CvsClient; - -class CvsResponse -{ -public: - enum Result { Ok, NonNullExitCode, OtherError }; - - Result result = Ok; - QString stdOut; - QString stdErr; - QString message; -}; - -class CvsPluginPrivate final : public VcsBase::VcsBasePluginPrivate -{ - Q_OBJECT - -public: - CvsPluginPrivate(); - ~CvsPluginPrivate() final; - - CvsClient *client() const; - - CvsSubmitEditor *openCVSSubmitEditor(const QString &fileName); - - // IVersionControl - bool vcsAdd(const QString &workingDir, const QString &fileName); - bool vcsDelete(const QString &workingDir, const QString &fileName); - bool managesDirectory(const QString &directory, QString *topLevel = nullptr) const; - bool managesFile(const QString &workingDirectory, const QString &fileName) const; - // cvs 'edit' is used to implement 'open' (cvsnt). - bool edit(const QString &topLevel, const QStringList &files); - - void vcsAnnotate(const QString &workingDirectory, const QString &file, - const QString &revision, int lineNumber); - -protected: - void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override; - bool submitEditorAboutToClose() override; - -private: - void addCurrentFile(); - void revertCurrentFile(); - void diffProject(); - void diffCurrentFile(); - void revertAll(); - void startCommitAll(); - void startCommitDirectory(); - void startCommitCurrentFile(); - void filelogCurrentFile(); - void annotateCurrentFile(); - void projectStatus(); - void updateDirectory(); - void updateProject(); - void commitFromEditor() override; - void diffCommitFiles(const QStringList &); - void logProject(); - void logRepository(); - void commitProject(); - void diffRepository(); - void statusRepository(); - void updateRepository(); - void editCurrentFile(); - void uneditCurrentFile(); - void uneditCurrentRepository(); - - bool isCommitEditorOpen() const; - Core::IEditor *showOutputInEditor(const QString& title, const QString &output, - int editorType, const QString &source, - QTextCodec *codec); - - CvsResponse runCvs(const QString &workingDirectory, - const QStringList &arguments, - int timeOutS, - unsigned flags, - QTextCodec *outputCodec = nullptr) const; - - void annotate(const QString &workingDir, const QString &file, - const QString &revision = QString(), int lineNumber= -1); - bool describe(const QString &source, const QString &changeNr, QString *errorMessage); - bool describe(const QString &toplevel, const QString &source, const QString &changeNr, QString *errorMessage); - bool describe(const QString &repository, QList entries, QString *errorMessage); - void filelog(const QString &workingDir, - const QString &file = QString(), - bool enableAnnotationContextMenu = false); - bool unedit(const QString &topLevel, const QStringList &files); - bool status(const QString &topLevel, const QString &file, const QString &title); - bool update(const QString &topLevel, const QString &file); - bool checkCVSDirectory(const QDir &directory) const; - // Quick check if files are modified - bool diffCheckModified(const QString &topLevel, const QStringList &files, bool *modified); - QString findTopLevelForDirectoryI(const QString &directory) const; - void startCommit(const QString &workingDir, const QString &file = QString()); - bool commit(const QString &messageFile, const QStringList &subVersionFileList); - void cleanCommitMessageFile(); - - CvsSettings m_settings; - CvsClient *m_client = nullptr; - - QString m_commitMessageFileName; - QString m_commitRepository; - - Core::CommandLocator *m_commandLocator = nullptr; - Utils::ParameterAction *m_addAction = nullptr; - Utils::ParameterAction *m_deleteAction = nullptr; - Utils::ParameterAction *m_revertAction = nullptr; - Utils::ParameterAction *m_editCurrentAction = nullptr; - Utils::ParameterAction *m_uneditCurrentAction = nullptr; - QAction *m_uneditRepositoryAction = nullptr; - Utils::ParameterAction *m_diffProjectAction = nullptr; - Utils::ParameterAction *m_diffCurrentAction = nullptr; - Utils::ParameterAction *m_logProjectAction = nullptr; - QAction *m_logRepositoryAction = nullptr; - QAction *m_commitAllAction = nullptr; - QAction *m_revertRepositoryAction = nullptr; - Utils::ParameterAction *m_commitCurrentAction = nullptr; - Utils::ParameterAction *m_filelogCurrentAction = nullptr; - Utils::ParameterAction *m_annotateCurrentAction = nullptr; - Utils::ParameterAction *m_statusProjectAction = nullptr; - Utils::ParameterAction *m_updateProjectAction = nullptr; - Utils::ParameterAction *m_commitProjectAction = nullptr; - Utils::ParameterAction *m_updateDirectoryAction = nullptr; - Utils::ParameterAction *m_commitDirectoryAction = nullptr; - QAction *m_diffRepositoryAction = nullptr; - QAction *m_updateRepositoryAction = nullptr; - QAction *m_statusRepositoryAction = nullptr; - - QAction *m_menuAction = nullptr; - bool m_submitActionTriggered = false; -}; - class CvsPlugin final : public ExtensionSystem::IPlugin { Q_OBJECT diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp index 3e03dfc3af8..dc1bac27316 100644 --- a/src/plugins/cvs/settingspage.cpp +++ b/src/plugins/cvs/settingspage.cpp @@ -25,13 +25,10 @@ #include "settingspage.h" -#include "cvsclient.h" #include "cvssettings.h" -#include "cvsplugin.h" #include "ui_settingspage.h" #include -#include #include #include @@ -48,18 +45,18 @@ class CvsSettingsPageWidget final : public Core::IOptionsPageWidget Q_DECLARE_TR_FUNCTIONS(Cvs::Internal::SettingsPageWidget) public: - CvsSettingsPageWidget(Core::IVersionControl *control, CvsSettings *settings); + CvsSettingsPageWidget(const std::function & onApply, CvsSettings *settings); void apply() final; private: Ui::SettingsPage m_ui; - Core::IVersionControl *m_control; + std::function m_onApply; CvsSettings *m_settings; }; -CvsSettingsPageWidget::CvsSettingsPageWidget(Core::IVersionControl *control, CvsSettings *settings) - : m_control(control), m_settings(settings) +CvsSettingsPageWidget::CvsSettingsPageWidget(const std::function &onApply, CvsSettings *settings) + : m_onApply(onApply), m_settings(settings) { m_ui.setupUi(this); m_ui.commandPathChooser->setExpectedKind(PathChooser::ExistingCommand); @@ -89,16 +86,16 @@ void CvsSettingsPageWidget::apply() return; *m_settings = rc; - m_control->configurationChanged(); + m_onApply(); } -CvsSettingsPage::CvsSettingsPage(Core::IVersionControl *control, CvsSettings *settings, QObject *parent) : +CvsSettingsPage::CvsSettingsPage(const std::function &onApply, CvsSettings *settings, QObject *parent) : Core::IOptionsPage( parent) { setId(VcsBase::Constants::VCS_ID_CVS); setDisplayName(CvsSettingsPageWidget::tr("CVS")); setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); - setWidgetCreator([control, settings] { return new CvsSettingsPageWidget(control, settings); }); + setWidgetCreator([onApply, settings] { return new CvsSettingsPageWidget(onApply, settings); }); } } // Internal diff --git a/src/plugins/cvs/settingspage.h b/src/plugins/cvs/settingspage.h index fe2077d6ec8..8a817b52c2b 100644 --- a/src/plugins/cvs/settingspage.h +++ b/src/plugins/cvs/settingspage.h @@ -27,8 +27,6 @@ #include -namespace Core { class IVersionControl; } - namespace Cvs { namespace Internal { @@ -37,7 +35,7 @@ class CvsSettings; class CvsSettingsPage final : public Core::IOptionsPage { public: - CvsSettingsPage(Core::IVersionControl *control, CvsSettings *settings, QObject *parent); + CvsSettingsPage(const std::function &onApply, CvsSettings *settings, QObject *parent); }; } // namespace Cvs