Split most widgets into a Controller and a View
Controllers don't have any GUI and don't depend on the frontend technology. Views are implemented in a specific GUI tech (QtWidgets, QtQuick, etc). For now only QtWidgets work. There's still a lot to decouple. This will make it easier to introduce non-Qt backends.
This commit is contained in:
@@ -18,8 +18,7 @@
|
||||
#include <kddockwidgets/private/widgets/FrameWidget_p.h>
|
||||
#include <kddockwidgets/private/widgets/TabBarWidget_p.h>
|
||||
#include <kddockwidgets/private/widgets/TabWidgetWidget_p.h>
|
||||
#include <kddockwidgets/private/widgets/TitleBarWidget_p.h>
|
||||
#include <kddockwidgets/private/multisplitter/Separator_qwidget.h>
|
||||
#include "../../src/private/multisplitter/views_qtwidgets/Separator_qtwidgets.h" // TODO
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
@@ -62,18 +61,18 @@ public:
|
||||
f.setPixelSize(30);
|
||||
f.setBold(true);
|
||||
p.setFont(f);
|
||||
p.drawText(QPoint(10,40), title());
|
||||
p.drawText(QPoint(10, 40), title());
|
||||
}
|
||||
};
|
||||
|
||||
MyTitleBar::~MyTitleBar() = default;
|
||||
|
||||
// Inheriting from SeparatorWidget instead of Separator as it handles moving and mouse cursor changing
|
||||
class MySeparator : public Layouting::SeparatorWidget
|
||||
class MySeparator : public KDDockWidgets::Views::Separator_qtwidgets
|
||||
{
|
||||
public:
|
||||
explicit MySeparator(Layouting::Widget *parent)
|
||||
: Layouting::SeparatorWidget(parent)
|
||||
explicit MySeparator(KDDockWidgets::Controllers::Separator *controller, QWidget *parent)
|
||||
: KDDockWidgets::Views::Separator_qtwidgets(controller, parent)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -88,19 +87,19 @@ public:
|
||||
|
||||
MySeparator::~MySeparator() = default;
|
||||
|
||||
KDDockWidgets::TitleBar * CustomWidgetFactory::createTitleBar(KDDockWidgets::Frame *frame) const
|
||||
KDDockWidgets::TitleBar *CustomWidgetFactory::createTitleBar(KDDockWidgets::Frame *frame) const
|
||||
{
|
||||
// Feel free to return MyTitleBar_CSS here instead, but just for education purposes!
|
||||
return new MyTitleBar(frame);
|
||||
}
|
||||
|
||||
KDDockWidgets::TitleBar * CustomWidgetFactory::createTitleBar(KDDockWidgets::FloatingWindow *fw) const
|
||||
KDDockWidgets::TitleBar *CustomWidgetFactory::createTitleBar(KDDockWidgets::FloatingWindow *fw) const
|
||||
{
|
||||
// Feel free to return MyTitleBar_CSS here instead, but just for education purposes!
|
||||
return new MyTitleBar(fw);
|
||||
}
|
||||
|
||||
Layouting::Separator * CustomWidgetFactory::createSeparator(Layouting::Widget *parent) const
|
||||
KDDockWidgets::View *CustomWidgetFactory::createSeparator(KDDockWidgets::Controllers::Separator *controller, KDDockWidgets::View *parent) const
|
||||
{
|
||||
return new MySeparator(parent);
|
||||
return new MySeparator(controller, parent ? static_cast<KDDockWidgets::Views::View_qtwidgets *>(parent) : nullptr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user