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

The KisQmlPopupWidgetManager class This encapsulates a KisQQuickPopupWidget.h class, so it can be used from QML. More...

#include <KisQmlPopupWidgetManager.h>

+ Inheritance diagram for KisQmlPopupWidgetManager:

Classes

struct  Private
 

Signals

void bottomMarginChanged ()
 
void itemParentChanged ()
 
void leftMarginChanged ()
 
void marginsChanged ()
 
void rightMarginChanged ()
 
void rootControlChanged ()
 
void topMarginChanged ()
 
void visibleChanged ()
 
void xChanged ()
 
void yChanged ()
 

Public Member Functions

qreal bottomMargin () const
 
Q_INVOKABLE void close ()
 
QQuickItem * itemParent () const
 
 KisQmlPopupWidgetManager (QObject *parent=nullptr)
 
qreal leftMargin () const
 
qreal margins () const
 margins Popup qml component has margins, so we implement those in here too.
 
Q_INVOKABLE void open ()
 
Q_INVOKABLE void releaseKeyboard ()
 
void resetBottomMargin ()
 
void resetLeftMargin ()
 
void resetRightMargin ()
 
void resetTopMargin ()
 
qreal rightMargin () const
 
QQuickItem * rootControl () const
 
void setBottomMargin (const qreal value)
 
void setItemParent (QQuickItem *item)
 
void setLeftMargin (const qreal value)
 
void setMargins (const qreal value)
 
void setRightMargin (const qreal value)
 
void setTopMargin (const qreal value)
 
void setX (const qreal value)
 
void setY (const qreal value)
 
qreal topMargin () const
 
bool visible () const
 
qreal x () const
 
qreal y () const
 
 ~KisQmlPopupWidgetManager ()
 

Properties

qreal bottomMargin
 
qreal leftMargin
 
qreal margins
 
QQuickItem * parent
 
qreal rightMargin
 
QQuickItem * rootControl
 
qreal topMargin
 
bool visible
 
qreal x
 
qreal y
 

Private Slots

void updateMargins ()
 

Private Attributes

QScopedPointer< Privated
 

Detailed Description

The KisQmlPopupWidgetManager class This encapsulates a KisQQuickPopupWidget.h class, so it can be used from QML.

QQuickWidgets don't allow popups to go outside their bounds, so this class is essentially working around that by using a KisQQuickPopupWidget to wrap the content item in.

Definition at line 21 of file KisQmlPopupWidgetManager.h.

Constructor & Destructor Documentation

◆ KisQmlPopupWidgetManager()

KisQmlPopupWidgetManager::KisQmlPopupWidgetManager ( QObject * parent = nullptr)
explicit

Definition at line 27 of file KisQmlPopupWidgetManager.cpp.

28 : QObject(parent)
29 , d(new Private)
30{
31 d->popup = new KisQQuickPopupWidget();
32
33 connect(this, SIGNAL(marginsChanged()), this, SLOT(updateMargins()));
34 connect(this, SIGNAL(topMarginChanged()), this, SLOT(updateMargins()));
35 connect(this, SIGNAL(leftMarginChanged()), this, SLOT(updateMargins()));
36 connect(this, SIGNAL(rightMarginChanged()), this, SLOT(updateMargins()));
37 connect(this, SIGNAL(bottomMarginChanged()), this, SLOT(updateMargins()));
38 connect(d->popup, SIGNAL(signalRootObjectReady()), this, SIGNAL(rootControlChanged()));
39}
The KisQQuickPopupWidget class.
QScopedPointer< Private > d

References bottomMarginChanged(), d, leftMarginChanged(), marginsChanged(), rightMarginChanged(), rootControlChanged(), topMarginChanged(), and updateMargins().

◆ ~KisQmlPopupWidgetManager()

KisQmlPopupWidgetManager::~KisQmlPopupWidgetManager ( )

Definition at line 41 of file KisQmlPopupWidgetManager.cpp.

42{
43 d->popup->deleteLater();
44}

References d.

Member Function Documentation

◆ bottomMargin()

qreal KisQmlPopupWidgetManager::bottomMargin ( ) const

Definition at line 104 of file KisQmlPopupWidgetManager.cpp.

105{
106 return (d->bottomMargin)? d->bottomMargin.value(): d->margins;
107}

References d.

◆ bottomMarginChanged

void KisQmlPopupWidgetManager::bottomMarginChanged ( )
signal

◆ close()

void KisQmlPopupWidgetManager::close ( )

Definition at line 194 of file KisQmlPopupWidgetManager.cpp.

195{
196 d->popup->hide();
197 Q_EMIT visibleChanged();
198}

References d, and visibleChanged().

◆ itemParent()

QQuickItem * KisQmlPopupWidgetManager::itemParent ( ) const

Definition at line 70 of file KisQmlPopupWidgetManager.cpp.

71{
72 return d->itemParent;
73}

References d.

◆ itemParentChanged

void KisQmlPopupWidgetManager::itemParentChanged ( )
signal

◆ leftMargin()

qreal KisQmlPopupWidgetManager::leftMargin ( ) const

Definition at line 109 of file KisQmlPopupWidgetManager.cpp.

