File indexing completed on 2025-02-02 05:02:32

0001 /*
0002     SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #ifndef MATRIXCONTROLLER_H
0007 #define MATRIXCONTROLLER_H
0008 
0009 #include <QObject>
0010 #include <QAbstractItemModel>
0011 class MatrixManager;
0012 class MatrixRoomsModel;
0013 class MatrixRoomsSortProxyModel;
0014 
0015 /** Itinerary-specific Matrix integration logic. */
0016 class MatrixController : public QObject
0017 {
0018     Q_OBJECT
0019     /** Matrix support is built in at all? */
0020     Q_PROPERTY(bool isAvailable READ isAvailable CONSTANT)
0021     Q_PROPERTY(QObject *manager READ manager CONSTANT)
0022     /** Matrix rooms model. */
0023     Q_PROPERTY(QAbstractItemModel* roomsModel READ roomsModel CONSTANT)
0024 
0025 public:
0026     explicit MatrixController(QObject *parent = nullptr);
0027     ~MatrixController();
0028 
0029     static bool isAvailable();
0030 
0031     QObject* manager() const;
0032     QAbstractItemModel* roomsModel();
0033 
0034 private:
0035     MatrixManager *m_mgr = nullptr;
0036     MatrixRoomsSortProxyModel *m_roomsModel = nullptr;
0037 };
0038 
0039 #endif // MATRIXCONTROLLER_H