Files
MuditaOS/module-apps/application-call/windows/EnterNumberWindow.hpp
T
alek 1f7d471831 [EGD-4429] Fix gui issues in application call
Fix the persistent answer and reject labels in Call Window issue
Fix the wrong call duration issue in both Call and Calls apps
Fix the not working call ignoring issue
2021-01-18 11:16:43 +01:00

74 lines
2.4 KiB
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "application-call/ApplicationCall.hpp"
#include "application-call/widgets/StateIcons.hpp"
#include <Application.hpp>
#include <AppWindow.hpp>
#include <ContactRecord.hpp>
#include <country.hpp>
#include <gui/input/Translator.hpp>
#include <gui/widgets/BottomBar.hpp>
#include <gui/widgets/Image.hpp>
#include <gui/widgets/Label.hpp>
#include <gui/widgets/TopBar.hpp>
#include <gui/widgets/Window.hpp>
#include <phonenumbers/phonenumberutil.h>
#include <phonenumbers/asyoutypeformatter.h>
#include <memory>
#include <string>
namespace gui
{
class EnterNumberWindow : public AppWindow
{
public:
using CountryCode = utils::country::Id;
private:
using PhoneNumberUtil = i18n::phonenumbers::PhoneNumberUtil;
using Formatter = i18n::phonenumbers::AsYouTypeFormatter;
protected:
app::EnterNumberWindowInterface *interface = nullptr;
gui::Label *numberLabel = nullptr;
gui::AddContactIcon *newContactIcon = nullptr;
void setNumberLabel(const std::string num);
public:
EnterNumberWindow(app::Application *app,
app::EnterNumberWindowInterface *interface,
std::string windowName = app::window::name_enterNumber);
~EnterNumberWindow() override = default;
auto onInput(const InputEvent &inputEvent) -> bool override;
auto handleSwitchData(SwitchData *data) -> bool override;
[[nodiscard]] auto getEnteredNumber() const noexcept -> const std::string &;
void buildInterface() override;
void destroyInterface() override;
private:
CountryCode defaultCountry = utils::country::defaultCountry;
CountryCode currentCountry;
gui::KeyInputMappedTranslation translator;
PhoneNumberUtil &numberUtil;
std::unique_ptr<Formatter> formatter;
std::string formattedNumber;
std::string enteredNumber;
auto addNewContact() -> bool;
void switchFormatter(const std::string &countryCode);
void initFormatterInput(const std::string &number);
void addDigit(const std::string::value_type &digit);
void clearInput();
};
} /* namespace gui */