File: dplatformsettings.cpp

package info (click to toggle)
dtkgui 5.7.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,340 kB
  • sloc: cpp: 19,512; ansic: 34; makefile: 15; sh: 15
file content (47 lines) | stat: -rw-r--r-- 1,561 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// SPDX-FileCopyrightText: 2023 Uniontech Software Technology Co.,Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later

#include "dplatformsettings.h"

DGUI_BEGIN_NAMESPACE

void DPlatformSettings::registerCallback(DPlatformSettings::PropertyChangeFunc func, void *handle)
{
    Callback callback = { func, handle };
    callback_links.push_back(callback);
}

void DPlatformSettings::removeCallbackForHandle(void *handle)
{
    auto isCallbackForHandle = [handle](const Callback &cb) { return cb.handle == handle; };
    callback_links.erase(std::remove_if(callback_links.begin(), callback_links.end(), isCallbackForHandle));
}

void DPlatformSettings::registerSignalCallback(DPlatformSettings::SignalFunc func, void *handle)
{
    SignalCallback callback = { func, handle };
    signal_callback_links.push_back(callback);
}

void DPlatformSettings::removeSignalCallback(void *handle)
{
    auto isCallbackForHandle = [handle](const SignalCallback &cb) { return cb.handle == handle; };
    signal_callback_links.erase(std::remove_if(signal_callback_links.begin(), signal_callback_links.end(), isCallbackForHandle));
}

void DPlatformSettings::handlePropertyChanged(const QByteArray &property, const QVariant &value)
{
    for (auto callback : callback_links) {
        callback.func(property, value, callback.handle);
    }
}

void DPlatformSettings::handleNotify(const QByteArray &signal, qint32 data1, qint32 data2)
{
    for (auto callback : signal_callback_links) {
        callback.func(signal, data1, data2, callback.handle);
    }
}

DGUI_END_NAMESPACE