xref: /haiku/src/apps/powerstatus/PowerStatusView.h (revision f967e2c0c73efb25581afdc95a838f7633e8c03b)
1 /*
2  * Copyright 2006-2017, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  *		Clemens Zeidler, haiku@Clemens-Zeidler.de
8  */
9 #ifndef POWER_STATUS_VIEW_H
10 #define POWER_STATUS_VIEW_H
11 
12 
13 #include <View.h>
14 
15 #include "DriverInterface.h"
16 
17 
18 class BFile;
19 
20 
21 class PowerStatusView : public BView {
22 public:
23 							PowerStatusView(
24 								PowerStatusDriverInterface* interface,
25 								BRect frame, int32 resizingMode,
26 								int batteryID = -1, bool inDeskbar = false);
27 
28 	virtual					~PowerStatusView();
29 
30 	virtual	status_t		Archive(BMessage* archive, bool deep = true) const;
31 
32 	virtual	void			AttachedToWindow();
33 	virtual	void			DetachedFromWindow();
34 
35 	virtual	void			MessageReceived(BMessage* message);
36 	virtual	void			Draw(BRect updateRect);
37 			void			DrawTo(BView* view, BRect rect);
38 
39 
40 protected:
41 							PowerStatusView(BMessage* archive);
42 
43 	virtual void			Update(bool force = false, bool notify = true);
44 
45 			void			FromMessage(const BMessage* message);
46 			status_t		ToMessage(BMessage* message) const;
47 
48 private:
49 			void			_GetBatteryInfo(int batteryID, battery_info* info);
50 			void			_Init();
51 			void			_SetLabel(char* buffer, size_t bufferLength);
52 			void			_DrawBattery(BView* view, BRect rect);
53 			void			_NotifyLowBattery();
54 
55 protected:
56 			PowerStatusDriverInterface*	fDriverInterface;
57 
58 			bool			fShowLabel;
59 			bool			fShowTime;
60 			bool			fShowStatusIcon;
61 
62 			int				fBatteryID;
63 			bool			fInDeskbar;
64 
65 			battery_info	fBatteryInfo;
66 
67 			double			fPercent;
68 			time_t			fTimeLeft;
69 			bool			fOnline;
70 			bool			fHasBattery;
71 };
72 
73 
74 class PowerStatusReplicant : public PowerStatusView {
75 public:
76 							PowerStatusReplicant(BRect frame,
77 								int32 resizingMode, bool inDeskbar = false);
78 							PowerStatusReplicant(BMessage* archive);
79 	virtual					~PowerStatusReplicant();
80 
81 	static	PowerStatusReplicant* Instantiate(BMessage* archive);
82 	virtual	status_t		Archive(BMessage* archive, bool deep = true) const;
83 
84 	virtual	void			MessageReceived(BMessage* message);
85 	virtual	void			MouseDown(BPoint where);
86 
87 private:
88 			void			_AboutRequested();
89 			void			_Init();
90 			void			_Quit();
91 
92 			status_t		_GetSettings(BFile& file, int mode);
93 			void			_LoadSettings();
94 			void			_SaveSettings();
95 
96 			void			_OpenExtendedWindow();
97 
98 private:
99 			BWindow*		fExtendedWindow;
100 			bool			fMessengerExist;
101 			BMessenger*		fExtWindowMessenger;
102 			bool			fReplicated;
103 };
104 
105 
106 #endif	// POWER_STATUS_VIEW_H
107