1 /* 2 * Copyright 2006-2009, 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 virtual void GetPreferredSize(float *width, float *height); 38 39 40 protected: 41 PowerStatusView(BMessage* archive); 42 43 virtual void Update(bool force = false); 44 45 void FromMessage(const BMessage* message); 46 status_t ToMessage(BMessage* message) const; 47 48 private: 49 void _GetBatteryInfo(battery_info* info, int batteryID); 50 void _Init(); 51 void _SetLabel(char* buffer, size_t bufferLength); 52 void _DrawBattery(BRect rect); 53 54 protected: 55 PowerStatusDriverInterface* fDriverInterface; 56 57 bool fShowLabel; 58 bool fShowTime; 59 bool fShowStatusIcon; 60 61 int fBatteryID; 62 bool fInDeskbar; 63 64 battery_info fBatteryInfo; 65 66 int32 fPercent; 67 time_t fTimeLeft; 68 bool fOnline; 69 bool fHasBattery; 70 71 BSize fPreferredSize; 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 }; 104 105 106 #endif // POWER_STATUS_VIEW_H 107