diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/fossil/fossilclient.cpp | 8 | ||||
-rw-r--r-- | plugins/fossil/fossilclient.h | 2 | ||||
-rw-r--r-- | plugins/fossil/fossileditor.cpp | 4 | ||||
-rw-r--r-- | plugins/fossil/fossilplugin.cpp | 130 | ||||
-rw-r--r-- | plugins/fossil/fossilplugin.h | 24 | ||||
-rw-r--r-- | plugins/fossil/optionspage.cpp | 80 | ||||
-rw-r--r-- | plugins/fossil/optionspage.h | 26 | ||||
-rw-r--r-- | plugins/fossil/wizard/fossiljsextension.cpp | 2 |
8 files changed, 147 insertions, 129 deletions
diff --git a/plugins/fossil/fossilclient.cpp b/plugins/fossil/fossilclient.cpp index 7e7fe80..092cd56 100644 --- a/plugins/fossil/fossilclient.cpp +++ b/plugins/fossil/fossilclient.cpp @@ -243,7 +243,7 @@ QString FossilClient::makeVersionString(unsigned version) .arg(versionPart(version)); } -FossilClient::FossilClient() : VcsBase::VcsBaseClient(new FossilSettings) +FossilClient::FossilClient(FossilSettings *settings) : VcsBase::VcsBaseClient(settings) { setDiffConfigCreator([this](QToolBar *toolBar) { return new FossilDiffConfig(this, toolBar); @@ -825,10 +825,8 @@ QString FossilClient::findTopLevelForFile(const QFileInfo &file) const { const QString repositoryCheckFile = Constants::FOSSILREPO; return file.isDir() ? - VcsBase::VcsBasePlugin::findRepositoryForDirectory(file.absoluteFilePath(), - repositoryCheckFile) : - VcsBase::VcsBasePlugin::findRepositoryForDirectory(file.absolutePath(), - repositoryCheckFile); + VcsBase::findRepositoryForDirectory(file.absoluteFilePath(), repositoryCheckFile) : + VcsBase::findRepositoryForDirectory(file.absolutePath(), repositoryCheckFile); } bool FossilClient::managesFile(const QString &workingDirectory, const QString &fileName) const diff --git a/plugins/fossil/fossilclient.h b/plugins/fossil/fossilclient.h index 2d35a86..1900778 100644 --- a/plugins/fossil/fossilclient.h +++ b/plugins/fossil/fossilclient.h @@ -61,7 +61,7 @@ public: static unsigned makeVersionNumber(int major, int minor, int patch); static QString makeVersionString(unsigned version); - FossilClient(); + explicit FossilClient(FossilSettings *settings); unsigned int synchronousBinaryVersion() const; BranchInfo synchronousCurrentBranch(const QString &workingDirectory); diff --git a/plugins/fossil/fossileditor.cpp b/plugins/fossil/fossileditor.cpp index 74a7c86..e01a953 100644 --- a/plugins/fossil/fossileditor.cpp +++ b/plugins/fossil/fossileditor.cpp @@ -131,7 +131,7 @@ QString FossilEditorWidget::decorateVersion(const QString &revision) const const QFileInfo fi(source()); const QString workingDirectory = fi.absolutePath(); - FossilClient *client = FossilPlugin::instance()->client(); + FossilClient *client = FossilPluginPrivate::instance()->client(); RevisionInfo revisionInfo = client->synchronousRevisionQuery(workingDirectory, revision, true); @@ -153,7 +153,7 @@ QStringList FossilEditorWidget::annotationPreviousVersions(const QString &revisi QStringList revisions; const QFileInfo fi(source()); const QString workingDirectory = fi.absolutePath(); - FossilClient *client = FossilPlugin::instance()->client(); + FossilClient *client = FossilPluginPrivate::instance()->client(); RevisionInfo revisionInfo = client->synchronousRevisionQuery(workingDirectory, revision); if (revisionInfo.parentId.isEmpty()) diff --git a/plugins/fossil/fossilplugin.cpp b/plugins/fossil/fossilplugin.cpp index e849caf..c2fe8b9 100644 --- a/plugins/fossil/fossilplugin.cpp +++ b/plugins/fossil/fossilplugin.cpp @@ -103,18 +103,18 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitEditorParameters = { }; -FossilPlugin *FossilPlugin::m_instance = nullptr; +static FossilPluginPrivate *dd = nullptr; -FossilPlugin::FossilPlugin() +FossilPluginPrivate::~FossilPluginPrivate() { - m_instance = this; + delete m_client; + m_client = nullptr; } FossilPlugin::~FossilPlugin() { - delete m_client; - m_client = nullptr; - m_instance = nullptr; + delete dd; + dd = nullptr; } bool FossilPlugin::initialize(const QStringList &arguments, QString *errorMessage) @@ -122,13 +122,25 @@ bool FossilPlugin::initialize(const QStringList &arguments, QString *errorMessag Q_UNUSED(arguments); Q_UNUSED(errorMessage); + dd = new FossilPluginPrivate; + return true; +} + +void FossilPlugin::extensionsInitialized() +{ + dd->extensionsInitialized(); +} + +FossilPluginPrivate::FossilPluginPrivate() +{ Core::Context context(Constants::FOSSIL_CONTEXT); - m_client = new FossilClient; - auto vcsCtrl = initializeVcs<FossilControl>(context, m_client); + m_client = new FossilClient(&m_fossilSettings); + auto vcsCtrl = new FossilControl(m_client); + initializeVcs(vcsCtrl, context); connect(m_client, &VcsBase::VcsBaseClient::changed, vcsCtrl, &FossilControl::changed); - new OptionsPage(vcsCtrl, this); + new OptionsPage(vcsCtrl, &m_fossilSettings, this); const auto describeFunc = [this](const QString &source, const QString &id) { m_client->view(source, id); @@ -151,22 +163,20 @@ bool FossilPlugin::initialize(const QStringList &arguments, QString *errorMessag Core::HelpManager::registerDocumentation({Core::HelpManager::documentationPath() + "/fossil.qch"}); - - return true; } -FossilPlugin *FossilPlugin::instance() +FossilPluginPrivate *FossilPluginPrivate::instance() { - return m_instance; + return dd; } -FossilClient *FossilPlugin::client() const +FossilClient *FossilPluginPrivate::client() const { return m_client; } -void FossilPlugin::createMenu(const Core::Context &context) +void FossilPluginPrivate::createMenu(const Core::Context &context) { // Create menu item for Fossil m_fossilContainer = Core::ActionManager::createMenu("Fossil.FossilMenu"); @@ -186,14 +196,14 @@ void FossilPlugin::createMenu(const Core::Context &context) m_menuAction = m_fossilContainer->menu()->menuAction(); } -void FossilPlugin::createFileActions(const Core::Context &context) +void FossilPluginPrivate::createFileActions(const Core::Context &context) { Core::Command *command; m_annotateFile = new Utils::ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(m_annotateFile, Constants::ANNOTATE, context); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_annotateFile, &QAction::triggered, this, &FossilPlugin::annotateCurrentFile); + connect(m_annotateFile, &QAction::triggered, this, &FossilPluginPrivate::annotateCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -201,7 +211,7 @@ void FossilPlugin::createFileActions(const Core::Context &context) command = Core::ActionManager::registerAction(m_diffFile, Constants::DIFF, context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+I,Meta+D") : tr("ALT+I,Alt+D"))); - connect(m_diffFile, &QAction::triggered, this, &FossilPlugin::diffCurrentFile); + connect(m_diffFile, &QAction::triggered, this, &FossilPluginPrivate::diffCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -209,7 +219,7 @@ void FossilPlugin::createFileActions(const Core::Context &context) command = Core::ActionManager::registerAction(m_logFile, Constants::LOG, context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+I,Meta+L") : tr("ALT+I,Alt+L"))); - connect(m_logFile, &QAction::triggered, this, &FossilPlugin::logCurrentFile); + connect(m_logFile, &QAction::triggered, this, &FossilPluginPrivate::logCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -217,7 +227,7 @@ void FossilPlugin::createFileActions(const Core::Context &context) command = Core::ActionManager::registerAction(m_statusFile, Constants::STATUS, context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+I,Meta+S") : tr("ALT+I,Alt+S"))); - connect(m_statusFile, &QAction::triggered, this, &FossilPlugin::statusCurrentFile); + connect(m_statusFile, &QAction::triggered, this, &FossilPluginPrivate::statusCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -226,38 +236,38 @@ void FossilPlugin::createFileActions(const Core::Context &context) m_addAction = new Utils::ParameterAction(tr("Add Current File"), tr("Add \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(m_addAction, Constants::ADD, context); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_addAction, &QAction::triggered, this, &FossilPlugin::addCurrentFile); + connect(m_addAction, &QAction::triggered, this, &FossilPluginPrivate::addCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); m_deleteAction = new Utils::ParameterAction(tr("Delete Current File..."), tr("Delete \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(m_deleteAction, Constants::DELETE, context); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_deleteAction, &QAction::triggered, this, &FossilPlugin::deleteCurrentFile); + connect(m_deleteAction, &QAction::triggered, this, &FossilPluginPrivate::deleteCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); m_revertFile = new Utils::ParameterAction(tr("Revert Current File..."), tr("Revert \"%1\"..."), Utils::ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(m_revertFile, Constants::REVERT, context); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_revertFile, &QAction::triggered, this, &FossilPlugin::revertCurrentFile); + connect(m_revertFile, &QAction::triggered, this, &FossilPluginPrivate::revertCurrentFile); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); } -void FossilPlugin::addCurrentFile() +void FossilPluginPrivate::addCurrentFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); m_client->synchronousAdd(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void FossilPlugin::deleteCurrentFile() +void FossilPluginPrivate::deleteCurrentFile() { promptToDeleteCurrentFile(); } -void FossilPlugin::annotateCurrentFile() +void FossilPluginPrivate::annotateCurrentFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); @@ -265,14 +275,14 @@ void FossilPlugin::annotateCurrentFile() m_client->annotate(state.currentFileTopLevel(), state.relativeCurrentFile(), QString(), lineNumber); } -void FossilPlugin::diffCurrentFile() +void FossilPluginPrivate::diffCurrentFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); m_client->diff(state.currentFileTopLevel(), QStringList(state.relativeCurrentFile())); } -void FossilPlugin::logCurrentFile() +void FossilPluginPrivate::logCurrentFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); @@ -290,7 +300,7 @@ void FossilPlugin::logCurrentFile() extraOptions, enableAnnotationContextMenu); } -void FossilPlugin::revertCurrentFile() +void FossilPluginPrivate::revertCurrentFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); @@ -305,14 +315,14 @@ void FossilPlugin::revertCurrentFile() revertUi.revisionLineEdit->text()); } -void FossilPlugin::statusCurrentFile() +void FossilPluginPrivate::statusCurrentFile() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasFile(), return); m_client->status(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void FossilPlugin::createDirectoryActions(const Core::Context &context) +void FossilPluginPrivate::createDirectoryActions(const Core::Context &context) { QAction *action; Core::Command *command; @@ -320,7 +330,7 @@ void FossilPlugin::createDirectoryActions(const Core::Context &context) action = new QAction(tr("Diff"), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::DIFFMULTI, context); - connect(action, &QAction::triggered, this, &FossilPlugin::diffRepository); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::diffRepository); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -328,34 +338,34 @@ void FossilPlugin::createDirectoryActions(const Core::Context &context) m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::LOGMULTI, context); command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+I,Meta+T") : tr("ALT+I,Alt+T"))); - connect(action, &QAction::triggered, this, &FossilPlugin::logRepository); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::logRepository); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Revert..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::REVERTMULTI, context); - connect(action, &QAction::triggered, this, &FossilPlugin::revertAll); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::revertAll); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Status"), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::STATUSMULTI, context); - connect(action, &QAction::triggered, this, &FossilPlugin::statusMulti); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::statusMulti); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); } -void FossilPlugin::diffRepository() +void FossilPluginPrivate::diffRepository() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); m_client->diff(state.topLevel()); } -void FossilPlugin::logRepository() +void FossilPluginPrivate::logRepository() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); @@ -369,7 +379,7 @@ void FossilPlugin::logRepository() m_client->log(state.topLevel(), QStringList(), extraOptions); } -void FossilPlugin::revertAll() +void FossilPluginPrivate::revertAll() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); @@ -382,14 +392,14 @@ void FossilPlugin::revertAll() m_client->revertAll(state.topLevel(), revertUi.revisionLineEdit->text()); } -void FossilPlugin::statusMulti() +void FossilPluginPrivate::statusMulti() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); m_client->status(state.topLevel()); } -void FossilPlugin::createRepositoryActions(const Core::Context &context) +void FossilPluginPrivate::createRepositoryActions(const Core::Context &context) { QAction *action = 0; Core::Command *command = 0; @@ -397,14 +407,14 @@ void FossilPlugin::createRepositoryActions(const Core::Context &context) action = new QAction(tr("Pull..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::PULL, context); - connect(action, &QAction::triggered, this, &FossilPlugin::pull); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::pull); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Push..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::PUSH, context); - connect(action, &QAction::triggered, this, &FossilPlugin::push); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::push); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -412,7 +422,7 @@ void FossilPlugin::createRepositoryActions(const Core::Context &context) m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::UPDATE, context); command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+I,Meta+U") : tr("ALT+I,Alt+U"))); - connect(action, &QAction::triggered, this, &FossilPlugin::update); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::update); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -420,14 +430,14 @@ void FossilPlugin::createRepositoryActions(const Core::Context &context) m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::COMMIT, context); command->setDefaultKeySequence(QKeySequence(Core::useMacShortcuts ? tr("Meta+I,Meta+C") : tr("ALT+I,Alt+C"))); - connect(action, &QAction::triggered, this, &FossilPlugin::commit); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::commit); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Settings ..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Constants::CONFIGURE_REPOSITORY, context); - connect(action, &QAction::triggered, this, &FossilPlugin::configureRepository); + connect(action, &QAction::triggered, this, &FossilPluginPrivate::configureRepository); m_fossilContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -435,11 +445,11 @@ void FossilPlugin::createRepositoryActions(const Core::Context &context) // without active repository to allow creating a new one. m_createRepositoryAction = new QAction(tr("Create Repository..."), this); command = Core::ActionManager::registerAction(m_createRepositoryAction, Constants::CREATE_REPOSITORY); - connect(m_createRepositoryAction, &QAction::triggered, this, &FossilPlugin::createRepository); + connect(m_createRepositoryAction, &QAction::triggered, this, &FossilPluginPrivate::createRepository); m_fossilContainer->addAction(command); } -void FossilPlugin::pull() +void FossilPluginPrivate::pull() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); @@ -467,7 +477,7 @@ void FossilPlugin::pull() m_client->synchronousPull(state.topLevel(), remoteLocation, extraOptions); } -void FossilPlugin::push() +void FossilPluginPrivate::push() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); @@ -495,7 +505,7 @@ void FossilPlugin::push() m_client->synchronousPush(state.topLevel(), remoteLocation, extraOptions); } -void FossilPlugin::update() +void FossilPluginPrivate::update() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); @@ -509,7 +519,7 @@ void FossilPlugin::update() m_client->update(state.topLevel(), revertUi.revisionLineEdit->text()); } -void FossilPlugin::configureRepository() +void FossilPluginPrivate::configureRepository() { const VcsBase::VcsBasePluginState state = currentState(); QTC_ASSERT(state.hasTopLevel(), return); @@ -527,7 +537,7 @@ void FossilPlugin::configureRepository() m_client->synchronousConfigureRepository(state.topLevel(), newSettings, currentSettings); } -void FossilPlugin::commit() +void FossilPluginPrivate::commit() { if (!promptBeforeCommit()) return; @@ -541,17 +551,17 @@ void FossilPlugin::commit() m_submitRepository = state.topLevel(); connect(m_client, &VcsBase::VcsBaseClient::parsedStatus, - this, &FossilPlugin::showCommitWidget); + this, &FossilPluginPrivate::showCommitWidget); QStringList extraOptions; m_client->emitParsedStatus(m_submitRepository, extraOptions); } -void FossilPlugin::showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusItem> &status) +void FossilPluginPrivate::showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusItem> &status) { //Once we receive our data release the connection so it can be reused elsewhere disconnect(m_client, &VcsBase::VcsBaseClient::parsedStatus, - this, &FossilPlugin::showCommitWidget); + this, &FossilPluginPrivate::showCommitWidget); if (status.isEmpty()) { VcsBase::VcsOutputWindow::appendError(tr("There are no changes to commit.")); @@ -594,11 +604,11 @@ void FossilPlugin::showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusIt commitEditor->setFields(m_submitRepository, currentBranch, tags, currentUser, status); connect(commitEditor, &VcsBase::VcsBaseSubmitEditor::diffSelectedFiles, - this, &FossilPlugin::diffFromEditorSelected); + this, &FossilPluginPrivate::diffFromEditorSelected); commitEditor->setCheckScriptWorkingDirectory(m_submitRepository); } -void FossilPlugin::diffFromEditorSelected(const QStringList &files) +void FossilPluginPrivate::diffFromEditorSelected(const QStringList &files) { m_client->diff(m_submitRepository, files); } @@ -610,7 +620,7 @@ static inline bool ask(QWidget *parent, const QString &title, const QString &que return QMessageBox::question(parent, title, question, QMessageBox::Yes|QMessageBox::No, defaultButton) == QMessageBox::Yes; } -void FossilPlugin::createRepository() +void FossilPluginPrivate::createRepository() { // re-implemented from void VcsBasePlugin::createRepository() @@ -647,7 +657,7 @@ void FossilPlugin::createRepository() } } -void FossilPlugin::commitFromEditor() +void FossilPluginPrivate::commitFromEditor() { // Close the submit editor m_submitActionTriggered = true; @@ -655,7 +665,7 @@ void FossilPlugin::commitFromEditor() Core::EditorManager::closeDocument(submitEditor()->document()); } -bool FossilPlugin::submitEditorAboutToClose() +bool FossilPluginPrivate::submitEditorAboutToClose() { CommitEditor *commitEditor = qobject_cast<CommitEditor *>(submitEditor()); QTC_ASSERT(commitEditor, return true); @@ -718,7 +728,7 @@ bool FossilPlugin::submitEditorAboutToClose() } -void FossilPlugin::updateActions(VcsBase::VcsBasePlugin::ActionState as) +void FossilPluginPrivate::updateActions(VcsBase::VcsBasePluginPrivate::ActionState as) { m_createRepositoryAction->setEnabled(true); diff --git a/plugins/fossil/fossilplugin.h b/plugins/fossil/fossilplugin.h index 2a67cc6..aa77989 100644 --- a/plugins/fossil/fossilplugin.h +++ b/plugins/fossil/fossilplugin.h @@ -51,21 +51,19 @@ class FossilClient; class FossilControl; class FossilEditorWidget; -class FossilPlugin : public VcsBase::VcsBasePlugin +class FossilPluginPrivate final : public VcsBase::VcsBasePluginPrivate { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Fossil.json") public: - FossilPlugin(); - ~FossilPlugin(); - bool initialize(const QStringList &arguments, QString *errorMessage) override; + FossilPluginPrivate(); + ~FossilPluginPrivate(); - static FossilPlugin *instance(); + static FossilPluginPrivate *instance(); FossilClient *client() const; protected: - void updateActions(VcsBase::VcsBasePlugin::ActionState) override; + void updateActions(VcsBase::VcsBasePluginPrivate::ActionState) override; bool submitEditorAboutToClose() override; private: @@ -102,7 +100,7 @@ private: void createRepositoryActions(const Core::Context &context); // Variables - static FossilPlugin *m_instance; + FossilSettings m_fossilSettings; FossilClient *m_client = nullptr; Core::CommandLocator *m_commandLocator = nullptr; @@ -127,7 +125,17 @@ private: QString m_submitRepository; bool m_submitActionTriggered = false; +}; + +class FossilPlugin final : public ExtensionSystem::IPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Fossil.json") + + ~FossilPlugin() final; + bool initialize(const QStringList &arguments, QString *errorMessage) final; + void extensionsInitialized() final; #ifdef WITH_TESTS private slots: diff --git a/plugins/fossil/optionspage.cpp b/plugins/fossil/optionspage.cpp index 361c7d1..40cd82f 100644 --- a/plugins/fossil/optionspage.cpp +++ b/plugins/fossil/optionspage.cpp @@ -28,32 +28,32 @@ #include "fossilclient.h" #include "fossilsettings.h" #include "fossilplugin.h" +#include "ui_optionspage.h" #include <coreplugin/icore.h> #include <utils/pathchooser.h> #include <vcsbase/vcsbaseconstants.h> -#include <QTextStream> +namespace Fossil { +namespace Internal { -using namespace Fossil::Internal; -using namespace Fossil; - -OptionsPageWidget::OptionsPageWidget(QWidget *parent) : - VcsClientOptionsPageWidget(parent) +class OptionsPageWidget final : public Core::IOptionsPageWidget { - m_ui.setupUi(this); - m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); - m_ui.commandChooser->setPromptDialogTitle(tr("Fossil Command")); - m_ui.commandChooser->setHistoryCompleter("Fossil.Command.History"); - m_ui.defaultRepoPathChooser->setExpectedKind(Utils::PathChooser::ExistingDirectory); - m_ui.defaultRepoPathChooser->setPromptDialogTitle(tr("Fossil Repositories")); - m_ui.sslIdentityFilePathChooser->setExpectedKind(Utils::PathChooser::File); - m_ui.sslIdentityFilePathChooser->setPromptDialogTitle(tr("SSL/TLS Identity Key")); -} + Q_DECLARE_TR_FUNCTIONS(Fossil::Internal::OptionsPageWidget) + +public: + OptionsPageWidget(Core::IVersionControl *control, FossilSettings *settings); + void apply() final; -VcsBase::VcsBaseClientSettings OptionsPageWidget::settings() const +private: + Ui::OptionsPage m_ui; + Core::IVersionControl *m_control; + FossilSettings *m_settings; +}; + +void OptionsPageWidget::apply() { - VcsBase::VcsBaseClientSettings s = FossilPlugin::instance()->client()->settings(); + FossilSettings s = *m_settings; s.setValue(FossilSettings::binaryPathKey, m_ui.commandChooser->rawPath()); s.setValue(FossilSettings::defaultRepoPathKey, m_ui.defaultRepoPathChooser->path()); s.setValue(FossilSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed()); @@ -62,25 +62,43 @@ VcsBase::VcsBaseClientSettings OptionsPageWidget::settings() const s.setValue(FossilSettings::timelineWidthKey, m_ui.logEntriesWidth->value()); s.setValue(FossilSettings::timeoutKey, m_ui.timeout->value()); s.setValue(FossilSettings::disableAutosyncKey, m_ui.disableAutosyncCheckBox->isChecked()); - return s; + if (*m_settings == s) + return; + + *m_settings = s; + emit m_control->configurationChanged(); } -void OptionsPageWidget::setSettings(const VcsBase::VcsBaseClientSettings &s) +OptionsPageWidget::OptionsPageWidget(Core::IVersionControl *control, FossilSettings *settings) : + m_control(control), + m_settings(settings) { - m_ui.commandChooser->setPath(s.stringValue(FossilSettings::binaryPathKey)); - m_ui.defaultRepoPathChooser->setPath(s.stringValue(FossilSettings::defaultRepoPathKey)); - m_ui.defaultUsernameLineEdit->setText(s.stringValue(FossilSettings::userNameKey)); - m_ui.sslIdentityFilePathChooser->setPath(s.stringValue(FossilSettings::sslIdentityFileKey)); - m_ui.logEntriesCount->setValue(s.intValue(FossilSettings::logCountKey)); - m_ui.logEntriesWidth->setValue(s.intValue(FossilSettings::timelineWidthKey)); - m_ui.timeout->setValue(s.intValue(FossilSettings::timeoutKey)); - m_ui.disableAutosyncCheckBox->setChecked(s.boolValue(FossilSettings::disableAutosyncKey)); + m_ui.setupUi(this); + m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); + m_ui.commandChooser->setPromptDialogTitle(tr("Fossil Command")); + m_ui.commandChooser->setHistoryCompleter("Fossil.Command.History"); + m_ui.commandChooser->setPath(m_settings->stringValue(FossilSettings::binaryPathKey)); + m_ui.defaultRepoPathChooser->setExpectedKind(Utils::PathChooser::ExistingDirectory); + m_ui.defaultRepoPathChooser->setPromptDialogTitle(tr("Fossil Repositories")); + m_ui.defaultRepoPathChooser->setPath(m_settings->stringValue(FossilSettings::defaultRepoPathKey)); + m_ui.sslIdentityFilePathChooser->setExpectedKind(Utils::PathChooser::File); + m_ui.sslIdentityFilePathChooser->setPromptDialogTitle(tr("SSL/TLS Identity Key")); + m_ui.sslIdentityFilePathChooser->setPath(m_settings->stringValue(FossilSettings::sslIdentityFileKey)); + m_ui.defaultUsernameLineEdit->setText(m_settings->stringValue(FossilSettings::userNameKey)); + m_ui.logEntriesCount->setValue(m_settings->intValue(FossilSettings::logCountKey)); + m_ui.logEntriesWidth->setValue(m_settings->intValue(FossilSettings::timelineWidthKey)); + m_ui.timeout->setValue(m_settings->intValue(FossilSettings::timeoutKey)); + m_ui.disableAutosyncCheckBox->setChecked(m_settings->boolValue(FossilSettings::disableAutosyncKey)); } -OptionsPage::OptionsPage(Core::IVersionControl *control, QObject *parent) : - VcsClientOptionsPage(control, FossilPlugin::instance()->client(), parent) +OptionsPage::OptionsPage(Core::IVersionControl *control, FossilSettings *settings, QObject *parent) : + Core::IOptionsPage(parent) { setId(Constants::VCS_ID_FOSSIL); - setDisplayName(tr("Fossil")); - setWidgetFactory([]() { return new OptionsPageWidget; }); + setDisplayName(OptionsPageWidget::tr("Fossil")); + setWidgetCreator([control, settings]() { return new OptionsPageWidget(control, settings); }); + setCategory(VcsBase::Constants::VCS_SETTINGS_CATEGORY); } + +} // Internal +} // Fossil diff --git a/plugins/fossil/optionspage.h b/plugins/fossil/optionspage.h index 6babddb..cee4aaa 100644 --- a/plugins/fossil/optionspage.h +++ b/plugins/fossil/optionspage.h @@ -25,38 +25,22 @@ #pragma once -#include "ui_optionspage.h" +#include <coreplugin/dialogs/ioptionspage.h> -#include <vcsbase/vcsbaseoptionspage.h> - -namespace VcsBase { class VcsBaseClientSettings; } // namespace VcsBase +namespace Core { class IVersionControl; } +namespace VcsBase { class VcsBaseClientSettings; } namespace Fossil { namespace Internal { class FossilSettings; -class OptionsPageWidget : public VcsBase::VcsClientOptionsPageWidget -{ - Q_OBJECT - -public: - explicit OptionsPageWidget(QWidget *parent = 0); - - VcsBase::VcsBaseClientSettings settings() const; - void setSettings(const VcsBase::VcsBaseClientSettings &s); - -private: - Ui::OptionsPage m_ui; -}; - - -class OptionsPage : public VcsBase::VcsClientOptionsPage +class OptionsPage : public Core::IOptionsPage { Q_OBJECT public: - OptionsPage(Core::IVersionControl *control, QObject *parent); + OptionsPage(Core::IVersionControl *control, FossilSettings *settings, QObject *parent); }; } // namespace Internal diff --git a/plugins/fossil/wizard/fossiljsextension.cpp b/plugins/fossil/wizard/fossiljsextension.cpp index 17c8dfa..f2466df 100644 --- a/plugins/fossil/wizard/fossiljsextension.cpp +++ b/plugins/fossil/wizard/fossiljsextension.cpp @@ -47,7 +47,7 @@ public: m_vscId(Constants::VCS_ID_FOSSIL) { } FossilClient *client() const { - return FossilPlugin::instance()->client(); + return FossilPluginPrivate::instance()->client(); } Core::Id m_vscId; |