File indexing completed on 2024-05-12 05:38:47
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Tomaz Canabrava <tcanabrava@kde.org> 0003 * SPDX-FileCopyrightText: 2023 Jakob Petsovits <jpetso@petsovits.com> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <powerdevilenums.h> 0011 0012 #include <QAbstractListModel> 0013 #include <QIcon> 0014 #include <QList> 0015 #include <QString> 0016 0017 #include "powerdevilconfigcommonprivate_export.h" 0018 0019 namespace PowerDevil 0020 { 0021 class PowerManagement; 0022 } 0023 0024 class POWERDEVILCONFIGCOMMONPRIVATE_EXPORT PowerButtonActionModel : public QAbstractListModel 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 enum { Icon = Qt::DecorationRole, Name = Qt::DisplayRole, Value = Qt::UserRole, IconName = Qt::UserRole + 1 }; 0030 0031 PowerButtonActionModel(QObject *parent, 0032 PowerDevil::PowerManagement *pm, 0033 std::initializer_list<PowerDevil::PowerButtonAction> actions = { 0034 PowerDevil::PowerButtonAction::NoAction, 0035 PowerDevil::PowerButtonAction::Sleep, 0036 PowerDevil::PowerButtonAction::Hibernate, 0037 PowerDevil::PowerButtonAction::Shutdown, 0038 PowerDevil::PowerButtonAction::PromptLogoutDialog, 0039 PowerDevil::PowerButtonAction::LockScreen, 0040 PowerDevil::PowerButtonAction::TurnOffScreen, 0041 PowerDevil::PowerButtonAction::ToggleScreenOnOff, 0042 }); 0043 0044 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0045 int rowCount(const QModelIndex &parent) const override; 0046 QHash<int, QByteArray> roleNames() const override; 0047 0048 private: 0049 void appendAction(PowerDevil::PowerButtonAction, PowerDevil::PowerManagement *pm); 0050 0051 private: 0052 struct Data { 0053 QString name; 0054 QString iconName; 0055 uint value; 0056 }; 0057 0058 QList<Data> m_data; 0059 };