// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "OptionsMessages.hpp" #include "application-messages/data/SMSdata.hpp" #include "tools/Common.hpp" #include #include #include #include #include #include #include #include std::list smsWindowOptions(app::ApplicationMessages *app, const SMSRecord &record) { ContactRecord contact = DBServiceAPI::ContactGetByIDWithTemporary(app, record.contactID)->front(); std::list options; if (record.type == SMSType::FAILED) { options.emplace_back(utils::translate("sms_resend_failed"), [=, &record](gui::Item &item) { app->resendSms(record); app->returnToPreviousWindow(); return true; }); } options.emplace_back(gui::Option{std::make_unique(app, contact)}); auto contactOperation = contact.isTemporary() ? gui::option::ContactOperation::Add : gui::option::ContactOperation::Details; options.emplace_back(gui::Option{std::make_unique(app, contactOperation, contact)}); options.emplace_back(UTF8(utils::translate("sms_forward_message")), [=](gui::Item &item) { std::unique_ptr data = std::make_unique(record.body); app->switchWindow(gui::name::window::new_sms, std::move(data)); return true; }); options.emplace_back(UTF8(utils::translate("sms_copy")), [=](gui::Item &item) { Clipboard::getInstance().copy(record.body); app->returnToPreviousWindow(); return true; }); options.emplace_back(UTF8(utils::translate("sms_delete_message")), [=](gui::Item &item) { return app->removeSms(record); }); return options; } std::list newMessageWindowOptions(app::ApplicationMessages *app, const std::string &requestingWindow, gui::Text *text) { std::list options; options.emplace_back(UTF8(utils::translate("sms_use_template")), [=](gui::Item &item) { std::unique_ptr data = std::make_unique(requestingWindow); app->switchWindow(gui::name::window::sms_templates, std::move(data)); return true; }); if (Clipboard::getInstance().gotData()) { options.emplace_back(utils::translate("sms_paste"), [=](gui::Item &item) { text->addText(Clipboard::getInstance().paste()); app->returnToPreviousWindow(); return true; }); } return options; }