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"