File indexing completed on 2024-06-23 04:27:50
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisDynamicSensorFactoryFade.h" 0007 0008 #include "ui_SensorFadeConfiguration.h" 0009 0010 #include <KisWidgetConnectionUtils.h> 0011 #include <KisSensorWithLengthModel.h> 0012 #include <KisKritaSensorPack.h> 0013 0014 namespace { 0015 auto safeDereferenceFadeSensor = lager::lenses::getset( 0016 [](const KisCurveOptionDataCommon &data) -> KisSensorWithLengthData { 0017 const KisKritaSensorPack *pack = dynamic_cast<const KisKritaSensorPack*>(data.sensorData.constData()); 0018 if (pack) { 0019 return pack->constSensorsStruct().sensorFade; 0020 } else { 0021 qWarning() << "safeDereferenceFadeSensor(get): failed to get a Krita sensor data"; 0022 return KisSensorWithLengthData(FadeId); 0023 } 0024 }, 0025 [](KisCurveOptionDataCommon data, KisSensorWithLengthData sensor) -> KisCurveOptionDataCommon { 0026 KisKritaSensorPack *pack = dynamic_cast<KisKritaSensorPack*>(data.sensorData.data()); 0027 if (pack) { 0028 pack->sensorsStruct().sensorFade = sensor; 0029 } else { 0030 qWarning() << "safeDereferenceFadeSensor(set): failed to get a Krita sensor data"; 0031 } 0032 return data; 0033 }); 0034 } 0035 0036 KisDynamicSensorFactoryFade::KisDynamicSensorFactoryFade() 0037 : KisSimpleDynamicSensorFactory(FadeId.id(), 0, 1000, i18n("0"), "", "") 0038 { 0039 0040 } 0041 0042 QWidget *KisDynamicSensorFactoryFade::createConfigWidget(lager::cursor<KisCurveOptionDataCommon> data, QWidget *parent) 0043 { 0044 QWidget* wdg = new QWidget(parent); 0045 Ui_SensorFadeConfiguration stc; 0046 stc.setupUi(wdg); 0047 0048 KisSensorWithLengthModel *model = 0049 new KisSensorWithLengthModel(data.zoom(safeDereferenceFadeSensor), wdg); 0050 0051 using namespace KisWidgetConnectionUtils; 0052 0053 connectControl(stc.checkBoxRepeat, model, "isPeriodic"); 0054 connectControl(stc.spinBoxLength, model, "length"); 0055 0056 stc.spinBoxLength->setExponentRatio(3.0); 0057 0058 return wdg; 0059 } 0060 0061 int KisDynamicSensorFactoryFade::maximumValue(int length) 0062 { 0063 return length >= 0 ? length : KisSimpleDynamicSensorFactory::maximumValue(length); 0064 } 0065 0066 QString KisDynamicSensorFactoryFade::maximumLabel(int length) 0067 { 0068 return i18n("%1", length); 0069 }