From e2ace515e2f3c9c8508e7922dabc1fffdfe57402 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 31 Jan 2012 10:57:10 +0100
Subject: [PATCH] Version control: Compile with QT_NO_CAST_FROM_ASCII.

Change-Id: I85c007045efdb207f397b42fbce7a554ac9c9819
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/bazaar/bazaar.pro                 |  1 +
 src/plugins/bazaar/bazaarclient.cpp           |  9 +++---
 src/plugins/bazaar/bazaarcommitwidget.cpp     |  2 +-
 src/plugins/bazaar/bazaarplugin.cpp           |  4 +--
 src/plugins/cvs/cvs.pro                       |  1 +
 src/plugins/cvs/cvsplugin.cpp                 |  2 +-
 src/plugins/git/branchmodel.cpp               |  6 ++--
 src/plugins/git/clonewizardpage.cpp           |  7 ++---
 src/plugins/git/commitdata.cpp                |  6 ++--
 src/plugins/git/git.pro                       |  1 +
 src/plugins/git/gitclient.cpp                 | 28 ++++++++++---------
 .../git/gitorious/gitorioushostwidget.cpp     |  2 +-
 src/plugins/git/gitplugin.cpp                 |  2 +-
 src/plugins/git/remotemodel.cpp               |  4 +--
 src/plugins/mercurial/mercurial.pro           |  1 +
 src/plugins/mercurial/mercurialclient.cpp     |  5 ++--
 src/plugins/mercurial/mercurialcontrol.cpp    |  2 +-
 src/plugins/perforce/pendingchangesdialog.cpp |  2 +-
 src/plugins/perforce/perforce.pro             |  2 ++
 src/plugins/perforce/perforceplugin.cpp       |  3 +-
 src/plugins/subversion/subversion.pro         |  2 ++
 src/plugins/subversion/subversionplugin.cpp   |  6 ++--
 .../vcsbase/basevcssubmiteditorfactory.cpp    |  2 +-
 src/plugins/vcsbase/vcsbase.pro               |  2 +-
 src/plugins/vcsbase/vcsbaseeditor.cpp         |  2 +-
 src/plugins/vcsbase/vcsbaseplugin.cpp         |  4 +--
 src/plugins/vcsbase/vcsbasesubmiteditor.cpp   |  4 +--
 src/plugins/vcsbase/vcsconfigurationpage.cpp  |  3 +-
 28 files changed, 63 insertions(+), 52 deletions(-)

diff --git a/src/plugins/bazaar/bazaar.pro b/src/plugins/bazaar/bazaar.pro
index 895f50473de..5fc6bc8b7dd 100644
--- a/src/plugins/bazaar/bazaar.pro
+++ b/src/plugins/bazaar/bazaar.pro
@@ -2,6 +2,7 @@ TARGET = Bazaar
 TEMPLATE = lib
 include(../../qtcreatorplugin.pri)
 include(bazaar_dependencies.pri)
+DEFINES += QT_NO_CAST_FROM_ASCII
 SOURCES += \
     bazaarclient.cpp \
     bazaarcontrol.cpp \
diff --git a/src/plugins/bazaar/bazaarclient.cpp b/src/plugins/bazaar/bazaarclient.cpp
index 5dcbc1dc0b1..96fea245403 100644
--- a/src/plugins/bazaar/bazaarclient.cpp
+++ b/src/plugins/bazaar/bazaarclient.cpp
@@ -62,9 +62,8 @@ bool BazaarClient::synchronousSetUserId()
 {
     QStringList args;
     args << QLatin1String("whoami")
-         << QString("%1 <%2>")
-            .arg(settings()->stringValue(BazaarSettings::userNameKey))
-            .arg(settings()->stringValue(BazaarSettings::userEmailKey));
+         << (settings()->stringValue(BazaarSettings::userNameKey) + QLatin1String(" <")
+             + settings()->stringValue(BazaarSettings::userEmailKey) + QLatin1Char('>'));
     QByteArray stdOut;
     return vcsFullySynchronousExec(QDir::currentPath(), args, &stdOut);
 }
