// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "NotesOptions.hpp" #include #include #include #include #include #include namespace app::notes { namespace { void addOption(const std::string &translationId, std::function onClickCallback, std::list &options) { options.emplace_back(utils::localize.get(translationId), onClickCallback); } void removeNote(const NotesRecord &record, Application *application, AbstractNotesRepository ¬esRepository) { gui::DialogMetadata meta; meta.action = [record, application, ¬esRepository] { notesRepository.remove( record, [application](bool) { application->switchWindow(gui::name::window::main_window); }); return true; }; meta.text = utils::localize.get("app_notes_note_delete_confirmation"); meta.icon = "phonebook_contact_delete_trashcan"; application->switchWindow(gui::name::window::note_confirm_dialog, std::make_unique(meta)); } } // namespace std::list noteListOptions(Application *application, const NotesRecord &record, AbstractNotesRepository ¬esRepository) { std::list options; addOption( {"app_notes_delete_note"}, [application, record, ¬esRepository](gui::Item &item) { removeNote(record, application, notesRepository); return true; }, options); return options; } std::list notePreviewOptions(Application *application, const NotesRecord &record, AbstractNotesRepository ¬esRepository, gui::Text *textWidget) { std::list options; addOption( {"app_notes_copy_text"}, [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 noteEditOptions(Application *application, const NotesRecord &record, gui::Text *textWidget) { std::list options; addOption( {"app_notes_copy_text"}, [application, textWidget](gui::Item &item) { if (textWidget != nullptr) { Clipboard::getInstance().copy(textWidget->getText()); } application->returnToPreviousWindow(); return true; }, options); addOption( {"app_notes_copy_paste"}, [application, textWidget](gui::Item &item) { if (textWidget != nullptr) { textWidget->addText(Clipboard::getInstance().paste()); } application->returnToPreviousWindow(); return true; }, options); return options; } } // namespace app::notes