File indexing completed on 2024-05-05 05:38:38
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 "windowtasksmodel.h" 0008 0009 #include <config-X11.h> 0010 0011 #include "waylandtasksmodel.h" 0012 #if HAVE_X11 0013 #include "xwindowtasksmodel.h" 0014 #endif 0015 0016 #include <KWindowSystem> 0017 0018 namespace TaskManager 0019 { 0020 class Q_DECL_HIDDEN WindowTasksModel::Private 0021 { 0022 public: 0023 Private(WindowTasksModel *q); 0024 ~Private(); 0025 0026 static int instanceCount; 0027 static AbstractTasksModel *sourceTasksModel; 0028 0029 void initSourceTasksModel(); 0030 0031 private: 0032 WindowTasksModel *q; 0033 }; 0034 0035 int WindowTasksModel::Private::instanceCount = 0; 0036 AbstractTasksModel *WindowTasksModel::Private::sourceTasksModel = nullptr; 0037 0038 WindowTasksModel::Private::Private(WindowTasksModel *q) 0039 : q(q) 0040 { 0041 ++instanceCount; 0042 } 0043 0044 WindowTasksModel::Private::~Private() 0045 { 0046 --instanceCount; 0047 0048 if (!instanceCount) { 0049 delete sourceTasksModel; 0050 sourceTasksModel = nullptr; 0051 } 0052 } 0053 0054 void WindowTasksModel::Private::initSourceTasksModel() 0055 { 0056 if (!sourceTasksModel && KWindowSystem::isPlatformWayland()) { 0057 sourceTasksModel = new WaylandTasksModel(); 0058 } 0059 0060 #if HAVE_X11 0061 if (!sourceTasksModel && KWindowSystem::isPlatformX11()) { 0062 sourceTasksModel = new XWindowTasksModel(); 0063 } 0064 #endif 0065 0066 q->setSourceModel(sourceTasksModel); 0067 } 0068 0069 WindowTasksModel::WindowTasksModel(QObject *parent) 0070 : QIdentityProxyModel(parent) 0071 , d(new Private(this)) 0072 { 0073 d->initSourceTasksModel(); 0074 } 0075 0076 WindowTasksModel::~WindowTasksModel() 0077 { 0078 } 0079 0080 QHash<int, QByteArray> WindowTasksModel::roleNames() const 0081 { 0082 if (d->sourceTasksModel) { 0083 return d->sourceTasksModel->roleNames(); 0084 } 0085 0086 return QHash<int, QByteArray>(); 0087 } 0088 0089 QModelIndex WindowTasksModel::mapIfaceToSource(const QModelIndex &index) const 0090 { 0091 return mapToSource(index); 0092 } 0093 0094 }