qtquick: Implement DefaultWidgetFactory_qtquick

Requires implementing some pure-virtuals in the views too
This commit is contained in:
Sergio Martins
2022-05-15 22:14:51 +01:00
parent 7434865967
commit d5ac23a8d2
13 changed files with 88 additions and 36 deletions

View File

@@ -15,24 +15,25 @@
#include "private/indicators/ClassicIndicators_p.h"
#include "private/indicators/NullIndicators_p.h"
#include "private/Utils_p.h"
#include "private/indicators/SegmentedIndicators_p.h"
#include "controllers/MainWindow.h"
#include "controllers/TabBar.h"
#include "controllers/Stack.h"
#include "controllers/FloatingWindow.h"
#include "private/indicators/SegmentedIndicators_p.h"
// #include "qtquick/views/FloatingWindow_qtquick.h"
#include "qtquick/views/FloatingWindow_qtquick.h"
#include "qtquick/views/DockWidget_qtquick.h"
#include "qtquick/views/DropArea_qtquick.h"
#include "qtquick/views/Frame_qtquick.h"
#include "qtquick/views/View_qtquick.h"
#include "qtquick/views/RubberBand_qtquick.h"
#include "qtquick/views/Separator_qtquick.h"
#include "qtquick/views/TitleBar_qtquick.h"
#include "qtquick/views/TabBar_qtquick.h"
// #include "qtquick/views/SideBar_qtquick.h"
#include "qtquick/views/Stack_qtquick.h"
// #include "qtquick/views/MainWindow_qtquick.h"
#include "qtquick/views/MainWindow_qtquick.h"
#include "qtquick/views/MDILayout_qtquick.h"
@@ -46,48 +47,48 @@ DefaultWidgetFactory_qtquick::~DefaultWidgetFactory_qtquick()
{
}
View *DefaultWidgetFactory_qtquick::createMainWindow(Controllers::MainWindow *, View *, Qt::WindowFlags) const
View *DefaultWidgetFactory_qtquick::createMainWindow(Controllers::MainWindow *mainWindow,
View *parent, Qt::WindowFlags flags) const
{
Q_UNUSED(mainWindow);
Q_UNUSED(parent);
Q_UNUSED(flags);
return {};
// return new Views::MainWindow_qtquick(mainWindow, parent ? static_cast<Views::View_qtwidgets<QMainWindow> *>(parent) : nullptr, flags);
// return new Views::MainWindow_qtquick(mainWindow, Views::asQQuickItem(parent), flags);
}
View *DefaultWidgetFactory_qtquick::createDockWidget(Controllers::DockWidget *, Qt::WindowFlags) const
View *DefaultWidgetFactory_qtquick::createDockWidget(Controllers::DockWidget *dw, Qt::WindowFlags flags) const
{
return {};
// return new Views::DockWidget_qtquick(dw, flags);
return new Views::DockWidget_qtquick(dw, flags);
}
View *DefaultWidgetFactory_qtquick::createFrame(Controllers::Frame *, View *,
View *DefaultWidgetFactory_qtquick::createFrame(Controllers::Frame *controller, View *parent,
FrameOptions) const
{
// TODOv2: Remove options
return {};
// return new Views::Frame_qtquick(controller, Views::View_qtwidgets<QWidget>::asQWidget(parent));
return new Views::Frame_qtquick(controller, Views::asQQuickItem(parent));
}
View *DefaultWidgetFactory_qtquick::createTitleBar(Controllers::TitleBar *, Controllers::Frame *) const
View *DefaultWidgetFactory_qtquick::createTitleBar(Controllers::TitleBar *titleBar,
Controllers::Frame *parent) const
{
return {};
// return new Views::TitleBar_qtquick(titleBar, Views::View_qtwidgets<QWidget>::asQWidget(frame));
return new Views::TitleBar_qtquick(titleBar, Views::asQQuickItem(parent));
}
View *DefaultWidgetFactory_qtquick::createTitleBar(Controllers::TitleBar *, Controllers::FloatingWindow *) const
View *DefaultWidgetFactory_qtquick::createTitleBar(Controllers::TitleBar *titleBar,
Controllers::FloatingWindow *fw) const
{
return {};
// return new Views::TitleBar_qtquick(titleBar, Views::View_qtwidgets<QWidget>::asQWidget(fw));
return new Views::TitleBar_qtquick(titleBar, Views::asQQuickItem(fw));
}
View *DefaultWidgetFactory_qtquick::createTabBar(Controllers::TabBar *, View *) const
View *DefaultWidgetFactory_qtquick::createTabBar(Controllers::TabBar *controller, View *parent) const
{
return {};
// return new Views::TabBar_qtquick(tabBar, Views::View_qtwidgets<QWidget>::asQWidget(parent));
return new Views::TabBar_qtquick(controller, Views::asQQuickItem(parent));
}
View *DefaultWidgetFactory_qtquick::createTabWidget(Controllers::Stack *, Controllers::Frame *) const
View *DefaultWidgetFactory_qtquick::createTabWidget(Controllers::Stack *controller, Controllers::Frame *parent) const
{
return {};
// return new Views::Stack_qtquick(controller, parent);
return new Views::Stack_qtquick(controller, parent);
}
View *DefaultWidgetFactory_qtquick::createSeparator(Controllers::Separator *controller, View *parent) const
@@ -95,12 +96,13 @@ View *DefaultWidgetFactory_qtquick::createSeparator(Controllers::Separator *cont
return new Views::Separator_qtquick(controller, parent ? static_cast<Views::View_qtquick *>(parent) : nullptr);
}
View *DefaultWidgetFactory_qtquick::createFloatingWindow(Controllers::FloatingWindow *,
Controllers::MainWindow *, Qt::WindowFlags) const
View *DefaultWidgetFactory_qtquick::createFloatingWindow(Controllers::FloatingWindow *controller,
Controllers::MainWindow *parent, Qt::WindowFlags flags) const
{
return {};
// auto mainwindow = qobject_cast<QMainWindow *>(Views::View_qtwidgets<QWidget>::asQWidget(parent));
// return new Views::FloatingWindow_qtquick(controller, mainwindow, windowFlags);
auto mainwindow = parent ? qobject_cast<Views::MainWindow_qtquick *>(Views::asQQuickItem(parent->view()))
: nullptr;
return new Views::FloatingWindow_qtquick(controller, mainwindow, flags);
}
DropIndicatorOverlayInterface *DefaultWidgetFactory_qtquick::createDropIndicatorOverlay(Controllers::DropArea *dropArea) const
@@ -122,10 +124,9 @@ DropIndicatorOverlayInterface *DefaultWidgetFactory_qtquick::createDropIndicator
return new ClassicIndicators(dropArea);
}
View *DefaultWidgetFactory_qtquick::createRubberBand(View *) const
View *DefaultWidgetFactory_qtquick::createRubberBand(View *parent) const
{
return {};
// return new QRubberBand(QRubberBand::Rectangle, parent ? qobject_cast<QWidget *>(parent->asQObject()) : nullptr);
return new Views::RubberBand_qtquick(Views::asQQuickItem(parent));
}
View *DefaultWidgetFactory_qtquick::createSideBar(Controllers::SideBar *,

View File

@@ -111,8 +111,9 @@ QuickView::~QuickView() = default;
}
FloatingWindow_qtquick::FloatingWindow_qtquick(Controllers::FloatingWindow *controller, Views::MainWindow_qtquick *parent)
: Views::View_qtquick(controller, Type::FloatingWindow, parent)
FloatingWindow_qtquick::FloatingWindow_qtquick(Controllers::FloatingWindow *controller,
Views::MainWindow_qtquick *parent, Qt::WindowFlags flags)
: Views::View_qtquick(controller, Type::FloatingWindow, parent, flags)
, m_quickWindow(new QuickView(plat()->qmlEngine(), this))
, m_controller(controller)
{

View File

@@ -30,7 +30,8 @@ class DOCKS_EXPORT FloatingWindow_qtquick : public Views::View_qtquick
{
Q_OBJECT
public:
explicit FloatingWindow_qtquick(Controllers::FloatingWindow *controller, Views::MainWindow_qtquick *parent = nullptr);
explicit FloatingWindow_qtquick(Controllers::FloatingWindow *controller,
Views::MainWindow_qtquick *parent = nullptr, Qt::WindowFlags flags = {});
~FloatingWindow_qtquick();
QSize minSize() const override;

View File

@@ -217,3 +217,9 @@ Stack_qtquick *Frame_qtquick::stackView() const
return nullptr;
}
QRect Frame_qtquick::dragRect() const
{
qFatal("Not implemented");
return {};
}

View File

@@ -51,6 +51,8 @@ public:
/// @brief Returns the QQuickItem which represents this frame on the screen
QQuickItem *visualItem() const;
QRect dragRect() const override;
protected:
void removeWidget_impl(Controllers::DockWidget *) override;
int indexOfDockWidget_impl(const Controllers::DockWidget *) override;

View File

@@ -81,3 +81,17 @@ void MainWindow_qtquick::onMultiSplitterGeometryUpdated()
}
}
}
QRect MainWindow_qtquick::centralAreaGeometry() const
{
qFatal("Not implemented");
}
void MainWindow_qtquick::setContentsMargins(int left, int top, int right, int bottom)
{
Q_UNUSED(left);
Q_UNUSED(right);
Q_UNUSED(top);
Q_UNUSED(bottom);
qFatal("Not implemented");
}

