aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2017-12-20 00:28:17 -0500
committerKen Moore <ken@ixsystems.com>2017-12-20 00:28:17 -0500
commit70a95acc3d3cae25fd99a027d932960cce819299 (patch)
tree7c18ce239569a182f2bd1b3d78431a20098961e4
parentMake sure the QML filenames correspond to the C++ objects (PanelObject.h -> P... (diff)
downloadlumina-70a95acc3d3cae25fd99a027d932960cce819299.tar.gz
lumina-70a95acc3d3cae25fd99a027d932960cce819299.tar.bz2
lumina-70a95acc3d3cae25fd99a027d932960cce819299.zip
Setup the RootDesktopObject to start providing NativeWindow objects to the QML interface.
-rw-r--r--src-qt5/core/lumina-desktop-unified/global-includes.h7
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp21
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h10
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml2
4 files changed, 34 insertions, 6 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h
index 40987ad4..fbc3c4f7 100644
--- a/src-qt5/core/lumina-desktop-unified/global-includes.h
+++ b/src-qt5/core/lumina-desktop-unified/global-includes.h
@@ -59,10 +59,6 @@
#include <QQmlEngine>
#include <QQuickImageProvider>
-// C++ Backend classes for QML interface
-#include <RootDesktopObject.h>
-#include <ScreenObject.h>
-
// libLumina includes
#include <LuminaX11.h>
#include <LuminaXDG.h>
@@ -80,6 +76,9 @@
#include <LIconCache.h>
#include <LFileInfo.h>
+// C++ Backend classes for QML interface
+#include <RootDesktopObject.h>
+#include <ScreenObject.h>
//Setup any global defines (no classes or global objects: use "global-objects.h" for that)
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp
index c1652ba6..5750ac2d 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp
@@ -65,11 +65,32 @@ PanelObject* RootDesktopObject::panel(QString id){
return 0;
}
+QStringList RootDesktopObject::windows(){
+ //qDebug() << "Request Panels:" << panel_objects.length();
+ QStringList names;
+ for(int i=0; i<window_objects.length(); i++){ names << QString::number(window_objects[i]->id()); }
+ return names;
+}
+
+NativeWindow* RootDesktopObject::window(QString id){
+ //qDebug() << "Got Panel Request:" << id;
+ WId chk = id.toInt(); //numerical ID's in this case
+ for(int i=0; i<window_objects.length(); i++){
+ if(window_objects[i]->id()==chk){ return window_objects[i]; }
+ }
+ return 0;
+}
+
void RootDesktopObject::setPanels(QList<PanelObject*> list){
panel_objects = list;
emit panelsChanged();
}
+void RootDesktopObject::setWindows(QList<NativeWindow*> list){
+ window_objects = list;
+ emit windowsChanged();
+}
+
void RootDesktopObject::logout(){
emit startLogout();
}
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h
index 93beb6e4..838b5f7d 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h
@@ -10,6 +10,7 @@
#define _LUMINA_DESKTOP_QML_BACKEND_ROOT_DESKTOP_OBJECT_H
#include <QObject>
#include <QList>
+#include <global-includes.h>
#include "ScreenObject.h"
@@ -18,6 +19,7 @@ class RootDesktopObject : public QObject{
//Define all the QML Properties here (interface between QML and the C++ methods below)
Q_PROPERTY( QStringList screens READ screens NOTIFY screensChanged)
Q_PROPERTY( QStringList panels READ panels NOTIFY panelsChanged)
+ Q_PROPERTY( QStringList windows READ windows NOTIFY windowsChanged);
public:
//main contructor/destructor
@@ -30,12 +32,15 @@ public:
static RootDesktopObject* instance();
//QML Read Functions
- QStringList screens();
+ Q_INVOKABLE QStringList screens();
Q_INVOKABLE ScreenObject* screen(QString id);
Q_INVOKABLE QStringList panels();
Q_INVOKABLE PanelObject* panel(QString id);
+ Q_INVOKABLE QStringList windows();
+ Q_INVOKABLE NativeWindow* window(QString id);
void setPanels(QList<PanelObject*> list);
+ void setWindows(QList<NativeWindow*> list);
//QML Access Functions
Q_INVOKABLE void logout();
@@ -45,6 +50,7 @@ public:
private:
QList<ScreenObject*> s_objects;
QList<PanelObject*> panel_objects;
+ QList<NativeWindow*> window_objects;
public slots:
void updateScreens(); //rescan/update screen objects
@@ -55,6 +61,8 @@ private slots:
signals:
void screensChanged();
void panelsChanged();
+ void windowsChanged();
+
void startLogout();
void mouseMoved();
void lockScreen();
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml
index beecb848..c564ee42 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml
@@ -46,7 +46,7 @@ Rectangle {
//Create the context menu itself
QML.ContextMenu { id: contextMenu }
- //Setup the wallpapers
+ //Setup the screens/wallpapers
Repeater{
model: RootObject.screens
QML.Screen{
bgstack15