diff --git a/app/nowdockconfigview.cpp b/app/dockconfigview.cpp similarity index 81% rename from app/nowdockconfigview.cpp rename to app/dockconfigview.cpp index a65b6f7ba..e67c33b27 100644 --- a/app/nowdockconfigview.cpp +++ b/app/dockconfigview.cpp @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -#include "nowdockconfigview.h" -#include "nowdockview.h" -#include "nowdockcorona.h" +#include "dockconfigview.h" +#include "dockview.h" +#include "dockcorona.h" #include #include @@ -30,11 +30,11 @@ #include #include -#include +#include namespace Latte { -NowDockConfigView::NowDockConfigView(Plasma::Containment *containment, NowDockView *dockView, QWindow *parent) +DockConfigView::DockConfigView(Plasma::Containment *containment, DockView *dockView, QWindow *parent) : PlasmaQuick::ConfigView(containment, parent), m_containment(containment), m_dockView(dockView) { m_deleterTimer.setSingleShot(true); @@ -54,13 +54,14 @@ NowDockConfigView::NowDockConfigView(Plasma::Containment *containment, NowDockVi syncSlideEffect(); }); - connect(containment, &Plasma::Containment::immutabilityChanged, this, &NowDockConfigView::immutabilityChanged); + connect(containment, &Plasma::Containment::immutabilityChanged, this, &DockConfigView::immutabilityChanged); - NowDockCorona *corona = dynamic_cast(m_containment->corona()); + //! NOTE: This is not necesesary if focusOutEvent is implemented + /*NowDockCorona *corona = qobject_cast(m_containment->corona()); if (corona) { - connect(corona, &NowDockCorona::configurationShown, this, &NowDockConfigView::configurationShown); - } + connect(corona, &NowDockCorona::configurationShown, this, &DockConfigView::configurationShown); + }*/ /* connect(containment, &Plasma::Containment::immutabilityChanged , [&](Plasma::Types::ImmutabilityType type) { @@ -69,27 +70,27 @@ NowDockConfigView::NowDockConfigView(Plasma::Containment *containment, NowDockVi });*/ } -NowDockConfigView::~NowDockConfigView() +DockConfigView::~DockConfigView() { } -void NowDockConfigView::init() +void DockConfigView::init() { setDefaultAlphaBuffer(true); setColor(Qt::transparent); rootContext()->setContextProperty(QStringLiteral("dock"), m_dockView); engine()->rootContext()->setContextObject(new KLocalizedContext(this)); - auto source = QUrl::fromLocalFile(m_containment->corona()->kPackage().filePath("nowdockconfigurationui")); + auto source = QUrl::fromLocalFile(m_containment->corona()->kPackage().filePath("lattedockconfigurationui")); setSource(source); syncSlideEffect(); } -inline Qt::WindowFlags NowDockConfigView::wFlags() const +inline Qt::WindowFlags DockConfigView::wFlags() const { return (flags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint) & ~Qt::WindowDoesNotAcceptFocus; } -void NowDockConfigView::syncGeometry() +void DockConfigView::syncGeometry() { if (!m_containment || !rootObject()) return; @@ -137,7 +138,7 @@ void NowDockConfigView::syncGeometry() } } -void NowDockConfigView::syncSlideEffect() +void DockConfigView::syncSlideEffect() { if (!m_containment) return; @@ -169,7 +170,7 @@ void NowDockConfigView::syncSlideEffect() KWindowEffects::slideWindow(winId(), slideLocation, -1); } -void NowDockConfigView::showEvent(QShowEvent *ev) +void DockConfigView::showEvent(QShowEvent *ev) { KWindowSystem::setType(winId(), NET::Dock); setFlags(wFlags()); @@ -183,8 +184,6 @@ void NowDockConfigView::showEvent(QShowEvent *ev) if (m_containment) m_containment->setUserConfiguring(true); - // m_dockView->visibility()->forceShow(true); - // m_dockView->visibility()->showImmediately(); m_screenSyncTimer.start(); m_deleterTimer.stop(); @@ -192,17 +191,16 @@ void NowDockConfigView::showEvent(QShowEvent *ev) //trigger showing configuration window through corona //in order to hide all alternative configuration windows - NowDockCorona *corona = dynamic_cast(m_containment->corona()); + //! NOTE: This is not necesesary if focusOutEvent is implemented +// NowDockCorona *corona = qobject_cast(m_containment->corona()); - if (corona) { - emit corona->configurationShown(this); - } +// if (corona) { +// emit corona->configurationShown(this); +// } } -void NowDockConfigView::hideEvent(QHideEvent *ev) +void DockConfigView::hideEvent(QHideEvent *ev) { - // m_dockView->visibility()->forceShow(false); - // m_dockView->visibility()->restore(); m_deleterTimer.start(); if (m_containment) { @@ -213,27 +211,25 @@ void NowDockConfigView::hideEvent(QHideEvent *ev) ConfigView::hideEvent(ev); } -void NowDockConfigView::focusOutEvent(QFocusEvent *ev) +void DockConfigView::focusOutEvent(QFocusEvent *ev) { - //FIXME: I can understand why we need to hide on focus out Q_UNUSED(ev); const auto *focusWindow = qGuiApp->focusWindow(); if (focusWindow && focusWindow->flags().testFlag(Qt::Popup)) return; - - // hide(); + hide(); } -void NowDockConfigView::configurationShown(PlasmaQuick::ConfigView *configView) +void DockConfigView::configurationShown(PlasmaQuick::ConfigView *configView) { if ((configView != this) && isVisible()) { hide(); } } -void NowDockConfigView::immutabilityChanged(Plasma::Types::ImmutabilityType type) +void DockConfigView::immutabilityChanged(Plasma::Types::ImmutabilityType type) { if (type != Plasma::Types::Mutable && isVisible()) { hide(); diff --git a/app/nowdockconfigview.h.autosave b/app/dockconfigview.h similarity index 90% rename from app/nowdockconfigview.h.autosave rename to app/dockconfigview.h index 04ceed6c6..5351919f3 100644 --- a/app/nowdockconfigview.h.autosave +++ b/app/dockconfigview.h @@ -36,13 +36,13 @@ class Types; namespace Latte { -class NowDockView; +class DockView; class DockConfigView : public PlasmaQuick::ConfigView { Q_OBJECT public: - DockConfigView(Plasma::Containment *containment, NowDockView *dockView, QWindow *parent = nullptr); + DockConfigView(Plasma::Containment *containment, DockView *dockView, QWindow *parent = nullptr); ~DockConfigView() override; void init() override; @@ -56,13 +56,13 @@ protected: void syncGeometry(); void syncSlideEffect(); -private Q_SLOTS: +private slots: void immutabilityChanged(Plasma::Types::ImmutabilityType type); void configurationShown(PlasmaQuick::ConfigView *configView); private: Plasma::Containment *m_containment{nullptr}; - QPointer m_dockView; + QPointer m_dockView; QTimer m_deleterTimer; QTimer m_screenSyncTimer; diff --git a/app/nowdockcorona.cpp b/app/dockcorona.cpp similarity index 84% rename from app/nowdockcorona.cpp rename to app/dockcorona.cpp index 89a88c7ac..689521b1f 100644 --- a/app/nowdockcorona.cpp +++ b/app/dockcorona.cpp @@ -19,31 +19,29 @@ * along with this program. If not, see */ -#include "nowdockcorona.h" -#include "nowdockview.h" -//#include "visibilitymanager.h" -#include "packageplugins/shell/nowdockpackage.h" +#include "dockcorona.h" +#include "dockview.h" +#include "packageplugins/shell/dockpackage.h" #include #include #include -#include -#include - #include #include #include +#include +#include #include #include #include namespace Latte { -NowDockCorona::NowDockCorona(QObject *parent) +DockCorona::DockCorona(QObject *parent) : Plasma::Corona(parent) { - KPackage::Package package(new NowDockPackage(this)); + KPackage::Package package(new DockPackage(this)); if (!package.isValid()) { qWarning() << staticMetaObject.className() @@ -57,7 +55,7 @@ NowDockCorona::NowDockCorona(QObject *parent) setKPackage(package); qmlRegisterTypes(); - connect(this, &Corona::containmentAdded, this, &NowDockCorona::addDock); + connect(this, &Corona::containmentAdded, this, &DockCorona::addDock); loadLayout(); @@ -75,7 +73,7 @@ NowDockCorona::NowDockCorona(QObject *parent) addDock->setShortcutContext(Qt::ApplicationShortcut);*/ } -NowDockCorona::~NowDockCorona() +DockCorona::~DockCorona() { for (auto c : m_containments) c->deleteLater(); @@ -83,12 +81,12 @@ NowDockCorona::~NowDockCorona() qDebug() << "deleted" << this; } -int NowDockCorona::numScreens() const +int DockCorona::numScreens() const { return qGuiApp->screens().count(); } -QRect NowDockCorona::screenGeometry(int id) const +QRect DockCorona::screenGeometry(int id) const { const auto screens = qGuiApp->screens(); @@ -99,7 +97,7 @@ QRect NowDockCorona::screenGeometry(int id) const return qGuiApp->primaryScreen()->geometry(); } -QRegion NowDockCorona::availableScreenRegion(int id) const +QRegion DockCorona::availableScreenRegion(int id) const { const auto screens = qGuiApp->screens(); @@ -110,7 +108,7 @@ QRegion NowDockCorona::availableScreenRegion(int id) const return qGuiApp->primaryScreen()->availableGeometry(); } -QRect NowDockCorona::availableScreenRect(int id) const +QRect DockCorona::availableScreenRect(int id) const { const auto screens = qGuiApp->screens(); @@ -121,7 +119,7 @@ QRect NowDockCorona::availableScreenRect(int id) const return qGuiApp->primaryScreen()->availableGeometry(); } -int NowDockCorona::primaryScreenId() const +int DockCorona::primaryScreenId() const { const auto screens = qGuiApp->screens(); @@ -139,7 +137,7 @@ int NowDockCorona::primaryScreenId() const return id; } -QList NowDockCorona::freeEdges(int screen) const +QList DockCorona::freeEdges(int screen) const { using Plasma::Types; QList edges{Types::BottomEdge, Types::LeftEdge, @@ -148,7 +146,7 @@ QList NowDockCorona::freeEdges(int screen) const //when screen=-1 is passed then the primaryScreenid is used int fixedScreen = (screen == -1) ? primaryScreenId() : screen; - for (const NowDockView *cont : m_containments) { + for (const DockView *cont : m_containments) { if (cont && cont->containment()->screen() == fixedScreen) edges.removeOne(cont->location()); } @@ -156,7 +154,7 @@ QList NowDockCorona::freeEdges(int screen) const return edges; } -int NowDockCorona::screenForContainment(const Plasma::Containment *containment) const +int DockCorona::screenForContainment(const Plasma::Containment *containment) const { for (auto *view : m_containments) { if (view && view->containment() && view->containment()->id() == containment->id()) @@ -167,7 +165,7 @@ int NowDockCorona::screenForContainment(const Plasma::Containment *containment) return -1; } -void NowDockCorona::addDock(Plasma::Containment *containment) +void DockCorona::addDock(Plasma::Containment *containment) { if (!containment || !containment->kPackage().isValid()) { qWarning() << "the requested containment plugin can not be located or loaded"; @@ -182,24 +180,23 @@ void NowDockCorona::addDock(Plasma::Containment *containment) return; } - foreach (NowDockView *dock, m_containments) { + foreach (DockView *dock, m_containments) { if (dock->containment() == containment) { return; } } - qWarning() << "Adding dock for container..."; + qDebug() << "Adding dock for container..."; - auto dockView = new NowDockView(this); + auto dockView = new DockView(this); dockView->init(); dockView->setContainment(containment); dockView->show(); - //dockView->showNormal(); m_containments.push_back(dockView); } -void NowDockCorona::loadDefaultLayout() +void DockCorona::loadDefaultLayout() { qDebug() << "loading default layout"; @@ -241,9 +238,9 @@ void NowDockCorona::loadDefaultLayout() defaultContainment->createApplet(QStringLiteral("org.kde.plasma.analogclock")); } -inline void NowDockCorona::qmlRegisterTypes() const +inline void DockCorona::qmlRegisterTypes() const { - constexpr auto uri = "org.kde.nowdock.shell"; + constexpr auto uri = "org.kde.latte.shell"; constexpr auto vMajor = 0; constexpr auto vMinor = 2; diff --git a/app/dockcorona.h b/app/dockcorona.h new file mode 100644 index 000000000..7a21a02d6 --- /dev/null +++ b/app/dockcorona.h @@ -0,0 +1,49 @@ +#ifndef NOWDOCKCORONA_H +#define NOWDOCKCORONA_H + +#include "dockview.h" + +#include + +namespace Plasma { +class Corona; +class Containment; +class Types; +} + +namespace Latte { + +class DockCorona : public Plasma::Corona { + Q_OBJECT + +public: + DockCorona(QObject *parent = nullptr); + virtual ~DockCorona(); + + int numScreens() const override; + QRect screenGeometry(int id) const override; + QRegion availableScreenRegion(int id) const override; + QRect availableScreenRect(int id) const override; + + QList freeEdges(int screen) const; + + int screenForContainment(const Plasma::Containment *containment) const override; + + void addDock(Plasma::Containment *containment); + +public slots: + void loadDefaultLayout() override; + +signals: + void configurationShown(PlasmaQuick::ConfigView *configView); + +private: + void qmlRegisterTypes() const; + int primaryScreenId() const; + + std::vector m_containments; +}; + +} + +#endif diff --git a/app/nowdockview.cpp.autosave b/app/dockview.cpp similarity index 81% rename from app/nowdockview.cpp.autosave rename to app/dockview.cpp index 5383bd86c..8d4fa2b9e 100644 --- a/app/nowdockview.cpp.autosave +++ b/app/dockview.cpp @@ -19,9 +19,11 @@ * along with this program. If not, see */ -#include "nowdockview.h" -#include "nowdockconfigview.h" +#include "dockview.h" +#include "dockcorona.h" +#include "dockconfigview.h" #include "visibilitymanager.h" +#include "../liblattedock/windowsystem.h" #include #include @@ -29,38 +31,23 @@ #include #include #include -//#include -#include -#include #include #include #include -#include "nowdockcorona.h" - namespace Latte { -NowDockView::NowDockView(Plasma::Corona *corona, QScreen *targetScreen) +DockView::DockView(Plasma::Corona *corona, QScreen *targetScreen) : PlasmaQuick::ContainmentView(corona), m_corona(corona) { - KWindowSystem::setType(winId(), NET::Dock); - KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager); - setVisible(false); setTitle(corona->kPackage().metadata().name()); setIcon(QIcon::fromTheme(corona->kPackage().metadata().iconName())); setResizeMode(QuickViewSharedEngine::SizeRootObjectToView); setClearBeforeRendering(true); - /* setFlags(Qt::FramelessWindowHint - | Qt::WindowStaysOnTopHint - | Qt::NoDropShadowWindowHint - | Qt::WindowDoesNotAcceptFocus);*/ - - // NETWinInfo winfo(QX11Info::connection(), winId(), winId(), 0, 0); - // winfo.setAllowedActions(NET::ActionChangeDesktop); if (targetScreen) adaptToScreen(targetScreen); @@ -73,7 +60,7 @@ NowDockView::NowDockView(Plasma::Corona *corona, QScreen *targetScreen) m_lockGeometry.setSingleShot(true); m_lockGeometry.setInterval(700); - connect(this, &NowDockView::containmentChanged + connect(this, &DockView::containmentChanged , this, [&]() { if (!containment()) return; @@ -85,14 +72,14 @@ NowDockView::NowDockView(Plasma::Corona *corona, QScreen *targetScreen) }, Qt::DirectConnection); } -NowDockView::~NowDockView() +DockView::~DockView() { } -void NowDockView::init() +void DockView::init() { - connect(this, &NowDockView::screenChanged - , this, &NowDockView::adaptToScreen + connect(this, &DockView::screenChanged + , this, &DockView::adaptToScreen , Qt::QueuedConnection); @@ -100,18 +87,18 @@ void NowDockView::init() initWindow(); }); - connect(this, &NowDockView::locationChanged, [&]() { + connect(this, &DockView::locationChanged, [&]() { //! avoid glitches m_timerGeometry.start(); }); - connect(KWindowSystem::self(), &KWindowSystem::compositingChanged + connect(&WindowSystem::self(), &WindowSystem::compositingChanged , this, [&]() { emit compositingChanged(); } , Qt::QueuedConnection); - connect(this, &NowDockView::screenGeometryChanged - , this, &NowDockView::updateDockPosition + connect(this, &DockView::screenGeometryChanged + , this, &DockView::updateDockPosition , Qt::QueuedConnection); connect(this, SIGNAL(widthChanged(int)), this, SIGNAL(widthChanged())); @@ -120,9 +107,9 @@ void NowDockView::init() rootContext()->setContextProperty(QStringLiteral("dock"), this); engine()->rootContext()->setContextObject(new KLocalizedContext(this)); + // FIXME: We need find a better solution // engine()->rootContext()->setContextProperty(QStringLiteral("dock"), this); - setSource(corona()->kPackage().filePath("nowdockui")); - + setSource(corona()->kPackage().filePath("lattedockui")); connect(this, SIGNAL(xChanged(int)), this, SLOT(updateDockPositionSlot())); connect(this, SIGNAL(yChanged(int)), this, SLOT(updateDockPositionSlot())); @@ -133,17 +120,17 @@ void NowDockView::init() qDebug() << "SOURCE:" << source(); - initialize(); + //initialize(); } -void NowDockView::initialize() +void DockView::initialize() { m_secondInitPass = true; m_timerGeometry.start(); } -void NowDockView::initWindow() +void DockView::initWindow() { // m_visibility->updateVisibilityFlags(); @@ -160,7 +147,7 @@ void NowDockView::initWindow() } } -void NowDockView::updateDockPositionSlot() +void DockView::updateDockPositionSlot() { if (!m_lockGeometry.isActive()) { m_lockGeometry.start(); @@ -168,7 +155,7 @@ void NowDockView::updateDockPositionSlot() } //!BEGIN SLOTS -void NowDockView::adaptToScreen(QScreen *screen) +void DockView::adaptToScreen(QScreen *screen) { setScreen(screen); @@ -177,27 +164,24 @@ void NowDockView::adaptToScreen(QScreen *screen) else m_maxLength = screen->size().width(); -// KWindowSystem::setOnAllDesktops(winId(), true); -// KWindowSystem::setType(winId(), NET::Dock); - if (containment()) containment()->reactToScreenChange(); m_timerGeometry.start(); } -void NowDockView::addNewDock() +void DockView::addNewDock() { - NowDockCorona *corona = dynamic_cast(m_corona); + DockCorona *corona = dynamic_cast(m_corona); if (corona) { corona->loadDefaultLayout(); } } -void NowDockView::removeDock() +void DockView::removeDock() { - NowDockCorona *corona = dynamic_cast(m_corona); + DockCorona *corona = dynamic_cast(m_corona); if (corona->containments().count() > 1) { QAction *removeAct = containment()->actions()->action(QStringLiteral("remove")); @@ -208,24 +192,24 @@ void NowDockView::removeDock() } } -QQmlListProperty NowDockView::screens() +QQmlListProperty DockView::screens() { return QQmlListProperty(this, nullptr, &countScreens, &atScreens); } -int NowDockView::countScreens(QQmlListProperty *property) +int DockView::countScreens(QQmlListProperty *property) { Q_UNUSED(property) return qGuiApp->screens().count(); } -QScreen *NowDockView::atScreens(QQmlListProperty *property, int index) +QScreen *DockView::atScreens(QQmlListProperty *property, int index) { Q_UNUSED(property) return qGuiApp->screens().at(index); } -void NowDockView::showConfigurationInterface(Plasma::Applet *applet) +void DockView::showConfigurationInterface(Plasma::Applet *applet) { if (!applet || !applet->containment()) return; @@ -263,7 +247,7 @@ void NowDockView::showConfigurationInterface(Plasma::Applet *applet) m_configView->requestActivate(); } -void NowDockView::resizeWindow() +void DockView::resizeWindow() { setVisible(true); @@ -286,7 +270,7 @@ void NowDockView::resizeWindow() } } -inline void NowDockView::updateDockPosition() +inline void DockView::updateDockPosition() { if (!containment()) return; @@ -337,7 +321,7 @@ inline void NowDockView::updateDockPosition() qDebug() << "dock position:" << position; } -int NowDockView::currentThickness() const +int DockView::currentThickness() const { if (containment()->formFactor() == Plasma::Types::Vertical) { return m_maskArea.isNull() ? width() : m_maskArea.width(); @@ -346,9 +330,9 @@ int NowDockView::currentThickness() const } } -bool NowDockView::compositing() const +bool DockView::compositing() const { - return KWindowSystem::compositingActive(); + return WindowSystem::self().compositingActive(); } /*Candil::VisibilityManager *NowDockView::visibility() @@ -356,12 +340,12 @@ bool NowDockView::compositing() const return m_visibility.data(); }*/ -int NowDockView::maxThickness() const +int DockView::maxThickness() const { return m_maxThickness; } -void NowDockView::setMaxThickness(int thickness) +void DockView::setMaxThickness(int thickness) { if (m_maxThickness == thickness) return; @@ -371,12 +355,12 @@ void NowDockView::setMaxThickness(int thickness) emit maxThicknessChanged(); } -int NowDockView::length() const +int DockView::length() const { return m_length; } -void NowDockView::setLength(int length) +void DockView::setLength(int length) { if (m_length == length) return; @@ -390,12 +374,12 @@ void NowDockView::setLength(int length) emit lengthChanged(); } -int NowDockView::maxLength() const +int DockView::maxLength() const { return m_maxLength; } -void NowDockView::setMaxLength(int maxLength) +void DockView::setMaxLength(int maxLength) { if (m_maxLength == maxLength) return; @@ -405,12 +389,12 @@ void NowDockView::setMaxLength(int maxLength) } -QRect NowDockView::maskArea() const +QRect DockView::maskArea() const { return m_maskArea; } -void NowDockView::setMaskArea(QRect area) +void DockView::setMaskArea(QRect area) { if (m_maskArea == area) { return; @@ -438,12 +422,12 @@ void NowDockView::setAlignment(Dock::Alignment align) emit alignmentChanged(); } */ -int NowDockView::offset() const +int DockView::offset() const { return m_offset; } -void NowDockView::setOffset(int offset) +void DockView::setOffset(int offset) { if (m_offset == offset) return; @@ -453,7 +437,7 @@ void NowDockView::setOffset(int offset) emit offsetChanged(); } -void NowDockView::updateOffset() +void DockView::updateOffset() { if (!containment()) return; @@ -468,12 +452,12 @@ void NowDockView::updateOffset() emit offsetChanged(); } -VisibilityManager *NowDockView::visibility() +VisibilityManager *DockView::visibility() { return m_visibility; } -bool NowDockView::event(QEvent *e) +bool DockView::event(QEvent *e) { emit eventTriggered(e); @@ -489,7 +473,7 @@ bool NowDockView::event(QEvent *e) ContainmentView::showEvent(ev); }*/ -bool NowDockView::containmentContainsPosition(const QPointF &point) const +bool DockView::containmentContainsPosition(const QPointF &point) const { QQuickItem *containmentItem = containment()->property("_plasma_graphicObject").value(); @@ -500,7 +484,7 @@ bool NowDockView::containmentContainsPosition(const QPointF &point) const return QRectF(containmentItem->mapToScene(QPoint(0, 0)), QSizeF(containmentItem->width(), containmentItem->height())).contains(point); } -QPointF NowDockView::positionAdjustedForContainment(const QPointF &point) const +QPointF DockView::positionAdjustedForContainment(const QPointF &point) const { QQuickItem *containmentItem = containment()->property("_plasma_graphicObject").value(); @@ -514,7 +498,7 @@ QPointF NowDockView::positionAdjustedForContainment(const QPointF &point) const qBound(containmentRect.top() + 2, point.y(), containmentRect.bottom() - 2)); } -QList NowDockView::freeEdges() const +QList DockView::freeEdges() const { QList edges = m_corona->freeEdges(containment()->screen()); @@ -527,7 +511,7 @@ QList NowDockView::freeEdges() const return edgesInt; } -void NowDockView::saveConfig() +void DockView::saveConfig() { if (!containment()) return; @@ -545,7 +529,7 @@ void NowDockView::saveConfig() // writeEntry("alignment", static_cast(m_alignment)); } -void NowDockView::restoreConfig() +void DockView::restoreConfig() { if (!containment()) return; diff --git a/app/nowdockview.h b/app/dockview.h similarity index 96% rename from app/nowdockview.h rename to app/dockview.h index a5c6010b2..92a67de00 100644 --- a/app/nowdockview.h +++ b/app/dockview.h @@ -22,8 +22,6 @@ #ifndef NOWDOCKVIEW_H #define NOWDOCKVIEW_H -#include - #include "plasmaquick/configview.h" #include "plasmaquick/containmentview.h" #include "visibilitymanager.h" @@ -49,7 +47,7 @@ class VisibilityManager; namespace Latte { -class NowDockView : public PlasmaQuick::ContainmentView { +class DockView : public PlasmaQuick::ContainmentView { Q_OBJECT Q_PROPERTY(bool compositing READ compositing NOTIFY compositingChanged) @@ -65,8 +63,8 @@ class NowDockView : public PlasmaQuick::ContainmentView { Q_PROPERTY(QQmlListProperty screens READ screens) public: - NowDockView(Plasma::Corona *corona, QScreen *targetScreen = nullptr); - virtual ~NowDockView(); + DockView(Plasma::Corona *corona, QScreen *targetScreen = nullptr); + virtual ~DockView(); void init(); @@ -139,7 +137,7 @@ signals: void visibilityChanged(); void widthChanged(); -public Q_SLOTS: +public slots: void updateDockPositionSlot(); void updateAbsDockGeometry(); diff --git a/app/main.cpp b/app/main.cpp index 3c8dcb02e..9f069c06e 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -1,32 +1,11 @@ -/* - * Copyright 2014 Bhushan Shah - * Copyright 2014 Marco Martin - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License or (at your option) version 3 or any later version - * accepted by the membership of KDE e.V. (or its successor approved - * by the membership of KDE e.V.), which shall act as a proxy - * defined in Section 14 of version 3 of the license. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see - */ - -#include "nowdockcorona.h" +#include "dockcorona.h" #include #include #include -#include -#include +#include +#include #include #include @@ -62,7 +41,7 @@ int main(int argc, char **argv) //! set pattern for debug messages //! [%{type}] [%{function}:%{line}] - %{message} [%{backtrace}] qSetMessagePattern(QStringLiteral( - CIGREEN "[%{type} " CGREEN "%{time h:mm:ss.zzzz}" CIGREEN "]" CNORMAL + CIGREEN "[%{type} " CGREEN "%{time h:mm:ss.zz}" CIGREEN "]" CNORMAL #ifndef QT_NO_DEBUG CIRED " [" CCYAN "%{function}" CIRED ":" CCYAN "%{line}" CIRED "]" #endif @@ -72,7 +51,7 @@ int main(int argc, char **argv) "%{if-critical}\n%{backtrace depth=" DEPTH " separator=\"\n\"}%{endif}" CNORMAL)); // qputenv("QT_QUICK_CONTROLS_1_STYLE", "Desktop"); - Latte::NowDockCorona corona; + Latte::DockCorona corona; return app.exec(); } diff --git a/app/nowdockcorona.h b/app/nowdockcorona.h deleted file mode 100644 index f9ad89c2c..000000000 --- a/app/nowdockcorona.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2014 Bhushan Shah - * Copyright 2014 Marco Martin - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License or (at your option) version 3 or any later version - * accepted by the membership of KDE e.V. (or its successor approved - * by the membership of KDE e.V.), which shall act as a proxy - * defined in Section 14 of version 3 of the license. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see - */ - -#ifndef NOWDOCKCORONA_H -#define NOWDOCKCORONA_H - -#include - -#include "nowdockview.h" - - -namespace Plasma { -class Corona; -class Containment; -class Types; -} - -namespace Latte { - -class NowDockCorona : public Plasma::Corona { - Q_OBJECT - -public: - NowDockCorona(QObject *parent = nullptr); - ~NowDockCorona() override; - - int numScreens() const override; - QRect screenGeometry(int id) const override; - QRegion availableScreenRegion(int id) const override; - QRect availableScreenRect(int id) const override; - - QList freeEdges(int screen) const; - - int screenForContainment(const Plasma::Containment *containment) const override; - - void addDock(Plasma::Containment *containment); - -public slots: - void loadDefaultLayout() override; - -signals: - void configurationShown(PlasmaQuick::ConfigView *configView); - -private: - void qmlRegisterTypes() const; - int primaryScreenId() const; - - std::vector m_containments; -}; - -} - -#endif diff --git a/liblattedock/dock.h b/liblattedock/dock.h index f331ee044..46fbc4549 100644 --- a/liblattedock/dock.h +++ b/liblattedock/dock.h @@ -33,19 +33,6 @@ public: }; Q_ENUM(Alignment) - - enum VisibilityState { - /*! - * @brief the dock is visible - */ - Visible = 1, - - /*! - * @brief the dock is hidden - */ - Hidden = 0 - }; - Q_ENUM(VisibilityState) }; }//end of namespace diff --git a/liblattedock/windowsystem.cpp b/liblattedock/windowsystem.cpp index 06e6065cf..445ccf77f 100644 --- a/liblattedock/windowsystem.cpp +++ b/liblattedock/windowsystem.cpp @@ -7,7 +7,19 @@ namespace Latte { WindowSystem::WindowSystem(QObject *parent) : QObject(parent) { - connect(KWindowSystem::self(), SIGNAL(compositingChanged(bool)), this, SLOT(compositingChanged(bool))); + if (KWindowSystem::isPlatformWayland()) { + //! TODO: Wayland compositing + } else { + compositingChangedProxy(KWindowSystem::self()->compositingActive()); + connect(KWindowSystem::self(), SIGNAL(compositingChanged(bool)) + , this, SLOT(compositingChangedProxy(bool))); + } +} + +WindowSystem &WindowSystem::self() +{ + static WindowSystem wm; + return wm; } WindowSystem::~WindowSystem() @@ -16,11 +28,12 @@ WindowSystem::~WindowSystem() bool WindowSystem::compositingActive() const { - return KWindowSystem::compositingActive(); + return m_enabled; } -void WindowSystem::compositingChanged(bool state) +void WindowSystem::compositingChangedProxy(bool enabled) { + m_enabled = enabled; emit compositingChanged(); } diff --git a/liblattedock/windowsystem.h b/liblattedock/windowsystem.h index fb1c7bba3..4037eb783 100644 --- a/liblattedock/windowsystem.h +++ b/liblattedock/windowsystem.h @@ -11,16 +11,21 @@ class WindowSystem : public QObject { Q_PROPERTY(bool compositingActive READ compositingActive NOTIFY compositingChanged) public: - explicit WindowSystem(QObject *parent = Q_NULLPTR); + explicit WindowSystem(QObject *parent = nullptr); + + static WindowSystem &self(); ~WindowSystem(); bool compositingActive() const; -Q_SIGNALS: +signals: void compositingChanged(); -private Q_SLOTS: - void compositingChanged(bool state); +private slots: + void compositingChangedProxy(bool enabled); + +private: + bool m_enabled{false}; }; }//LatteDock namespace