aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets')
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Panel.cpp3
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.cpp27
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.h7
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/ClockPlugin.h25
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/plugins.pri6
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri5
6 files changed, 68 insertions, 5 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Panel.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Panel.cpp
index 3f75e8c8..5b2a8a08 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Panel.cpp
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Panel.cpp
@@ -35,8 +35,7 @@ Plugin* Panel::findPlugin(QString id){
}
Plugin* Panel::createPlugin(QString id){
-
- return 0;
+ return Plugin::createPlugin(this, id, true);
}
// PRIVATE SLOTS
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.cpp
new file mode 100644
index 00000000..7c60b407
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.cpp
@@ -0,0 +1,27 @@
+//===========================================
+// Lumina-desktop source code
+// Copyright (c) 2018, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "Plugin.h"
+
+//Add includes for individual plugin files here
+#include <ClockPlugin.h>
+
+QStringList Plugin::built_in_plugins(){
+ QStringList list;
+ list << "clock";
+ return list;
+}
+
+Plugin* Plugin::createPlugin(QWidget *parent, QString id, bool panelplug){
+ Plugin *plug = 0;
+ //QString id_extra;
+ //if(id.contains("--")){ id_extra = id.section("--",1,-1); id = id.section("--",0,0); }
+ if(id=="clock"){
+ plug = new ClockPlugin(parent, id, panelplug);
+ }
+
+ return plug;
+}
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.h
index 4a81d79b..1bc0476f 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.h
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/Plugin.h
@@ -25,6 +25,10 @@ public:
bool isPanelPlugin;
bool isVertical; //only used for panel plugins
+ //These static functions are defined in "Plugin.cpp"
+ static QStringList built_in_plugins();
+ static Plugin* createPlugin(QWidget *parent, QString id, bool panelplug = false);
+
Plugin(QWidget *parent, QString id, bool panelplug = false) : QWidget(parent){
isPanelPlugin = panelplug;
isVertical = false;
@@ -51,10 +55,9 @@ private slots:
//Special subclass for a button-based plugin
class PluginButton : public Plugin{
Q_OBJECT
-private:
- QToolButton *button;
public:
+ QToolButton *button;
PluginButton(QWidget *parent, QString id, bool panelplug=false) : Plugin(parent, id, panelplug) {
button = new QToolButton(this);
this->layout()->addWidget(button);
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/ClockPlugin.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/ClockPlugin.h
new file mode 100644
index 00000000..b5510ad7
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/ClockPlugin.h
@@ -0,0 +1,25 @@
+//===========================================
+// Lumina-desktop source code
+// Copyright (c) 2018, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include <Plugin.h>
+#include <RootDesktopObject.h>
+
+class ClockPlugin : public PluginButton{
+ Q_OBJECT
+private:
+
+public:
+ ClockPlugin(QWidget *parent, QString id, bool panelplug) : PluginButton(parent, id, panelplug){
+ connect(RootDesktopObject::instance(), SIGNAL(currentTimeChanged()), this, SLOT(updateTime()) );
+ }
+ ~ClockPlugin(){ }
+
+private slots:
+ void updateTime(){
+ this->button->setText(RootDesktopObject::instance()->currentTime() );
+ }
+
+};
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/plugins.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/plugins.pri
new file mode 100644
index 00000000..6031a0d4
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/plugins/plugins.pri
@@ -0,0 +1,6 @@
+#update the includepath so we can just #include as needed without paths
+INCLUDEPATH *= $${PWD}
+
+#SOURCES *=
+
+HEADERS *= $${PWD}/ClockPlugin.h
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri
index 5ed94f1b..8465b5f9 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri
@@ -4,7 +4,8 @@ INCLUDEPATH *= $${PWD}
SOURCES *= $${PWD}/RootDesktop.cpp \
$${PWD}/ContextMenu.cpp \
$${PWD}/NativeWindow.cpp \
- $${PWD}/Panel.cpp
+ $${PWD}/Panel.cpp \
+ $${PWD}/Plugin.cpp
HEADERS *= $${PWD}/RootDesktop.h \
$${PWD}/ContextMenu.h \
@@ -12,3 +13,5 @@ HEADERS *= $${PWD}/RootDesktop.h \
$${PWD}/NativeEmbedWidget.h \
$${PWD}/Panel.h \
$${PWD}/Plugin.h
+
+include("plugins/plugins.pri")
bgstack15