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