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

A special utility titlebar with a title and controls, as well as a central area for adding frequently used widgets. More...

#include <kis_utility_title_bar.h>

+ Inheritance diagram for KisUtilityTitleBar:

Public Slots

void setLocked (bool locked)
 

Public Member Functions

void dockWidgetTitleChanged (const QString &title)
 
void featuresChanged (QDockWidget::DockWidgetFeatures features)
 
 KisUtilityTitleBar (QLabel *title, QWidget *parent=nullptr)
 
 KisUtilityTitleBar (QWidget *parent=nullptr)
 
 Private (KisUtilityTitleBar *thePublic)
 
void setWidgetArea (QWidget *widgetArea)
 
QSize sizeHint () const override
 
void toggleFloating ()
 
void topLevelChanged (bool topLevel)
 
void updateButtonSizes ()
 
void updateIcons ()
 
QWidget * widgetArea ()
 
 ~KisUtilityTitleBar ()
 

Public Attributes

QPushButton * closeButton {nullptr}
 
QDockWidget::DockWidgetFeatures features
 
QPushButton * floatButton {nullptr}
 
QIcon floatIcon
 
QAbstractButton * lockButton {nullptr}
 
bool locked {false}
 
QIcon lockIcon
 
QHBoxLayout * mainLayout
 
QIcon removeIcon
 
KisUtilityTitleBarthePublic {nullptr}
 
KSqueezedTextLabel * titleLabel {nullptr}
 

Protected Attributes

Private *const d
 
const int SPACING_UNIT = 16
 
QHBoxLayout * widgetAreaLayout
 

Additional Inherited Members

- Private Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Private Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Detailed Description

A special utility titlebar with a title and controls, as well as a central area for adding frequently used widgets.

As a general design philosophy, we should try to reserve titlebar widgets for things that are simple to use, frequently tweaked, and core to the artists' workflow.

Definition at line 30 of file kis_utility_title_bar.h.

Constructor & Destructor Documentation

◆ KisUtilityTitleBar() [1/2]

KisUtilityTitleBar::KisUtilityTitleBar ( QWidget * parent = nullptr)

Definition at line 19 of file kis_utility_title_bar.cpp.

20 : KisUtilityTitleBar(new QLabel(i18n("Title"), parent), parent)
21{
22}
KisUtilityTitleBar(QWidget *parent=nullptr)

◆ KisUtilityTitleBar() [2/2]

KisUtilityTitleBar::KisUtilityTitleBar ( QLabel * title,
QWidget * parent = nullptr )

Definition at line 24 of file kis_utility_title_bar.cpp.

25 : QWidget(parent), d(new Private(this))
26{
27 // Set up main layout..
28 d->mainLayout = new QHBoxLayout(this);
29 QMargins margins = d->mainLayout->contentsMargins();
30 margins.setTop(0);
31 margins.setBottom(0);
32 margins.setLeft(0);
33 d->mainLayout->setContentsMargins(margins);
34 d->mainLayout->setSpacing(0);
35
36 // Set up lock button
37 d->lockButton = new KoDockWidgetTitleBarButton(this);
38 d->lockButton->setCheckable(true);
39 d->lockButton->setIcon(kisIcon("docker_lock_a"));
40 connect(d->lockButton, SIGNAL(toggled(bool)), SLOT(setLocked(bool) ));
41 d->lockButton->setVisible(true);
42 d->lockButton->setToolTip(i18nc("@info:tooltip", "Lock Docker"));
43 d->lockButton->setStyleSheet("border: 0");
44 d->lockButton->setFixedSize(QSize(22,22));
45
46 d->mainLayout->addWidget(d->lockButton);
47
48 // Set up title..
49 d->mainLayout->addWidget(title);
50
51 //QSpacerItem *spacerItem = new QSpacerItem(SPACING_UNIT * 2, 0);
52 d->mainLayout->addSpacing(SPACING_UNIT * 2);
53 // Set up widget area..
54 QWidget *widgetArea = new QWidget(this);
55 widgetAreaLayout = new QHBoxLayout(widgetArea);
56 widgetAreaLayout->setSpacing(0);
57 widgetAreaLayout->setContentsMargins(0,0,0,0);
58 d->mainLayout->addWidget(widgetArea);
59
60// mainLayout->addSpacing(SPACING_UNIT * 2);
61 d->mainLayout->insertSpacing(4, SPACING_UNIT * 2 );
62
63 { // Controls/Decorations..
64 QWidget *widget = new QWidget(this);
65
66 QHBoxLayout *sublayout = new QHBoxLayout(widget);
67 sublayout->setSpacing(0);
68 sublayout->setContentsMargins(0,0,0,0);
69
70 QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget());
71
72 { // Float button...
73 QIcon floatIcon = kisIcon("docker_float");
74 d->floatButton = new QPushButton(floatIcon, "", this);
75 d->floatButton->setFlat(true);
76 connect(d->floatButton, &QPushButton::clicked, dockWidget, [dockWidget](){
77 dockWidget->setFloating(!dockWidget->isFloating());
78 } );
79 sublayout->addWidget(d->floatButton);
80 }
81
82 { // Close button...
83 QIcon closeIcon = kisIcon("docker_close");
84 d->closeButton = new QPushButton(closeIcon, "", this);
85 d->closeButton->setFlat(true);
86 connect(d->closeButton, SIGNAL(clicked(bool)), dockWidget, SLOT(close()));
87 sublayout->addWidget(d->closeButton);
88 }
89
90 d->mainLayout->addWidget(widget);
91 }
92}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
A custom title bar button for dock widgets.
#define kisIcon(name)
Definition kis_icon.h:26
QAction * close(const QObject *recvr, const char *slot, QObject *parent)

