diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 29049d47d..355a1a0a6 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -14,8 +14,9 @@ include(KDEPackageAppTemplates) set(lattedock-app_SRCS ../liblattedock/dock.cpp - abstractinterface.cpp + abstractwindowinterface.cpp xwindowinterface.cpp + windowinfowrap.cpp visibilitymanager.cpp nowdockconfigview.cpp nowdockview.cpp diff --git a/app/abstractinterface.cpp b/app/abstractinterface.cpp deleted file mode 100644 index 3153160b7..000000000 --- a/app/abstractinterface.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "abstractinterface.h" - -#include <QObject> -#include <QQuickWindow> - -namespace NowDock { - -AbstractInterface::AbstractInterface(QQuickWindow *dock) : - QObject(dock), - m_isDockWindowType(false), - m_dockNumber(0) -{ - m_dockWindow = dock; -} - -void AbstractInterface::setDockNumber(unsigned int no) -{ - if (m_dockNumber == no) { - return; - } - - m_dockNumber = no; - - emit dockNumberChanged(m_dockNumber); -} - -unsigned int AbstractInterface::dockNumber() const -{ - return m_dockNumber; -} - - -void AbstractInterface::setMaskArea(QRect area) -{ - if (m_maskArea == area) { - return; - } - - m_maskArea = area; -} - -} diff --git a/app/abstractinterface.h b/app/abstractinterface.h deleted file mode 100644 index df2b30d7b..000000000 --- a/app/abstractinterface.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef ABSTRACTINTERFACE_H -#define ABSTRACTINTERFACE_H - -#include <QObject> -#include <QQuickWindow> - -namespace NowDock { - -class AbstractInterface : public QObject { - Q_OBJECT - -public: - explicit AbstractInterface(QQuickWindow *dock); - - virtual bool activeIsDialog() const = 0; - virtual bool activeIsMaximized() const = 0; - virtual bool desktopIsActive() const = 0; - virtual bool dockIntersectsActiveWindow() const = 0; - virtual bool dockIsCovered(bool totally = false) const = 0; - virtual bool dockIsCovering() const = 0; - virtual bool dockIsOnTop() const = 0; - virtual bool dockInNormalState() const = 0; - virtual bool dockIsBelow() const = 0; - - //FIXME: This may not be needed, it would be better to investigate in KWindowSystem - //its behavior when setting the window type to NET::Dock - virtual void setDockDefaultFlags(bool dock = false) = 0; - virtual void setDockToAllDesktops() = 0; - virtual void showDockAsNormal() = 0; - virtual void showDockOnBottom() = 0; - virtual void showDockOnTop() = 0; - - void setDockNumber(unsigned int no); - unsigned int dockNumber() const; - - void setMaskArea(QRect area); - -Q_SIGNALS: - void activeWindowChanged(); - void dockNumberChanged(unsigned int no); - void windowInAttention(bool); - //FIXME: there is a chance that this signal is not needed at all - void windowChanged(); - -protected: - bool m_isDockWindowType; - int m_dockNumber; - - QRect m_maskArea; - - QQuickWindow *m_dockWindow; -}; - -} - -#endif diff --git a/app/abstractwindowinterface.cpp b/app/abstractwindowinterface.cpp new file mode 100644 index 000000000..edf970246 --- /dev/null +++ b/app/abstractwindowinterface.cpp @@ -0,0 +1,21 @@ +#include "abstractwindowinterface.h" + +#include <QObject> +#include <QQuickWindow> + +namespace Latte { + +AbstractWindowInterface::AbstractWindowInterface(QQuickWindow *const view, QObject *parent) + : QObject(parent), m_view(view) +{ + +} + +AbstractWindowInterface::~AbstractWindowInterface() +{ + +} + + + +} diff --git a/app/abstractwindowinterface.h b/app/abstractwindowinterface.h new file mode 100644 index 000000000..76f65b61e --- /dev/null +++ b/app/abstractwindowinterface.h @@ -0,0 +1,44 @@ +#ifndef ABSTRACTWINDOWINTERFACE_H +#define ABSTRACTWINDOWINTERFACE_H + +#include "windowinfowrap.h" +#include "../liblattedock/dock.h" + +#include <unordered_map> +#include <memory> +#include <list> + +#include <QObject> +#include <QQuickWindow> + +namespace Latte { + +class AbstractWindowInterface : public QObject { + Q_OBJECT + +public: + explicit AbstractWindowInterface(QQuickWindow *const view, QObject *parent = nullptr); + virtual ~AbstractWindowInterface(); + + virtual void setDockDefaultFlags() = 0; + + virtual WId activeWindow() const = 0; + virtual WindowInfoWrap requestInfo(WId wid) = 0; + virtual WindowInfoWrap requestInfoActive() = 0; + virtual const std::list<WId> &windows() = 0; + +signals: + void activeWindowChanged(WId wid); + void windowChanged(const WindowInfoWrap &winfo); + void windowAdded(WId wid); + void windowRemoved(WId wid); + void currentDesktopChanged(int desktop); + +protected: + QQuickWindow *const m_view; + std::list<WId> m_windows; +}; + +} + +#endif // ABSTRACTWINDOWINTERFACE_H