Warning, file /utilities/okteta/kasten/core/document/bytearraydocument.hpp 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 #ifndef KASTEN_BYTEARRAYDOCUMENT_HPP
0010 #define KASTEN_BYTEARRAYDOCUMENT_HPP
0011 
0012 // lib
0013 #include "oktetakastencore_export.hpp"
0014 // #include "kbytearrayinterface.hpp"
0015 // Kasten core
0016 #include <Kasten/Versionable>
0017 #include <Kasten/AbstractDocument>
0018 // Qt
0019 #include <QString>
0020 
0021 namespace Okteta {
0022 class AbstractByteArrayModel;
0023 class PieceTableByteArrayModel;
0024 }
0025 
0026 namespace Kasten {
0027 
0028 class OKTETAKASTENCORE_EXPORT ByteArrayDocument : public AbstractDocument
0029                                                 , public If::Versionable
0030                                                 // , public If::UserListable
0031                                                 // ,public If::ByteArray
0032 {
0033     Q_OBJECT
0034     Q_INTERFACES(
0035         Kasten::If::Versionable
0036 //         Kasten::If::UserListable
0037 //         Kasten::If::ByteArray
0038     )
0039 
0040 public:
0041     explicit ByteArrayDocument(const QString& initDescription);
0042     ByteArrayDocument(Okteta::PieceTableByteArrayModel* byteArray, const QString& initDescription);
0043     ~ByteArrayDocument() override;
0044 
0045 public: // AbstractModel API
0046     QString title() const override;
0047     bool isModifiable() const override;
0048     bool isReadOnly() const override;
0049     void setReadOnly(bool isReadOnly) override;
0050 
0051 public: // AbstractDocument API
0052     QString typeName() const override;
0053     QString mimeType() const override;
0054     ContentFlags contentFlags() const override;
0055 
0056 public: // If::Versionable
0057     int versionIndex() const override;
0058     DocumentVersionData versionData(int versionIndex) const override;
0059     int versionCount() const override;
0060     void revertToVersionByIndex(int versionIndex) override;
0061 
0062 public: // If::ByteArray
0063     virtual Okteta::AbstractByteArrayModel* content() const;
0064 
0065 public:
0066     void setTitle(const QString& title);
0067 
0068 Q_SIGNALS: // If::Versionable
0069     void revertedToVersionIndex(int versionIndex) override;
0070     void headVersionDataChanged(const Kasten::DocumentVersionData& versionData) override;
0071     void headVersionChanged(int newHeadVersionIndex) override;
0072 
0073 private Q_SLOTS:
0074     OKTETAKASTENCORE_NO_EXPORT void onModelModified(bool isModified);
0075     OKTETAKASTENCORE_NO_EXPORT void onHeadVersionDescriptionChanged(const QString& newDescription);
0076 
0077 private:
0078     Okteta::PieceTableByteArrayModel* mByteArray;
0079 
0080     mutable QString mTitle;
0081 
0082     const QString mInitDescription;
0083 };
0084 
0085 }
0086 
0087 #endif