mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-26 23:15:09 -05:00
85 lines
2.3 KiB
C++
85 lines
2.3 KiB
C++
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#pragma once
|
|
|
|
#include <BoxLayout.hpp>
|
|
#include <Label.hpp>
|
|
#include <utility>
|
|
|
|
namespace sys::phone_modes
|
|
{
|
|
enum class PhoneMode;
|
|
} // namespace sys::phone_modes
|
|
|
|
namespace style::window::modes
|
|
{
|
|
constexpr inline auto top_offset = 182;
|
|
constexpr inline auto bottom_offset = 210;
|
|
constexpr inline auto height = style::window_height - top_offset - bottom_offset;
|
|
constexpr inline auto width = style::window_width;
|
|
constexpr inline auto number_of_entries = 4;
|
|
namespace connected
|
|
{
|
|
constexpr inline auto title_key = "home_modes_connected";
|
|
|
|
} // namespace connected
|
|
|
|
namespace notdisturb
|
|
{
|
|
constexpr inline auto title_key = "home_modes_notdisturb";
|
|
|
|
} // namespace notdisturb
|
|
|
|
namespace offline
|
|
{
|
|
constexpr inline auto title_key = "home_modes_offline";
|
|
constexpr inline auto description_key = "home_modes_message_only";
|
|
} // namespace offline
|
|
|
|
namespace image
|
|
{
|
|
constexpr inline auto width = 55;
|
|
} // namespace image
|
|
|
|
namespace text
|
|
{
|
|
constexpr inline auto width = style::window::modes::width - style::window::modes::image::width;
|
|
} // namespace text
|
|
} // namespace style::window::modes
|
|
|
|
namespace gui
|
|
{
|
|
class ImageBox;
|
|
|
|
class ModeRow : public HBox
|
|
{
|
|
Label *label = nullptr;
|
|
ImageBox *img = nullptr;
|
|
|
|
public:
|
|
ModeRow(Item *parent = nullptr, uint32_t x = 0, uint32_t y = 0, uint32_t width = 0, uint32_t height = 0);
|
|
|
|
void addText(const std::string &text, const std::string &fontSize, uint32_t width, uint32_t height);
|
|
|
|
void update(std::pair<std::string, const bool> &¶ms);
|
|
void addImage(const std::string &imageName);
|
|
};
|
|
|
|
class ModesBox : public VBox
|
|
{
|
|
ModeRow *connected = nullptr;
|
|
ModeRow *notDisturb = nullptr;
|
|
ModeRow *offline = nullptr;
|
|
ModeRow *messageOnly = nullptr;
|
|
|
|
void addConnected();
|
|
void addNotDisturb();
|
|
void addOffline();
|
|
|
|
public:
|
|
ModesBox(Item *parent = nullptr, uint32_t x = 0, uint32_t y = 0);
|
|
void update(const sys::phone_modes::PhoneMode &phoneMode, const bool flightMode);
|
|
};
|
|
} // namespace gui
|