diff options
Diffstat (limited to 'src/plugins/clearcase/clearcaseplugin.cpp')
-rw-r--r-- | src/plugins/clearcase/clearcaseplugin.cpp | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index de884452be6..943ffa194a4 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -27,16 +27,16 @@ #include <texteditor/textdocument.h> #include <projectexplorer/project.h> -#include <projectexplorer/session.h> +#include <projectexplorer/projectmanager.h> #include <utils/algorithm.h> +#include <utils/async.h> #include <utils/hostosinfo.h> #include <utils/infobar.h> #include <utils/layoutbuilder.h> #include <utils/parameteraction.h> +#include <utils/process.h> #include <utils/qtcassert.h> -#include <utils/qtcprocess.h> -#include <utils/runextensions.h> #include <utils/temporarydirectory.h> #include <vcsbase/basevcseditorfactory.h> @@ -57,7 +57,6 @@ #include <QDir> #include <QFileInfo> #include <QFuture> -#include <QFutureInterface> #include <QInputDialog> #include <QLabel> #include <QList> @@ -228,6 +227,10 @@ private: Q_INVOKABLE void updateStatusActions(); QString commitDisplayName() const final; + QString commitAbortTitle() const final; + QString commitAbortMessage() const final; + QString commitErrorMessage(const QString &error) const final; + void checkOutCurrentFile(); void addCurrentFile(); void undoCheckOutCurrent(); @@ -259,7 +262,7 @@ private: CommandResult runCleartool(const FilePath &workingDir, const QStringList &arguments, VcsBase::RunFlags flags = VcsBase::RunFlags::None, QTextCodec *codec = nullptr, int timeoutMultiplier = 1) const; - static void sync(QFutureInterface<void> &future, QStringList files); + static void sync(QPromise<void> &promise, QStringList files); void history(const FilePath &workingDir, const QStringList &file = {}, @@ -488,7 +491,7 @@ FileStatus::Status ClearCasePluginPrivate::getFileStatus(const QString &fileName /// "cleartool pwv" returns the values for "set view" and "working directory view", also for /// snapshot views. /// -/// \returns The ClearCase topLevel/VOB directory for this directory +/// Returns the ClearCase topLevel/VOB directory for this directory. QString ClearCasePluginPrivate::ccManagesDirectory(const FilePath &directory) const { const CommandResult result = runCleartoolProc(directory, {"pwv"}); @@ -595,7 +598,7 @@ ClearCasePluginPrivate::ClearCasePluginPrivate() m_settings.fromSettings(ICore::settings()); // update view name when changing active project - connect(SessionManager::instance(), &SessionManager::startupProjectChanged, + connect(ProjectManager::instance(), &ProjectManager::startupProjectChanged, this, &ClearCasePluginPrivate::projectChanged); const QString description = QLatin1String("ClearCase"); @@ -949,9 +952,27 @@ void ClearCasePluginPrivate::updateActions(VcsBasePluginPrivate::ActionState as) QString ClearCasePluginPrivate::commitDisplayName() const { + //: Name of the "commit" action of the VCS return Tr::tr("Check In"); } +QString ClearCasePluginPrivate::commitAbortTitle() const +{ + return Tr::tr("Close Check In Editor"); +} + +QString ClearCasePluginPrivate::commitAbortMessage() const +{ + return Tr::tr("Closing this editor will abort the check in."); +} + +QString ClearCasePluginPrivate::commitErrorMessage(const QString &error) const +{ + if (error.isEmpty()) + return Tr::tr("Cannot check in."); + return Tr::tr("Cannot check in: %1.").arg(error); +} + void ClearCasePluginPrivate::checkOutCurrentFile() { const VcsBasePluginState state = currentState(); @@ -1575,7 +1596,7 @@ CommandResult ClearCasePluginPrivate::runCleartoolProc(const FilePath &workingDi if (m_settings.ccBinaryPath.isEmpty()) return CommandResult(ProcessResult::StartFailed, Tr::tr("No ClearCase executable specified.")); - QtcProcess process; + Process process; Environment env = Environment::systemEnvironment(); VcsBase::setProcessEnvironment(&env); process.setEnvironment(env); @@ -1657,7 +1678,7 @@ bool ClearCasePluginPrivate::vcsOpen(const FilePath &workingDir, const QString & if (!m_settings.disableIndexer && (fi.isWritable() || vcsStatus(absPath).status == FileStatus::Unknown)) - runAsync(sync, QStringList(absPath)).waitForFinished(); + Utils::asyncRun(sync, QStringList(absPath)).waitForFinished(); if (vcsStatus(absPath).status == FileStatus::CheckedOut) { QMessageBox::information(ICore::dialogParent(), Tr::tr("ClearCase Checkout"), Tr::tr("File is already checked out.")); @@ -2124,12 +2145,13 @@ void ClearCasePluginPrivate::updateIndex() { QTC_ASSERT(currentState().hasTopLevel(), return); ProgressManager::cancelTasks(ClearCase::Constants::TASK_INDEX); - Project *project = SessionManager::startupProject(); + Project *project = ProjectManager::startupProject(); if (!project) return; m_checkInAllAction->setEnabled(false); m_statusMap->clear(); - QFuture<void> result = runAsync(sync, transform(project->files(Project::SourceFiles), &FilePath::toString)); + QFuture<void> result = Utils::asyncRun(sync, transform(project->files(Project::SourceFiles), + &FilePath::toString)); if (!m_settings.disableIndexer) ProgressManager::addTask(result, Tr::tr("Updating ClearCase Index"), ClearCase::Constants::TASK_INDEX); } @@ -2232,7 +2254,7 @@ void ClearCasePluginPrivate::diffGraphical(const QString &file1, const QString & args << file1; if (!pred) args << file2; - QtcProcess::startDetached({m_settings.ccBinaryPath, args}, m_topLevel); + Process::startDetached({m_settings.ccBinaryPath, args}, m_topLevel); } QString ClearCasePluginPrivate::runExtDiff(const FilePath &workingDir, const QStringList &arguments, @@ -2242,7 +2264,7 @@ QString ClearCasePluginPrivate::runExtDiff(const FilePath &workingDir, const QSt diff.addArgs(m_settings.diffArgs.split(' ', Qt::SkipEmptyParts)); diff.addArgs(arguments); - QtcProcess process; + Process process; process.setTimeoutS(timeOutS); process.setWorkingDirectory(workingDir); process.setCodec(outputCodec ? outputCodec : QTextCodec::codecForName("UTF-8")); @@ -2261,7 +2283,7 @@ void ClearCasePluginPrivate::syncSlot() FilePath topLevel = state.topLevel(); if (topLevel != state.currentProjectTopLevel()) return; - runAsync(sync, QStringList()); + Utils::asyncRun(sync, QStringList()); // TODO: make use of returned QFuture } void ClearCasePluginPrivate::closing() @@ -2271,12 +2293,12 @@ void ClearCasePluginPrivate::closing() disconnect(qApp, &QApplication::applicationStateChanged, nullptr, nullptr); } -void ClearCasePluginPrivate::sync(QFutureInterface<void> &future, QStringList files) +void ClearCasePluginPrivate::sync(QPromise<void> &promise, QStringList files) { ClearCasePluginPrivate *plugin = ClearCasePluginPrivate::instance(); ClearCaseSync ccSync(plugin->m_statusMap); connect(&ccSync, &ClearCaseSync::updateStreamAndView, plugin, &ClearCasePluginPrivate::updateStreamAndView); - ccSync.run(future, files); + ccSync.run(promise, files); } QString ClearCasePluginPrivate::displayName() const |