shift-shell/kcms/info/info.h
Sebastian Kügler 6c746e62d5 [info kcm]: add vendorinfo card
This change adds a card to the Information KCM which can be used to
display vendor-specific information (think of product info, serial or
model number, support info, etc.).

The information is read from a json file in /etc/vendorinfo.json, format
as follows:

'''
{
    "Title" : "Vendor Information",
    "Content" : [
        {
            "Key": "Model Number",
            "Value": "24ABC-13N4"
        },
        {
            "Key": "Serial Number",
            "Value": "778899223344"
        },
        {
            "Key": "Support Phone",
            "Value": "+31 6 48370928"
        }
    ]
}
'''

Title is the card header, each Key/Value block adds a TextDelegate. This
block is only displayed if the file actually exists and has a Title set.

Signed-off-by: Sebastian Kügler <sebas@kde.org>
2025-01-17 09:51:12 +00:00

51 lines
1.3 KiB
C++

/*
SPDX-FileCopyrightText: 2019 Jonah Brüchert <jbb@kaidan.im>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#include "distroinfo.h"
#include "hardwareinfo.h"
#include "softwareinfo.h"
#include <KQuickConfigModule>
#include <QJsonDocument>
#ifndef INFO_H
#define INFO_H
class Info : public KQuickConfigModule
{
Q_OBJECT
Q_PROPERTY(DistroInfo *distroInfo READ distroInfo NOTIFY distroInfoChanged)
Q_PROPERTY(SoftwareInfo *softwareInfo READ softwareInfo NOTIFY softwareInfoChanged)
Q_PROPERTY(HardwareInfo *hardwareInfo READ hardwareInfo NOTIFY hardwareInfoChanged)
Q_PROPERTY(QVariantList vendorInfo READ vendorInfo CONSTANT)
Q_PROPERTY(QString vendorInfoTitle READ vendorInfoTitle CONSTANT)
DistroInfo *distroInfo() const;
SoftwareInfo *softwareInfo() const;
HardwareInfo *hardwareInfo() const;
QVariantList vendorInfo() const;
QString vendorInfoTitle() const;
public:
Info(QObject *parent, const KPluginMetaData &metaData);
Q_INVOKABLE void copyInfoToClipboard() const;
Q_SIGNALS:
void distroInfoChanged();
void softwareInfoChanged();
void hardwareInfoChanged();
private:
DistroInfo *m_distroInfo;
SoftwareInfo *m_softwareInfo;
HardwareInfo *m_hardwareInfo;
QJsonDocument m_vendorInfo;
};
#endif // INFO_H