aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <ken@pcbsd.org>2014-11-04 12:06:37 -0500
committerKen Moore <ken@pcbsd.org>2014-11-04 12:06:37 -0500
commit43240f0e12b7fcbe4e2e9201b251e281cfa5d2bb (patch)
treeaca8679161d7d31f3f29461e9252de350acdbbcb
parentAdd a new desktop plugin: desktopview (diff)
downloadlumina-43240f0e12b7fcbe4e2e9201b251e281cfa5d2bb.tar.gz
lumina-43240f0e12b7fcbe4e2e9201b251e281cfa5d2bb.tar.bz2
lumina-43240f0e12b7fcbe4e2e9201b251e281cfa5d2bb.zip
Add a new desktop plugin: notepad
This is a plugin for taking/saving simple text notes right on your desktop.
-rw-r--r--lumina-config/LPlugins.cpp7
-rw-r--r--lumina-desktop/desktop-plugins/NewDP.h3
-rw-r--r--lumina-desktop/desktop-plugins/notepad/NotepadPlugin.cpp106
-rw-r--r--lumina-desktop/desktop-plugins/notepad/NotepadPlugin.h52
-rw-r--r--lumina-desktop/lumina-desktop.pro6
5 files changed, 172 insertions, 2 deletions
diff --git a/lumina-config/LPlugins.cpp b/lumina-config/LPlugins.cpp
index ae936b7b..a257a690 100644
--- a/lumina-config/LPlugins.cpp
+++ b/lumina-config/LPlugins.cpp
@@ -140,6 +140,13 @@ void LPlugins::LoadDesktopPlugins(){
info.ID = "desktopview";
info.icon = "preferences-desktop-icons";
DESKTOP.insert(info.ID, info);
+ //Notepad Plugin
+ info = LPI(); //clear it
+ info.name = QObject::tr("Note Pad");
+ info.description = QObject::tr("Keep simple text notes on your desktop");
+ info.ID = "notepad";
+ info.icon = "text-enriched";
+ DESKTOP.insert(info.ID, info);
}
void LPlugins::LoadMenuPlugins(){
diff --git a/lumina-desktop/desktop-plugins/NewDP.h b/lumina-desktop/desktop-plugins/NewDP.h
index daf9802c..6490af00 100644
--- a/lumina-desktop/desktop-plugins/NewDP.h
+++ b/lumina-desktop/desktop-plugins/NewDP.h
@@ -17,6 +17,7 @@
#include "calendar/CalendarPlugin.h"
#include "applauncher/AppLauncherPlugin.h"
#include "desktopview/DesktopViewPlugin.h"
+#include "notepad/NotepadPlugin.h"
class NewDP{
public:
@@ -31,6 +32,8 @@ public:
plug = new AppLauncherPlugin(parent, plugin);
}else if(plugin.section("---",0,0)=="desktopview"){
plug = new DesktopViewPlugin(parent, plugin);
+ }else if(plugin.section("---",0,0)=="notepad"){
+ plug = new NotePadPlugin(parent, plugin);
}else{
qWarning() << "Invalid Desktop Plugin:"<<plugin << " -- Ignored";
}
diff --git a/lumina-desktop/desktop-plugins/notepad/NotepadPlugin.cpp b/lumina-desktop/desktop-plugins/notepad/NotepadPlugin.cpp
new file mode 100644
index 00000000..bba1d863
--- /dev/null
+++ b/lumina-desktop/desktop-plugins/notepad/NotepadPlugin.cpp
@@ -0,0 +1,106 @@
+#include "NotepadPlugin.h"
+
+#include <LuminaXDG.h>
+#include "LSession.h"
+
+
+NotePadPlugin::NotePadPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){
+ QVBoxLayout *vlay = new QVBoxLayout();
+ this->setLayout( new QVBoxLayout() );
+ this->layout()->setContentsMargins(0,0,0,0);
+ vlay->setContentsMargins(3,3,3,3);
+ frame = new QFrame(this);
+ frame->setStyleSheet("QFrame{border-size: 1px; background: rgba(255,255,255,100);}");
+ this->layout()->addWidget(frame);
+ frame->setLayout(vlay);
+
+ //Setup the title bar header buttons
+ QHBoxLayout *hlay = new QHBoxLayout();
+ next = new QToolButton(this);
+ prev = new QToolButton(this);
+ add = new QToolButton(this);
+ rem = new QToolButton(this);
+ label = new QLabel(this);
+ label->setAlignment(Qt::AlignCenter);
+ hlay->addWidget(prev);
+ hlay->addWidget(next);
+ hlay->addWidget(label);
+ hlay->addWidget(add);
+ hlay->addWidget(rem);
+ vlay->addLayout(hlay);
+
+ //Setup the main text widget
+ edit = new QPlainTextEdit(this);
+ edit->setReadOnly(false);
+ vlay->addWidget(edit);
+
+ //Now setup the initial values
+ cnote = this->settings->value("currentNote", 1).toInt();
+ maxnote = this->settings->value("availableNotes",1).toInt();
+ this->setInitialSize(200,300);
+ //Setup the button connections
+ connect(next, SIGNAL(clicked()), this, SLOT(nextNote()) );
+ connect(prev, SIGNAL(clicked()), this, SLOT(prevNote()) );
+ connect(add, SIGNAL(clicked()), this, SLOT(newNote()) );
+ connect(rem, SIGNAL(clicked()), this, SLOT(remNote()) );
+ connect(edit, SIGNAL(textChanged()), this, SLOT(noteChanged()) );
+ QTimer::singleShot(0,this, SLOT(loadIcons()) );
+ QTimer::singleShot(0,this, SLOT(updateContents()) );
+
+}
+
+NotePadPlugin::~NotePadPlugin(){
+
+}
+
+void NotePadPlugin::nextNote(){
+ cnote++;
+ if(cnote>maxnote){ cnote = 1; } //go to the first
+ updateContents();
+}
+
+void NotePadPlugin::prevNote(){
+ cnote--;
+ if(cnote<1){ cnote = maxnote; } //go to the last
+ updateContents();
+}
+
+void NotePadPlugin::newNote(){
+ maxnote++;
+ cnote = maxnote;
+ updateContents();
+}
+
+void NotePadPlugin::remNote(){
+ //Clear the current note
+ settings->remove("Note-"+QString::number(cnote));
+ //If the last note, also decrease the max number
+ if(cnote==maxnote && maxnote>1){ maxnote--; }
+ //Now go to the previous note
+ cnote--;
+ if(cnote<1){ cnote = maxnote; }
+ updateContents();
+}
+
+void NotePadPlugin::updateContents(){
+ next->setEnabled(cnote<maxnote);
+ prev->setEnabled(cnote>1);
+ label->setText( QString(tr("Note #%1")).arg(QString::number(cnote)) );
+ settings->setValue("currentNote", cnote);
+ settings->setValue("availableNotes", maxnote);
+ edit->setPlainText( settings->value("Note-"+QString::number(cnote), "").toString() );
+}
+
+
+void NotePadPlugin::noteChanged(){
+ //Save the current text
+ settings->setValue("Note-"+QString::number(cnote), edit->toPlainText());
+}
+
+
+void NotePadPlugin::loadIcons(){
+ next->setIcon( LXDG::findIcon("go-next-view","") );
+ prev->setIcon( LXDG::findIcon("go-previous-view","") );
+ add->setIcon( LXDG::findIcon("document-new","") );
+ rem->setIcon( LXDG::findIcon("document-close","") );
+}
diff --git a/lumina-desktop/desktop-plugins/notepad/NotepadPlugin.h b/lumina-desktop/desktop-plugins/notepad/NotepadPlugin.h
new file mode 100644
index 00000000..0a4311ed
--- /dev/null
+++ b/lumina-desktop/desktop-plugins/notepad/NotepadPlugin.h
@@ -0,0 +1,52 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This plugin is a simple text editor for notes on the desktop
+//===========================================
+#ifndef _LUMINA_DESKTOP_NOTEPAD_PLUGIN_H
+#define _LUMINA_DESKTOP_NOTEPAD_PLUGIN_H
+
+#include <QPlainTextEdit>
+#include <QToolButton>
+#include <QLabel>
+#include <QVBoxLayout>
+#include <QTimer>
+#include "../LDPlugin.h"
+
+class NotePadPlugin : public LDPlugin{
+ Q_OBJECT
+public:
+ NotePadPlugin(QWidget* parent, QString ID);
+ ~NotePadPlugin();
+
+private:
+ QPlainTextEdit *edit;
+ QToolButton *next, *prev, *add, *rem;
+ QLabel *label;
+ QFrame *frame;
+ int cnote, maxnote; //current/max note
+
+private slots:
+ void nextNote();
+ void prevNote();
+ void newNote();
+ void remNote();
+ void updateContents();
+
+ void noteChanged();
+
+ void loadIcons();
+
+public slots:
+ void LocaleChange(){
+ QTimer::singleShot(0,this, SLOT(updateContents()));
+ }
+ void ThemeChange(){
+ QTimer::singleShot(0,this, SLOT(loadIcons()));
+ }
+
+};
+#endif
diff --git a/lumina-desktop/lumina-desktop.pro b/lumina-desktop/lumina-desktop.pro
index 479a3e3c..8772b661 100644
--- a/lumina-desktop/lumina-desktop.pro
+++ b/lumina-desktop/lumina-desktop.pro
@@ -41,7 +41,8 @@ SOURCES += main.cpp \
panel-plugins/systemdashboard/LSysDashboard.cpp \
panel-plugins/systemdashboard/SysMenuQuick.cpp \
desktop-plugins/applauncher/AppLauncherPlugin.cpp \
- desktop-plugins/desktopview/DesktopViewPlugin.cpp
+ desktop-plugins/desktopview/DesktopViewPlugin.cpp \
+ desktop-plugins/notepad/NotepadPlugin.cpp
HEADERS += Globals.h \
@@ -76,7 +77,8 @@ HEADERS += Globals.h \
desktop-plugins/SamplePlugin.h \
desktop-plugins/calendar/CalendarPlugin.h \
desktop-plugins/applauncher/AppLauncherPlugin.h \
- desktop-plugins/desktopview/DesktopViewPlugin.h
+ desktop-plugins/desktopview/DesktopViewPlugin.h \
+ desktop-plugins/notepad/NotepadPlugin.h
FORMS += SystemWindow.ui \
panel-plugins/userbutton/UserWidget.ui \
bgstack15