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