summaryrefslogtreecommitdiff
path: root/timer.c
blob: 9ec66819b3bad25546c41a7f8454a135a39ce137 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "timer.h"

cMyTime::~cMyTime(void) {
}

void cMyTime::Now() {	
	t = time(0);
	tStart = t;
	tStart = GetRounded();
	tStop = tStart + (tvguideConfig.osdHeight - tvguideConfig.headerHeight - tvguideConfig.footerHeight)/tvguideConfig.minuteHeight*60;
}

void cMyTime::AddStep(int step) {
	tStart += step*60;
	tStop  += step*60;
}

bool cMyTime::DelStep(int step) {
	if ((tStart - step*60)+30*60 < t) {
		return true;
	}
	tStart -= step*60;
	tStop -= step*60;
	return false;
}

void cMyTime::SetTime(time_t newTime) {
	tStart = newTime;
	tStop = tStart + (tvguideConfig.osdHeight - tvguideConfig.headerHeight - tvguideConfig.footerHeight)/tvguideConfig.minuteHeight*60;
}

time_t cMyTime::getPrevPrimetime(time_t current) {
	tm *st = localtime(&current);
	if (st->tm_hour < 21) {
		current -= 24 * 60* 60;
		st = localtime(&current);
	}
	st->tm_hour = 20;
	st->tm_min = 0;
	time_t primeTime = mktime(st);
	return primeTime;
}

time_t cMyTime::getNextPrimetime(time_t current){
	tm *st = localtime(&current);
	if (st->tm_hour > 19) {
		current += 24 * 60* 60;
		st = localtime(&current);
	}
	st->tm_hour = 20;
	st->tm_min = 0;
	time_t primeTime = mktime(st);
	return primeTime;
}

bool cMyTime::tooFarInPast(time_t current) {
	if (current < t) {
		return true;
	}
	return false;
}

cString cMyTime::GetCurrentTime() {
	char buf[25];
	t = time(0);
	tm *st = localtime(&t);
	//snprintf(text, sizeof(text), "%d:%02d", st->tm_hour, st->tm_min);
	if (tvguideConfig.timeFormat == e12Hours) {
		strftime(buf, sizeof(buf), "%I:%M %p", st);
	} else if (tvguideConfig.timeFormat == e24Hours)
		strftime(buf, sizeof(buf), "%H:%M", st);
	return buf;
	
}

cString cMyTime::GetDate() {
	char text[6];
	tm *st = localtime(&tStart);
	snprintf(text, sizeof(text), "%d.%d", st->tm_mday, st->tm_mon+1);
	return text;
}

cString cMyTime::GetWeekday() {
	return WeekDayName(tStart);
}

int cMyTime::GetTimelineOffset() {
	tm *st = localtime(&tStart);
	int offset = st->tm_hour*60;
	offset += st->tm_min;
	return offset;
}

time_t cMyTime::GetRounded() {
	tm *rounded = localtime ( &tStart );
	rounded->tm_sec = 0;
	if (rounded->tm_min > 29)
		rounded->tm_min = 30;
	else
		rounded->tm_min = 0;
	return mktime(rounded);
}

void cMyTime::debug() {
	esyslog("t: %s, tStart: %s, tStop: %s", *TimeString(t), *TimeString(tStart), *TimeString(tStop));
}