Move sidebars into MainWindow controller

No reason to have them duplicated between qtwidgets and qtquick
This commit is contained in:
Sergio Martins
2022-06-15 15:49:07 +01:00
parent cd35f1ff62
commit 0825a6bdc2
7 changed files with 22 additions and 29 deletions

View File

@@ -52,9 +52,20 @@ public:
explicit Private(MainWindow *mainWindow, const QString &, MainWindowOptions options)
: m_options(options)
, q(mainWindow)
, m_supportsAutoHide(Config::self().flags() & Config::Flag_AutoHideSupport)
{
}
void init()
{
if (m_supportsAutoHide) {
for (auto location : { SideBarLocation::North, SideBarLocation::East,
SideBarLocation::West, SideBarLocation::South }) {
m_sideBars.insert(location, new Controllers::SideBar(location, q));
}
}
}
bool supportsCentralFrame() const
{
return m_options & MainWindowOption_HasCentralFrame;
@@ -111,9 +122,11 @@ public:
const MainWindowOptions m_options;
MainWindow *const q;
QPointer<Controllers::DockWidget> m_overlayedDockWidget;
QHash<SideBarLocation, Controllers::SideBar *> m_sideBars;
Layout *m_layout = nullptr;
Controllers::DockWidget *m_persistentCentralDockWidget = nullptr;
KDBindings::ScopedConnection m_visibleWidgetCountConnection;
const bool m_supportsAutoHide;
};
MainWindow::MainWindow(View *view, const QString &uniqueName, MainWindowOptions options)
@@ -124,6 +137,7 @@ MainWindow::MainWindow(View *view, const QString &uniqueName, MainWindowOptions
void MainWindow::init(const QString &name)
{
d->init();
d->m_layout = createLayoutWidget(this, d->m_options);
d->m_persistentCentralDockWidget = d->createPersistentCentralDockWidget(d->name);
@@ -810,8 +824,7 @@ QMargins MainWindow::centerWidgetMargins() const
Controllers::SideBar *MainWindow::sideBar(SideBarLocation loc) const
{
auto v = dynamic_cast<Views::MainWindowViewInterface *>(view());
return v->sideBar(loc);
return d->m_sideBars.value(loc);
}
QRect MainWindow::centralAreaGeometry() const

View File

@@ -222,10 +222,12 @@ public:
void setContentsMargins(int, int, int, int);
/// @brief Returns the side bar at the specified location
Controllers::SideBar *sideBar(SideBarLocation) const;
protected:
void setUniqueName(const QString &uniqueName);
QMargins centerWidgetMargins() const;
Controllers::SideBar *sideBar(SideBarLocation) const;
QRect centralAreaGeometry() const;
Q_SIGNALS:

View File

@@ -89,11 +89,6 @@ QSize MainWindow_qtquick::maximumSize() const
return m_mainWindow->layout()->layoutMaximumSizeHint();
}
Controllers::SideBar *MainWindow_qtquick::sideBar(SideBarLocation) const
{
return nullptr;
}
QMargins MainWindow_qtquick::centerWidgetMargins() const
{
qDebug() << Q_FUNC_INFO << "SideBar hasn't been implemented yet";

View File

@@ -48,7 +48,6 @@ public:
QSize maximumSize() const override;
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;

View File

@@ -71,26 +71,20 @@ public:
void init()
{
if (m_supportsAutoHide) {
for (auto location : { SideBarLocation::North, SideBarLocation::East,
SideBarLocation::West, SideBarLocation::South }) {
m_sideBars.insert(location, new Controllers::SideBar(location, m_controller));
}
}
m_layout->setSpacing(0);
updateMargins();
if (m_supportsAutoHide) {
m_layout->addWidget(View_qtwidgets::asQWidget(q->sideBar(SideBarLocation::West)->view()));
m_layout->addWidget(View_qtwidgets::asQWidget(m_controller->sideBar(SideBarLocation::West)->view()));
auto innerVLayout = new QVBoxLayout();
innerVLayout->setSpacing(0);
innerVLayout->setContentsMargins(0, 0, 0, 0);
innerVLayout->addWidget(View_qtwidgets::asQWidget(q->sideBar(SideBarLocation::North)));
innerVLayout->addWidget(View_qtwidgets::asQWidget(m_controller->sideBar(SideBarLocation::North)));
innerVLayout->addWidget(View_qtwidgets::asQWidget(m_controller->layout()));
innerVLayout->addWidget(View_qtwidgets::asQWidget(q->sideBar(SideBarLocation::South)));
innerVLayout->addWidget(View_qtwidgets::asQWidget(m_controller->sideBar(SideBarLocation::South)));
m_layout->addLayout(innerVLayout);
m_layout->addWidget(View_qtwidgets::asQWidget(q->sideBar(SideBarLocation::East)));
m_layout->addWidget(View_qtwidgets::asQWidget(m_controller->sideBar(SideBarLocation::East)));
} else {
m_layout->addWidget(qobject_cast<QWidget *>(m_controller->layout()->view()->asQObject()));
}
@@ -113,7 +107,6 @@ public:
MainWindow_qtwidgets *const q;
Controllers::MainWindow *const m_controller;
const bool m_supportsAutoHide;
QHash<SideBarLocation, Controllers::SideBar *> m_sideBars; // TODOm3: Move to controller
MyCentralWidget *const m_centralWidget;
QHBoxLayout *const m_layout;
KDBindings::ConnectionHandle m_connection;
@@ -153,11 +146,6 @@ void MainWindow_qtwidgets::setCentralWidget(QWidget *w)
QMainWindow::setCentralWidget(w);
}
Controllers::SideBar *MainWindow_qtwidgets::sideBar(SideBarLocation location) const
{
return d->m_sideBars.value(location);
}
QMargins MainWindow_qtwidgets::centerWidgetMargins() const
{
return d->m_centerWidgetMargins;

View File

@@ -58,9 +58,6 @@ public:
/// @brief Destructor
~MainWindow_qtwidgets() override;
/// @brief returns the sidebar for the specified location
Controllers::SideBar *sideBar(SideBarLocation) const override;
/// @brief returns the margins for the contents widget
QMargins centerWidgetMargins() const override;

View File

@@ -35,7 +35,6 @@ 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;
/// @brief Returns the main window controller
Controllers::MainWindow *mainWindow() const;