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

#include <kis_equalizer_widget.h>

+ Inheritance diagram for KisEqualizerWidget:

Classes

struct  EqualizerValues
 
struct  Private
 

Signals

void sigConfigChanged ()
 
void sigReset ()
 

Public Member Functions

void contextMenuEvent (QContextMenuEvent *event) override
 
EqualizerValues getValues () const
 
 KisEqualizerWidget (int maxDistance, QWidget *parent)
 
void mouseMoveEvent (QMouseEvent *ev) override
 
void resizeEvent (QResizeEvent *event) override
 
void setValues (const EqualizerValues &values)
 
void toggleMasterSwitch ()
 
 ~KisEqualizerWidget () override
 

Private Slots

void slotMasterColumnChanged (int, bool, int)
 

Private Attributes

const QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 18 of file kis_equalizer_widget.h.

Constructor & Destructor Documentation

◆ KisEqualizerWidget()

KisEqualizerWidget::KisEqualizerWidget ( int maxDistance,
QWidget * parent )

Definition at line 37 of file kis_equalizer_widget.cpp.

38 : QWidget(parent),
39 m_d(new Private)
40{
41 m_d->maxDistance = maxDistance;
42
43 QHBoxLayout *layout = new QHBoxLayout(this);
44 layout->setSpacing(0);
45 layout->setContentsMargins(0, 0, 0, 0);
46
47 for (int i = -m_d->maxDistance; i <= m_d->maxDistance; i++) {
48 KisEqualizerColumn *c = new KisEqualizerColumn(this, i, QString::number(i));
49 layout->addWidget(c, i == 0 ? 2 : 1);
50
51 if (i == m_d->maxDistance) {
52 c->setRightmost(true);
53 }
54
55 m_d->columns.insert(i, c);
56
57 connect(c, SIGNAL(sigColumnChanged(int,bool,int)),
58 &m_d->updateCompressor, SLOT(start()));
59 }
60
61 connect(&m_d->updateCompressor, SIGNAL(timeout()), SIGNAL(sigConfigChanged()));
62 connect(m_d->columns[0], SIGNAL(sigColumnChanged(int,bool,int)), this, SLOT(slotMasterColumnChanged(int,bool,int)));
63}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setRightmost(bool value)
void slotMasterColumnChanged(int, bool, int)
const QScopedPointer< Private > m_d

References connect(), m_d, KisEqualizerColumn::setRightmost(), sigConfigChanged(), and slotMasterColumnChanged().

◆ ~KisEqualizerWidget()

KisEqualizerWidget::~KisEqualizerWidget ( )
override

Definition at line 65 of file kis_equalizer_widget.cpp.

66{
67}

Member Function Documentation

◆ contextMenuEvent()

void KisEqualizerWidget::contextMenuEvent ( QContextMenuEvent * event)
override

Definition at line 137 of file kis_equalizer_widget.cpp.

138{
140
141 if (!m_d->contextMenu) { // Lazy create and populate context menu.
142 m_d->contextMenu = new QMenu(this);
143
144 QAction *actReset = m_d->contextMenu->addAction(i18nc("Reset to default", "Reset"));
145 connect(actReset, &QAction::triggered, this, &KisEqualizerWidget::sigReset);
146 }
147
148 KIS_ASSERT_RECOVER_RETURN(m_d->contextMenu);
149
150 if (m_d->contextMenu) {
151 m_d->contextMenu->exec(QCursor::pos());
152 }
153}
#define KIS_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:75

References connect(), KIS_ASSERT_RECOVER_RETURN, m_d, and sigReset().

◆ getValues()

KisEqualizerWidget::EqualizerValues KisEqualizerWidget::getValues ( ) const

Definition at line 69 of file kis_equalizer_widget.cpp.

70{
71 EqualizerValues v;
72 v.maxDistance = m_d->maxDistance;
73
74 for (int i = -m_d->maxDistance; i <= m_d->maxDistance; i++) {
75 v.value.insert(i, m_d->columns[i]->value());
76 v.state.insert(i, m_d->columns[i]->state());
77 }
78
79 return v;
80}
qreal v

References m_d, KisEqualizerWidget::EqualizerValues::maxDistance, and v.

◆ mouseMoveEvent()

void KisEqualizerWidget::mouseMoveEvent ( QMouseEvent * ev)
override

Definition at line 119 of file kis_equalizer_widget.cpp.

120{
121 if (!(ev->modifiers() & Qt::ShiftModifier)) return;
122
123 QPoint globalPos = ev->globalPos();
124 QWidget *w = qApp->widgetAt(globalPos);
125
126 if (w && w->inherits("QAbstractSlider")) {
127 QMouseEvent newEv(ev->type(),
128 w->mapFromGlobal(globalPos),
129 globalPos,
130 ev->button(),
131 ev->buttons(),
132 ev->modifiers() & ~Qt::ShiftModifier);
133 qApp->sendEvent(w, &newEv);
134 }
135}

◆ resizeEvent()

void KisEqualizerWidget::resizeEvent ( QResizeEvent * event)
override

Definition at line 100 of file kis_equalizer_widget.cpp.

101{
102 Q_UNUSED(event);
103 const QSize newSize = m_d->columns[1]->size();
104
105 QFont font =
107 QString::number(100), newSize);
108
109 if (font.pointSize() != this->font().pointSize()) {
110 setFont(font);
111
112 for (int i = -m_d->maxDistance; i <= m_d->maxDistance; i++) {
113 m_d->columns[i]->setFont(font);
114 }
115
116 }
117}
QFont getOnionSkinsFont(const QString &maxString, const QSize &availableSize) const
static KisAnimTimelineColors * instance()

References KisAnimTimelineColors::getOnionSkinsFont(), KisAnimTimelineColors::instance(), and m_d.

◆ setValues()

void KisEqualizerWidget::setValues ( const EqualizerValues & values)

Definition at line 82 of file kis_equalizer_widget.cpp.

83{
84 for (int i = -m_d->maxDistance; i <= m_d->maxDistance; i++) {
85 if (qAbs(i) <= v.maxDistance) {
86 m_d->columns[i]->setValue(v.value[i]);
87 m_d->columns[i]->setState(v.state[i]);
88 } else {
89 m_d->columns[i]->setState(false);
90 }
91 }
92}

References m_d, and v.

◆ sigConfigChanged

void KisEqualizerWidget::sigConfigChanged ( )
signal

◆ sigReset

void KisEqualizerWidget::sigReset ( )
signal

◆ slotMasterColumnChanged

void KisEqualizerWidget::slotMasterColumnChanged ( int ,
bool state,
int  )
privateslot

Definition at line 155 of file kis_equalizer_widget.cpp.

156{
157 for (int i = 1; i <= m_d->maxDistance; i++) {
158 m_d->columns[i]->setForceDisabled(!state);
159 m_d->columns[-i]->setForceDisabled(!state);
160 }
161}

References m_d.

◆ toggleMasterSwitch()

void KisEqualizerWidget::toggleMasterSwitch ( )

Definition at line 94 of file kis_equalizer_widget.cpp.

95{
96 const bool currentState = m_d->columns[0]->state();
97 m_d->columns[0]->setState(!currentState);
98}

References m_d.

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisEqualizerWidget::m_d
private

Definition at line 52 of file kis_equalizer_widget.h.


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