// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "CallLogOptionsWindow.hpp" #include "data/CallLogSwitchData.hpp" #include "data/CallLogInternals.hpp" #include #include #include namespace gui { CalllogWindowOptions::CalllogWindowOptions(app::ApplicationCommon *app, std::string windowName) : OptionWindow(app, windowName) {} void CalllogWindowOptions::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) { if (auto message = dynamic_cast(data)) { record = message->getRecord(); } auto currentRecordValid = getRecordValid(); if (recordValidCode == gui::option::OptionRecordValidity::Uninitialized || recordValidCode == currentRecordValid) { options = calllogWindowOptions(dynamic_cast(application), record); optionsList->rebuildList(listview::RebuildType::InPlace); } else { application->switchWindow(calllog::settings::MainWindowStr); } recordValidCode = currentRecordValid; } gui::option::OptionRecordValidity CalllogWindowOptions::getRecordValid() { auto contact = DBServiceAPI::MatchContactByPhoneNumber(application, record.phoneNumber); return contact == nullptr ? gui::option::OptionRecordValidity::Invalid : (contact->isTemporary() ? gui::option::OptionRecordValidity::Invalid : gui::option::OptionRecordValidity::Valid); } std::list