Qt Model Utilities  2.0.3
A set of utilities for the model/view framework of Qt
abstractmodelserialiser.h
1 /****************************************************************************\
2  Copyright 2018 Luca Beldi
3  Licensed under the Apache License, Version 2.0 (the "License");
4  you may not use this file except in compliance with the License.
5  You may obtain a copy of the License at
6  http://www.apache.org/licenses/LICENSE-2.0
7  Unless required by applicable law or agreed to in writing, software
8  distributed under the License is distributed on an "AS IS" BASIS,
9  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10  See the License for the specific language governing permissions and
11  limitations under the License.
12 \****************************************************************************/
13 
14 #ifndef ABSTRACTMULTIROLESERIALISER_H
15 #define ABSTRACTMULTIROLESERIALISER_H
16 #include <modelutilities_global.h>
17 #include <QObject>
18 #include <QScopedPointer>
19 #include <QAbstractItemModel>
20 #include <QDataStream>
21 class AbstractModelSerialiserPrivate;
22 class QIODevice;
23 class MODELUTILITIES_EXPORT AbstractModelSerialiser : public QObject
24 {
25  Q_OBJECT
26  Q_PROPERTY(QList<int> rolesToSave READ rolesToSave WRITE setRoleToSave RESET resetRoleToSave)
27  Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel)
28  Q_PROPERTY(const QAbstractItemModel *constModel READ constModel WRITE setModel)
29  Q_DECLARE_PRIVATE(AbstractModelSerialiser)
30  Q_DISABLE_COPY(AbstractModelSerialiser)
31 public:
32  explicit AbstractModelSerialiser(QObject *parent = Q_NULLPTR);
33  AbstractModelSerialiser(QAbstractItemModel *model, QObject *parent);
34  AbstractModelSerialiser(const QAbstractItemModel *model, QObject *parent);
35  virtual ~AbstractModelSerialiser() = 0;
36  virtual const QList<int> &rolesToSave() const;
37  virtual void setRoleToSave(const QList<int> &val);
38  Q_INVOKABLE virtual void addRoleToSave(int role);
39  Q_INVOKABLE virtual void removeRoleToSave(int role);
40  Q_INVOKABLE virtual void clearRoleToSave();
41  virtual void resetRoleToSave();
42  static QList<int> modelDefaultRoles();
43  virtual QAbstractItemModel *model() const;
44  virtual const QAbstractItemModel *constModel() const;
45  void setModel(QAbstractItemModel *val);
46  void setModel(const QAbstractItemModel *val);
47  Q_INVOKABLE QDataStream::Version streamVersion() const;
48  Q_INVOKABLE virtual bool saveModel(QIODevice *destination) const = 0;
49  Q_INVOKABLE virtual bool saveModel(QByteArray *destination) const = 0;
50  Q_INVOKABLE virtual bool loadModel(QIODevice *source) = 0;
51  Q_INVOKABLE virtual bool loadModel(const QByteArray &source) = 0;
52 public Q_SLOTS:
53  void setStreamVersion(QDataStream::Version ver);
54 
55 protected:
56  AbstractModelSerialiser(AbstractModelSerialiserPrivate &d, QObject *parent);
57  QScopedPointer<AbstractModelSerialiserPrivate> d_ptr;
58 };
59 #endif // ABSTRACTMULTIROLESERIALISER_H
The interface for model serialisers.
Definition: abstractmodelserialiser.h:24
virtual Q_INVOKABLE bool saveModel(QByteArray *destination) const =0
virtual Q_INVOKABLE bool loadModel(const QByteArray &source)=0
virtual ~AbstractModelSerialiser()=0
virtual Q_INVOKABLE bool saveModel(QIODevice *destination) const =0
virtual Q_INVOKABLE bool loadModel(QIODevice *source)=0