improvements to view config windows abstraction

pull/18/head
Michail Vourlakos 5 years ago
parent 5cba3c3259
commit 37248789f6

@ -108,9 +108,22 @@ void PrimaryConfigView::init()
syncSlideEffect(); syncSlideEffect();
} }
QQuickView *PrimaryConfigView::secondaryWindow() void PrimaryConfigView::setOnActivities(QStringList activities)
{ {
return m_secConfigView; m_corona->wm()->setWindowOnActivities(*this, activities);
if (m_secConfigView) {
m_corona->wm()->setWindowOnActivities(*m_secConfigView.data(), activities);
}
}
void PrimaryConfigView::requestActivate()
{
if (m_secConfigView) {
m_secConfigView->requestActivate();
}
SubConfigView::requestActivate();
} }
void PrimaryConfigView::showSecondaryWindow() void PrimaryConfigView::showSecondaryWindow()

@ -96,8 +96,9 @@ public:
QRect geometryWhenVisible() const; QRect geometryWhenVisible() const;
void setParentView(Latte::View *view) override; void setParentView(Latte::View *view) override;
void setOnActivities(QStringList activities);
QQuickView *secondaryWindow(); void requestActivate() override;
public slots: public slots:
Q_INVOKABLE void syncGeometry() override; Q_INVOKABLE void syncGeometry() override;

@ -56,7 +56,7 @@ public:
SubConfigView(Latte::View *view, const QString &title); SubConfigView(Latte::View *view, const QString &title);
~SubConfigView() override; ~SubConfigView() override;
void requestActivate(); virtual void requestActivate();
QString validTitle() const; QString validTitle() const;

