diff --git a/src/controllers/TitleBar.h b/src/controllers/TitleBar.h index 277a6d04..8f9f5f68 100644 --- a/src/controllers/TitleBar.h +++ b/src/controllers/TitleBar.h @@ -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(); diff --git a/src/qtquick/views/TitleBar_qtquick.cpp b/src/qtquick/views/TitleBar_qtquick.cpp index 62008701..5b0008aa 100644 --- a/src/qtquick/views/TitleBar_qtquick.cpp +++ b/src/qtquick/views/TitleBar_qtquick.cpp @@ -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); +} diff --git a/src/qtquick/views/TitleBar_qtquick.h b/src/qtquick/views/TitleBar_qtquick.h index 9d665675..c26b013c 100644 --- a/src/qtquick/views/TitleBar_qtquick.h +++ b/src/qtquick/views/TitleBar_qtquick.h @@ -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 m_titleBarQmlItem; + Controllers::TitleBar *const m_controller; }; } +} + #endif