// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "ThreadWindowOptions.hpp" #include #include #include #include #include std::list threadWindowOptions(app::ApplicationMessages *app, const ThreadRecord *record) { assert(record != nullptr); auto number = DBServiceAPI::NumberByID(app, record->numberID); auto contact = DBServiceAPI::MatchContactByNumberID(app, record->numberID); if (!contact->isValid()) { return {}; } const auto isTempContact = contact->isTemporary(); std::list options; if (isTempContact) { options.emplace_back(gui::Option{std::make_unique(app, number.getFormatted(), number)}); ContactRecord newContact; newContact.numbers.emplace_back(number); options.emplace_back( gui::Option{std::make_unique(app, gui::option::ContactOperation::Add, newContact)}); } else { options.emplace_back( gui::Option{std::make_unique(app, contact->getFormattedName(), number)}); options.emplace_back( gui::Option{std::make_unique(app, gui::option::ContactOperation::Details, *contact)}); } if (record->isUnread()) { options.emplace_back(gui::Option{utils::translate("sms_mark_read"), [=](gui::Item &item) { app->markSmsThreadAsRead(record->ID); app->returnToPreviousWindow(); return true; }}); } else { options.emplace_back(gui::Option{utils::translate("sms_mark_unread"), [=](gui::Item &item) { app->markSmsThreadAsUnread(record->ID); app->returnToPreviousWindow(); return true; }}); } options.emplace_back(gui::Option{utils::translate("sms_delete_conversation"), [=](gui::Item &item) { LOG_INFO("Removing sms thread!"); return app->removeSmsThread(record); }}); // TODO // shouldn't this be in show contact details actually? it would be much easier too // {utils::translate("sms_add_to_contacts"), [=](gui::Item &item) { return true; }}, return options; };