Move some common view code into MainWindowViewInterface
So that it's not duplicated between QtWidgets and QtQuick
This commit is contained in:
@@ -101,6 +101,8 @@ set(KDDW_BACKEND_SRCS
|
||||
views/ClassicIndicatorWindow.cpp
|
||||
views/MainWindowMDI.cpp
|
||||
views/MainWindowMDI.h
|
||||
views/MainWindowViewInterface.cpp
|
||||
views/MainWindowViewInterface.h
|
||||
qtcommon/Platform_qt.cpp
|
||||
qtcommon/Platform_qt.h
|
||||
qtcommon/Window_qt.cpp
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include "kddockwidgets/views/Frame.h"
|
||||
#include "kddockwidgets/views/TabBar.h"
|
||||
#include "kddockwidgets/views/TitleBar.h"
|
||||
#include "kddockwidgets/views/MainWindow.h"
|
||||
#include "kddockwidgets/views/Stack.h"
|
||||
#include "kddockwidgets/views/Frame.h"
|
||||
|
||||
@@ -55,6 +54,6 @@ SideBar::~SideBar() = default;
|
||||
Stack::~Stack() = default;
|
||||
TabBar::~TabBar() = default;
|
||||
TitleBar::~TitleBar() = default;
|
||||
MainWindow::~MainWindow() = default;
|
||||
|
||||
Frame::~Frame() = default;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "controllers/DockWidget_p.h"
|
||||
#include "controllers/Frame.h"
|
||||
#include "controllers/SideBar.h"
|
||||
#include "kddockwidgets/views/MainWindow.h"
|
||||
#include "kddockwidgets/views/MainWindowViewInterface.h"
|
||||
|
||||
|
||||
using namespace KDDockWidgets;
|
||||
@@ -798,24 +798,24 @@ std::shared_ptr<ViewWrapper> MainWindow::persistentCentralWidget() const
|
||||
|
||||
void MainWindow::setContentsMargins(int left, int top, int right, int bottom)
|
||||
{
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
auto v = dynamic_cast<Views::MainWindowViewInterface *>(view());
|
||||
v->setContentsMargins(left, top, right, bottom);
|
||||
}
|
||||
|
||||
QMargins MainWindow::centerWidgetMargins() const
|
||||
{
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
auto v = dynamic_cast<Views::MainWindowViewInterface *>(view());
|
||||
return v->centerWidgetMargins();
|
||||
}
|
||||
|
||||
Controllers::SideBar *MainWindow::sideBar(SideBarLocation loc) const
|
||||
{
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
auto v = dynamic_cast<Views::MainWindowViewInterface *>(view());
|
||||
return v->sideBar(loc);
|
||||
}
|
||||
|
||||
QRect MainWindow::centralAreaGeometry() const
|
||||
{
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
auto v = dynamic_cast<Views::MainWindowViewInterface *>(view());
|
||||
return v->centralAreaGeometry();
|
||||
}
|
||||
|
||||
@@ -222,8 +222,6 @@ public:
|
||||
|
||||
void setContentsMargins(int, int, int, int);
|
||||
|
||||
void onResized(QResizeEvent *);
|
||||
|
||||
protected:
|
||||
void setUniqueName(const QString &uniqueName);
|
||||
QMargins centerWidgetMargins() const;
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
||||
*/
|
||||
|
||||
#include "../../../views/MainWindow.h"
|
||||
#include "../../../views/MainWindowViewInterface.h"
|
||||
@@ -22,12 +22,12 @@ MainWindow_qtquick::MainWindow_qtquick(const QString &uniqueName, MainWindowOpti
|
||||
QQuickItem *parent, Qt::WindowFlags flags)
|
||||
: View_qtquick(new Controllers::MainWindow(this, uniqueName, options),
|
||||
Type::MainWindow, parent, flags)
|
||||
, m_controller(static_cast<Controllers::MainWindow *>(controller()))
|
||||
, MainWindowViewInterface(static_cast<Controllers::MainWindow *>(View::controller()))
|
||||
{
|
||||
m_controller->init(uniqueName);
|
||||
m_mainWindow->init(uniqueName);
|
||||
makeItemFillParent(this);
|
||||
|
||||
Controllers::Layout *lw = m_controller->layout();
|
||||
Controllers::Layout *lw = m_mainWindow->layout();
|
||||
auto layoutView = asView_qtquick(lw->view());
|
||||
makeItemFillParent(layoutView);
|
||||
|
||||
@@ -51,12 +51,12 @@ MainWindow_qtquick::~MainWindow_qtquick()
|
||||
|
||||
QSize MainWindow_qtquick::minSize() const
|
||||
{
|
||||
return m_controller->layout()->layoutMinimumSize();
|
||||
return m_mainWindow->layout()->layoutMinimumSize();
|
||||
}
|
||||
|
||||
QSize MainWindow_qtquick::maximumSize() const
|
||||
{
|
||||
return m_controller->layout()->layoutMaximumSizeHint();
|
||||
return m_mainWindow->layout()->layoutMaximumSizeHint();
|
||||
}
|
||||
|
||||
Controllers::SideBar *MainWindow_qtquick::sideBar(SideBarLocation) const
|
||||
@@ -97,8 +97,3 @@ void MainWindow_qtquick::setContentsMargins(int left, int top, int right, int bo
|
||||
Q_UNUSED(bottom);
|
||||
qDebug() << Q_FUNC_INFO << "not implemented";
|
||||
}
|
||||
|
||||
Controllers::MainWindow *MainWindow_qtquick::mainWindow() const
|
||||
{
|
||||
return m_controller;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#define KD_MAIN_WINDOW_QUICK_P_H
|
||||
|
||||
#include "View_qtquick.h"
|
||||
#include "kddockwidgets/views/MainWindow.h"
|
||||
#include "kddockwidgets/views/MainWindowViewInterface.h"
|
||||
|
||||
namespace KDDockWidgets {
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace Views {
|
||||
/// Provides the ability of acepting drops of dock widgets.
|
||||
/// It's not a real QWindow and not a main window in the sense of QMainWindow. Would be overkill
|
||||
/// to have tool bars, menu bar and footer in the QtQuick implementation. That's left for the user to do.
|
||||
class DOCKS_EXPORT MainWindow_qtquick : public Views::View_qtquick, public MainWindow
|
||||
class DOCKS_EXPORT MainWindow_qtquick : public Views::View_qtquick, public MainWindowViewInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -44,9 +44,6 @@ public:
|
||||
/// @reimp
|
||||
QSize maximumSize() const override;
|
||||
|
||||
/// TODOm3 move into interface
|
||||
Controllers::MainWindow *mainWindow() const;
|
||||
|
||||
protected:
|
||||
Controllers::SideBar *sideBar(SideBarLocation) const override;
|
||||
QMargins centerWidgetMargins() const override;
|
||||
@@ -55,7 +52,6 @@ protected:
|
||||
|
||||
private:
|
||||
void onMultiSplitterGeometryUpdated();
|
||||
Controllers::MainWindow *const m_controller;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,9 +55,9 @@ public:
|
||||
class MainWindow_qtwidgets::Private
|
||||
{
|
||||
public:
|
||||
explicit Private(Controllers::MainWindow *controller, MainWindow_qtwidgets *qq)
|
||||
explicit Private(MainWindow_qtwidgets *qq)
|
||||
: q(qq)
|
||||
, m_controller(controller)
|
||||
, m_controller(qq->mainWindow())
|
||||
, m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport)
|
||||
, m_centralWidget(new MyCentralWidget(qq))
|
||||
, m_layout(new QHBoxLayout(m_centralWidget)) // 1 level of indirection so we can add some margins
|
||||
@@ -127,7 +127,8 @@ MyCentralWidget::~MyCentralWidget()
|
||||
MainWindow_qtwidgets::MainWindow_qtwidgets(Controllers::MainWindow *controller,
|
||||
QWidget *parent, Qt::WindowFlags flags)
|
||||
: View_qtwidgets<QMainWindow>(controller, Type::MainWindow, parent, flags)
|
||||
, d(new Private(controller, this))
|
||||
, MainWindowViewInterface(controller)
|
||||
, d(new Private(this))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -137,7 +138,8 @@ MainWindow_qtwidgets::MainWindow_qtwidgets(const QString &uniqueName,
|
||||
Qt::WindowFlags flags)
|
||||
: View_qtwidgets<QMainWindow>(new Controllers::MainWindow(this, uniqueName, options),
|
||||
Type::MainWindow, parent, flags)
|
||||
, d(new Private(static_cast<Controllers::MainWindow *>(controller()), this))
|
||||
, MainWindowViewInterface(static_cast<Controllers::MainWindow *>(controller()))
|
||||
, d(new Private(this))
|
||||
{
|
||||
auto controller = mainWindow();
|
||||
controller->init(uniqueName);
|
||||
@@ -182,11 +184,6 @@ QRect MainWindow_qtwidgets::centralAreaGeometry() const
|
||||
return centralWidget()->geometry();
|
||||
}
|
||||
|
||||
Controllers::MainWindow *MainWindow_qtwidgets::mainWindow() const
|
||||
{
|
||||
return d->m_controller;
|
||||
}
|
||||
|
||||
void MainWindow_qtwidgets::setContentsMargins(int left, int top, int right, int bottom)
|
||||
{
|
||||
QMainWindow::setContentsMargins(left, top, right, bottom);
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#define KD_MAINWINDOW_H
|
||||
|
||||
#include "View_qtwidgets.h"
|
||||
#include "kddockwidgets/views/MainWindow.h"
|
||||
#include "kddockwidgets/views/MainWindowViewInterface.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace Views {
|
||||
* @brief The QMainwindow sub-class that the application should use to be able
|
||||
* to dock KDDockWidget::DockWidget instances.
|
||||
*/
|
||||
class DOCKS_EXPORT MainWindow_qtwidgets : public View_qtwidgets<QMainWindow>, public MainWindow
|
||||
class DOCKS_EXPORT MainWindow_qtwidgets : public View_qtwidgets<QMainWindow>, public MainWindowViewInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -71,9 +71,6 @@ public:
|
||||
//@brief sets the margins for the contents widgets
|
||||
void setCenterWidgetMargins(const QMargins &margins);
|
||||
|
||||
/// @brief Returns the main window controller
|
||||
Controllers::MainWindow *mainWindow() const;
|
||||
|
||||
void setContentsMargins(int left, int top, int right, int bottom) override;
|
||||
|
||||
void init() override;
|
||||
|
||||
28
src/views/MainWindowViewInterface.cpp
Normal file
28
src/views/MainWindowViewInterface.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
This file is part of KDDockWidgets.
|
||||
|
||||
SPDX-FileCopyrightText: 2020-2022 Klarälvdalens Datakonsult AB, a KDAB Group
|
||||
company <info@kdab.com> Author: Sérgio Martins <sergio.martins@kdab.com>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
Contact KDAB at <info@kdab.com> for commercial licensing options.
|
||||
*/
|
||||
|
||||
#include "MainWindowViewInterface.h"
|
||||
|
||||
namespace KDDockWidgets::Views {
|
||||
|
||||
MainWindowViewInterface::MainWindowViewInterface(Controllers::MainWindow *controller)
|
||||
: m_mainWindow(controller)
|
||||
{
|
||||
}
|
||||
|
||||
MainWindowViewInterface::~MainWindowViewInterface() = default;
|
||||
|
||||
Controllers::MainWindow *MainWindowViewInterface::mainWindow() const
|
||||
{
|
||||
return m_mainWindow;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,19 +21,27 @@ namespace KDDockWidgets {
|
||||
|
||||
namespace Controllers {
|
||||
class SideBar;
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
namespace Views {
|
||||
|
||||
/// @brief The interface that MainWindow views should implement
|
||||
class DOCKS_EXPORT MainWindow
|
||||
class DOCKS_EXPORT MainWindowViewInterface
|
||||
{
|
||||
public:
|
||||
virtual ~MainWindow();
|
||||
explicit MainWindowViewInterface(Controllers::MainWindow *);
|
||||
virtual ~MainWindowViewInterface();
|
||||
virtual QMargins centerWidgetMargins() const = 0;
|
||||
virtual QRect centralAreaGeometry() const = 0;
|
||||
virtual void setContentsMargins(int left, int top, int right, int bottom) = 0;
|
||||
virtual Controllers::SideBar *sideBar(SideBarLocation loc) const = 0;
|
||||
|
||||
/// @brief Returns the main window controller
|
||||
Controllers::MainWindow *mainWindow() const;
|
||||
|
||||
protected:
|
||||
Controllers::MainWindow *const m_mainWindow;
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user