Git: Fix error encoding if the source file not exist

Change-Id: Ia98195f966e79d65f1947c638cb9aacfb9b2f309
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
Yuchen Deng
2012-01-10 00:15:50 +08:00
committed by Tobias Hunger
parent 62afcd6742
commit 58f8d43fff
2 changed files with 12 additions and 1 deletions

View File

@@ -408,7 +408,7 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(const Core::Id &id,
QTC_ASSERT(rc, return 0); QTC_ASSERT(rc, return 0);
rc->setSource(source); rc->setSource(source);
if (codecType == CodecSource) { if (codecType == CodecSource) {
rc->setCodec(VcsBase::VcsBaseEditorWidget::getCodec(source)); rc->setCodec(getSourceCodec(source));
} else if (codecType == CodecLogOutput) { } else if (codecType == CodecLogOutput) {
QString encodingName = readConfigValue(source, QLatin1String("i18n.logOutputEncoding")); QString encodingName = readConfigValue(source, QLatin1String("i18n.logOutputEncoding"));
if (encodingName.isEmpty()) if (encodingName.isEmpty())
@@ -675,6 +675,16 @@ void GitClient::slotBlameRevisionRequested(const QString &source, QString change
blame(fi.absolutePath(), QStringList(), fi.fileName(), change, lineNumber); blame(fi.absolutePath(), QStringList(), fi.fileName(), change, lineNumber);
} }
QTextCodec *GitClient::getSourceCodec(const QString &file) const
{
if (QFileInfo(file).isFile())
return VcsBase::VcsBaseEditorWidget::getCodec(file);
QString encodingName = readConfigValue(file, QLatin1String("gui.encoding"));
if (encodingName.isEmpty())
encodingName = QLatin1String("utf-8");
return QTextCodec::codecForName(encodingName.toLocal8Bit());
}
void GitClient::blame(const QString &workingDirectory, void GitClient::blame(const QString &workingDirectory,
const QStringList &args, const QStringList &args,
const QString &fileName, const QString &fileName,

View File

@@ -233,6 +233,7 @@ private slots:
void slotBlameRevisionRequested(const QString &source, QString change, int lineNumber); void slotBlameRevisionRequested(const QString &source, QString change, int lineNumber);
private: private:
QTextCodec *getSourceCodec(const QString &file) const;
VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty, VcsBase::VcsBaseEditorWidget *findExistingVCSEditor(const char *registerDynamicProperty,
const QString &dynamicPropertyValue) const; const QString &dynamicPropertyValue) const;
enum CodecType { CodecSource, CodecLogOutput, CodecNone }; enum CodecType { CodecSource, CodecLogOutput, CodecNone };