File indexing completed on 2025-02-23 04:12:36
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisDynamicSensorFactoryTime.h" 0007 0008 #include "ui_SensorTimeConfiguration.h" 0009 0010 #include <KisWidgetConnectionUtils.h> 0011 #include <KisSensorWithLengthModel.h> 0012 #include <KisKritaSensorPack.h> 0013 0014 namespace { 0015 auto safeDereferenceTimeSensor = 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().sensorTime; 0020 } else { 0021 qWarning() << "safeDereferenceTimeSensor(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().sensorTime = sensor; 0029 } else { 0030 qWarning() << "safeDereferenceTimeSensor(set): failed to get a Krita sensor data"; 0031 } 0032 return data; 0033 }); 0034 } 0035 0036 KisDynamicSensorFactoryTime::KisDynamicSensorFactoryTime() 0037 : KisSimpleDynamicSensorFactory(TimeId.id(), 0, 3000, i18n("0"), "", i18n(" ms")) 0038 { 0039 0040 } 0041 0042 QWidget *KisDynamicSensorFactoryTime::createConfigWidget(lager::cursor<KisCurveOptionDataCommon> data, QWidget *parent) 0043 { 0044 QWidget* wdg = new QWidget(parent); 0045 Ui_SensorTimeConfiguration stc; 0046 stc.setupUi(wdg); 0047 0048 KisSensorWithLengthModel *model = 0049 new KisSensorWithLengthModel(data.zoom(safeDereferenceTimeSensor), wdg); 0050 0051 using namespace KisWidgetConnectionUtils; 0052 0053 connectControl(stc.checkBoxRepeat, model, "isPeriodic"); 0054 connectControl(stc.spinBoxDuration, model, "length"); 0055 0056 stc.spinBoxDuration->setRange(1, 10000); 0057 stc.spinBoxDuration->setExponentRatio(2); 0058 stc.spinBoxDuration->setSuffix(i18n(" ms")); 0059 0060 return wdg; 0061 } 0062 0063 int KisDynamicSensorFactoryTime::maximumValue(int length) 0064 { 0065 return length >= 0 ? length : KisSimpleDynamicSensorFactory::maximumValue(length); 0066 } 0067 0068 QString KisDynamicSensorFactoryTime::maximumLabel(int length) 0069 { 0070 return i18n("%1 ms", length); 0071 }