summaryrefslogtreecommitdiff
path: root/metawatch/metawatchdigital.h
blob: 3648160ac4c821356f5727bb479ec5c6c45581f6 (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
#ifndef METAWATCHDIGITAL_H
#define METAWATCHDIGITAL_H

#include "metawatch.h"

namespace sowatch
{

class MetaWatchDigital : public MetaWatch
{
    Q_OBJECT
public:
	explicit MetaWatchDigital(ConfigKey *settings, QObject *parent = 0);

	static const int screenWidth = 96;
	static const int screenHeight = 96;
	static const int systemAreaHeight = 30;

	int metric(PaintDeviceMetric metric) const;

	QString model() const;

	void updateNotificationCount(Notification::Type type, int count);
	void updateWeather(WeatherNotification *weather);

	void displayIdleScreen();
	void displayNotification(Notification *notification);
	void displayApplication();

	void clear(Mode mode, bool black = false);
	void update(Mode mode, const QList<QRect>& rects = QList<QRect>());

protected:
	void handleWatchConnected();

private:
	// Idle screen: notifications unread count
	ushort _nMails, _nCalls, _nIms, _nSms, _nMms;
	// Idle screen: weather information
	WeatherNotification::WeatherType _wForecast;
	QString _wBody;
	short _wTemperature;
	bool _wMetric;

	void renderIdleScreen();
	void renderIdleWeather();
	QImage iconForWeather(WeatherNotification::WeatherType w);
	void renderIdleCounts();

	void renderNotification(Notification *n);
	QImage iconForNotification(const Notification *n);
};

}

#endif // METAWATCHDIGITAL_H