@@ -80,8 +79,8 @@ BranchInfo BazaarClient::synchronousBranchQuery(const QString &repositoryRoot) c
     QTextStream ts(&branchConfFile);
     QString branchLocation;
     QString isBranchBound;
-    const QRegExp branchLocationRx("bound_location\\s*=\\s*(.+)$");
-    const QRegExp isBranchBoundRx("bound\\s*=\\s*(.+)$");
+    const QRegExp branchLocationRx(QLatin1String("bound_location\\s*=\\s*(.+)$"));
+    const QRegExp isBranchBoundRx(QLatin1String("bound\\s*=\\s*(.+)$"));
     while (!ts.atEnd() && (branchLocation.isEmpty() || isBranchBound.isEmpty())) {
         const QString line = ts.readLine();
         if (branchLocationRx.indexIn(line) != -1)
diff --git a/src/plugins/bazaar/bazaarcommitwidget.cpp b/src/plugins/bazaar/bazaarcommitwidget.cpp
index 5d98fa6728b..805e4e028c6 100644
--- a/src/plugins/bazaar/bazaarcommitwidget.cpp
+++ b/src/plugins/bazaar/bazaarcommitwidget.cpp
@@ -153,7 +153,7 @@ QString BazaarCommitWidget::committer() const
 
 QStringList BazaarCommitWidget::fixedBugs() const
 {
-    return m_bazaarCommitPanelUi.fixedBugsLineEdit->text().split(QRegExp("\\s+"));
+    return m_bazaarCommitPanelUi.fixedBugsLineEdit->text().split(QRegExp(QLatin1String("\\s+")));
 }
 
 bool BazaarCommitWidget::isLocalOptionEnabled() const
diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp
index e144c6632cc..8d259d35987 100644
--- a/src/plugins/bazaar/bazaarplugin.cpp
+++ b/src/plugins/bazaar/bazaarplugin.cpp
@@ -388,7 +388,7 @@ void BazaarPlugin::logRepository()
     const VcsBase::VcsBasePluginState state = currentState();
     QTC_ASSERT(state.hasTopLevel(), return);
     QStringList extraOptions;
-    extraOptions += QString("--limit=%1").arg(settings().intValue(BazaarSettings::logCountKey));
+    extraOptions += QLatin1String("--limit=") + QString::number(settings().intValue(BazaarSettings::logCountKey));
     m_client->log(state.topLevel(), QStringList(), extraOptions);
 }
 
@@ -647,7 +647,7 @@ bool BazaarPlugin::submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *submit
         //rewrite entries of the form 'file => newfile' to 'newfile' because
         //this would mess the commit command
         for (QStringList::iterator iFile = files.begin(); iFile != files.end(); ++iFile) {
-            const QStringList parts = iFile->split(" => ", QString::SkipEmptyParts);
+            const QStringList parts = iFile->split(QLatin1String(" => "), QString::SkipEmptyParts);
             if (!parts.isEmpty())
                 *iFile = parts.last();
         }
diff --git a/src/plugins/cvs/cvs.pro b/src/plugins/cvs/cvs.pro
index 0f042def665..77fdac98108 100644
--- a/src/plugins/cvs/cvs.pro
+++ b/src/plugins/cvs/cvs.pro
@@ -8,6 +8,7 @@ include(../../plugins/coreplugin/coreplugin.pri)
 include(../../plugins/vcsbase/vcsbase.pri)
 include(../../libs/utils/utils.pri)
 
+DEFINES += QT_NO_CAST_FROM_ASCII
 HEADERS += annotationhighlighter.h \
     cvsplugin.h \
     cvscontrol.h \
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index 441369f7d3b..6cf7a369718 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -1293,7 +1293,7 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp
         qDebug() << "CVSPlugin::showOutputInEditor" << title << id.name()
                  <<  "source=" << source << "Size= " << output.size() <<  " Type=" << editorType << debugCodec(codec);
     QString s = title;
-    IEditor *editor = EditorManager::instance()->openEditorWithContents(id, &s, output.toLocal8Bit());
+    IEditor *editor = EditorManager::instance()->openEditorWithContents(id, &s, output);
     connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)),
             this, SLOT(vcsAnnotate(QString,QString,int)));
     CvsEditor *e = qobject_cast<CvsEditor*>(editor->widget());
diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp
index 7bbb011ca17..20559c3fc07 100644
--- a/src/plugins/git/branchmodel.cpp
+++ b/src/plugins/git/branchmodel.cpp
@@ -152,7 +152,7 @@ public:
             }
             return names;
         }
-        return QStringList(fullName().join(QString('/')));
+        return QStringList(fullName().join(QString(QLatin1Char('/'))));
     }
 
     BranchNode *parent;
@@ -371,7 +371,7 @@ QString BranchModel::branchName(const QModelIndex &idx) const
     if (!node->isLeaf())
         return QString();
     QStringList path = node->fullName();
-    return path.join(QString('/'));
+    return path.join(QString(QLatin1Char('/')));
 }
 
 QStringList BranchModel::localBranchNames() const
@@ -520,7 +520,7 @@ QModelIndex BranchModel::addBranch(const QString &branchName, bool track, const
     output = toolTip(branchName); // abuse toolTip to get the data;-)
     QStringList lines = output.split(QLatin1Char('\n'));
     foreach (const QString &l, lines) {
-        if (l.startsWith("commit ")) {
+        if (l.startsWith(QLatin1String("commit "))) {
             newNode->sha = l.mid(7, 8);
             break;
         }
diff --git a/src/plugins/git/clonewizardpage.cpp b/src/plugins/git/clonewizardpage.cpp
index e8f75a34369..ba6f441e9d2 100644
--- a/src/plugins/git/clonewizardpage.cpp
+++ b/src/plugins/git/clonewizardpage.cpp
@@ -65,7 +65,7 @@ bool CloneWizardPagePrivate::urlIsLocal(const QString &url)
 {
     if (url.startsWith(QLatin1String("file://"))
         || url.startsWith(QLatin1Char('/'))
-        || (url.at(0).isLetter() && url.at(1) == QChar(':') && url.at(2) == QChar('\\')))
+        || (url.at(0).isLetter() && url.at(1) == QLatin1Char(':') && url.at(2) == QLatin1Char('\\')))
         return true;
     return false;
 }
@@ -103,10 +103,9 @@ QString CloneWizardPage::directoryFromRepository(const QString &urlIn) const
     /* Try to figure out a good directory name from something like:
      * 'user@host:qt/qt.git', 'http://host/qt/qt.git' 'local repo'
      * ------> 'qt' .  */
-
-    QString url = urlIn.trimmed().replace(QChar('\\'), QChar('/'));
-
     const QChar slash = QLatin1Char('/');
+    QString url = urlIn.trimmed().replace(QLatin1Char('\\'), slash);
+
     // remove host
     const int protocolDelimiterPos = url.indexOf(d->protocolDelimiter); // "://"
     const int startRepoSearchPos = protocolDelimiterPos == -1 ? 0 : protocolDelimiterPos + d->protocolDelimiter.size();
diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp
index 5c015bfa7ce..d451791ba43 100644
--- a/src/plugins/git/commitdata.cpp
+++ b/src/plugins/git/commitdata.cpp
@@ -116,7 +116,7 @@ static bool checkLine(const QString &stateInfo, const QString &file, QList<Commi
     QTC_ASSERT(stateInfo.count() == 2, return false);
     QTC_ASSERT(files, return false);
 
-    if (stateInfo == "??") {
+    if (stateInfo == QLatin1String("??")) {
         files->append(qMakePair(CommitData::UntrackedFile, file));
         return true;
     }
@@ -157,12 +157,12 @@ bool CommitData::parseFilesFromStatus(const QString &output)
         if (line.isEmpty())
             continue;
 
-        if (line.startsWith("## ")) {
+        if (line.startsWith(QLatin1String("## "))) {
             // Branch indication:
             panelInfo.branch = line.mid(3);
             continue;
         }
-        QTC_ASSERT(line.at(2) == ' ', continue);
+        QTC_ASSERT(line.at(2) == QLatin1Char(' '), continue);
         if (!checkLine(line.mid(0, 2), line.mid(3), &files))
             return false;
     }
diff --git a/src/plugins/git/git.pro b/src/plugins/git/git.pro
index f1570b9eab1..b40f2983c13 100644
--- a/src/plugins/git/git.pro
+++ b/src/plugins/git/git.pro
@@ -1,5 +1,6 @@
 TEMPLATE = lib
 TARGET = ScmGit
+DEFINES += QT_NO_CAST_FROM_ASCII
 include(../../qtcreatorplugin.pri)
 include(../../plugins/projectexplorer/projectexplorer.pri)
 include(../../plugins/texteditor/texteditor.pri)
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 3a9b227d435..49713eb22dc 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -99,7 +99,7 @@ public:
         m_patienceButton = addToggleButton(QLatin1String("--patience"), tr("Patience"),
                                            tr("Use the patience algorithm for calculating the differences."));
         mapSetting(m_patienceButton, client->settings()->boolPointer(GitSettings::diffPatienceKey));
-        m_ignoreWSButton = addToggleButton("--ignore-space-change", tr("Ignore Whitespace"),
+        m_ignoreWSButton = addToggleButton(QLatin1String("--ignore-space-change"), tr("Ignore Whitespace"),
                                            tr("Ignore whitespace only changes."));
         mapSetting(m_ignoreWSButton, m_client->settings()->boolPointer(GitSettings::ignoreSpaceChangesInDiffKey));
 
@@ -229,7 +229,7 @@ public:
         mapSetting(addToggleButton(QString(), tr("Omit Date"),
                                    tr("Hide the date of a change from the output.")),
                    m_client->settings()->boolPointer(GitSettings::omitAnnotationDateKey));
-        mapSetting(addToggleButton(QString("-w"), tr("Ignore Whitespace"),
+        mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace"),
                                    tr("Ignore whitespace only changes.")),
                    m_client->settings()->boolPointer(GitSettings::ignoreSpaceChangesInBlameKey));
 
@@ -385,7 +385,7 @@ QString GitClient::findRepositoryForDirectory(const QString &dir)
         QStringList arguments;
         arguments << QLatin1String("rev-parse") << QLatin1String("--show-toplevel");
         fullySynchronousGit(directory.absolutePath(), arguments, &outputText, 0, false);
-        return outputText.trimmed();
+        return QString::fromLocal8Bit(outputText.trimmed());
     } else {
         // Check for ".git/config"
         const QString checkFile = QLatin1String(GIT_DIRECTORY) + QLatin1String("/config");
@@ -612,7 +612,7 @@ void GitClient::log(const QString &workingDirectory, const QStringList &fileName
                     bool enableAnnotationContextMenu, const QStringList &args)
 {
     const QString msgArg = fileNames.empty() ? workingDirectory :
-                           fileNames.join(QString(", "));
+                           fileNames.join(QLatin1String(", "));
     const QString title = tr("Git Log \"%1\"").arg(msgArg);
     const Core::Id editorId = Git::Constants::GIT_LOG_EDITOR_ID;
     const QString sourceFile = VcsBase::VcsBaseEditorWidget::getSource(workingDirectory, fileNames);
@@ -1559,14 +1559,14 @@ QStringList GitClient::synchronousRepositoryBranches(const QString &repositoryUR
             VcsBase::VcsBasePlugin::SuppressFailMessageInLogWindow;
     const Utils::SynchronousProcessResponse resp = synchronousGit(QString(), arguments, flags);
     QStringList branches;
-    branches << "<detached HEAD>";
+    branches << QLatin1String("<detached HEAD>");
     QString headSha;
     if (resp.result == Utils::SynchronousProcessResponse::Finished) {
         // split "82bfad2f51d34e98b18982211c82220b8db049b<tab>refs/heads/master"
         foreach(const QString &line, resp.stdOut.split(QLatin1Char('\n'))) {
-            if (line.endsWith("\tHEAD")) {
+            if (line.endsWith(QLatin1String("\tHEAD"))) {
                 QTC_CHECK(headSha.isNull());
-                headSha = line.left(line.indexOf(QChar('\t')));
+                headSha = line.left(line.indexOf(QLatin1Char('\t')));
                 continue;
             }
 
@@ -1588,14 +1588,14 @@ void GitClient::launchGitK(const QString &workingDirectory)
 {
     const QFileInfo binaryInfo(gitBinaryPath());
     QDir foundBinDir(binaryInfo.dir());
-    const bool foundBinDirIsCmdDir = foundBinDir.dirName() == "cmd";
+    const bool foundBinDirIsCmdDir = foundBinDir.dirName() == QLatin1String("cmd");
     QProcessEnvironment env = processEnvironment();
     if (tryLauchingGitK(env, workingDirectory, foundBinDir.path(), foundBinDirIsCmdDir))
         return;
     if (!foundBinDirIsCmdDir)
         return;
     foundBinDir.cdUp();
-    tryLauchingGitK(env, workingDirectory, foundBinDir.path() + "/bin", false);
+    tryLauchingGitK(env, workingDirectory, foundBinDir.path() + QLatin1String("/bin"), false);
 }
 
 bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
@@ -1739,7 +1739,9 @@ bool GitClient::getCommitData(const QString &workingDirectory,
     if (amend) {
         // Amend: get last commit data as "SHA1@message".
         QStringList args(QLatin1String("log"));
-        const QString format = synchronousGitVersion(true) > 0x010701 ? "%h@%B" : "%h@%s%n%n%b";
+        const QString format = synchronousGitVersion(true) > 0x010701 ?
+                               QLatin1String("%h@%B") :
+                               QLatin1String("%h@%s%n%n%b");
         args << QLatin1String("--max-count=1") << QLatin1String("--pretty=format:") + format;
         QTextCodec *codec = QTextCodec::codecForName(commitData->commitEncoding.toLocal8Bit());
         const Utils::SynchronousProcessResponse sp = synchronousGit(repoDirectory, args, 0, codec);
@@ -2228,7 +2230,7 @@ bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
             return false;
 
         QStringList arguments(QLatin1String("remote"));
-        arguments << QLatin1String("add") << QLatin1String("origin") << url;
+        arguments << QLatin1String("add") << QLatin1String("origin") << QLatin1String(url);
         if (!fullySynchronousGit(workingDirectory.path(), arguments, 0, 0, true))
             return false;
 
@@ -2256,7 +2258,7 @@ bool GitClient::cloneRepository(const QString &directory,const QByteArray &url)
         return true;
     } else {
         QStringList arguments(QLatin1String("clone"));
-        arguments << url << workingDirectory.dirName();
+        arguments << QLatin1String(url) << workingDirectory.dirName();
         workingDirectory.cdUp();
         const Utils::SynchronousProcessResponse resp =
                 synchronousGit(workingDirectory.path(), arguments, flags);
@@ -2326,7 +2328,7 @@ unsigned GitClient::synchronousGitVersion(bool silent, QString *errorMessage) co
     // run git --version
     QByteArray outputText;
     QByteArray errorText;
-    const bool rc = fullySynchronousGit(QString(), QStringList("--version"), &outputText, &errorText);
+    const bool rc = fullySynchronousGit(QString(), QStringList(QLatin1String("--version")), &outputText, &errorText);
     if (!rc) {
         const QString msg = tr("Cannot determine git version: %1").arg(commandOutputFromLocal8Bit(errorText));
         if (errorMessage) {
diff --git a/src/plugins/git/gitorious/gitorioushostwidget.cpp b/src/plugins/git/gitorious/gitorioushostwidget.cpp
index eeadf45bdea..0ff7379b3dc 100644
--- a/src/plugins/git/gitorious/gitorioushostwidget.cpp
+++ b/src/plugins/git/gitorious/gitorioushostwidget.cpp
@@ -98,7 +98,7 @@ GitoriousHostWidget::GitoriousHostWidget(QWidget *parent) :
     ui->browseToolButton->setIcon(style()->standardIcon(QStyle::SP_MessageBoxInformation));
     connect(ui->browseToolButton, SIGNAL(clicked()), this, SLOT(slotBrowse()));
     ui->browseToolButton->setEnabled(false);
-    ui->deleteToolButton->setIcon(QIcon(Core::Constants::ICON_MINUS));
+    ui->deleteToolButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_MINUS)));
     connect(ui->deleteToolButton, SIGNAL(clicked()), this, SLOT(slotDelete()));
     ui->deleteToolButton->setEnabled(false);
 
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 208c309a962..43a7600b863 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -378,7 +378,7 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
                                   Core::Id("Git.DiffProject"),
                                   globalcontext, true,
                                   SLOT(diffCurrentProject()));
-    parameterActionCommand.second->setDefaultKeySequence(QKeySequence("Alt+G,Alt+Shift+D"));
+    parameterActionCommand.second->setDefaultKeySequence(QKeySequence(tr("Alt+G,Alt+Shift+D")));
 
     parameterActionCommand
             = createProjectAction(actionManager, gitContainer,
diff --git a/src/plugins/git/remotemodel.cpp b/src/plugins/git/remotemodel.cpp
index 18eaaf8f394..4f0f6506dc0 100644
--- a/src/plugins/git/remotemodel.cpp
+++ b/src/plugins/git/remotemodel.cpp
@@ -39,10 +39,10 @@ namespace Internal {
 // Parse a branch line: " *name sha description".
 bool RemoteModel::Remote::parse(const QString &line)
 {
-    if (!line.endsWith(" (fetch)"))
+    if (!line.endsWith(QLatin1String(" (fetch)")))
         return false;
 
-    QStringList tokens = line.split(QRegExp("\\s"), QString::SkipEmptyParts);
+    QStringList tokens = line.split(QRegExp(QLatin1String("\\s")), QString::SkipEmptyParts);
     if (tokens.count() != 3)
         return false;
 
diff --git a/src/plugins/mercurial/mercurial.pro b/src/plugins/mercurial/mercurial.pro
index 20a1f94ceb9..c63171089e4 100644
--- a/src/plugins/mercurial/mercurial.pro
+++ b/src/plugins/mercurial/mercurial.pro
@@ -2,6 +2,7 @@ TARGET = Mercurial
 TEMPLATE = lib
 include(../../qtcreatorplugin.pri)
 include(mercurial_dependencies.pri)
+DEFINES += QT_NO_CAST_FROM_ASCII
 SOURCES += mercurialplugin.cpp \
     optionspage.cpp \
     mercurialcontrol.cpp \
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index fc1dd9bfda4..13343d208c4 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -111,8 +111,9 @@ bool MercurialClient::synchronousClone(const QString &workingDir,
         }
 
         // By now, there is no hgrc file -> create it
-        Utils::FileSaver saver(workingDirectory.path()+"/.hg/hgrc");
-        saver.write(QString("[paths]\ndefault = %1\n").arg(dstLocation).toUtf8());
+        Utils::FileSaver saver(workingDirectory.path() + QLatin1String("/.hg/hgrc"));
+        const QString hgrc = QLatin1String("[paths]\ndefault = ") + dstLocation + QLatin1Char('\n');
+        saver.write(hgrc.toUtf8());
         if (!saver.finalize()) {
             VcsBase::VcsBaseOutputWindow::instance()->appendError(saver.errorString());
             return false;
diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp
index 7c2d6fd4155..9dcf57fb5bf 100644
--- a/src/plugins/mercurial/mercurialcontrol.cpp
+++ b/src/plugins/mercurial/mercurialcontrol.cpp
@@ -168,7 +168,7 @@ bool MercurialControl::sccManaged(const QString &filename)
 
 bool MercurialControl::vcsCheckout(const QString &directory, const QByteArray &url)
 {
-    return mercurialClient->synchronousClone(QString(), directory, url);
+    return mercurialClient->synchronousClone(QString(), directory, QLatin1String(url));
 }
 
 QString MercurialControl::vcsGetRepositoryURL(const QString &directory)
diff --git a/src/plugins/perforce/pendingchangesdialog.cpp b/src/plugins/perforce/pendingchangesdialog.cpp
index 82b84b30ccf..6bfaec3d6bd 100644
--- a/src/plugins/perforce/pendingchangesdialog.cpp
+++ b/src/plugins/perforce/pendingchangesdialog.cpp
@@ -41,7 +41,7 @@ PendingChangesDialog::PendingChangesDialog(const QString &data, QWidget *parent)
 {
     m_ui.setupUi(this);
     if (!data.isEmpty()) {
-        QRegExp r("Change\\s(\\d+).*\\s\\*pending\\*\\s(.+)\n");
+        QRegExp r(QLatin1String("Change\\s(\\d+).*\\s\\*pending\\*\\s(.+)\n"));
         r.setMinimal(true);
         int pos = 0;
         QListWidgetItem *item;
diff --git a/src/plugins/perforce/perforce.pro b/src/plugins/perforce/perforce.pro
index 7754b7fae50..403f07257d0 100644
--- a/src/plugins/perforce/perforce.pro
+++ b/src/plugins/perforce/perforce.pro
@@ -4,6 +4,8 @@ TARGET = Perforce
 include(../../qtcreatorplugin.pri)
 include(perforce_dependencies.pri)
 
+DEFINES += QT_NO_CAST_FROM_ASCII
+
 HEADERS += \
     perforceplugin.h \
     perforcechecker.h \
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index aa3b5e807ac..7146b5fe97c 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -883,7 +883,8 @@ bool PerforcePlugin::managesDirectoryFstat(const QString &directory)
         args << QLatin1String("fstat") << QLatin1String("-m1") << perforceRelativeFileArguments(relativeDirArgs);
         const PerforceResponse result = runP4Cmd(m_settings.topLevel(), args,
                                                  RunFullySynchronous);
-        managed = result.stdOut.contains("depotFile") || result.stdErr.contains("... - no such file(s)");
+        managed = result.stdOut.contains(QLatin1String("depotFile"))
+                  || result.stdErr.contains(QLatin1String("... - no such file(s)"));
     } while(false);
 
     m_managedDirectoryCache.insert(directory, managed);
diff --git a/src/plugins/subversion/subversion.pro b/src/plugins/subversion/subversion.pro
index b7be53fe6d9..dbb1765c396 100644
--- a/src/plugins/subversion/subversion.pro
+++ b/src/plugins/subversion/subversion.pro
@@ -8,6 +8,8 @@ include(../../plugins/coreplugin/coreplugin.pri)
 include(../../plugins/vcsbase/vcsbase.pri)
 include(../../libs/utils/utils.pri)
 
+DEFINES += QT_NO_CAST_FROM_ASCII
+
 HEADERS += annotationhighlighter.h \
     subversionplugin.h \
     subversioncontrol.h \
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index b1b356a5d9e..29f81966815 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -1304,14 +1304,14 @@ bool SubversionPlugin::vcsCheckout(const QString &directory, const QByteArray &u
         // authentication will always fail (if the username and password data are not stored locally),
         // if for example we are logging into a new host for the first time using svn. There seems to
         // be a bug in subversion, so this might get fixed in the future.
-        tempUrl.setUserInfo("");
-        args << tempUrl.toEncoded() << directory;
+        tempUrl.setUserInfo(QString());
+        args << QLatin1String(tempUrl.toEncoded()) << directory;
         const SubversionResponse response = runSvn(directory, username, password, args,
                                                    m_settings.longTimeOutMS(),
                                                    VcsBase::VcsBasePlugin::SshPasswordPrompt);
         return !response.error;
     } else {
-        args << url << directory;
+        args << QLatin1String(url) << directory;
         const SubversionResponse response = runSvn(directory, args, m_settings.longTimeOutMS(),
                                                    VcsBase::VcsBasePlugin::SshPasswordPrompt);
         return !response.error;
diff --git a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
index 2d3fe9c37ed..d3548327a2b 100644
--- a/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
+++ b/src/plugins/vcsbase/basevcssubmiteditorfactory.cpp
@@ -53,7 +53,7 @@ public:
 BaseVcsSubmitEditorFactoryPrivate::BaseVcsSubmitEditorFactoryPrivate(const VcsBaseSubmitEditorParameters *parameters) :
     m_parameters(parameters),
     m_id(parameters->id),
-    m_displayName(parameters->displayName),
+    m_displayName(QLatin1String(parameters->displayName)),
     m_mimeTypes(QLatin1String(parameters->mimeType))
 {
 }
diff --git a/src/plugins/vcsbase/vcsbase.pro b/src/plugins/vcsbase/vcsbase.pro
index f9cd7b79631..e3446c627ba 100644
--- a/src/plugins/vcsbase/vcsbase.pro
+++ b/src/plugins/vcsbase/vcsbase.pro
@@ -1,6 +1,6 @@
 TEMPLATE = lib
 TARGET = VCSBase
-DEFINES += VCSBASE_LIBRARY
+DEFINES += VCSBASE_LIBRARY QT_NO_CAST_FROM_ASCII
 include(../../qtcreatorplugin.pri)
 include(vcsbase_dependencies.pri)
 HEADERS += vcsbase_global.h \
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 259ae8b66c1..83e7286d098 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -1397,7 +1397,7 @@ void VcsBaseEditorWidget::slotPaste()
     // Retrieve service by soft dependency.
     QObject *pasteService =
             ExtensionSystem::PluginManager::instance()
-                ->getObjectByClassName("CodePaster::CodePasterService");
+                ->getObjectByClassName(QLatin1String("CodePaster::CodePasterService"));
     if (pasteService) {
         QMetaObject::invokeMethod(pasteService, "postCurrentEditor");
     } else {
diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp
index 236531579bd..7af504a7f0f 100644
--- a/src/plugins/vcsbase/vcsbaseplugin.cpp
+++ b/src/plugins/vcsbase/vcsbaseplugin.cpp
@@ -823,14 +823,14 @@ static SynchronousProcessResponse runVcsFullySynchronously(const QString &workin
                                                             &stdOut, &stdErr, true);
 
     if (!stdErr.isEmpty()) {
-        response.stdErr = QString::fromLocal8Bit(stdErr).remove('\r');
+        response.stdErr = QString::fromLocal8Bit(stdErr).remove(QLatin1Char('\r'));
         if (!(flags & VcsBasePlugin::SuppressStdErrInLogWindow))
             outputWindow->append(response.stdErr);
     }
 
     if (!stdOut.isEmpty()) {
         response.stdOut = (outputCodec ? outputCodec->toUnicode(stdOut) : QString::fromLocal8Bit(stdOut))
-                          .remove('\r');
+                          .remove(QLatin1Char('\r'));
         if (flags & VcsBasePlugin::ShowStdOutInLogWindow)
             outputWindow->append(response.stdOut);
     }
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index 2031b537a46..5b9cd1da1af 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -510,14 +510,14 @@ void VcsBaseSubmitEditor::setFileModel(QAbstractItemModel *m, const QString &rep
                 if ((sym->isClass() || sym->isFunction() || sym->isNamespace())
                         && (symId != 0 && acceptsWordForCompletion(symId->chars())))
                 {
-                    uniqueSymbols.insert(symId->chars());
+                    uniqueSymbols.insert(QString::fromUtf8(symId->chars()));
                 }
 
                 // Handle specific case : get "Foo" in "void Foo::function() {}"
                 if (sym->isFunction() && !sym->asFunction()->isDeclaration()) {
                     const char *className = belongingClassName(sym->asFunction());
                     if (acceptsWordForCompletion(className))
-                        uniqueSymbols.insert(className);
+                        uniqueSymbols.insert(QString::fromUtf8(className));
                 }
 
                 ++symPtr;
diff --git a/src/plugins/vcsbase/vcsconfigurationpage.cpp b/src/plugins/vcsbase/vcsconfigurationpage.cpp
index a5d5f9e1020..a096800c6af 100644
--- a/src/plugins/vcsbase/vcsconfigurationpage.cpp
+++ b/src/plugins/vcsbase/vcsconfigurationpage.cpp
@@ -94,7 +94,8 @@ bool VcsConfigurationPage::isComplete() const
 
 void VcsConfigurationPage::openConfiguration()
 {
-    Core::ICore::showOptionsDialog(VcsBase::Constants::VCS_SETTINGS_CATEGORY, d->m_versionControl->id().toString());
+    Core::ICore::showOptionsDialog(QLatin1String(VcsBase::Constants::VCS_SETTINGS_CATEGORY),
+                                   d->m_versionControl->id().toString());
 }
 
 } // namespace VcsBase
-- 
GitLab