References connect(), d, floatIcon, kisIcon, setLocked(), SPACING_UNIT, widgetArea(), and widgetAreaLayout.

◆ ~KisUtilityTitleBar()

KisUtilityTitleBar::~KisUtilityTitleBar ( )

Definition at line 149 of file kis_utility_title_bar.cpp.

150{
151 delete d;
152}

References d.

Member Function Documentation

◆ dockWidgetTitleChanged()

void KisUtilityTitleBar::dockWidgetTitleChanged ( const QString & title)

◆ featuresChanged()

void KisUtilityTitleBar::featuresChanged ( QDockWidget::DockWidgetFeatures features)

◆ Private()

KisUtilityTitleBar::Private ( KisUtilityTitleBar * thePublic)
inline

Definition at line 27 of file kis_utility_title_bar_p.h.

29 , locked(false)
30 {
31 }
KisUtilityTitleBar * thePublic

◆ setLocked

void KisUtilityTitleBar::setLocked ( bool locked)
slot

Definition at line 106 of file kis_utility_title_bar.cpp.

107{
108 QDockWidget *q = qobject_cast<QDockWidget*>(parentWidget());
109 d->locked = locked;
110 d->lockButton->blockSignals(true);
111 d->lockButton->setChecked(locked);
112 d->lockButton->blockSignals(false);
113
114 if (locked) {
115 d->features = q->features();
116 q->setFeatures(QDockWidget::NoDockWidgetFeatures);
117 QLayoutItem *spacingItem = d->mainLayout->itemAt(4);
118 d->mainLayout->removeItem(spacingItem);
119 }
120 else {
121 d->mainLayout->insertSpacing(4, SPACING_UNIT * 2 );
122 q->setFeatures(d->features);
123 }
124
125 q->toggleViewAction()->setEnabled(!locked);
126 d->closeButton->setEnabled(!locked);
127 d->closeButton->setVisible(!locked);
128
129 d->floatButton->setEnabled(!locked);
130 d->floatButton->setVisible(!locked);
131
132
133 d->updateIcons();
134 q->setProperty("Locked", locked);
135}

References d, locked, and SPACING_UNIT.

◆ setWidgetArea()

void KisUtilityTitleBar::setWidgetArea ( QWidget * widgetArea)

Definition at line 98 of file kis_utility_title_bar.cpp.

98 {
99 QHBoxLayout *layout = dynamic_cast<QHBoxLayout*>(this->layout());
101 // It's the third widget;
102 // title, spacer, widgetArea, spacer, float/close
103 layout->insertWidget(2, widgetArea);
104}
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, and widgetArea().

◆ sizeHint()

QSize KisUtilityTitleBar::sizeHint ( ) const
inlineoverride

Definition at line 38 of file kis_utility_title_bar.h.

39 {
40 return QSize(32, 32);
41 }

◆ toggleFloating()

void KisUtilityTitleBar::toggleFloating ( )

◆ topLevelChanged()

void KisUtilityTitleBar::topLevelChanged ( bool topLevel)

◆ updateButtonSizes()

void KisUtilityTitleBar::updateButtonSizes ( )

◆ updateIcons()

void KisUtilityTitleBar::updateIcons ( )

◆ widgetArea()

QWidget * KisUtilityTitleBar::widgetArea ( )

Definition at line 94 of file kis_utility_title_bar.cpp.

94 {
95 return widgetAreaLayout->parentWidget();
96}

References widgetAreaLayout.

Member Data Documentation

◆ closeButton

QPushButton* KisUtilityTitleBar::closeButton {nullptr}

Definition at line 36 of file kis_utility_title_bar_p.h.

36{nullptr};

◆ d

Private* const KisUtilityTitleBar::d
protected

Definition at line 55 of file kis_utility_title_bar.h.

◆ features

QDockWidget::DockWidgetFeatures KisUtilityTitleBar::features

Definition at line 41 of file kis_utility_title_bar_p.h.

◆ floatButton

QPushButton* KisUtilityTitleBar::floatButton {nullptr}

Definition at line 37 of file kis_utility_title_bar_p.h.

37{nullptr};

◆ floatIcon

QIcon KisUtilityTitleBar::floatIcon

Definition at line 34 of file kis_utility_title_bar_p.h.

◆ lockButton

QAbstractButton* KisUtilityTitleBar::lockButton {nullptr}

Definition at line 38 of file kis_utility_title_bar_p.h.

38{nullptr};

◆ locked

bool KisUtilityTitleBar::locked {false}

Definition at line 40 of file kis_utility_title_bar_p.h.

40{false};

◆ lockIcon

QIcon KisUtilityTitleBar::lockIcon

Definition at line 34 of file kis_utility_title_bar_p.h.

◆ mainLayout

QHBoxLayout* KisUtilityTitleBar::mainLayout

Definition at line 35 of file kis_utility_title_bar_p.h.

◆ removeIcon

QIcon KisUtilityTitleBar::removeIcon

Definition at line 34 of file kis_utility_title_bar_p.h.

◆ SPACING_UNIT

const int KisUtilityTitleBar::SPACING_UNIT = 16
protected

Definition at line 52 of file kis_utility_title_bar.h.

◆ thePublic

KisUtilityTitleBar* KisUtilityTitleBar::thePublic {nullptr}

Definition at line 33 of file kis_utility_title_bar_p.h.

33{nullptr};

◆ titleLabel

KSqueezedTextLabel* KisUtilityTitleBar::titleLabel {nullptr}

Definition at line 39 of file kis_utility_title_bar_p.h.

39{nullptr};

◆ widgetAreaLayout

QHBoxLayout* KisUtilityTitleBar::widgetAreaLayout
protected

Definition at line 50 of file kis_utility_title_bar.h.


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