110{
111 return (d->leftMargin)? d->leftMargin.value(): d->margins;
112}

References d.

◆ leftMarginChanged

void KisQmlPopupWidgetManager::leftMarginChanged ( )
signal

◆ margins()

qreal KisQmlPopupWidgetManager::margins ( ) const

margins Popup qml component has margins, so we implement those in here too.

Definition at line 87 of file KisQmlPopupWidgetManager.cpp.

88{
89 return d->margins;
90}

References d.

◆ marginsChanged

void KisQmlPopupWidgetManager::marginsChanged ( )
signal

◆ open()

void KisQmlPopupWidgetManager::open ( )

Definition at line 180 of file KisQmlPopupWidgetManager.cpp.

181{
182 if (!d->itemParent) {
183 qWarning() << "Parent not set! PopupWidget requires parent to be explicitely set!";
184 return;
185 }
186 d->popup->raise();
187 d->popup->show();
188 d->popup->move(d->itemParent->mapToGlobal(QPointF(d->x, d->y)).toPoint());
189 // The following is probably causing issues with keyboard focus :(
190 d->popup->activateWindow();
191 Q_EMIT visibleChanged();
192}

References d, and visibleChanged().

◆ releaseKeyboard()

void KisQmlPopupWidgetManager::releaseKeyboard ( )

Definition at line 200 of file KisQmlPopupWidgetManager.cpp.

201{
202 d->popup->releaseKeyboard();
203}

References d.

◆ resetBottomMargin()

void KisQmlPopupWidgetManager::resetBottomMargin ( )

Definition at line 170 of file KisQmlPopupWidgetManager.cpp.

171{
172 d->bottomMargin = std::nullopt;
173}

References d.

◆ resetLeftMargin()

void KisQmlPopupWidgetManager::resetLeftMargin ( )

Definition at line 160 of file KisQmlPopupWidgetManager.cpp.

161{
162 d->leftMargin = std::nullopt;
163}

References d.

◆ resetRightMargin()

void KisQmlPopupWidgetManager::resetRightMargin ( )

Definition at line 165 of file KisQmlPopupWidgetManager.cpp.

166{
167 d->rightMargin = std::nullopt;
168}

References d.

◆ resetTopMargin()

void KisQmlPopupWidgetManager::resetTopMargin ( )

Definition at line 155 of file KisQmlPopupWidgetManager.cpp.

156{
157 d->topMargin = std::nullopt;
158}

References d.

◆ rightMargin()

qreal KisQmlPopupWidgetManager::rightMargin ( ) const

Definition at line 114 of file KisQmlPopupWidgetManager.cpp.

115{
116 return (d->rightMargin)? d->rightMargin.value(): d->margins;
117}

References d.

◆ rightMarginChanged

void KisQmlPopupWidgetManager::rightMarginChanged ( )
signal

◆ rootControl()

QQuickItem * KisQmlPopupWidgetManager::rootControl ( ) const

Definition at line 82 of file KisQmlPopupWidgetManager.cpp.

83{
84 return d->popup->rootObject();
85}

References d.

◆ rootControlChanged

void KisQmlPopupWidgetManager::rootControlChanged ( )
signal

◆ setBottomMargin()

void KisQmlPopupWidgetManager::setBottomMargin ( const qreal value)

Definition at line 146 of file KisQmlPopupWidgetManager.cpp.

147{
148 if (d->bottomMargin) {
149 if (qFuzzyCompare(d->bottomMargin.value(), value)) return;
150 }
151 d->bottomMargin = std::make_optional(value);
152 Q_EMIT bottomMarginChanged();
153}
float value(const T *src, size_t ch)
static bool qFuzzyCompare(half p1, half p2)

References bottomMarginChanged(), d, qFuzzyCompare(), and value().

◆ setItemParent()

void KisQmlPopupWidgetManager::setItemParent ( QQuickItem * item)

Definition at line 75 of file KisQmlPopupWidgetManager.cpp.

76{
77 if(d->itemParent == item) return;
78 d->itemParent = item;
79 Q_EMIT itemParentChanged();
80}

References d, and itemParentChanged().

◆ setLeftMargin()

void KisQmlPopupWidgetManager::setLeftMargin ( const qreal value)

Definition at line 137 of file KisQmlPopupWidgetManager.cpp.

138{
139 if (d->leftMargin) {
140 if (qFuzzyCompare(d->leftMargin.value(), value)) return;
141 }
142 d->leftMargin = std::make_optional(value);
143 Q_EMIT leftMarginChanged();
144}

References d, leftMarginChanged(), qFuzzyCompare(), and value().

◆ setMargins()

void KisQmlPopupWidgetManager::setMargins ( const qreal value)

Definition at line 92 of file KisQmlPopupWidgetManager.cpp.

93{
94 if (qFuzzyCompare(d->margins, value)) return;
95 d->margins = value;
96 Q_EMIT marginsChanged();
97}

References d, marginsChanged(), qFuzzyCompare(), and value().

◆ setRightMargin()

void KisQmlPopupWidgetManager::setRightMargin ( const qreal value)

