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