[OpenDocString] kdeconnect-kde (cpp)
kdeconnectpluginconfig.cpp
KdeConnectPluginConfig::KdeConnectPluginConfig()
    : d(new KdeConnectPluginConfigPrivate())
{
}
Constructs a new instance of the KdeConnectPluginConfig class. The object is created only once and persists for the lifetime of the program.
KdeConnectPluginConfig::KdeConnectPluginConfig(const QString &deviceId, const QString &pluginName)
    : d(new KdeConnectPluginConfigPrivate())
{
    d->m_configDir = KdeConnectConfig::instance().pluginConfigDir(deviceId, pluginName);
    QDir().mkpath(d->m_configDir.path());

    d->m_config = new QSettings(d->m_configDir.absoluteFilePath(QStringLiteral("config")), QSettings::IniFormat);

    d->m_signal = QDBusMessage::createSignal(QStringLiteral("/kdeconnect/") + deviceId + QStringLiteral("/") + pluginName,
                                             QStringLiteral("org.kde.kdeconnect.config"),
                                             QStringLiteral("configChanged"));
    QDBusConnection::sessionBus().connect(QLatin1String(""),
                                          QStringLiteral("/kdeconnect/") + deviceId + QStringLiteral("/") + pluginName,
                                          QStringLiteral("org.kde.kdeconnect.config"),
                                          QStringLiteral("configChanged"),
                                          this,
                                          SLOT(slotConfigChanged()));
}
Constructs a KdeConnectPluginConfig object and sets up signal and config change events.
KdeConnectPluginConfig::~KdeConnectPluginConfig()
{
    delete d->m_config;
}
Deletes the configuration object upon destruction.
QString KdeConnectPluginConfig::getString(const QString &key, const QString &defaultValue)
{
    if (!d->m_config) {
        loadConfig();
    }

    d->m_config->sync();
    return d->m_config->value(key, defaultValue).toString();
}
Returns the string value within a given key, and returns it. If the key is not found, the function syncs the configuration to the backend. If the configuration is not yet loaded, the function syncs the settings to the backend and returns the defaultValue.
bool KdeConnectPluginConfig::getBool(const QString &key, const bool defaultValue)
{
    if (!d->m_config) {
        loadConfig();
    }

    d->m_config->sync();
    return d->m_config->value(key, defaultValue).toBool();
}
Returns the boolean value of the given key, or the default value.
int KdeConnectPluginConfig::getInt(const QString &key, const int defaultValue)
{
    if (!d->m_config) {
        loadConfig();
    }

    d->m_config->sync();
    return d->m_config->value(key, defaultValue).toInt();
}
Returns the integer value of the given key, or the default value.
QByteArray KdeConnectPluginConfig::getByteArray(const QString &key, const QByteArray defaultValue)
{
    if (!d->m_config) {
        loadConfig();
    }

    d->m_config->sync();
    return d->m_config->value(key, defaultValue).toByteArray();
}
Returns the byte array value of the given key, or the default value.
QVariantList KdeConnectPluginConfig::getList(const QString &key, const QVariantList &defaultValue)
{
    QVariantList list;
    d->m_config->sync(); // note: need sync() to get recent changes signalled from other process
    int size = d->m_config->beginReadArray(key);
    if (size < 1) {
        d->m_config->endArray();
        return defaultValue;
    }
    for (int i = 0; i < size; ++i) {
        d->m_config->setArrayIndex(i);
        list << d->m_config->value(QStringLiteral("value"));
    }
    d->m_config->endArray();
    return list;
}
Returns the list of values stored in the given array key. It first gets the size of the array, then it creates the list of values, and returns the list.
void KdeConnectPluginConfig::set(const QString &key, const QVariant &value)
{
    d->m_config->setValue(key, value);
    d->m_config->sync();
    QDBusConnection::sessionBus().send(d->m_signal);
}
Sets a key and value within in the KdeConnectPluginConfig object, and synchronizes the configuration.
void KdeConnectPluginConfig::setList(const QString &key, const QVariantList &list)
{
    d->m_config->beginWriteArray(key);
    for (int i = 0; i < list.size(); ++i) {
        d->m_config->setArrayIndex(i);
        d->m_config->setValue(QStringLiteral("value"), list.at(i));
    }
    d->m_config->endArray();
    d->m_config->sync();
    QDBusConnection::sessionBus().send(d->m_signal);
}
Sets the list value within a given key, and synchronizes the configuration.
void KdeConnectPluginConfig::slotConfigChanged()
{
    Q_EMIT configChanged();
}
This emits the configChanged signal.
void KdeConnectPluginConfig::setDeviceId(const QString &deviceId)
{
    if (deviceId != m_deviceId) {
        m_deviceId = deviceId;
    }

    if (!m_deviceId.isEmpty() && !m_pluginName.isEmpty()) {
        loadConfig();
    }
}
Sets the device id by storing it in the m_deviceId variable and reloads the plugin config if it doesn't exist or is empty.
QString KdeConnectPluginConfig::deviceId()
{
    return m_deviceId;
}
Returns the device id as a QString.
void KdeConnectPluginConfig::setPluginName(const QString &pluginName)
{
    if (pluginName != m_pluginName) {
        m_pluginName = pluginName;
    }

    if (!m_deviceId.isEmpty() && !m_pluginName.isEmpty()) {
        loadConfig();
    }
}
Sets the plugin name by storing it in the m_pluginName variable and reloading the plugin config if the device id and the plugin name are not empty.
QString KdeConnectPluginConfig::pluginName()
{
    return m_pluginName;
}
Returns the plugin name stored in the internal configuration list.
void KdeConnectPluginConfig::loadConfig()
{
    d->m_configDir = KdeConnectConfig::instance().pluginConfigDir(m_deviceId, m_pluginName);
    QDir().mkpath(d->m_configDir.path());

    d->m_config = new QSettings(d->m_configDir.absoluteFilePath(QStringLiteral("config")), QSettings::IniFormat);

    d->m_signal = QDBusMessage::createSignal(QStringLiteral("/kdeconnect/") + m_deviceId + QStringLiteral("/") + m_pluginName,
                                             QStringLiteral("org.kde.kdeconnect.config"),
                                             QStringLiteral("configChanged"));
    QDBusConnection::sessionBus().connect(QLatin1String(""),
                                          QStringLiteral("/kdeconnect/") + m_deviceId + QStringLiteral("/") + m_pluginName,
                                          QStringLiteral("org.kde.kdeconnect.config"),
                                          QStringLiteral("configChanged"),
                                          this,
                                          SLOT(slotConfigChanged()));
    Q_EMIT configChanged();
}
Loads the plugin configuration from the internal config dir. Creates the config dir and signal.