xref: /haiku/src/apps/powerstatus/PowerStatusView.h (revision fc7456e9b1ec38c941134ed6d01c438cf289381e)
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			fHasBattery;
70 
71 			bool			fHasNotifiedLowBattery;
72 };
73 
74 
75 class PowerStatusReplicant : public PowerStatusView {
76 public:
77 							PowerStatusReplicant(BRect frame,
78 								int32 resizingMode, bool inDeskbar = false);
79 							PowerStatusReplicant(BMessage* archive);
80 	virtual					~PowerStatusReplicant();
81 
82 	static	PowerStatusReplicant* Instantiate(BMessage* archive);
83 	virtual	status_t		Archive(BMessage* archive, bool deep = true) const;
84 
85 	virtual	void			MessageReceived(BMessage* message);
86 	virtual	void			MouseDown(BPoint where);
87 
88 private:
89 			void			_AboutRequested();
90 			void			_Init();
91 			void			_Quit();
92 
93 			status_t		_GetSettings(BFile& file, int mode);
94 			void			_LoadSettings();
95 			void			_SaveSettings();
96 
97 			void			_OpenExtendedWindow();
98 
99 private:
100 			BWindow*		fExtendedWindow;
101 			bool			fMessengerExist;
102 			BMessenger*		fExtWindowMessenger;
103 			bool			fReplicated;
104 };
105 
106 
107 #endif	// POWER_STATUS_VIEW_H
108