// 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.hpp"
#include "widgets/BarGraph.hpp"
#include "WindowWithTimer.hpp"
#include <functional>
namespace style::window::volume
{
constexpr inline auto title_height = 33;
constexpr inline auto base_title_key = "app_popup_volume_text";
constexpr inline auto music_title_key = "app_popup_music_volume_text";
constexpr inline auto call_title_key = "app_popup_call_volume_text";
constexpr inline auto mute_title_key = "app_popup_muted_text";
namespace bar
{
constexpr inline auto volume_levels = 10;
constexpr inline auto top_offset = 179;
} // namespace bar
} // namespace style::window::volume
namespace gui
{
class VolumeWindow : public WindowWithTimer
{
using AudioContext = std::pair<audio::Profile::Type, audio::PlaybackType>;
private:
audio::Volume volume = 0;
AudioContext audioContext;
void showProperText(const AudioContext &audioContext, const audio::Volume volume) noexcept;
void showMultimediaPlayback() noexcept;
void showCalling() noexcept;
void showMuted() noexcept;
protected:
Label *volumeText = nullptr;
VBarGraph *volumeBar = nullptr;
public:
VolumeWindow(app::Application *app, const std::string &name);
void addVolumeText();
void addVolumeBar();
void onBeforeShow(ShowMode mode, SwitchData *data) override;
void rebuild() override;
void buildInterface() override;
bool onInput(const gui::InputEvent &inputEvent) override;
};
} // namespace gui