Commit 7a013a76 authored by Laurent Montel's avatar Laurent Montel 😁
Browse files

This lib is used only in knotes => put it in knotes directory

parent c12d3a29
......@@ -2,140 +2,8 @@ project(knotes)
add_definitions( -DQT_NO_CAST_FROM_ASCII )
add_definitions( -DQT_NO_CAST_TO_ASCII )
add_definitions(-DTRANSLATION_DOMAIN=\"knotes\")
add_subdirectory(icons)
add_subdirectory(noteshared)
add_subdirectory(src)
add_subdirectory(notesagent)
if (BUILD_TESTING)
add_subdirectory(print/autotests)
endif()
add_subdirectory(kontactplugin)
add_subdirectory(kconf_update)
########### next target ###############
set(libknotesprivate_config_lib_SRCS
configdialog/knotesimpleconfigdialog.cpp
configdialog/knoteconfigdialog.cpp
configdialog/knotedisplayconfigwidget.cpp
configdialog/knoteeditorconfigwidget.cpp
configdialog/knotecollectionconfigwidget.cpp
)
set(libknotesprivate_print_lib_SRCS
print/knoteprintselectthemedialog.cpp
print/knoteprintselectthemecombobox.cpp
print/knoteprinter.cpp
print/knoteprintobject.cpp
print/knotegrantleeprint.cpp
)
set(libknotesprivate_lib_SRCS
${libknotesprivate_config_lib_SRCS}
${libknotesprivate_print_lib_SRCS}
knoteedit.cpp
knotes_debug.cpp
notes/knotedisplaysettings.cpp
utils/knoteutils.cpp
notes/knoteinterface.cpp
notes/knotesmigrateapplication.cpp
finddialog/knotefinddialog.cpp
)
configure_file(settings/knotesglobalconfig.kcfg.cmake ${CMAKE_CURRENT_BINARY_DIR}/knotesglobalconfig.kcfg )
set( libknotesprivate_kcfg_lib_SRCS settings/knotesglobalconfig.kcfgc )
kconfig_add_kcfg_files(libknotesprivate_kcfg_lib_SRCS ${libknotesprivate_kcfg_lib_SRCS})
ecm_qt_declare_logging_category(libknotesprivate_lib_SRCS HEADER knotes_debug.h IDENTIFIER KNOTES_LOG CATEGORY_NAME log_knotes)
add_library(knotesprivate ${libknotesprivate_lib_SRCS} ${libknotesprivate_kcfg_lib_SRCS} )
generate_export_header(knotesprivate BASE_NAME knotes)
target_link_libraries(knotesprivate
PUBLIC
KF5::IconThemes
PRIVATE
KF5::PimCommon
KF5::KCMUtils Grantlee5::Templates KF5::NewStuff KF5::WindowSystem Qt5::PrintSupport KF5::KDELibs4Support KF5::NoteShared KF5::AkonadiSearchPIM KF5::AkonadiNotes KF5::PimTextEdit
)
set_target_properties(knotesprivate
PROPERTIES VERSION ${KDEPIM_LIB_VERSION} SOVERSION ${KDEPIM_LIB_SOVERSION}
)
install(TARGETS knotesprivate ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
set(knotes_SRCS knotes_debug.cpp
apps/main.cpp
apps/application.cpp
apps/knotesapp.cpp
apps/knotesakonaditray.cpp
dialog/knoteskeydialog.cpp
dialog/knotedeleteselectednotesdialog.cpp
notes/knotebutton.cpp
print/knoteprintselectednotesdialog.cpp
notes/knote.cpp
dialog/knoteselectednotesdialog.cpp
)
qt5_add_dbus_adaptor(knotes_SRCS apps/org.kde.KNotes.xml apps/knotesapp.h KNotesApp )
file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/*-apps-knotes.png")
ecm_add_app_icon(knotes_SRCS ICONS ${ICONS_SRCS})
add_executable(knotes ${knotes_SRCS})
target_link_libraries(knotes
knotesprivate
KF5::KCMUtils
KF5::PimCommon
KF5::DNSSD
KF5::KontactInterface
KF5::NoteShared
KF5::AkonadiCore
KF5::Mime
KF5::GlobalAccel
KF5::KDELibs4Support
KF5::AkonadiSearchDebug
)
if (Qt5X11Extras_FOUND)
target_link_libraries(knotes Qt5::X11Extras ${X11_LIBRARIES})
endif()
install(TARGETS knotes ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
########### next target ###############
set(kcm_knotes_PART_SRCS configdialog/knoteconfigdialog.cpp configdialog/knotedisplayconfigwidget.cpp configdialog/knoteeditorconfigwidget.cpp configdialog/knotecollectionconfigwidget.cpp knotes_debug.cpp)
add_library(kcm_knote MODULE ${kcm_knotes_PART_SRCS} )
target_link_libraries(kcm_knote knotesprivate KF5::AkonadiCore KF5::KCMUtils KF5::NewStuff KF5::WindowSystem KF5::NoteShared KF5::AkonadiNotes KF5::PimCommon)
install(TARGETS kcm_knote DESTINATION ${KDE_INSTALL_PLUGINDIR})
install(FILES
data/knote_config_action.desktop
data/knote_config_display.desktop
data/knote_config_editor.desktop
data/knote_config_network.desktop
data/knote_config_print.desktop
data/knote_config_collection.desktop
data/knote_config_misc.desktop
DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
########### install files ###############
install( PROGRAMS data/org.kde.knotes.desktop DESTINATION ${KDE_INSTALL_APPDIR})
install( FILES data/knotes.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/knotesglobalconfig.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
install( FILES data/knotesappui.rc data/knotesui.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/knotes)
install( FILES apps/org.kde.KNotes.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR})
install( FILES data/knotes_printing_theme.knsrc DESTINATION ${KDE_INSTALL_CONFDIR} )
install(DIRECTORY print/themes/ DESTINATION ${KDE_INSTALL_DATADIR}/knotes/print/themes )
project(notesagent)
add_definitions(-DTRANSLATION_DOMAIN=\"akonadi_notes_agent\")
set(notesagent_SRCS
notesagent.cpp
notesmanager.cpp
notesagentsettingsdialog.cpp
notesagentalarmdialog.cpp
notesagentnotedialog.cpp
)
kconfig_add_kcfg_files(notesagent_SRCS
settings/notesagentsettings.kcfgc
)
qt5_add_dbus_adaptor(notesagent_SRCS org.freedesktop.Akonadi.NotesAgent.xml notesagent.h NotesAgent)
ecm_qt_declare_logging_category(notesagent_SRCS HEADER notesagent_debug.h IDENTIFIER NOTESAGENT_LOG CATEGORY_NAME log_notesagentagent)
add_executable(akonadi_notes_agent ${notesagent_SRCS})
target_link_libraries(akonadi_notes_agent
KF5::AkonadiCore
KF5::Mime
KF5::AkonadiAgentBase
KF5::NotifyConfig
KF5::DBusAddons
notesharedprivate
KF5::PimCommon
KF5::PimTextEdit
KF5::XmlGui
KF5::WindowSystem
KF5::Notifications
KF5::IconThemes
)
if( APPLE )
set_target_properties(akonadi_notes_agent PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/Info.plist.template)
set_target_properties(akonadi_notes_agent PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "org.kde.Akonadi.archivemail")
set_target_properties(akonadi_notes_agent PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "KDE Akonadi Notes")
endif ()
install(TARGETS akonadi_notes_agent ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
install(FILES notesagent.desktop DESTINATION "${KDE_INSTALL_DATAROOTDIR}/akonadi/agents")
install(FILES akonadi_notes_agent.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFY5RCDIR} )
add_subdirectory(kconf_update)
#! /bin/sh
$XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h | grep -v '/tests/'` -o $podir/akonadi_notes_agent.pot
[Global]
IconName=notes
Comment=Notes Agent
Comment[bs]=Agent za bilješke
Comment[ca]=Agent de notes
Comment[ca@valencia]=Agent de notes
Comment[cs]=Agent poznámek
Comment[da]=Noter-agent
Comment[de]=Notizen-Agent
Comment[el]=Πράκτορας σημειώσεων
Comment[en_GB]=Notes Agent
Comment[es]=Agente de notas
Comment[et]=Märkmete agent
Comment[fi]=Muistiinpanoagentti
Comment[fr]=Agent pour les notes
Comment[gl]=Axente de Notas
Comment[hu]=Jegyzetek ügynök
Comment[ia]=Agente de Notas
Comment[it]=Agente delle note
Comment[nb]=Notatagent
Comment[nds]=Notizenhölper
Comment[nl]=Agent voor notities
Comment[pl]=Agent notatek
Comment[pt]=Agente de Notas
Comment[pt_BR]=Agente de Notas
Comment[ru]=Агент заметок
Comment[sk]=Agent poznámok
Comment[sl]=Posrednik za sporočilca
Comment[sr]=Агент бележака
Comment[sr@ijekavian]=Агент бележака
Comment[sr@ijekavianlatin]=Agent beležaka
Comment[sr@latin]=Agent beležaka
Comment[sv]=Anteckningsmodul
Comment[tr]=Not Aracı
Comment[uk]=Агент нотаток
Comment[x-test]=xxNotes Agentxx
Comment[zh_TW]=便條代理程式
[Event/receivednotes]
Name=Received a note
Name[bs]=Primljena bilješka
Name[ca]=S'ha rebut una nota
Name[ca@valencia]=S'ha rebut una nota
Name[da]=Modtog en note
Name[de]=Notiz erhalten
Name[el]=Λήψη σημείωσης
Name[en_GB]=Received a note
Name[es]=Recibida una nota
Name[et]=Saadi märge
Name[fi]=Muistiinpano vastaanotettu
Name[fr]=Note reçue
Name[gl]=Recibiuse unha nota
Name[hu]=Fogadott egy jegyzet
Name[ia]=Il ha recipite un nota
Name[it]=Nota ricevuta
Name[nb]=Mottatt et notat
Name[nds]=Notiz kregen
Name[nl]=Er is een notitie ontvangen
Name[pl]=Otrzymano notatkę
Name[pt]=Nota recebida
Name[pt_BR]=Nota recebida
Name[ru]=Получена заметка
Name[sk]=Prijatá poznámka
Name[sl]=Prejeli ste sporočilce
Name[sr]=Примљена белешка
Name[sr@ijekavian]=Примљена белешка
Name[sr@ijekavianlatin]=Primljena beleška
Name[sr@latin]=Primljena beleška
Name[sv]=Tog emot en anteckning
Name[tr]=Bir not alındı
Name[uk]=Отримано нотатку
Name[x-test]=xxReceived a notexx
Name[zh_TW]=接收到一張便條
Action=Popup
#install( FILES noteglobalsettings.upd DESTINATION ${KDE_INSTALL_KCONFUPDATEDIR})
/*
Copyright (c) 2013-2015 Montel Laurent <montel@kde.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program 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
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "notesagent.h"
#include "notesmanager.h"
#include "notesagentadaptor.h"
#include "knotes/noteshared/src/notesharedglobalconfig.h"
#include "notesagentsettings.h"
#include "notesagentsettingsdialog.h"
#include <AgentInstance>
#include <AgentManager>
#include <kdbusconnectionpool.h>
#include <AkonadiCore/changerecorder.h>
#include <AkonadiCore/itemfetchscope.h>
#include <AkonadiCore/session.h>
#include <AttributeFactory>
#include <CollectionFetchScope>
#include <KWindowSystem>
#include <Kdelibs4ConfigMigrator>
#include <QPointer>
NotesAgent::NotesAgent(const QString &id)
: Akonadi::AgentBase(id),
mAgentInitialized(false)
{
Kdelibs4ConfigMigrator migrate(QStringLiteral("notesagent"));
migrate.setConfigFiles(QStringList() << QStringLiteral("akonadi_notes_agentrc") << QStringLiteral("akonadi_notes_agent.notifyrc"));
migrate.migrate();
mNotesManager = new NotesManager(this);
new NotesAgentAdaptor(this);
KDBusConnectionPool::threadConnection().registerObject(QStringLiteral("/NotesAgent"), this, QDBusConnection::ExportAdaptors);
KDBusConnectionPool::threadConnection().registerService(QStringLiteral("org.freedesktop.Akonadi.NotesAgent"));
setNeedsNetwork(true);
if (NotesAgentSettings::enabled()) {
QTimer::singleShot(60 * 1000, this, &NotesAgent::slotStartAgent);
}
}
NotesAgent::~NotesAgent()
{
}
void NotesAgent::doSetOnline(bool online)
{
if (mAgentInitialized) {
if (online) {
reload();
} else {
mNotesManager->stopAll();
}
}
}
void NotesAgent::slotStartAgent()
{
mAgentInitialized = true;
if (isOnline()) {
mNotesManager->load();
}
}
void NotesAgent::reload()
{
if (NotesAgentSettings::enabled()) {
mNotesManager->load();
}
}
void NotesAgent::setEnableAgent(bool enabled)
{
if (NotesAgentSettings::enabled() == enabled) {
return;
}
NotesAgentSettings::setEnabled(enabled);
NotesAgentSettings::self()->save();
if (enabled) {
mNotesManager->load();
} else {
mNotesManager->stopAll();
}
}
bool NotesAgent::enabledAgent() const
{
return NotesAgentSettings::enabled();
}
void NotesAgent::configure(WId windowId)
{
showConfigureDialog((qlonglong)windowId);
}
void NotesAgent::showConfigureDialog(qlonglong windowId)
{
QPointer<NotesAgentSettingsDialog> dialog = new NotesAgentSettingsDialog;
if (windowId) {
#ifndef Q_OS_WIN
KWindowSystem::setMainWindow(dialog, windowId);
#else
KWindowSystem::setMainWindow(dialog, (HWND)windowId);
#endif
}
if (dialog->exec()) {
mNotesManager->load();
}
delete dialog;
}
bool NotesAgent::receiveNotes() const
{
return NoteShared::NoteSharedGlobalConfig::receiveNotes();
}
void NotesAgent::setReceiveNotes(bool b)
{
if (NoteShared::NoteSharedGlobalConfig::receiveNotes() != b) {
NoteShared::NoteSharedGlobalConfig::setReceiveNotes(b);
NoteShared::NoteSharedGlobalConfig::self()->save();
mNotesManager->updateNetworkListener();
}
}
int NotesAgent::port() const
{
return NoteShared::NoteSharedGlobalConfig::port();
}
void NotesAgent::setPort(int value)
{
if (value < 0) {
return;
}
if (NoteShared::NoteSharedGlobalConfig::port() != static_cast<uint>(value)) {
NoteShared::NoteSharedGlobalConfig::setPort(value);
NoteShared::NoteSharedGlobalConfig::self()->save();
if (NotesAgentSettings::enabled()) {
mNotesManager->updateNetworkListener();
}
}
}
void NotesAgent::setAlarmCheckInterval(int value)
{
if (value < 0) {
return;
}
if (NoteShared::NoteSharedGlobalConfig::checkInterval() != static_cast<uint>(value)) {
NoteShared::NoteSharedGlobalConfig::setCheckInterval(value);
NoteShared::NoteSharedGlobalConfig::self()->save();
reload();
}
}
void NotesAgent::configurationChanged()
{
NoteShared::NoteSharedGlobalConfig::self()->config()->reparseConfiguration();
mNotesManager->updateNetworkListener();
}
int NotesAgent::alarmCheckInterval() const
{
return NoteShared::NoteSharedGlobalConfig::checkInterval();
}
AKONADI_AGENT_MAIN(NotesAgent)
[Desktop Entry]
Name=Notes Agent
Name[bs]=Agent za bilješke
Name[ca]=Agent de notes
Name[ca@valencia]=Agent de notes
Name[cs]=Agent poznámek
Name[da]=Noter-agent
Name[de]=Notizen-Agent
Name[el]=Πράκτορας σημειώσεων
Name[en_GB]=Notes Agent
Name[es]=Agente de notas
Name[et]=Märkmete agent
Name[fi]=Muistiinpanoagentti
Name[fr]=Agent pour les notes
Name[gl]=Axente de Notas
Name[hu]=Jegyzetek ügynök
Name[ia]=Agente de Notas (Notes Agent)
Name[it]=Agente delle note
Name[nb]=Notatagent
Name[nds]=Notizenhölper
Name[nl]=Agent voor notities
Name[pl]=Agent notatek
Name[pt]=Agente de Notas
Name[pt_BR]=Agente de Notas
Name[ru]=Агент заметок
Name[sk]=Agent poznámok
Name[sl]=Posrednik za sporočilca
Name[sr]=Агент бележака
Name[sr@ijekavian]=Агент бележака
Name[sr@ijekavianlatin]=Agent beležaka
Name[sr@latin]=Agent beležaka
Name[sv]=Anteckningsmodul
Name[tr]=Not Aracı
Name[uk]=Агент нотаток
Name[x-test]=xxNotes Agentxx
Name[zh_TW]=便條代理程式
Comment=Adds notes received via network and handles note alarm notifications
Comment[bs]=Dodaje bilješke primljene preko mreže i rukuje napomenama alarma bilješki
Comment[ca]=Afegeix notes rebudes a través de la xarxa i s'ocupa de les notificacions d'alarma
Comment[ca@valencia]=Afig notes rebudes a través de la xarxa i s'ocupa de les notificacions d'alarma
Comment[da]=Tilføjer noter modtaget via netværk og håndterer bekendtgørelse af notealarmer
Comment[de]=Fügt Notizen hinzu, die über das Netzwerk erhalten wurden und verarbeitet Benachrichtigungen über Notiz-Erinnerungen
Comment[el]=Προσθέτει σημειώσεις που έχουν ληφθεί δικτυακά και χειρίζεται τις ειδοποιήσεις συναγερμού σημειώσεων
Comment[en_GB]=Adds notes received via network and handles note alarm notifications
Comment[es]=Añade notas recibidas vía red y maneja notificaciones de alarmas de notas
Comment[et]=Märkmete lisamine võrgu kaudu ja märkmehäirete märguannete käitlemine
Comment[fi]=Lisää verkon välityksellä vastaanotetut muistiinpanot ja käsittelee muistiinpanojen hälytysilmoitukset
Comment[fr]=Ajoute les notes reçus par le réseau et gère les notifications d'alarme
Comment[gl]=Engade notas recibidas a través da rede e xestiona as notificacións das alarmas das notas
Comment[hu]=Hálózatról fogadott jegyzeteket ad hozzá és kezeli a jegyzetriasztási értesítéseket
Comment[ia]=Adde notas recipite via rete e manea notificationes de nota de alarma
Comment[it]=Aggiunge le note ricevute via rete e gestisce le notifiche di avvisi delle note
Comment[nb]=Legger til notater mottatt over nettverket og behandler notatvarslinger
Comment[nds]=Föögt Notizen över't Nettwark to un gifft över Alarmnotizen Bescheed
Comment[nl]=Voegt notities toe ontvangen via het netwerk en behandelt meldingen over herinneringen voor notities
Comment[nn]=Varslar og handsamar av notat mottekne via nettverk.
Comment[pl]=Dodaje notatki otrzymywane przez sieć i obsługuje alarmy notatek
Comment[pt]=Adiciona as notas recebidas pela rede e lida com as notificações dos alarmes das notas
Comment[pt_BR]=Adiciona notas recebidas via rede e lida com as notificações de alarme das notas
Comment[sk]=Pridá poznámky prijaté cez sieť a spracuje upozornenia výstrah poznámok
Comment[sl]=Doda sporočilca prejeta preko omrežja in obravnava obvestila alarma o sporočilcih
Comment[sr]=Додаје белешке примљене преко мреже и обрађује обавештења аларма бележака
Comment[sr@ijekavian]=Додаје белешке примљене преко мреже и обрађује обавештења аларма бележака
Comment[sr@ijekavianlatin]=Dodaje beleške primljene preko mreže i obrađuje obaveštenja alarma beležaka
Comment[sr@latin]=Dodaje beleške primljene preko mreže i obrađuje obaveštenja alarma beležaka
Comment[sv]=Lägger till anteckningar mottagna via nätverk och hanterar alarmunderrättelser för anteckningar
Comment[tr]=Ağ üzerinden alınan notlar ekler ve not uyarı bildirimlerini işler
Comment[uk]=Додає нотатки, отримані з мережі, та обробляє сповіщення-нагадування з нотаток
Comment[x-test]=xxAdds notes received via network and handles note alarm notificationsxx
Comment[zh_TW]=新增從網路接收到的便條並處理便條的鬧鐘通知
Type=AkonadiAgent
Exec=akonadi_notes_agent
Icon=knotes
X-DocPath=akonadi_notes_agent/index.html
X-Akonadi-MimeTypes=message/rfc822
X-Akonadi-Capabilities=Unique,Autostart
X-Akonadi-Identifier=akonadi_notes_agent
/*
Copyright (c) 2013-2015 Montel Laurent <montel@kde.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program 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
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef NOTESAGENT_H
#define NOTESAGENT_H
#include <AkonadiAgentBase/agentbase.h>
class NotesManager;
class NotesAgent : public Akonadi::AgentBase, public Akonadi::AgentBase::ObserverV3
{
Q_OBJECT
public:
explicit NotesAgent(const QString &id);
~NotesAgent();
void showConfigureDialog(qlonglong windowId = 0);
void setEnableAgent(bool b);
bool enabledAgent() const;
void reload();
bool receiveNotes() const;
void setReceiveNotes(bool b);
void setPort(int value);
int port() const;
int alarmCheckInterval() const;
void setAlarmCheckInterval(int value);
void configurationChanged();
Q_SIGNALS:
void needUpdateConfigDialogBox();
public Q_SLOTS:
void configure(WId windowId) Q_DECL_OVERRIDE;
protected:
void doSetOnline(bool online) Q_DECL_OVERRIDE;
private Q_SLOTS:
void slotStartAgent();
private:
bool mAgentInitialized;
NotesManager *mNotesManager;
};
#endif // NOTESAGENT_H
/*
Copyright (c) 2013-2015 Montel Laurent <montel@kde.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program 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
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "notesagentalarmdialog.h"
#include "notesagentnotedialog.h"
#include "knotes/noteshared/src/widget/notelistwidget.h"
#include "knotes/noteshared/src/attributes/notealarmattribute.h"
#include "knotes/noteshared/src/alarms/notealarmdialog.h"