@ -36,7 +36,7 @@ ViewSettingsFactory::~ViewSettingsFactory()
} }
} }
ViewPart::PrimaryConfigView *ViewSettingsFactory::primary(Latte::View *view) ViewPart::PrimaryConfigView *ViewSettingsFactory::primaryConfigView(Latte::View *view)
{ {
if (!m_primaryConfigView) { if (!m_primaryConfigView) {
m_primaryConfigView = new ViewPart::PrimaryConfigView(view); m_primaryConfigView = new ViewPart::PrimaryConfigView(view);

@ -43,7 +43,7 @@ public:
ViewSettingsFactory(QObject *parent); ViewSettingsFactory(QObject *parent);
~ViewSettingsFactory() override; ~ViewSettingsFactory() override;
ViewPart::PrimaryConfigView *primary(Latte::View *view); ViewPart::PrimaryConfigView *primaryConfigView(Latte::View *view);
private: private:
QPointer<ViewPart::PrimaryConfigView> m_primaryConfigView; QPointer<ViewPart::PrimaryConfigView> m_primaryConfigView;

@ -201,9 +201,9 @@ View::~View()
//! windows. //! windows.
//! this->disconnect(); //! this->disconnect();
if (m_containmentConfigView && m_corona->inQuit()) { if (m_primaryConfigView && m_corona->inQuit()) {
//! delete only when application is quitting //! delete only when application is quitting
delete m_containmentConfigView; delete m_primaryConfigView;
} }
if (m_appletConfigView) { if (m_appletConfigView) {
@ -428,9 +428,7 @@ void View::removeView()
bool View::settingsWindowIsShown() bool View::settingsWindowIsShown()
{ {
auto cview = qobject_cast<ViewPart::PrimaryConfigView *>(m_containmentConfigView); return m_primaryConfigView && (m_primaryConfigView->parentView()==this) && m_primaryConfigView->isVisible();
return cview && (cview->parentView()==this) && cview->isVisible();
} }
void View::showSettingsWindow() void View::showSettingsWindow()
@ -444,7 +442,7 @@ void View::showSettingsWindow()
QQuickView *View::configView() QQuickView *View::configView()
{ {
return m_containmentConfigView.data(); return m_primaryConfigView.data();
} }
void View::showConfigurationInterface(Plasma::Applet *applet) void View::showConfigurationInterface(Plasma::Applet *applet)
@ -454,11 +452,11 @@ void View::showConfigurationInterface(Plasma::Applet *applet)
Plasma::Containment *c = qobject_cast<Plasma::Containment *>(applet); Plasma::Containment *c = qobject_cast<Plasma::Containment *>(applet);
if (m_containmentConfigView && c && c->isContainment() && c == this->containment()) { if (m_primaryConfigView && c && c->isContainment() && c == this->containment()) {
if (m_containmentConfigView->isVisible()) { if (m_primaryConfigView->isVisible()) {
m_containmentConfigView->hide(); m_primaryConfigView->hide();
} else { } else {
m_containmentConfigView->show(); m_primaryConfigView->show();
applyActivitiesToWindows(); applyActivitiesToWindows();
} }
@ -479,7 +477,7 @@ void View::showConfigurationInterface(Plasma::Applet *applet)
bool delayConfigView = false; bool delayConfigView = false;
if (c && containment() && c->isContainment() && c->id() == containment()->id()) { if (c && containment() && c->isContainment() && c->id() == containment()->id()) {
m_containmentConfigView = m_corona->viewSettingsFactory()->primary(this); m_primaryConfigView = m_corona->viewSettingsFactory()->primaryConfigView(this);
applyActivitiesToWindows(); applyActivitiesToWindows();
} else { } else {
m_appletConfigView = new PlasmaQuick::ConfigView(applet); m_appletConfigView = new PlasmaQuick::ConfigView(applet);
@ -794,15 +792,7 @@ void View::setIsPreferredForShortcuts(bool preferred)
bool View::inSettingsAdvancedMode() const bool View::inSettingsAdvancedMode() const
{ {
if (m_containmentConfigView) { return m_primaryConfigView && m_primaryConfigView->inAdvancedMode();
auto configView = qobject_cast<ViewPart::PrimaryConfigView *>(m_containmentConfigView);
if (configView) {
return configView->inAdvancedMode();
}
}
return false;
} }
bool View::isTouchingBottomViewAndIsBusy() const bool View::isTouchingBottomViewAndIsBusy() const
@ -1039,14 +1029,8 @@ void View::applyActivitiesToWindows()
m_windowsTracker->setWindowOnActivities(*this, runningActivities); m_windowsTracker->setWindowOnActivities(*this, runningActivities);
//! config windows //! config windows
if (m_containmentConfigView) { if (m_primaryConfigView) {
m_windowsTracker->setWindowOnActivities(*m_containmentConfigView, runningActivities); m_primaryConfigView->setOnActivities(runningActivities);
auto configView = qobject_cast<ViewPart::PrimaryConfigView *>(m_containmentConfigView);
if (configView && configView->secondaryWindow()) {
m_windowsTracker->setWindowOnActivities(*configView->secondaryWindow(), runningActivities);
}
} }
if (m_appletConfigView) { if (m_appletConfigView) {
@ -1210,12 +1194,8 @@ void View::moveToLayout(QString layoutName)
void View::hideWindowsForSlidingOut() void View::hideWindowsForSlidingOut()
{ {
if (m_containmentConfigView) { if (m_primaryConfigView) {
auto configDialog = qobject_cast<ViewPart::PrimaryConfigView *>(m_containmentConfigView); m_primaryConfigView->hideConfigWindow();
if (configDialog) {
configDialog->hideConfigWindow();
}
} }
} }
@ -1302,19 +1282,8 @@ bool View::event(QEvent *e)
case QEvent::Enter: case QEvent::Enter:
m_containsMouse = true; m_containsMouse = true;
if (m_containmentConfigView) { if (m_primaryConfigView) {
ViewPart::PrimaryConfigView *primaryConfigView = qobject_cast<ViewPart::PrimaryConfigView *>(m_containmentConfigView); m_primaryConfigView->requestActivate();
if (primaryConfigView) {
if (primaryConfigView->secondaryWindow()) {
ViewPart::SecondaryConfigView *secConfigView = qobject_cast<ViewPart::SecondaryConfigView *>(primaryConfigView->secondaryWindow());
if (secConfigView) {
secConfigView->requestActivate();
}
}
primaryConfigView->requestActivate();
}
} }
break; break;
@ -1399,7 +1368,7 @@ bool View::event(QEvent *e)
void View::releaseConfigView() void View::releaseConfigView()
{ {
m_containmentConfigView = nullptr; m_primaryConfigView = nullptr;
} }
//! release grab and restore mouse state //! release grab and restore mouse state

@ -411,7 +411,7 @@ private:
Layout::GenericLayout *m_layout{nullptr}; Layout::GenericLayout *m_layout{nullptr};
QPointer<PlasmaQuick::ConfigView> m_appletConfigView; QPointer<PlasmaQuick::ConfigView> m_appletConfigView;
QPointer<QQuickView> m_containmentConfigView; QPointer<ViewPart::PrimaryConfigView> m_primaryConfigView;
QPointer<ViewPart::ContextMenu> m_contextMenu; QPointer<ViewPart::ContextMenu> m_contextMenu;
QPointer<ViewPart::Effects> m_effects; QPointer<ViewPart::Effects> m_effects;

Loading…
Cancel
Save