plasma: move notes applet here and reimplement it

basic, does not have issues with text being drawn outside the
background when scaled to very big size

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-04-06 20:41:05 +03:00
parent 983521a474
commit 46a419690f
7 changed files with 295 additions and 0 deletions

View file

@ -18,6 +18,7 @@ add_subdirectory(weather)
add_subdirectory(pager)
add_subdirectory(luna)
add_subdirectory(dict)
add_subdirectory(notes)
if (ALSA_FOUND)
add_subdirectory(mixer)

View file

@ -0,0 +1,25 @@
project(plasma-notes)
set(notes_SRCS
notes.cpp
)
kde4_add_plugin(plasma_applet_notes ${notes_SRCS})
target_link_libraries(plasma_applet_notes
KDE4::plasma KDE4::kio
)
install(
TARGETS plasma_applet_notes
DESTINATION ${KDE4_PLUGIN_INSTALL_DIR}
)
install(
FILES plasma-notes-default.desktop
DESTINATION ${KDE4_SERVICES_INSTALL_DIR}
)
install(
FILES notes.svgz
DESTINATION ${KDE4_DATA_INSTALL_DIR}/desktoptheme/default/widgets/
)

View file

@ -0,0 +1,2 @@
#! /usr/bin/env bash
$XGETTEXT *.cpp -o $podir/plasma_applet_notes.pot

View file