View File

@@ -47,6 +47,8 @@ public:
protected:
Controllers::SideBar *sideBar(SideBarLocation) const override;
QMargins centerWidgetMargins() const override;
QRect centralAreaGeometry() const override;
void setContentsMargins(int left, int top, int right, int bottom) override;
private:
void onMultiSplitterGeometryUpdated();

View File

@@ -44,6 +44,11 @@ Stack_qtquick::Stack_qtquick(Controllers::Stack *controller,
// return m_tabBar;
// }
void Stack_qtquick::setDocumentMode(bool)
{
qDebug() << "Not implemented";
}
int Stack_qtquick::numDockWidgets() const
{
return m_dockWidgetModel->count();

View File

@@ -59,6 +59,7 @@ public:
int currentIndex() const override;
bool insertDockWidget(int index, Controllers::DockWidget *, const QIcon &, const QString &title) override;
Q_INVOKABLE void setCurrentDockWidget(int index) override;
void setDocumentMode(bool) override;
Controllers::DockWidget *currentDockWidget() const;
/// @brief Returns the tab bar as a QObject for QML.

View File

@@ -139,3 +139,14 @@ void TabBar_qtquick::moveTabTo(int from, int to)
Q_UNUSED(to);
// Not implemented yet
}
Controllers::DockWidget *TabBar_qtquick::currentDockWidget() const
{
return nullptr;
}
bool TabBar_qtquick::tabsAreMovable() const
{
qFatal("Not implemented");
return false;
}

View File

@@ -52,6 +52,8 @@ public:
QRect rectForTab(int index) const override;
void moveTabTo(int from, int to) override;
Controllers::DockWidget *currentDockWidget() const override;
bool tabsAreMovable() const override;
Q_SIGNALS:
void tabBarQmlItemChanged();

View File

@@ -95,3 +95,8 @@ QQuickItem *TitleBar_qtquick::closeButton() const
return m_titleBarQmlItem ? m_titleBarQmlItem->property("closeButton").value<QQuickItem *>()
: nullptr;
}
void TitleBar_qtquick::updateMaximizeButton()
{
qFatal("Not implemented");
}

View File

@@ -43,6 +43,7 @@ protected:
QQuickItem *titleBarQmlItem() const;
QQuickItem *titleBarMouseArea() const;
void setTitleBarQmlItem(QQuickItem *);
void updateMaximizeButton() override;
Q_SIGNALS:
void titleBarQmlItemChanged();