Definition at line 128 of file KisQmlPopupWidgetManager.cpp.

129{
130 if (d->rightMargin) {
131 if (qFuzzyCompare(d->rightMargin.value(), value)) return;
132 }
133 d->rightMargin = std::make_optional(value);
134 Q_EMIT rightMarginChanged();
135}

References d, qFuzzyCompare(), rightMarginChanged(), and value().

◆ setTopMargin()

void KisQmlPopupWidgetManager::setTopMargin ( const qreal value)

Definition at line 119 of file KisQmlPopupWidgetManager.cpp.

120{
121 if (d->topMargin) {
122 if (qFuzzyCompare(d->topMargin.value(), value)) return;
123 }
124 d->topMargin = std::make_optional(value);
125 Q_EMIT topMarginChanged();
126}

References d, qFuzzyCompare(), topMarginChanged(), and value().

◆ setX()

void KisQmlPopupWidgetManager::setX ( const qreal value)

Definition at line 51 of file KisQmlPopupWidgetManager.cpp.

52{
53 if (qFuzzyCompare(d->x, value)) return;
54 d->x = value;
55 Q_EMIT xChanged();
56}

References d, qFuzzyCompare(), value(), and xChanged().

◆ setY()

void KisQmlPopupWidgetManager::setY ( const qreal value)

Definition at line 63 of file KisQmlPopupWidgetManager.cpp.

64{
65 if (qFuzzyCompare(d->y, value)) return;
66 d->y = value;
67 Q_EMIT yChanged();
68}

References d, qFuzzyCompare(), value(), and yChanged().

◆ topMargin()

qreal KisQmlPopupWidgetManager::topMargin ( ) const

Definition at line 99 of file KisQmlPopupWidgetManager.cpp.

100{
101 return (d->topMargin)? d->topMargin.value(): d->margins;
102}

References d.

◆ topMarginChanged

void KisQmlPopupWidgetManager::topMarginChanged ( )
signal

◆ updateMargins

void KisQmlPopupWidgetManager::updateMargins ( )
privateslot

Definition at line 205 of file KisQmlPopupWidgetManager.cpp.

206{
207 QMargins margins;
208 margins.setTop(qRound(topMargin()));
209 margins.setLeft(qRound(leftMargin()));
210 margins.setRight(qRound(rightMargin()));
211 margins.setBottom(qRound(bottomMargin()));
212 d->popup->setLayoutMargins(margins);
213}

References bottomMargin, d, leftMargin, margins, rightMargin, and topMargin.

◆ visible()

bool KisQmlPopupWidgetManager::visible ( ) const

Definition at line 175 of file KisQmlPopupWidgetManager.cpp.

176{
177 return d->popup->isVisible();
178}

References d.

◆ visibleChanged

void KisQmlPopupWidgetManager::visibleChanged ( )
signal

◆ x()

qreal KisQmlPopupWidgetManager::x ( ) const

Definition at line 46 of file KisQmlPopupWidgetManager.cpp.

47{
48 return d->x;
49}

References d.

◆ xChanged

void KisQmlPopupWidgetManager::xChanged ( )
signal

◆ y()

qreal KisQmlPopupWidgetManager::y ( ) const

Definition at line 58 of file KisQmlPopupWidgetManager.cpp.

59{
60 return d->y;
61}

References d.

◆ yChanged

void KisQmlPopupWidgetManager::yChanged ( )
signal

Member Data Documentation

◆ d

QScopedPointer<Private> KisQmlPopupWidgetManager::d
private

Definition at line 99 of file KisQmlPopupWidgetManager.h.

Property Documentation

◆ bottomMargin

qreal KisQmlPopupWidgetManager::bottomMargin
readwrite

Definition at line 35 of file KisQmlPopupWidgetManager.h.

◆ leftMargin

qreal KisQmlPopupWidgetManager::leftMargin
readwrite

Definition at line 33 of file KisQmlPopupWidgetManager.h.

◆ margins

qreal KisQmlPopupWidgetManager::margins
readwrite

Definition at line 31 of file KisQmlPopupWidgetManager.h.

◆ parent

QQuickItem* KisQmlPopupWidgetManager::parent
readwrite

Definition at line 28 of file KisQmlPopupWidgetManager.h.

◆ rightMargin

qreal KisQmlPopupWidgetManager::rightMargin
readwrite

Definition at line 34 of file KisQmlPopupWidgetManager.h.

◆ rootControl

QQuickItem* KisQmlPopupWidgetManager::rootControl
read

Definition at line 29 of file KisQmlPopupWidgetManager.h.

◆ topMargin

qreal KisQmlPopupWidgetManager::topMargin
readwrite

Definition at line 32 of file KisQmlPopupWidgetManager.h.

◆ visible

bool KisQmlPopupWidgetManager::visible
read

Definition at line 37 of file KisQmlPopupWidgetManager.h.

◆ x

qreal KisQmlPopupWidgetManager::x
readwrite

Definition at line 25 of file KisQmlPopupWidgetManager.h.

◆ y

qreal KisQmlPopupWidgetManager::y
readwrite

Definition at line 26 of file KisQmlPopupWidgetManager.h.


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