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 * Dario Casalinuovo 8 */ 9#ifndef NETWORK_STATUS_VIEW_H 10#define NETWORK_STATUS_VIEW_H 11 12 13#include <Notification.h> 14#include <ObjectList.h> 15#include <View.h> 16 17#include <map> 18 19 20class BMessageRunner; 21class BNetworkInterface; 22 23 24enum { 25 kStatusUnknown = 0, 26 kStatusNoLink, 27 kStatusLinkNoConfig, 28 kStatusConnecting, 29 kStatusReady, 30 31 kStatusCount 32}; 33 34 35class NetworkStatusView : public BView { 36 public: 37 NetworkStatusView(BRect frame, int32 resizingMode, 38 bool inDeskbar = false); 39 NetworkStatusView(BMessage* archive); 40 virtual ~NetworkStatusView(); 41 42 static NetworkStatusView* Instantiate(BMessage* archive); 43 virtual status_t Archive(BMessage* archive, bool deep = true) const; 44 45 virtual void AttachedToWindow(); 46 virtual void DetachedFromWindow(); 47 48 virtual void MessageReceived(BMessage* message); 49 virtual void FrameResized(float width, float height); 50 virtual void MouseDown(BPoint where); 51 virtual void Draw(BRect updateRect); 52 53 private: 54 void _AboutRequested(); 55 void _Quit(); 56 void _Init(); 57 void _UpdateBitmaps(); 58 void _ShowConfiguration(BMessage* message); 59 int32 _DetermineInterfaceStatus( 60 const BNetworkInterface& interface); 61 void _Update(bool force = false); 62 void _OpenNetworksPreferences(); 63 64 std::map<BString, int32> 65 fInterfaceStatuses; 66 bool fInDeskbar; 67 BBitmap* fTrayIcons[kStatusCount]; 68 BBitmap* fNotifyIcons[kStatusCount]; 69}; 70 71#endif // NETWORK_STATUS_VIEW_H 72