-
Notifications
You must be signed in to change notification settings - Fork 0
/
manager.cpp
63 lines (54 loc) · 1.18 KB
/
manager.cpp
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
#include "manager.h"
#include <algorithm>
bool toSort(QObject *o1, QObject *o2)
{
QDate d1 = qobject_cast<Daily*>(o1)->date();
QDate d2 = qobject_cast<Daily*>(o2)->date();
return d1 > d2;
}
Manager::Manager(DbConnection db, QObject *parent)
: QObject(parent)
, m_db(db)
{
QList<QDate> list = m_db.getDates();
for (auto it: list) {
Daily *day = new Daily(m_db, it, 50);
m_list.append(day);
}
updateToday();
}
QObject* Manager::today()
{
return m_today;
}
void Manager::setToday(QObject *today)
{
m_today = today;
qobject_cast<Daily*>(today)->init();
emit todayChanged();
}
QList<QObject*> Manager::list()
{
return m_list;
}
void Manager::setList(QList<QObject *> list)
{
m_list = list;
emit listChanged();
}
void Manager::updateToday()
{
QDate today = QDate::currentDate();
for (auto it: m_list) {
auto i = qobject_cast<Daily*>(it);
if (i->date() == today) {
setToday(i);
return;
}
}
Daily *daily = new Daily(m_db, today, 50);
m_list.append(daily);
setToday(daily);
std::sort(m_list.begin(), m_list.end(), toSort);
emit listChanged();
}