Add MainWindow view interface
This commit is contained in:
@@ -33,14 +33,8 @@
|
||||
#include "controllers/DockWidget_p.h"
|
||||
#include "controllers/Frame.h"
|
||||
#include "controllers/SideBar.h"
|
||||
#include "views/MainWindow.h"
|
||||
|
||||
// Or we can have a createDockWidget() in the factory
|
||||
#ifdef KDDOCKWIDGETS_QTQUICK
|
||||
#include "DockWidgetQuick.h"
|
||||
#else
|
||||
// TODO: Use framework factory instead
|
||||
#include "views_qtwidgets/MainWindow_qtwidgets.h"
|
||||
#endif
|
||||
|
||||
using namespace KDDockWidgets;
|
||||
using namespace KDDockWidgets::Controllers;
|
||||
@@ -819,24 +813,24 @@ QWidgetOrQuick *MainWindow::persistentCentralWidget() const
|
||||
|
||||
void MainWindow::setContentsMargins(int left, int top, int right, int bottom)
|
||||
{
|
||||
auto v = qobject_cast<Views::MainWindow_qtwidgets *>(view()->asQWidget());
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
v->setContentsMargins(left, top, right, bottom);
|
||||
}
|
||||
|
||||
QMargins MainWindow::centerWidgetMargins() const
|
||||
{
|
||||
auto v = qobject_cast<Views::MainWindow_qtwidgets *>(view()->asQWidget());
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
return v->centerWidgetMargins();
|
||||
}
|
||||
|
||||
Controllers::SideBar *MainWindow::sideBar(SideBarLocation loc) const
|
||||
{
|
||||
auto v = qobject_cast<Views::MainWindow_qtwidgets *>(view()->asQWidget());
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
return v->sideBar(loc);
|
||||
}
|
||||
|
||||
QRect MainWindow::centralAreaGeometry() const
|
||||
{
|
||||
auto v = qobject_cast<Views::MainWindow_qtwidgets *>(view()->asQWidget());
|
||||
auto v = dynamic_cast<Views::MainWindow *>(view());
|
||||
return v->centralAreaGeometry();
|
||||
}
|
||||
|
||||
39
src/views/MainWindow.h
Normal file
39
src/views/MainWindow.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "KDDockWidgets.h"
|
||||
|
||||
class QMargins;
|
||||
class QRect;
|
||||
|
||||
namespace KDDockWidgets {
|
||||
|
||||
namespace Controllers {
|
||||
class SideBar;
|
||||
}
|
||||
|
||||
namespace Views {
|
||||
|
||||
/// @brief The interface that MainWindow views should implement
|
||||
class MainWindow
|
||||
{
|
||||
public:
|
||||
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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -186,3 +186,8 @@ 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);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include "View_qtwidgets.h"
|
||||
#include "controllers/MainWindow.h"
|
||||
#include "views/MainWindow.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
@@ -37,7 +38,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>
|
||||
class DOCKS_EXPORT MainWindow_qtwidgets : public View_qtwidgets<QMainWindow>, public MainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -63,10 +64,10 @@ public:
|
||||
~MainWindow_qtwidgets() override;
|
||||
|
||||
///@brief returns the sidebar for the specified location
|
||||
Controllers::SideBar *sideBar(SideBarLocation) const;
|
||||
Controllers::SideBar *sideBar(SideBarLocation) const override;
|
||||
|
||||
//@brief returns the margins for the contents widget
|
||||
QMargins centerWidgetMargins() const;
|
||||
QMargins centerWidgetMargins() const override;
|
||||
|
||||
//@brief sets the margins for the contents widgets
|
||||
void setCenterWidgetMargins(const QMargins &margins);
|
||||
@@ -74,12 +75,13 @@ public:
|
||||
/// @brief Returns the main window controller
|
||||
Controllers::MainWindow *mainWindow() const;
|
||||
|
||||
void setContentsMargins(int left, int top, int right, int bottom) override;
|
||||
|
||||
void init() override;
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *) override;
|
||||
QRect centralAreaGeometry() const;
|
||||
QRect centralAreaGeometry() const override;
|
||||
|
||||
private:
|
||||
friend class Controllers::MainWindow;
|
||||
|
||||
Reference in New Issue
Block a user