aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop-unified/src-screensaver/animations
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/src-screensaver/animations')
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp27
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h37
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h45
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri6
4 files changed, 115 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp
new file mode 100644
index 00000000..1e55dc76
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp
@@ -0,0 +1,27 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "BaseAnimGroup.h"
+
+//Include all the known subclasses here, then add a unique ID for it to the functions at the bottom
+#include "SampleAnimation.h"
+
+//==============================
+// PLUGIN LOADING/LISTING
+//==============================
+BaseAnimGroup* BaseAnimGroup::NewAnimation(QString type, QWidget *parent, QSettings *set){
+ //This is where we place all the known plugin ID's, and load the associated subclass
+ if(type == "sample"){
+ return (new SampleAnimation(parent, set));
+ }else{
+ //Unknown screensaver, return a blank animation group
+ return (new BaseAnimGroup(parent, set));
+ }
+}
+
+QStringList BaseAnimGroup::KnownAnimations(){
+ return (QStringList() << "sample");
+} \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h
new file mode 100644
index 00000000..dd7269d4
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h
@@ -0,0 +1,37 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This class is the container which provides the screensaver animations
+// and should be subclassed for each of the various animation types
+//===========================================
+#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_BASE_ANIMATION_GROUP_H
+#define _LUMINA_DESKTOP_SCREEN_SAVER_BASE_ANIMATION_GROUP_H
+
+#include "GlobalDefines.h"
+
+class BaseAnimGroup : public QParallelAnimationGroup{
+ Q_OBJECT
+public:
+ QWidget *canvas;
+ QSettings *settings;
+
+ virtual void LoadAnimations(){} //This is the main function which needs to be subclassed
+
+ BaseAnimGroup(QWidget *parent, QSettings *set){
+ canvas = parent;
+ settings = set;
+ }
+ ~BaseAnimGroup(){}
+
+ //==============================
+ // PLUGIN LOADING/LISTING (Change in the .cpp file)
+ //==============================
+ static BaseAnimGroup* NewAnimation(QString type, QWidget *parent, QSettings *set);
+ static QStringList KnownAnimations();
+
+};
+
+#endif \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h
new file mode 100644
index 00000000..e0f11ba5
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h
@@ -0,0 +1,45 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This class is the sample plugin for a ScreenSaver animation
+//===========================================
+#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_SAMPLE_ANIMATION_H
+#define _LUMINA_DESKTOP_SCREEN_SAVER_SAMPLE_ANIMATION_H
+
+#include "GlobalDefines.h"
+#include "BaseAnimGroup.h"
+
+class SampleAnimation : public BaseAnimGroup{
+ Q_OBJECT
+private:
+ QWidget *ball;
+
+public:
+ SampleAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){}
+ ~SampleAnimation(){ this->stop(); delete ball; }
+
+ void LoadAnimations(){
+ //qDebug() << "Loading Sample Animation";
+ ball = new QWidget(canvas);
+ //This creates a red "ball" on the widget which is going to expand/contract in the center of the screen
+ ball->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.341, fy:0.796, stop:0.00531915 rgba(107, 10, 10, 255), stop:0.521277 rgba(170, 10, 10, 255), stop:0.957447 rgba(200, 0, 0, 255), stop:0.994681 rgba(0, 0, 0, 225), stop:1 rgba(255, 255, 255, 0));");
+ //Now setup the movements
+ QPropertyAnimation *move = new QPropertyAnimation(ball,"geometry");
+ QPoint ctr(canvas->width()/2, canvas->height()/2);
+ QRect initgeom(ctr-QPoint(12,12), QSize(24,24) );
+ move->setKeyValueAt(0, initgeom ); //starting point
+ move->setKeyValueAt(1, initgeom ); //ending point (same as start for continuity)
+ int size = canvas->width();
+ if(size > canvas->height()){ size = canvas->height(); }
+ move->setKeyValueAt(0.5, QRect(ctr-QPoint(size/2, size/2), QSize(size,size))); //touch the edge of the screen
+ move->setDuration(10000); //10 seconds
+ this->addAnimation(move);
+ this->setLoopCount(10); //repeat 10 times
+ ball->show();
+ }
+
+};
+#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri
new file mode 100644
index 00000000..adb1ed6c
--- /dev/null
+++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri
@@ -0,0 +1,6 @@
+SOURCES += $$PWD/BaseAnimGroup.cpp
+
+HEADERS += $$PWD/BaseAnimGroup.h \
+ $$PWD/SampleAnimation.h
+
+#FORMS +=
bgstack15