xref: /haiku/src/apps/powerstatus/ExtendedInfoWindow.h (revision bd767f5a4e51e6fb6ee3d4f81085052dfb6ee11c)
16aed176cSClemens Zeidler /*
2*bd767f5aSAxel Dörfler  * Copyright 2009, Haiku, Inc. All Rights Reserved.
36aed176cSClemens Zeidler  * Distributed under the terms of the MIT License.
46aed176cSClemens Zeidler  *
56aed176cSClemens Zeidler  * Authors:
66aed176cSClemens Zeidler  *		Clemens Zeidler, haiku@Clemens-Zeidler.de
76aed176cSClemens Zeidler  */
86aed176cSClemens Zeidler 
96aed176cSClemens Zeidler #ifndef EXTENDED_INFO_WINDOW_H
106aed176cSClemens Zeidler #define EXTENDED_INFO_WINDOW_H
116aed176cSClemens Zeidler 
12*bd767f5aSAxel Dörfler 
136aed176cSClemens Zeidler #include <ObjectList.h>
14e391ec67SClemens Zeidler #include <String.h>
156aed176cSClemens Zeidler #include <View.h>
166aed176cSClemens Zeidler #include <Window.h>
176aed176cSClemens Zeidler 
186aed176cSClemens Zeidler #include "DriverInterface.h"
196aed176cSClemens Zeidler #include "PowerStatusView.h"
206aed176cSClemens Zeidler 
216aed176cSClemens Zeidler 
22*bd767f5aSAxel Dörfler class FontString {
23e391ec67SClemens Zeidler public:
24e391ec67SClemens Zeidler 					FontString();
25e391ec67SClemens Zeidler 
26e391ec67SClemens Zeidler 	const BFont*	font;
27e391ec67SClemens Zeidler 	BString			string;
28e391ec67SClemens Zeidler };
29e391ec67SClemens Zeidler 
30e391ec67SClemens Zeidler 
31*bd767f5aSAxel Dörfler class BatteryInfoView : public BView {
326aed176cSClemens Zeidler public:
33e391ec67SClemens Zeidler 							BatteryInfoView();
34e391ec67SClemens Zeidler 							~BatteryInfoView();
356aed176cSClemens Zeidler 
366aed176cSClemens Zeidler 	virtual void			Update(battery_info& info,
376aed176cSClemens Zeidler 								acpi_extended_battery_info& extInfo);
386aed176cSClemens Zeidler 	virtual	void			Draw(BRect updateRect);
39e391ec67SClemens Zeidler 	virtual void			GetPreferredSize(float* width, float* height);
408b24b02fSClemens Zeidler 	virtual void			AttachedToWindow();
416aed176cSClemens Zeidler 
426aed176cSClemens Zeidler private:
43e391ec67SClemens Zeidler 			BSize			_MeasureString(const BString& string);
44e391ec67SClemens Zeidler 			void			_FillStringList();
45e391ec67SClemens Zeidler 			void			_AddToStringList(FontString* fontString);
46e391ec67SClemens Zeidler 			void			_ClearStringList();
47e391ec67SClemens Zeidler 
486aed176cSClemens Zeidler 			battery_info				fBatteryInfo;
496aed176cSClemens Zeidler 			acpi_extended_battery_info	fBatteryExtendedInfo;
50e391ec67SClemens Zeidler 
51e391ec67SClemens Zeidler 			BSize						fPreferredSize;
52e391ec67SClemens Zeidler 
53e391ec67SClemens Zeidler 			BObjectList<FontString>		fStringList;
54e391ec67SClemens Zeidler 			BSize						fMaxStringSize;
556aed176cSClemens Zeidler };
566aed176cSClemens Zeidler 
576aed176cSClemens Zeidler 
586aed176cSClemens Zeidler class ExtendedInfoWindow;
596aed176cSClemens Zeidler 
60*bd767f5aSAxel Dörfler class ExtPowerStatusView : public PowerStatusView {
616aed176cSClemens Zeidler public:
62*bd767f5aSAxel Dörfler 								ExtPowerStatusView(
63*bd767f5aSAxel Dörfler 									PowerStatusDriverInterface* interface,
64*bd767f5aSAxel Dörfler 									BRect frame, int32 resizingMode,
65*bd767f5aSAxel Dörfler 									int batteryID, ExtendedInfoWindow* window);
666aed176cSClemens Zeidler 
676aed176cSClemens Zeidler 	virtual	void				Draw(BRect updateRect);
686aed176cSClemens Zeidler 	virtual	void				MouseDown(BPoint where);
696aed176cSClemens Zeidler 
706aed176cSClemens Zeidler 	virtual void				Select(bool select = true);
716aed176cSClemens Zeidler 
72*bd767f5aSAxel Dörfler 	// return true if it battery is in a critical state
73*bd767f5aSAxel Dörfler 	virtual	bool				IsCritical();
746aed176cSClemens Zeidler 
756aed176cSClemens Zeidler protected:
76*bd767f5aSAxel Dörfler 	virtual void				Update(bool force = false);
776aed176cSClemens Zeidler 
786aed176cSClemens Zeidler private:
796aed176cSClemens Zeidler 			ExtendedInfoWindow*	fExtendedInfoWindow;
806aed176cSClemens Zeidler 			BatteryInfoView*	fBatteryInfoView;
816aed176cSClemens Zeidler 
826aed176cSClemens Zeidler 			bool				fSelected;
836aed176cSClemens Zeidler };
846aed176cSClemens Zeidler 
856aed176cSClemens Zeidler 
866aed176cSClemens Zeidler class ExtendedInfoWindow : public BWindow
876aed176cSClemens Zeidler {
886aed176cSClemens Zeidler public:
896aed176cSClemens Zeidler 		ExtendedInfoWindow(PowerStatusDriverInterface* interface);
906aed176cSClemens Zeidler 		~ExtendedInfoWindow();
916aed176cSClemens Zeidler 
926aed176cSClemens Zeidler 	BatteryInfoView*			GetExtendedBatteryInfoView();
936aed176cSClemens Zeidler 
946aed176cSClemens Zeidler 	void						BatterySelected(ExtPowerStatusView* view);
956aed176cSClemens Zeidler 
966aed176cSClemens Zeidler private:
976aed176cSClemens Zeidler 	PowerStatusDriverInterface* 		fDriverInterface;
986aed176cSClemens Zeidler 	BObjectList<ExtPowerStatusView>		fBatteryViewList;
996aed176cSClemens Zeidler 
1006aed176cSClemens Zeidler 	BatteryInfoView*					fBatteryInfoView;
1016aed176cSClemens Zeidler 
1026aed176cSClemens Zeidler 	ExtPowerStatusView*					fSelectedView;
1036aed176cSClemens Zeidler };
1046aed176cSClemens Zeidler 
1056aed176cSClemens Zeidler 
1066aed176cSClemens Zeidler #endif
107