diff options
author | Ken Moore <ken@pcbsd.org> | 2014-11-04 12:06:37 -0500 |
---|---|---|
committer | Ken Moore <ken@pcbsd.org> | 2014-11-04 12:06:37 -0500 |
commit | 43240f0e12b7fcbe4e2e9201b251e281cfa5d2bb (patch) | |
tree | aca8679161d7d31f3f29461e9252de350acdbbcb | |
parent | Add a new desktop plugin: desktopview (diff) | |
download | lumina-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.cpp | 7 | ||||
-rw-r--r-- | lumina-desktop/desktop-plugins/NewDP.h | 3 | ||||
-rw-r--r-- | lumina-desktop/desktop-plugins/notepad/NotepadPlugin.cpp | 106 | ||||
-rw-r--r-- | lumina-desktop/desktop-plugins/notepad/NotepadPlugin.h | 52 | ||||
-rw-r--r-- | lumina-desktop/lumina-desktop.pro | 6 |
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 \ |