// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include #include "BasePresenter.hpp" namespace app::call { class CallWindowContract { public: class View { public: virtual void updateDuration(const UTF8 &text, bool isVisible = true) = 0; virtual void updateEnteredNumber(const char &text, bool isVisible = true) = 0; virtual void setEnteredNumberVisible(bool isVisible) = 0; virtual void refreshWindow() = 0; virtual void setNavBarForActiveCall() = 0; virtual void setNavBarForIncomingCall() = 0; virtual void clearNavBar() = 0; virtual void setIncomingCallLayout(bool isValidCallerId) = 0; virtual void setActiveCallLayout() = 0; virtual void setCallEndedLayout(bool delayedClose = true) = 0; virtual void updateNumber(const UTF8 &text) = 0; virtual gui::SpeakerIconState getSpeakerIconState() = 0; virtual void setSpeakerIconState(const gui::SpeakerIconState &icon) = 0; virtual ~View() noexcept = default; }; class Presenter : public BasePresenter { public: Presenter(std::shared_ptr callModel); ~Presenter() noexcept override; void handleCallDurationChange(); void handleCallStateChange(); void buildLayout(); bool handleLeftButton(); bool handleRightButton(); bool handleHeadsetOk(); bool handleDigitButton(const uint32_t &digit); void muteCall(); void unmuteCall(); void turnLoudspeakerOn(); void turnLoudspeakerOff(); void hangUpCall(); void sendSms(const UTF8 &smsBody); utils::PhoneNumber getPhoneNumber(); void handleDelayedViewClose(); void processCurrentRouting(const audio::Profile::Type &routingType); void attachCallbacks(); void clearModel(); bool isCallInProgress(); private: std::shared_ptr model; UTF8 getCallerId(); bool isIncomingCall(); bool isProvidedCharValid(const char digitChar); }; }; } // namespace app::call