mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-01 02:19:00 -05:00
Stack plus minimum tests added Updated to master Removed useless or adressed TODOS Constants name applied Renamed searchModel to searchRequestModel Review applied We should remove legacy window names Bell names fixes
117 lines
4.4 KiB
C++
117 lines
4.4 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "NotesOptions.hpp"
|
|
|
|
#include <Option.hpp>
|
|
#include <Clipboard.hpp>
|
|
|
|
#include <apps-common/windows/DialogMetadata.hpp>
|
|
#include <apps-common/messages/DialogMetadataMessage.hpp>
|
|
|
|
#include <i18n/i18n.hpp>
|
|
|
|
#include <module-gui/gui/widgets/text/Text.hpp>
|
|
#include <AppWindowConstants.hpp>
|
|
|
|
namespace app::notes
|
|
{
|
|
namespace
|
|
{
|
|
void addOption(const std::string &translationId,
|
|
std::function<bool(gui::Item &)> onClickCallback,
|
|
std::list<gui::Option> &options)
|
|
{
|
|
options.emplace_back(utils::translate(translationId), onClickCallback);
|
|
}
|
|
|
|
void removeNote(const NotesRecord &record,
|
|
ApplicationCommon *application,
|
|
AbstractNotesRepository ¬esRepository)
|
|
{
|
|
auto metaData = std::make_unique<gui::DialogMetadataMessage>(
|
|
gui::DialogMetadata{record.snippet,
|
|
"delete_128px_W_G",
|
|
utils::translate("app_notes_note_delete_confirmation"),
|
|
"",
|
|
[record, application, ¬esRepository] {
|
|
notesRepository.remove(record, [application](bool) {
|
|
application->switchWindow(gui::name::window::main_window);
|
|
});
|
|
return true;
|
|
}});
|
|
application->switchWindow(
|
|
gui::name::window::note_confirm_dialog, gui::ShowMode::GUI_SHOW_INIT, std::move(metaData));
|
|
}
|
|
} // namespace
|
|
|
|
std::list<gui::Option> noteListOptions(ApplicationCommon *application,
|
|
const NotesRecord &record,
|
|
AbstractNotesRepository ¬esRepository)
|
|
{
|
|
std::list<gui::Option> options;
|
|
addOption(
|
|
{"app_notes_delete_note"},
|
|
[application, record, ¬esRepository](gui::Item &item) {
|
|
removeNote(record, application, notesRepository);
|
|
return true;
|
|
},
|
|
options);
|
|
return options;
|
|
}
|
|
|
|
std::list<gui::Option> notePreviewOptions(ApplicationCommon *application,
|
|
const NotesRecord &record,
|
|
AbstractNotesRepository ¬esRepository,
|
|
gui::Text *textWidget)
|
|
{
|
|
std::list<gui::Option> options;
|
|
addOption(
|
|
{"common_text_copy"},
|
|
[application, textWidget](gui::Item &item) {
|
|
if (textWidget != nullptr) {
|
|
Clipboard::getInstance().copy(textWidget->getText());
|
|
}
|
|
application->returnToPreviousWindow();
|
|
return true;
|
|
},
|
|
options);
|
|
addOption(
|
|
{"app_notes_delete_note"},
|
|
[application, record, ¬esRepository](gui::Item &item) {
|
|
removeNote(record, application, notesRepository);
|
|
return true;
|
|
},
|
|
options);
|
|
return options;
|
|
}
|
|
|
|
std::list<gui::Option> noteEditOptions(ApplicationCommon *application,
|
|
const NotesRecord &record,
|
|
gui::Text *textWidget)
|
|
{
|
|
std::list<gui::Option> options;
|
|
addOption(
|
|
{"common_text_copy"},
|
|
[application, textWidget](gui::Item &item) {
|
|
if (textWidget != nullptr) {
|
|
Clipboard::getInstance().copy(textWidget->getText());
|
|
}
|
|
application->returnToPreviousWindow();
|
|
return true;
|
|
},
|
|
options);
|
|
addOption(
|
|
{"common_text_paste"},
|
|
[application, textWidget](gui::Item &item) {
|
|
if (textWidget != nullptr) {
|
|
textWidget->addText(Clipboard::getInstance().paste(), gui::AdditionType::perBlock);
|
|
}
|
|
application->returnToPreviousWindow();
|
|
return true;
|
|
},
|
|
options);
|
|
return options;
|
|
}
|
|
} // namespace app::notes
|