Text editor: Introduce per project settings

With some refactorings to make the code look better.

Reviewed-by: con
This commit is contained in:
Leandro Melo
2011-02-01 14:13:54 +01:00
parent cbafc50acc
commit ea313f3ec8
46 changed files with 1955 additions and 912 deletions

View File

@@ -37,6 +37,7 @@
#include "basetexteditor.h"
#include "storagesettings.h"
#include "tabsettings.h"
#include "extraencodingsettings.h"
#include "syntaxhighlighter.h"
#include "texteditorconstants.h"
@@ -180,6 +181,7 @@ public:
QString m_mimeType;
StorageSettings m_storageSettings;
TabSettings m_tabSettings;
ExtraEncodingSettings m_extraEncodingSettings;
QTextDocument *m_document;
Internal::DocumentMarker *m_documentMarker;
SyntaxHighlighter *m_highlighter;
@@ -211,7 +213,7 @@ BaseTextDocumentPrivate::BaseTextDocumentPrivate(BaseTextDocument *q) :
m_documentMarker(new Internal::DocumentMarker(m_document)),
m_highlighter(0),
m_lineTerminatorMode(NativeLineTerminator),
m_codec(Core::EditorManager::instance()->defaultTextEncoding()),
m_codec(Core::EditorManager::instance()->defaultTextCodec()),
m_fileHasUtf8Bom(false),
m_fileIsReadOnly(false),
m_hasDecodingError(false)
@@ -260,6 +262,16 @@ const TabSettings &BaseTextDocument::tabSettings() const
return d->m_tabSettings;
}
void BaseTextDocument::setExtraEncodingSettings(const ExtraEncodingSettings &extraEncodingSettings)
{
d->m_extraEncodingSettings = extraEncodingSettings;
}
const ExtraEncodingSettings &BaseTextDocument::extraEncodingSettings() const
{
return d->m_extraEncodingSettings;
}
QString BaseTextDocument::fileName() const
{
return d->m_fileName;
@@ -358,9 +370,10 @@ bool BaseTextDocument::save(const QString &fileName)
if (d->m_lineTerminatorMode == BaseTextDocumentPrivate::CRLFLineTerminator)
plainText.replace(QLatin1Char('\n'), QLatin1String("\r\n"));
Core::IFile::Utf8BomSetting utf8bomSetting = Core::EditorManager::instance()->utf8BomSetting();
if (d->m_codec->name() == "UTF-8" &&
(utf8bomSetting == Core::IFile::AlwaysAdd || (utf8bomSetting == Core::IFile::OnlyKeep && d->m_fileHasUtf8Bom))) {
if (d->m_codec->name() == "UTF-8"
&& (d->m_extraEncodingSettings.m_utf8BomSetting == ExtraEncodingSettings::AlwaysAdd
|| (d->m_extraEncodingSettings.m_utf8BomSetting == ExtraEncodingSettings::OnlyKeep
&& d->m_fileHasUtf8Bom))) {
file.write("\xef\xbb\xbf", 3);
}