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 #include <config-itinerary.h>
0007 
0008 #include "matrixcontroller.h"
0009 
0010 #if HAVE_MATRIX
0011 #include "matrix/matrixmanager.h"
0012 #include "matrix/matrixroomsmodel.h"
0013 #include "matrix/matrixroomssortproxymodel.h"
0014 #endif
0015 
0016 MatrixController::MatrixController(QObject *parent)
0017     : QObject(parent)
0018 {
0019 #if HAVE_MATRIX
0020     qRegisterMetaType<MatrixManager*>();
0021     m_mgr = new MatrixManager(this);
0022 #endif
0023 }
0024 
0025 MatrixController::~MatrixController() = default;
0026 
0027 bool MatrixController::isAvailable()
0028 {
0029 #if HAVE_MATRIX
0030     return true;
0031 #else
0032     return false;
0033 #endif
0034 }
0035 
0036 QObject* MatrixController::manager() const
0037 {
0038 #if HAVE_MATRIX
0039     return m_mgr;
0040 #else
0041     return nullptr;
0042 #endif
0043 }
0044 
0045 QAbstractItemModel* MatrixController::roomsModel()
0046 {
0047 #if HAVE_MATRIX
0048     if (!m_roomsModel) {
0049         auto roomsModel = new MatrixRoomsModel(this);
0050         roomsModel->setConnection(m_mgr->connection());
0051         connect(m_mgr, &MatrixManager::connectionChanged, roomsModel, [roomsModel, this]() { roomsModel->setConnection(m_mgr->connection()); });
0052 
0053         m_roomsModel = new MatrixRoomsSortProxyModel(this);
0054         m_roomsModel->setSourceModel(roomsModel);
0055     }
0056     return m_roomsModel;
0057 #else
0058     return nullptr;
0059 #endif
0060 }
0061 
0062 #include "moc_matrixcontroller.cpp"