aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clearcase/clearcaseplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/clearcase/clearcaseplugin.cpp')
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp54
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