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
|