// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "SimContactsImportWindow.hpp" #include #include #include namespace gui { SimContactsImportWindow::SimContactsImportWindow( app::ApplicationCommon *app, std::unique_ptr simImportPresenter) : AppWindow(app, gui::window::name::import_contacts), presenter(std::move(simImportPresenter)) { presenter->attach(this); preventsAutoLock = true; buildInterface(); } void SimContactsImportWindow::buildInterface() { AppWindow::buildInterface(); setTitle(utils::translate("app_settings_network_import_contacts")); navBar->setText(gui::nav_bar::Side::Right, utils::translate(::style::strings::common::back)); navBar->setText(gui::nav_bar::Side::Center, utils::translate(::style::strings::common::import)); list = new ListView(this, style::window::default_left_margin, style::window::default_vertical_pos, style::listview::body_width_with_scroll, style::window::default_body_height, presenter->getSimContactsProvider(), listview::ScrollBarType::Fixed); emptyListIcon = new gui::Icon(this, ::style::window::default_left_margin, ::style::window::default_vertical_pos, ::style::window::default_body_width, ::style::window::default_body_height, "info_icon_W_G", utils::translate("app_settings_network_import_contacts_from_sim_card_reading")); emptyListIcon->setAlignment(Alignment::Horizontal::Center); emptyListIcon->setVisible(false); list->emptyListCallback = [this]() { emptyListIcon->setVisible(true); }; list->notEmptyListCallback = [this]() { emptyListIcon->setVisible(false); }; setFocusItem(list); } void SimContactsImportWindow::onBeforeShow(ShowMode mode, SwitchData *data) { emptyListIcon->text->setRichText( utils::translate("app_settings_network_import_contacts_from_sim_card_reading")); emptyListIcon->image->set("update_icon_W_G"); navBar->setActive(nav_bar::Side::Right, true); navBar->setActive(nav_bar::Side::Center, false); navBar->setActive(nav_bar::Side::Left, false); presenter->requestSimContacts(); } void SimContactsImportWindow::onClose(CloseReason reason) { if (reason != CloseReason::PhoneLock) { presenter->eraseProviderData(); } } bool SimContactsImportWindow::onInput(const InputEvent &inputEvent) { if (inputEvent.isKeyRelease(gui::KeyCode::KEY_LF) && !navBar->isActive(nav_bar::Side::Left)) { return false; } if (inputEvent.isKeyRelease(gui::KeyCode::KEY_ENTER) && !navBar->isActive(nav_bar::Side::Center)) { return false; } if (inputEvent.isKeyRelease(gui::KeyCode::KEY_RF) && !navBar->isActive(nav_bar::Side::Right)) { return false; } if (inputEvent.isKeyRelease(gui::KeyCode::KEY_LF) && presenter->isRequestCompleted() && onLFInputCallback) { onLFInputCallback(); return true; } if (inputEvent.isKeyRelease(gui::KeyCode::KEY_ENTER) && presenter->isRequestCompleted() && onEnterInputCallback) { onEnterInputCallback(); return true; } return AppWindow::onInput(inputEvent); } void SimContactsImportWindow::contactsReady() noexcept { navBar->setActive(nav_bar::Side::Center, true); list->rebuildList(); if (list->isEmpty()) { navBar->setActive(nav_bar::Side::Center, false); emptyListIcon->text->setRichText( utils::translate("app_settings_network_import_contacts_from_sim_card_no_contacts")); emptyListIcon->image->set("info_icon_W_G"); } else { setTitle(utils::translate("app_settings_network_import_contacts_from_sim_card")); onEnterInputCallback = [&]() { displayProgressInfo(); presenter->saveImportedContacts(); }; } } void SimContactsImportWindow::displayDuplicatesCount(unsigned int duplicatesCount) noexcept { list->rebuildList(); setTitle(utils::translate("app_settings_network_import_contacts")); emptyListIcon->text->setRichText( utils::translate("app_settings_network_import_contacts_from_sim_card_duplicates"), {{"$DUPLICATES", std::to_string(duplicatesCount)}}); emptyListIcon->image->set("info_icon_W_G"); navBar->setActive(nav_bar::Side::Right, true); navBar->setText(gui::nav_bar::Side::Center, utils::translate(::style::strings::common::show)); navBar->setText(gui::nav_bar::Side::Left, utils::translate(::style::strings::common::skip)); onLFInputCallback = [&]() { displayProgressInfo(); presenter->saveImportedContacts(); }; onEnterInputCallback = [&]() { presenter->requestDuplicates(); }; } void SimContactsImportWindow::displayDuplicates() noexcept { navBar->setText(gui::nav_bar::Side::Center, utils::translate(::style::strings::common::replace)); list->rebuildList(); setTitle(utils::translate("app_settings_network_import_contacts_duplicates")); navBar->setActive(nav_bar::Side::Right, true); onLFInputCallback = nullptr; onEnterInputCallback = [&]() { displayProgressInfo(); presenter->saveImportedContacts(); }; } void SimContactsImportWindow::contactsImported() noexcept { list->rebuildList(); setTitle(utils::translate("app_settings_network_import_contacts_from_sim_card")); emptyListIcon->text->setRichText( utils::translate("app_settings_network_import_contacts_from_sim_card_success")); emptyListIcon->image->set("success_icon_W_G"); navBar->setActive(nav_bar::Side::Right, false); navBar->setText(gui::nav_bar::Side::Center, utils::translate(::style::strings::common::ok)); navBar->setText(gui::nav_bar::Side::Left, utils::translate(::style::strings::common::contacts)); onLFInputCallback = [&]() { app::manager::Controller::sendAction(application, app::manager::actions::ShowContacts); }; onEnterInputCallback = [&]() { application->switchWindow(gui::window::name::sim_cards); }; } void SimContactsImportWindow::displayProgressInfo() { list->clear(); list->emptyListCallback(); emptyListIcon->text->setRichText( utils::translate("app_settings_network_import_contacts_from_sim_card_reading")); emptyListIcon->image->set("update_icon_W_G"); navBar->setActive(nav_bar::Side::Right, false); navBar->setActive(nav_bar::Side::Center, false); navBar->setActive(nav_bar::Side::Left, false); } } // namespace gui