shift-shell/components/quicksettingsplugin/savedquicksettings.h
Alexander Lohnau a4a14ca162 Do not store KPluginMetaData as pointer
This is unneeded, because KPluginMetaData is a QSharedData object
2023-10-17 05:14:04 +00:00

54 lines
1.4 KiB
C++

// SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include "qqml.h"
#include "quicksetting.h"
#include "quicksettingsconfig.h"
#include "savedquicksettingsmodel.h"
#include <KPackage/Package>
#include <KPluginMetaData>
#include <QAbstractListModel>
#include <QQmlListProperty>
#include <QTimer>
/**
* @short A model that reads quick settings configurations
* from the config and presents models to display them.
*
* @author Devin Lin <devin@kde.org>
**/
class SavedQuickSettings : public QObject
{
Q_OBJECT
Q_PROPERTY(SavedQuickSettingsModel *enabledModel READ enabledQuickSettingsModel CONSTANT)
Q_PROPERTY(SavedQuickSettingsModel *disabledModel READ disabledQuickSettingsModel CONSTANT)
public:
SavedQuickSettings(QObject *parent = nullptr);
~SavedQuickSettings();
SavedQuickSettingsModel *enabledQuickSettingsModel() const;
SavedQuickSettingsModel *disabledQuickSettingsModel() const;
Q_INVOKABLE void enableQS(int index);
Q_INVOKABLE void disableQS(int index);
private:
void refreshModel();
void saveModel();
QuickSettingsConfig *m_settings;
QList<KPluginMetaData> m_validPackages;
QList<KPluginMetaData> m_enabledPackages;
QList<KPluginMetaData> m_disabledPackages;
SavedQuickSettingsModel *m_enabledQSModel;
SavedQuickSettingsModel *m_disabledQSModel;
QTimer *m_updateTimer;
QTimer *m_saveTimer;
};