~aleteoryx/muditaos

ref: sign_test muditaos/module-db/Interface/EventRecord.hpp -rw-r--r-- 1.9 KiB
a217eeb3 — Dawid Wojtas [BH-2024] Fix lack of alarm directory after updating software 1 year, 5 months 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-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include "Record.hpp"

#include <module-db/Common/Common.hpp>
#include <Tables/Record.hpp>
#include <Tables/EventsTable.hpp>

#include <time/dateCommon.hpp>

#include <utf8/UTF8.hpp>

#include <stdint.h>
#include <string>

struct EventInfo
{
    UTF8 name;
    TimePoint startDate{TIME_POINT_INVALID};
    TimePoint endDate{TIME_POINT_INVALID};
    uint32_t duration{0};
    bool isAllDay{false};

    EventInfo() = default;
    EventInfo(const UTF8 &name, TimePoint startDate, TimePoint endDate, uint32_t duration, bool isAllDay)
        : name{name}, startDate{TimePointFloorMinutes(startDate)}, endDate{TimePointFloorMinutes(endDate)},
          duration{duration}, isAllDay{isAllDay} {};
    EventInfo(TimePoint startDate, TimePoint endDate)
        : startDate{TimePointFloorMinutes(startDate)}, endDate{TimePointFloorMinutes(endDate)} {};

    auto isValid() const -> bool;
};

struct SingleEventRecord;

struct EventRecord : public Record
{
    EventRecord() = default;
    explicit EventRecord(uint32_t id);

    virtual ~EventRecord(){};
    explicit EventRecord(EventRecord *record);

    auto isValid() const -> bool;

    virtual std::shared_ptr<EventRecord> getCopy();
};

struct SingleEventRecord : public Record, public EventInfo
{
    std::shared_ptr<EventRecord> parent;

    virtual ~SingleEventRecord() = default;

    SingleEventRecord() = default;
    SingleEventRecord(std::shared_ptr<EventRecord> parent,
                      TimePoint startDate,
                      TimePoint endDate,
                      bool wasHandledDuringCall = false)
        : EventInfo{startDate, endDate}, parent{parent}, wasHandledDuringPhoneCall(wasHandledDuringCall),
          isPreWakeUpAlreadyHandledByUser(false){};

    auto isValid() const -> bool;

    bool wasHandledDuringPhoneCall;
    bool isPreWakeUpAlreadyHandledByUser;
};