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