From a3ddc63519da9668df88eccfb1ff8c84c74cb439 Mon Sep 17 00:00:00 2001
From: audoban <audoban@openmailbox.org>
Date: Wed, 28 Dec 2016 02:45:21 -0500
Subject: [PATCH] abstractinterface was renamed to abstractwindowinterface and
 cleaned

AbstractWindowInterface will hide windows details.
---
 corona/CMakeLists.txt              |  3 +-
 corona/abstractinterface.cpp       | 42 ----------------------
 corona/abstractinterface.h         | 56 ------------------------------
 corona/abstractwindowinterface.cpp | 21 +++++++++++
 corona/abstractwindowinterface.h   | 44 +++++++++++++++++++++++
 5 files changed, 67 insertions(+), 99 deletions(-)
 delete mode 100644 corona/abstractinterface.cpp
 delete mode 100644 corona/abstractinterface.h
 create mode 100644 corona/abstractwindowinterface.cpp
 create mode 100644 corona/abstractwindowinterface.h

diff --git a/corona/CMakeLists.txt b/corona/CMakeLists.txt
index e77bfd939..f1d81ae1c 100644
--- a/corona/CMakeLists.txt
+++ b/corona/CMakeLists.txt
@@ -13,8 +13,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/corona/abstractinterface.cpp b/corona/abstractinterface.cpp
deleted file mode 100644
index 3153160b7..000000000
--- a/corona/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/corona/abstractinterface.h b/corona/abstractinterface.h
deleted file mode 100644
index df2b30d7b..000000000
--- a/corona/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/corona/abstractwindowinterface.cpp b/corona/abstractwindowinterface.cpp
new file mode 100644
index 000000000..edf970246
--- /dev/null
+++ b/corona/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/corona/abstractwindowinterface.h b/corona/abstractwindowinterface.h
new file mode 100644
index 000000000..76f65b61e
--- /dev/null
+++ b/corona/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