Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMultiSensorsSelector Class Reference

#include <KisMultiSensorsSelector.h>

+ Inheritance diagram for KisMultiSensorsSelector:

Classes

struct  Private
 

Signals

void highlightedSensorChanged (const QString &id)
 

Public Member Functions

QString currentHighlighted ()
 
 KisMultiSensorsSelector (QWidget *parent)
 
void setCurrent (const QString &id)
 
void setOptionDataCursor (lager::cursor< KisCurveOptionDataCommon > optionData)
 
 ~KisMultiSensorsSelector () override
 

Protected Member Functions

bool eventFilter (QObject *obj, QEvent *event) override
 

Private Slots

void sensorActivated (const QModelIndex &index)
 
void setCurrent (const QModelIndex &index)
 

Private Attributes

Private *const d
 

Detailed Description

Definition at line 17 of file KisMultiSensorsSelector.h.

Constructor & Destructor Documentation

◆ KisMultiSensorsSelector()

KisMultiSensorsSelector::KisMultiSensorsSelector ( QWidget * parent)

Definition at line 56 of file KisMultiSensorsSelector.cpp.

57 : QWidget(parent)
58 , d(new Private)
59{
61 d->form.setupUi(this);
62
63 connect(d->form.sensorsList, SIGNAL(activated(QModelIndex)), SLOT(setCurrent(QModelIndex)));
64 connect(d->form.sensorsList, SIGNAL(clicked(QModelIndex)), SLOT(setCurrent(QModelIndex)));
65
66 d->layout = new QHBoxLayout(d->form.widgetConfiguration);
67
68 // allow the list viewport to be responsive to input release events
69 d->form.sensorsList->viewport()->installEventFilter(this);
70}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setCurrent(const QString &id)

References connect(), KisMultiSensorsSelector::Private::currentConfigWidget, d, KisMultiSensorsSelector::Private::form, KisMultiSensorsSelector::Private::layout, and setCurrent().

◆ ~KisMultiSensorsSelector()

KisMultiSensorsSelector::~KisMultiSensorsSelector ( )
override

Definition at line 72 of file KisMultiSensorsSelector.cpp.

73{
74 delete d;
75}

References d.

Member Function Documentation

◆ currentHighlighted()

QString KisMultiSensorsSelector::currentHighlighted ( )

Definition at line 102 of file KisMultiSensorsSelector.cpp.

103{
104 return d->model->getSensorId(d->form.sensorsList->currentIndex());
105}
QString getSensorId(const QModelIndex &index)

References d, KisMultiSensorsSelector::Private::form, KisMultiSensorsModel::getSensorId(), and KisMultiSensorsSelector::Private::model.

◆ eventFilter()

bool KisMultiSensorsSelector::eventFilter ( QObject * obj,
QEvent * event )
overrideprotected

This filter makes it possible to select a sensor by click+drag gesture. Such gesture is very easy to do with a tablet stylus. Basically, we activate the lastly-dragged-over sensor on mause/tablet-release

Definition at line 121 of file KisMultiSensorsSelector.cpp.

122{
129 if (event->type() == (QEvent::MouseButtonRelease) || event->type() == QEvent::TabletRelease) {
130 QModelIndex index = d->form.sensorsList->currentIndex();
131 setCurrent(index);
132 event->accept();
133 }
134
135 return QObject::eventFilter(obj, event);
136}

References d, KisMultiSensorsSelector::Private::form, and setCurrent().

◆ highlightedSensorChanged

void KisMultiSensorsSelector::highlightedSensorChanged ( const QString & id)
signal

◆ sensorActivated

void KisMultiSensorsSelector::sensorActivated ( const QModelIndex & index)
privateslot

Definition at line 107 of file KisMultiSensorsSelector.cpp.

108{
109 delete d->currentConfigWidget;
110
111 KisDynamicSensorFactory *factory =
114
115 d->currentConfigWidget = factory->createConfigWidget(d->optionData, d->form.widgetConfiguration);
116 if (d->currentConfigWidget) {
117 d->layout->addWidget(d->currentConfigWidget);
118 }
119}
static KisDynamicSensorFactoryRegistry * instance()
virtual QWidget * createConfigWidget(lager::cursor< KisCurveOptionDataCommon >, QWidget *)=0
T get(const QString &id) const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
lager::cursor< KisCurveOptionDataCommon > optionData

References KisDynamicSensorFactory::createConfigWidget(), KisMultiSensorsSelector::Private::currentConfigWidget, d, KisMultiSensorsSelector::Private::form, KoGenericRegistry< T >::get(), KisMultiSensorsModel::getSensorId(), KisDynamicSensorFactoryRegistry::instance(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisMultiSensorsSelector::Private::layout, KisMultiSensorsSelector::Private::model, and KisMultiSensorsSelector::Private::optionData.

◆ setCurrent [1/2]

void KisMultiSensorsSelector::setCurrent ( const QModelIndex & index)
privateslot

◆ setCurrent() [2/2]

void KisMultiSensorsSelector::setCurrent ( const QString & id)

Definition at line 86 of file KisMultiSensorsSelector.cpp.

87{
88 const QModelIndex index = d->model->sensorIndex(id);
89 KIS_SAFE_ASSERT_RECOVER_RETURN(index.isValid());
90
91 d->form.sensorsList->setCurrentIndex(index);
92
93 sensorActivated(index);
94 Q_EMIT highlightedSensorChanged(id);
95}
QModelIndex sensorIndex(const QString &id)
void sensorActivated(const QModelIndex &index)
void highlightedSensorChanged(const QString &id)

References d, KisMultiSensorsSelector::Private::form, highlightedSensorChanged(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisMultiSensorsSelector::Private::model, sensorActivated(), and KisMultiSensorsModel::sensorIndex().

◆ setOptionDataCursor()

void KisMultiSensorsSelector::setOptionDataCursor ( lager::cursor< KisCurveOptionDataCommon > optionData)

Definition at line 77 of file KisMultiSensorsSelector.cpp.

78{
79 d->optionData = optionData;
80 d->model = new KisMultiSensorsModel(optionData.zoom(sensorsLens), this);
81 d->form.sensorsList->setModel(d->model);
82
83 // TODO: verify that at least one sensor is always active!
84}

References d, KisMultiSensorsSelector::Private::form, KisMultiSensorsSelector::Private::model, KisMultiSensorsSelector::Private::optionData, and sensorsLens.

Member Data Documentation

◆ d

Private* const KisMultiSensorsSelector::d
private

Definition at line 43 of file KisMultiSensorsSelector.h.


The documentation for this class was generated from the following files: