1 /*
2 This file is part of the Okteta Kasten module, made within the KDE community.
3
4 SPDX-FileCopyrightText: 2006-2009 Friedrich W. H. Kossebau <kossebau@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9 #include "bytearraydocument.hpp"
10
11 // Okteta core
12 #include <Okteta/PieceTableByteArrayModel>
13 // KF
14 #include <KLocalizedString>
15
16 using Okteta::PieceTableByteArrayModel;
17
18 namespace Kasten {
19
ByteArrayDocument(const QString & initDescription)20 ByteArrayDocument::ByteArrayDocument(const QString& initDescription)
21 : mByteArray(new Okteta::PieceTableByteArrayModel())
22 , mInitDescription(initDescription)
23 {
24 connect(mByteArray, &PieceTableByteArrayModel::modifiedChanged, this, &ByteArrayDocument::onModelModified);
25 connect(mByteArray, &PieceTableByteArrayModel::readOnlyChanged, this, &ByteArrayDocument::readOnlyChanged);
26 connect(mByteArray, &PieceTableByteArrayModel::revertedToVersionIndex, this, &ByteArrayDocument::revertedToVersionIndex);
27 connect(mByteArray, &PieceTableByteArrayModel::headVersionChanged, this, &ByteArrayDocument::headVersionChanged);
28 connect(mByteArray, &PieceTableByteArrayModel::headVersionDescriptionChanged,
29 this, &ByteArrayDocument::onHeadVersionDescriptionChanged);
30 }
31
~ByteArrayDocument()32 ByteArrayDocument::~ByteArrayDocument()
33 {
34 delete mByteArray;
35 }
36
ByteArrayDocument(Okteta::PieceTableByteArrayModel * byteArray,const QString & initDescription)37 ByteArrayDocument::ByteArrayDocument(Okteta::PieceTableByteArrayModel* byteArray, const QString& initDescription)
38 : mByteArray(byteArray)
39 , mInitDescription(initDescription)
40 {
41 connect(mByteArray, &PieceTableByteArrayModel::modifiedChanged, this, &ByteArrayDocument::onModelModified);
42 connect(mByteArray, &PieceTableByteArrayModel::readOnlyChanged, this, &ByteArrayDocument::readOnlyChanged);
43 connect(mByteArray, &PieceTableByteArrayModel::revertedToVersionIndex, this, &ByteArrayDocument::revertedToVersionIndex);
44 connect(mByteArray, &PieceTableByteArrayModel::headVersionChanged, this, &ByteArrayDocument::headVersionChanged);
45 connect(mByteArray, &PieceTableByteArrayModel::headVersionDescriptionChanged,
46 this, &ByteArrayDocument::onHeadVersionDescriptionChanged);
47 }
48
content() const49 Okteta::AbstractByteArrayModel* ByteArrayDocument::content() const { return mByteArray; }
50
title() const51 QString ByteArrayDocument::title() const { return mTitle; }
mimeType() const52 QString ByteArrayDocument::mimeType() const { return QStringLiteral("ByteArrayDocument"); }
typeName() const53 QString ByteArrayDocument::typeName() const { return i18nc("name of the data type", "Byte Array"); }
54
isModifiable() const55 bool ByteArrayDocument::isModifiable() const { return true; }
isReadOnly() const56 bool ByteArrayDocument::isReadOnly() const { return mByteArray->isReadOnly(); }
setReadOnly(bool isReadOnly)57 void ByteArrayDocument::setReadOnly(bool isReadOnly) { mByteArray->setReadOnly(isReadOnly); }
58
contentFlags() const59 ContentFlags ByteArrayDocument::contentFlags() const
60 {
61 return (mByteArray->isModified() ? ContentHasUnstoredChanges : ContentStateNormal);
62 }
63
setTitle(const QString & title)64 void ByteArrayDocument::setTitle(const QString& title)
65 {
66 mTitle = title;
67 emit titleChanged(mTitle);
68 }
69
versionIndex() const70 int ByteArrayDocument::versionIndex() const { return mByteArray->versionIndex(); }
versionCount() const71 int ByteArrayDocument::versionCount() const { return mByteArray->versionCount(); }
versionData(int versionIndex) const72 DocumentVersionData ByteArrayDocument::versionData(int versionIndex) const
73 {
74 const QString changeComment = (versionIndex == 0) ? mInitDescription : mByteArray->versionDescription(versionIndex);
75 return DocumentVersionData(versionIndex, changeComment);
76 }
77
revertToVersionByIndex(int versionIndex)78 void ByteArrayDocument::revertToVersionByIndex(int versionIndex) { mByteArray->revertToVersionByIndex(versionIndex); }
79
onModelModified(bool isModified)80 void ByteArrayDocument::onModelModified(bool isModified)
81 {
82 emit contentFlagsChanged((isModified ? ContentHasUnstoredChanges : ContentStateNormal));
83 }
84
onHeadVersionDescriptionChanged(const QString & newDescription)85 void ByteArrayDocument::onHeadVersionDescriptionChanged(const QString& newDescription)
86 {
87 const DocumentVersionData data(mByteArray->versionIndex(), newDescription);
88 emit headVersionDataChanged(data);
89 }
90
91 }
92