~aleteoryx/muditaos

ref: 5e919448eb2af24c675bbad96669d2bc0a3afaf2 muditaos/module-apps/application-alarm-clock/data/AlarmsData.hpp -rw-r--r-- 1.4 KiB
5e919448 — Adam Dobrowolski [EGD-7501] Rrules presenter added 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// 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-calendar/data/OptionParser.hpp"
#include <module-db/Interface/AlarmEventRecord.hpp>
#include <SwitchData.hpp>

enum class AlarmSnooze
{
    FiveMinutes    = 5,
    TenMinutes     = 10,
    FifteenMinutes = 15,
    ThirtyMinutes  = 30
};

enum class AlarmOptionItemName
{
    Sound,
    Snooze,
    Repeat
};

enum class AlarmAction
{
    Add,
    Edit
};

enum class WeekDayIso
{
    Monday = date::Monday.iso_encoding() - 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

class AlarmRecordData : public gui::SwitchData
{
  protected:
    std::shared_ptr<AlarmEventRecord> record;

  public:
    explicit AlarmRecordData(std::shared_ptr<AlarmEventRecord> record) : record{std::move(record)}
    {}
    std::shared_ptr<AlarmEventRecord> getData()
    {
        return record;
    }
    void setData(std::shared_ptr<AlarmEventRecord> rec)
    {
        record = std::move(rec);
    }
};

class CustomRepeatValueParser
{
    std::unique_ptr<WeekDaysRepeatData> weekDayData;

  public:
    explicit CustomRepeatValueParser(uint32_t repeatValue);

    [[nodiscard]] std::string getWeekDaysText() const;
    [[nodiscard]] bool isCustomValueWeekDays() const;
    [[nodiscard]] bool isCustomValueEveryday() const;
};