// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "SMSdata.hpp" #include #include #include #include #include #include #include #include #include namespace gui { SmsWindowOptions::SmsWindowOptions(app::ApplicationCommon *app, const std::string &windowName) : OptionWindow(app, windowName) {} void SmsWindowOptions::onBeforeShow([[maybe_unused]] gui::ShowMode mode, gui::SwitchData *data) { if (const auto message = dynamic_cast(data)) { record = message->getRecord(); } auto currentRecordValid = getRecordValid(); if (recordValidCode == gui::option::OptionRecordValidity::Uninitialized || recordValidCode == currentRecordValid) { options = smsWindowOptions(dynamic_cast(application), record); optionsList->rebuildList(listview::RebuildType::InPlace); } else { application->switchWindow(gui::name::window::main_window); } recordValidCode = currentRecordValid; } gui::option::OptionRecordValidity SmsWindowOptions::getRecordValid() { const auto contact = DBServiceAPI::MatchContactByPhoneNumber(application, record.number); return (contact == nullptr) ? gui::option::OptionRecordValidity::Invalid : (contact->isTemporary() ? gui::option::OptionRecordValidity::Invalid : gui::option::OptionRecordValidity::Valid); } std::list