qtquick: Add QML interface to TitleBar_qtquick

This commit is contained in:
Sergio Martins
2022-05-23 17:12:35 +01:00
parent dab7195408
commit 821002ce43
3 changed files with 91 additions and 4 deletions

View File

@@ -106,7 +106,8 @@ public:
bool closeButtonEnabled() const;
bool floatButtonVisible() const;
void setCloseButtonEnabled(bool);
void setFloatButtonVisible(bool);
Q_SIGNALS:
void titleChanged();
void iconChanged();
@@ -133,8 +134,6 @@ private:
void updateFloatButton();
void updateCloseButton();
void setCloseButtonEnabled(bool);
void setFloatButtonVisible(bool);
void setFloatButtonToolTip(const QString &);
void init();

View File

@@ -28,6 +28,7 @@ using namespace KDDockWidgets::Views;
TitleBar_qtquick::TitleBar_qtquick(Controllers::TitleBar *controller, QQuickItem *parent)
: View_qtquick(controller, Type::TitleBar, parent)
, m_controller(controller)
{
setFixedHeight(30);
}
@@ -36,6 +37,17 @@ TitleBar_qtquick::~TitleBar_qtquick()
{
}
void TitleBar_qtquick::init()
{
// QML inteface signals
connect(m_controller, &Controllers::TitleBar::titleChanged, this, &TitleBar_qtquick::titleChanged);
connect(m_controller, &Controllers::TitleBar::iconChanged, this, &TitleBar_qtquick::iconChanged);
connect(m_controller, &Controllers::TitleBar::isFocusedChanged, this, &TitleBar_qtquick::isFocusedChanged);
connect(m_controller, &Controllers::TitleBar::closeButtonEnabledChanged, this, &TitleBar_qtquick::closeButtonEnabledChanged);
connect(m_controller, &Controllers::TitleBar::floatButtonVisibleChanged, this, &TitleBar_qtquick::floatButtonVisibleChanged);
connect(m_controller, &Controllers::TitleBar::floatButtonToolTipChanged, this, &TitleBar_qtquick::floatButtonToolTipChanged);
}
#ifdef DOCKS_DEVELOPER_MODE
bool TitleBar_qtquick::isCloseButtonEnabled() const
@@ -100,3 +112,43 @@ void TitleBar_qtquick::updateMaximizeButton()
{
qFatal("Not implemented");
}
bool TitleBar_qtquick::isFocused() const
{
return m_controller->isFocused();
}
bool TitleBar_qtquick::floatButtonVisible() const
{
return m_controller->floatButtonVisible();
}
bool TitleBar_qtquick::closeButtonEnabled() const
{
return m_controller->closeButtonEnabled();
}
QString TitleBar_qtquick::floatButtonToolTip() const
{
return m_controller->floatButtonToolTip();
}
bool TitleBar_qtquick::hasIcon() const
{
return m_controller->hasIcon();
}
QString TitleBar_qtquick::title() const
{
return m_controller->title();
}
void TitleBar_qtquick::setCloseButtonEnabled(bool is)
{
m_controller->setCloseButtonEnabled(is);
}
void TitleBar_qtquick::setFloatButtonVisible(bool is)
{
m_controller->setFloatButtonVisible(is);
}

View File

@@ -17,7 +17,14 @@
#include "views/TitleBar.h"
#include "View_qtquick.h"
namespace KDDockWidgets::Views {
namespace KDDockWidgets {
namespace Controllers {
class TitleBar;
}
namespace Views {
class DOCKS_EXPORT TitleBar_qtquick : public View_qtquick, public Views::TitleBar
{
@@ -25,6 +32,13 @@ class DOCKS_EXPORT TitleBar_qtquick : public View_qtquick, public Views::TitleBa
// These properties is just for the unit-tests
Q_PROPERTY(QQuickItem *titleBarQmlItem READ titleBarQmlItem WRITE setTitleBarQmlItem NOTIFY titleBarQmlItemChanged)
Q_PROPERTY(QQuickItem *titleBarMouseArea READ titleBarMouseArea CONSTANT)
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
Q_PROPERTY(bool hasIcon READ hasIcon NOTIFY iconChanged)
Q_PROPERTY(bool closeButtonEnabled READ closeButtonEnabled WRITE setCloseButtonEnabled NOTIFY closeButtonEnabledChanged)
Q_PROPERTY(bool floatButtonVisible READ floatButtonVisible WRITE setFloatButtonVisible NOTIFY floatButtonVisibleChanged)
Q_PROPERTY(QString floatButtonToolTip READ floatButtonToolTip NOTIFY floatButtonToolTipChanged)
Q_PROPERTY(bool isFocused READ isFocused NOTIFY isFocusedChanged)
public:
explicit TitleBar_qtquick(Controllers::TitleBar *controller, QQuickItem *parent = nullptr);
~TitleBar_qtquick() override;
@@ -45,16 +59,38 @@ protected:
void setTitleBarQmlItem(QQuickItem *);
void updateMaximizeButton() override;
// QML interface
bool isFocused() const;
bool floatButtonVisible() const;
bool closeButtonEnabled() const;
QString floatButtonToolTip() const;
bool hasIcon() const;
QString title() const;
void setCloseButtonEnabled(bool);
void setFloatButtonVisible(bool);
Q_SIGNALS:
void titleBarQmlItemChanged();
void titleChanged();
void iconChanged();
void isFocusedChanged();
void closeButtonEnabledChanged(bool);
void floatButtonVisibleChanged(bool);
void floatButtonToolTipChanged(const QString &);
protected:
void init() override;
private:
QQuickItem *floatButton() const;
QQuickItem *closeButton() const;
QPointer<QQuickItem> m_titleBarQmlItem;
Controllers::TitleBar *const m_controller;
};
}
}
#endif