Move sidebars into MainWindow controller
No reason to have them duplicated between qtwidgets and qtquick
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user