KDDockWidgets API Documentation 2.0
Loading...
Searching...
No Matches
qtquick/views/TitleBar.cpp
Go to the documentation of this file.
1/*
2 This file is part of KDDockWidgets.
3
4 SPDX-FileCopyrightText: 2019 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
5 Author: SĂ©rgio Martins <sergio.martins@kdab.com>
6
7 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
8
9 Contact KDAB at <info@kdab.com> for commercial licensing options.
10*/
11
12#include "TitleBar.h"
13
14#include "core/DragController_p.h"
15
16#include "kddockwidgets/core/Group.h"
17#include "kddockwidgets/core/FloatingWindow.h"
18#include "kddockwidgets/core/TitleBar.h"
19
20#include "core/Logging_p.h"
21#include "core/WindowBeingDragged_p.h"
22#include "core/Utils_p.h"
23#include "core/TitleBar_p.h"
24
25using namespace KDDockWidgets;
26using namespace KDDockWidgets::QtQuick;
27
28
29TitleBar::TitleBar(Core::TitleBar *controller, QQuickItem *parent)
30 : View(controller, Core::ViewType::TitleBar, parent)
31 , Core::TitleBarViewInterface(controller)
32{
34}
35
39
41{
42 // QML interface signals
43 m_titleBar->dptr()->titleChanged.connect([this] { titleChanged(); });
44 m_titleBar->dptr()->iconChanged.connect([this] { iconChanged(); });
45 m_titleBar->dptr()->isFocusedChanged.connect([this] { isFocusedChanged(); });
46 m_titleBar->dptr()->closeButtonEnabledChanged.connect([this](bool enabled) { closeButtonEnabledChanged(enabled); });
47 m_titleBar->dptr()->floatButtonVisibleChanged.connect([this](bool visible) { floatButtonVisibleChanged(visible); });
48 m_titleBar->dptr()->floatButtonToolTipChanged.connect([this](const QString &text) { floatButtonToolTipChanged(text); });
49 m_titleBar->dptr()->numDockWidgetsChanged.connect([this] { numDockWidgetsChanged(); });
50 m_titleBar->dptr()->maximizeButtonChanged.connect([this](bool visible) { maximizeButtonVisibleChanged(visible); });
51 m_titleBar->dptr()->minimizeButtonChanged.connect([this](bool visible) { minimizeButtonVisibleChanged(visible); });
52}
53
55{
57 if (ev->type() == QEvent::MouseButtonPress) {
58 // Core::TitleBar will forward focus to the correct group
60 }
61 }
62
63 return QtQuick::View::event(ev);
64}
65
66#ifdef DOCKS_DEVELOPER_MODE
67
68bool TitleBar::isCloseButtonEnabled() const
69{
70 if (QQuickItem *button = closeButton())
71 return button->isEnabled();
72 return false;
73}
74
75bool TitleBar::isCloseButtonVisible() const
76{
77 if (QQuickItem *button = closeButton())
78 return button->isVisible();
79
80 return true;
81}
82
83bool TitleBar::isFloatButtonVisible() const
84{
85 if (QQuickItem *button = floatButton())
86 return button->isVisible();
87
88 return true;
89}
90
91#endif
92
93QQuickItem *TitleBar::titleBarQmlItem() const
94{
95 return m_titleBarQmlItem;
96}
97
98QQuickItem *TitleBar::titleBarMouseArea() const
99{
100 if (m_titleBarQmlItem)
101 return m_titleBarQmlItem->property("mouseAreaForTests").value<QQuickItem *>();
102
103 return nullptr;
104}
105
106void TitleBar::setTitleBarQmlItem(QQuickItem *item)
107{
108 if (item != m_titleBarQmlItem) {
109 m_titleBarQmlItem = item;
110 Q_EMIT titleBarQmlItemChanged();
111 }
112}
113
114QQuickItem *TitleBar::floatButton() const
115{
116 return m_titleBarQmlItem ? m_titleBarQmlItem->property("floatButton").value<QQuickItem *>()
117 : nullptr;
118}
119
120QQuickItem *TitleBar::closeButton() const
121{
122 return m_titleBarQmlItem ? m_titleBarQmlItem->property("closeButton").value<QQuickItem *>()
123 : nullptr;
124}
125
127{
128 return m_titleBar->isFocused();
129}
130
132{
134}
135
140
145
150
152{
154}
155
160
162{
163 return m_titleBar->hasIcon();
164}
165
167{
168 return m_titleBar->title();
169}
170
175
180
185
190
195
200
205
210
215
217{
218 return m_titleBar->isFloating();
219}
static Config & self()
returns the singleton Config instance
Definition Config.cpp:87
bool isFocused() const
returns whether any of the DockWidgets this TitleBar controls has a child focus Not to be confused wi...
bool supportsMinimizeButton() const
returns whether this title bar supports a minimize button
TitleBarButtonType maximizeButtonType() const
void focus(Qt::FocusReason reason)
bool isFloating() const
Returns true if this title-bar is the title bar of a floating window.
bool hasIcon() const
returns whether this title bar has an icon
virtual bool is(ViewType) const
Returns whether the view is of the specified type Virtual so it can be overridden by ViewWrapper....
Q_INVOKABLE void toggleMaximized()
These 2 are the same, both just toggle window maximization.
void floatButtonToolTipChanged(const QString &)
void numDockWidgetsChanged()
Emitted when the number of dock widgets under this titlebar changes.
TitleBar(Core::TitleBar *controller, QQuickItem *parent=nullptr)
Qt::WindowFlags flags() const override
Class to abstract QAction, so code still works with QtQuick and Flutter.
MouseButtonPress
QEvent::Type type() const const
MouseFocusReason

© Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
KDDockWidgets
Advanced Dock Widget Framework for Qt
https://www.kdab.com/development-resources/qt-tools/kddockwidgets/
Generated by doxygen 1.9.8