// Copyright (c) 2017-2023, 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 #include namespace app::notes { namespace { void addOption(const std::string &translationId, std::function onClickCallback, std::list &options) { options.emplace_back(utils::translate(translationId), std::move(onClickCallback)); } void removeNote(const NotesRecord &record, ApplicationCommon *application, AbstractNotesRepository ¬esRepository) { auto metaData = std::make_unique( 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 noteListOptions(ApplicationCommon *application, const NotesRecord &record, AbstractNotesRepository ¬esRepository) { std::list options; addOption( {"app_notes_delete_note"}, [application, record, ¬esRepository]([[maybe_unused]] gui::Item &item) { removeNote(record, application, notesRepository); return true; }, options); return options; } std::list notePreviewOptions(ApplicationCommon *application, const NotesRecord &record, AbstractNotesRepository ¬esRepository, gui::Text *textWidget) { std::list options; addOption( {"common_text_copy"}, [application, textWidget]([[maybe_unused]] gui::Item &item) { if (textWidget != nullptr) { Clipboard::getInstance().copy(textWidget->getText()); } application->returnToPreviousWindow(); return true; }, options); addOption( {"app_notes_delete_note"}, [application, record, ¬esRepository]([[maybe_unused]] gui::Item &item) { removeNote(record, application, notesRepository); return true; }, options); return options; } std::list noteEditOptions(ApplicationCommon *application, gui::Text *textWidget) { std::list options; if (textWidget != nullptr) { const auto ¬eText = textWidget->getText(); if (!noteText.empty()) { addOption( {"common_text_copy"}, [application, noteText]([[maybe_unused]] gui::Item &item) { Clipboard::getInstance().copy(noteText); application->returnToPreviousWindow(); return true; }, options); } } if (Clipboard::getInstance().hasData()) { addOption( {"common_text_paste"}, [application, textWidget]([[maybe_unused]] gui::Item &item) { if (textWidget != nullptr) { textWidget->addText(Clipboard::getInstance().paste(), gui::AdditionType::perBlock); } application->returnToPreviousWindow(); return true; }, options); } return options; } } // namespace app::notes