// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #include "ThreadWindowOptions.hpp" #include "data/SMSdata.hpp" #include #include #include #include #include namespace gui { ThreadWindowOptions::ThreadWindowOptions(app::ApplicationCommon *app, std::string windowName) : OptionWindow(app, windowName) {} void ThreadWindowOptions::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) { if (auto message = dynamic_cast(data)) { thread = message->thread; } auto currentThreadValid = getThreadValid(); if (threadValidCode == gui::option::OptionRecordValidity::Uninitialized || threadValidCode == currentThreadValid) { options = threadWindowOptions(dynamic_cast(application), thread.get()); optionsList->rebuildList(listview::RebuildType::InPlace); } else { application->returnToPreviousWindow(); } threadValidCode = currentThreadValid; } gui::option::OptionRecordValidity ThreadWindowOptions::getThreadValid() { auto contact = DBServiceAPI::MatchContactByNumberID(application, thread->numberID); return contact == nullptr ? gui::option::OptionRecordValidity::Invalid : (contact->isTemporary() ? gui::option::OptionRecordValidity::Invalid : gui::option::OptionRecordValidity::Valid); } std::list