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