@ -0,0 +1,92 @@
/*
This file is part of the KDE project
Copyright (C) 2024 Ivailo Monev <xakepa10@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2, as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "notes.h"
#include <Plasma/Frame>
#include <Plasma/TextEdit>
static const QSizeF s_minimumsize = QSizeF(256, 256);
class NotesAppletWidget : public QGraphicsWidget
{
Q_OBJECT
public:
NotesAppletWidget(QGraphicsWidget *parent);
private:
QGraphicsLinearLayout* m_layout;
Plasma::Frame* m_frame;
QGraphicsLinearLayout* m_framelayout;
Plasma::TextEdit* m_textedit;
};
NotesAppletWidget::NotesAppletWidget(QGraphicsWidget *parent)
: QGraphicsWidget(parent),
m_layout(nullptr),
m_frame(nullptr),
m_framelayout(nullptr),
m_textedit(nullptr)
{
m_layout = new QGraphicsLinearLayout(this);
m_layout->setOrientation(Qt::Vertical);
m_layout->setContentsMargins(0, 0, 0, 0);
m_frame = new Plasma::Frame(this);
m_frame->setFrameShadow(Plasma::Frame::Sunken);
m_frame->setMinimumSize(s_minimumsize);
m_frame->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
m_framelayout = new QGraphicsLinearLayout(m_frame);
m_framelayout->setContentsMargins(0, 0, 0, 0);
m_frame->setLayout(m_framelayout);
m_textedit = new Plasma::TextEdit(m_frame);
m_framelayout->addItem(m_textedit);
m_layout->addItem(m_frame);
setLayout(m_layout);
adjustSize();
}
NotesApplet::NotesApplet(QObject *parent, const QVariantList &args)
: Plasma::PopupApplet(parent, args),
m_noteskwidget(nullptr)
{
setAspectRatioMode(Plasma::AspectRatioMode::IgnoreAspectRatio);
setStatus(Plasma::AcceptingInputStatus);
setPopupIcon("knotes");
m_noteskwidget = new NotesAppletWidget(this);
}
void NotesApplet::init()
{
}
QGraphicsWidget* NotesApplet::graphicsWidget()
{
return m_noteskwidget;
}
K_EXPORT_PLASMA_APPLET(notes, NotesApplet)
#include "notes.moc"
#include "moc_notes.cpp"

View file

@ -0,0 +1,43 @@
/*
This file is part of the KDE project
Copyright (C) 2024 Ivailo Monev <xakepa10@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2, as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef NOTES_H
#define NOTES_H
#include <Plasma/PopupApplet>
class NotesAppletWidget;
class NotesApplet : public Plasma::PopupApplet
{
Q_OBJECT
public:
NotesApplet(QObject *parent, const QVariantList &args);
// Plasma::Applet reimplementation
void init() final;
// Plasma::PopupApplet reimplementation
QGraphicsWidget* graphicsWidget() final;
private:
friend NotesAppletWidget;
NotesAppletWidget *m_noteskwidget;
};
#endif // NOTES_H

Binary file not shown.

View file

@ -0,0 +1,132 @@
[Desktop Entry]
Name=Notes
Name[ar]=ملاحظات
Name[ast]=Notes
Name[be]=Заметкі
Name[bs]=Bilješke
Name[ca]=Notes
Name[ca@valencia]=Notes
Name[cs]=Poznámky
Name[csb]=Nadczidczi
Name[da]=Noter
Name[de]=Notizen
Name[el]=Σημειώσεις
Name[en_GB]=Notes
Name[eo]=Notoj
Name[es]=Notas
Name[et]=Märkmed
Name[eu]=Oharrak
Name[fi]=Muistilappu
Name[fr]=Notes
Name[ga]=Nótaí
Name[gl]=Notas
Name[he]=פתקיות
Name[hr]=Bilješke
Name[hu]=Feljegyzések
Name[is]=Minnismiðar
Name[it]=Note
Name[ja]=
Name[kk]=Жазбалар
Name[km]=
Name[ko]=
Name[ku]=Nîşe
Name[lt]=Užrašai
Name[lv]=Piezīmes
Name[mr]=
Name[ms]=Nota
Name[nb]=Notater
Name[nds]=Notizen
Name[nl]=Notities
Name[nn]=Notat
Name[oc]=Nòtas
Name[pa]=ਿ
Name[pl]=Notatki
Name[pt]=Notas
Name[pt_BR]=Notas
Name[ro]=Note
Name[ru]=Заметки
Name[sk]=Poznámky
Name[sl]=Opombe
Name[sq]=Shënime
Name[sr]=белешке
Name[sr@ijekavian]=биљешке
Name[sr@ijekavianlatin]=bilješke
Name[sr@latin]=beleške
Name[sv]=Anteckningar
Name[th]=
Name[tr]=Notlar
Name[ug]=ئىزاھ
Name[uk]=Нотатки
Name[wa]=Notes
Name[x-test]=xxNotesxx
Name[zh_CN]=便
Name[zh_TW]=便
Comment=Desktop sticky notes
Comment[ar]=ملاحظات لاصقة على سطح المكتب
Comment[ast]=Notas pegaes nel escritoriu
Comment[bs]=Ljepljive bilješke za površ
Comment[ca]=Notes adhesives d'escriptori
Comment[ca@valencia]=Notes adhesives d'escriptori
Comment[cs]=Lepící poznámkové papírky na plochu
Comment[da]=Notessedler på skrivebordet.
Comment[de]=Klebezettel für die Arbeitsfläche
Comment[el]=Κολλημένες σημειώσεις επιφάνειας εργασίας
Comment[en_GB]=Desktop sticky notes
Comment[es]=Notas adhesivas de escritorio
Comment[et]=Töölaua märkmepaberid
Comment[eu]=Mahaigaineko ohar itsaskorrak
Comment[fi]=Työpöydän muistilaput
Comment[fr]=Un note collée sur le bureau
Comment[ga]=Nótaí greamaitheacha
Comment[gl]=Notas no escritorio
Comment[he]=פתקיות על שולחן העבודה
Comment[hu]=Ragadós asztali feljegyzések
Comment[is]=Minnismiðar á skjáborði
Comment[it]=Note adesive del desktop
Comment[ja]=
Comment[kk]=Үстелге жапсырмалы жазбалар
Comment[km]=
Comment[ko]=
Comment[ku]=Nîşeyên mezeloqî yên Sermasê
Comment[lt]=Darbastalio lipnūs lapeliai
Comment[lv]=Darbvirsmas piezīmju lapiņas
Comment[mr]= ि
Comment[nb]=Notatlapper for skrivebordet
Comment[nds]=Opback-Notizen för den Schriefdisch
Comment[nl]=Sticky's op het bureaublad
Comment[nn]=Notatlappar på skrivebordet
Comment[pa]= ਿ ਿ
Comment[pl]=Żółte karteczki na pulpicie
Comment[pt]=Notas autocolantes do ecrã
Comment[pt_BR]=Notas adesivas na área de trabalho
Comment[ro]=Notițe de birou lipicioase
Comment[ru]=Стикеры для заметок на рабочий стол
Comment[sk]=Lepiace poznámky na plochu
Comment[sl]=Lepljive opombe za namizje
Comment[sr]=Лепљиве белешке за површ
Comment[sr@ijekavian]=Љепљиве биљешке за површ
Comment[sr@ijekavianlatin]=Ljepljive bilješke za površ
Comment[sr@latin]=Lepljive beleške za površ
Comment[sv]=Klisterlappar med meddelanden för skrivbordet
Comment[th]=
Comment[tr]=Masaüstüne yapışan notlar
Comment[uk]=Стільничні липкі нотатки
Comment[wa]=Aclapantès notes sol scribanne
Comment[x-test]=xxDesktop sticky notesxx
Comment[zh_CN]= n
Comment[zh_TW]=便
Icon=knotes
Type=Service
X-Plasma-DropMimeTypes=text/plain,text/richtext
X-KDE-ServiceTypes=Plasma/Applet
X-KDE-Library=plasma_applet_notes
X-KDE-PluginInfo-Author=Ivailo Monev
X-KDE-PluginInfo-Email=xakepa10@gmail.com
X-KDE-PluginInfo-Name=plasma_applet_notes
X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-Website=
X-KDE-PluginInfo-Category=Utilities
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true