1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "submiteditorfile.h"
#include "vcsbasesubmiteditor.h"
#include <utils/fileutils.h>
#include <QFileInfo>
using namespace VcsBase;
using namespace VcsBase::Internal;
using namespace Utils;
/*!
\class VcsBase::Internal::SubmitEditorFile
\brief The SubmitEditorFile class provides a non-saveable IDocument for
submit editor files.
*/
SubmitEditorFile::SubmitEditorFile(VcsBaseSubmitEditor *editor) :
m_modified(false),
m_editor(editor)
{
setTemporary(true);
connect(m_editor, &VcsBaseSubmitEditor::fileContentsChanged,
this, &Core::IDocument::contentsChanged);
}
Core::IDocument::OpenResult SubmitEditorFile::open(QString *errorString,
const FilePath &filePath,
const FilePath &realFilePath)
{
if (filePath.isEmpty())
return OpenResult::ReadError;
FileReader reader;
if (!reader.fetch(realFilePath, QIODevice::Text, errorString))
return OpenResult::ReadError;
const QString text = QString::fromLocal8Bit(reader.data());
if (!m_editor->setFileContents(text.toUtf8()))
return OpenResult::CannotHandle;
setFilePath(filePath.absoluteFilePath());
setModified(filePath != realFilePath);
return OpenResult::Success;
}
QByteArray SubmitEditorFile::contents() const
{
return m_editor->fileContents();
}
bool SubmitEditorFile::setContents(const QByteArray &contents)
{
return m_editor->setFileContents(contents);
}
void SubmitEditorFile::setModified(bool modified)
{
if (m_modified == modified)
return;
m_modified = modified;
emit changed();
}
bool SubmitEditorFile::save(QString *errorString, const FilePath &filePath, bool autoSave)
{
const FilePath &fName = filePath.isEmpty() ? this->filePath() : filePath;
FileSaver saver(fName, QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
saver.write(m_editor->fileContents());
if (!saver.finalize(errorString))
return false;
if (autoSave)
return true;
setFilePath(fName.absoluteFilePath());
setModified(false);
if (!errorString->isEmpty())
return false;
emit changed();
return true;
}
Core::IDocument::ReloadBehavior SubmitEditorFile::reloadBehavior(ChangeTrigger state, ChangeType type) const
{
Q_UNUSED(state)
Q_UNUSED(type)
return BehaviorSilent;
}
|