Warning, file /utilities/okteta/kasten/core/document/bytearraydocument.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2006-2009 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "bytearraydocument.hpp"
0010 
0011 // Okteta core
0012 #include <Okteta/PieceTableByteArrayModel>
0013 // KF
0014 #include <KLocalizedString>
0015 
0016 using Okteta::PieceTableByteArrayModel;
0017 
0018 namespace Kasten {
0019 
0020 ByteArrayDocument::ByteArrayDocument(const QString& initDescription)
0021     : mByteArray(new Okteta::PieceTableByteArrayModel())
0022     , mInitDescription(initDescription)
0023 {
0024     connect(mByteArray, &PieceTableByteArrayModel::modifiedChanged, this, &ByteArrayDocument::onModelModified);
0025     connect(mByteArray, &PieceTableByteArrayModel::readOnlyChanged, this, &ByteArrayDocument::readOnlyChanged);
0026     connect(mByteArray, &PieceTableByteArrayModel::revertedToVersionIndex, this, &ByteArrayDocument::revertedToVersionIndex);
0027     connect(mByteArray, &PieceTableByteArrayModel::headVersionChanged, this, &ByteArrayDocument::headVersionChanged);
0028     connect(mByteArray, &PieceTableByteArrayModel::headVersionDescriptionChanged,
0029             this, &ByteArrayDocument::onHeadVersionDescriptionChanged);
0030 }
0031 
0032 ByteArrayDocument::~ByteArrayDocument()
0033 {
0034     delete mByteArray;
0035 }
0036 
0037 ByteArrayDocument::ByteArrayDocument(Okteta::PieceTableByteArrayModel* byteArray, const QString& initDescription)
0038     : mByteArray(byteArray)
0039     , mInitDescription(initDescription)
0040 {
0041     connect(mByteArray, &PieceTableByteArrayModel::modifiedChanged, this, &ByteArrayDocument::onModelModified);
0042     connect(mByteArray, &PieceTableByteArrayModel::readOnlyChanged, this, &ByteArrayDocument::readOnlyChanged);
0043     connect(mByteArray, &PieceTableByteArrayModel::revertedToVersionIndex, this, &ByteArrayDocument::revertedToVersionIndex);
0044     connect(mByteArray, &PieceTableByteArrayModel::headVersionChanged, this, &ByteArrayDocument::headVersionChanged);
0045     connect(mByteArray, &PieceTableByteArrayModel::headVersionDescriptionChanged,
0046             this, &ByteArrayDocument::onHeadVersionDescriptionChanged);
0047 }
0048 
0049 Okteta::AbstractByteArrayModel* ByteArrayDocument::content() const { return mByteArray; }
0050 
0051 QString ByteArrayDocument::title() const { return mTitle; }
0052 QString ByteArrayDocument::mimeType() const { return QStringLiteral("ByteArrayDocument"); }
0053 QString ByteArrayDocument::typeName() const { return i18nc("name of the data type", "Byte Array"); }
0054 
0055 bool ByteArrayDocument::isModifiable() const { return true; }
0056 bool ByteArrayDocument::isReadOnly()   const { return mByteArray->isReadOnly(); }
0057 void ByteArrayDocument::setReadOnly(bool isReadOnly) { mByteArray->setReadOnly(isReadOnly); }
0058 
0059 ContentFlags ByteArrayDocument::contentFlags() const
0060 {
0061     return (mByteArray->isModified() ? ContentHasUnstoredChanges : ContentStateNormal);
0062 }
0063 
0064 void ByteArrayDocument::setTitle(const QString& title)
0065 {
0066     mTitle = title;
0067     emit titleChanged(mTitle);
0068 }
0069 
0070 int ByteArrayDocument::versionIndex() const { return mByteArray->versionIndex(); }
0071 int ByteArrayDocument::versionCount() const { return mByteArray->versionCount(); }
0072 DocumentVersionData ByteArrayDocument::versionData(int versionIndex) const
0073 {
0074     const QString changeComment = (versionIndex == 0) ? mInitDescription : mByteArray->versionDescription(versionIndex);
0075     return DocumentVersionData(versionIndex, changeComment);
0076 }
0077 
0078 void ByteArrayDocument::revertToVersionByIndex(int versionIndex) { mByteArray->revertToVersionByIndex(versionIndex); }
0079 
0080 void ByteArrayDocument::onModelModified(bool isModified)
0081 {
0082     emit contentFlagsChanged((isModified ? ContentHasUnstoredChanges : ContentStateNormal));
0083 }
0084 
0085 void ByteArrayDocument::onHeadVersionDescriptionChanged(const QString& newDescription)
0086 {
0087     const DocumentVersionData data(mByteArray->versionIndex(), newDescription);
0088     emit headVersionDataChanged(data);
0089 }
0090 
0091 }
0092 
0093 #include "moc_bytearraydocument.cpp"