File indexing completed on 2024-05-05 05:38:34
0001 /* 0002 SPDX-FileCopyrightText: 2016 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "startuptasksmodel.h" 0008 #include "abstracttasksmodel.h" 0009 0010 #include <config-X11.h> 0011 0012 #include "waylandstartuptasksmodel.h" 0013 #if HAVE_X11 0014 #include "xstartuptasksmodel.h" 0015 #endif 0016 0017 #include <KWindowSystem> 0018 0019 namespace TaskManager 0020 { 0021 class Q_DECL_HIDDEN StartupTasksModel::Private 0022 { 0023 public: 0024 Private(StartupTasksModel *q); 0025 ~Private(); 0026 0027 static int instanceCount; 0028 static AbstractTasksModel *sourceTasksModel; 0029 0030 void initSourceTasksModel(); 0031 0032 private: 0033 StartupTasksModel *q; 0034 }; 0035 0036 int StartupTasksModel::Private::instanceCount = 0; 0037 AbstractTasksModel *StartupTasksModel::Private::sourceTasksModel = nullptr; 0038 0039 StartupTasksModel::Private::Private(StartupTasksModel *q) 0040 : q(q) 0041 { 0042 ++instanceCount; 0043 } 0044 0045 StartupTasksModel::Private::~Private() 0046 { 0047 --instanceCount; 0048 0049 if (!instanceCount) { 0050 delete sourceTasksModel; 0051 sourceTasksModel = nullptr; 0052 } 0053 } 0054 0055 void StartupTasksModel::Private::initSourceTasksModel() 0056 { 0057 if (!sourceTasksModel && KWindowSystem::isPlatformWayland()) { 0058 sourceTasksModel = new WaylandStartupTasksModel(); 0059 } 0060 0061 #if HAVE_X11 0062 if (!sourceTasksModel && KWindowSystem::isPlatformX11()) { 0063 sourceTasksModel = new XStartupTasksModel(); 0064 } 0065 #endif 0066 0067 q->setSourceModel(sourceTasksModel); 0068 } 0069 0070 StartupTasksModel::StartupTasksModel(QObject *parent) 0071 : QIdentityProxyModel(parent) 0072 , d(new Private(this)) 0073 { 0074 d->initSourceTasksModel(); 0075 } 0076 0077 StartupTasksModel::~StartupTasksModel() 0078 { 0079 } 0080 0081 QHash<int, QByteArray> StartupTasksModel::roleNames() const 0082 { 0083 if (d->sourceTasksModel) { 0084 return d->sourceTasksModel->roleNames(); 0085 } 0086 0087 return QHash<int, QByteArray>(); 0088 } 0089 0090 QModelIndex StartupTasksModel::mapIfaceToSource(const QModelIndex &index) const 0091 { 0092 return mapToSource(index); 0093 } 0094 0095 }