1/* 2 * Copyright 2004-2015 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 * Alexander von Gluck, <kallisti5@unixzen.com> 8 */ 9#ifndef NETWORK_WINDOW_H 10#define NETWORK_WINDOW_H 11 12 13#include <map> 14 15#include <ObjectList.h> 16#include <Window.h> 17 18#include <NetworkSettings.h> 19#include <NetworkSettingsAddOn.h> 20 21 22using namespace BNetworkKit; 23 24class BButton; 25class BMenu; 26class InterfaceListItem; 27class InterfaceView; 28 29 30enum { 31 kMsgSettingsItemUpdated = 'SIup' 32}; 33 34 35class NetworkWindow : public BWindow { 36public: 37 NetworkWindow(); 38 virtual ~NetworkWindow(); 39 40 bool QuitRequested(); 41 void MessageReceived(BMessage* message); 42 43private: 44 typedef BWindow inherited; 45 46 void _BuildProfilesMenu(BMenu* menu, int32 what); 47 void _ScanInterfaces(); 48 void _ScanAddOns(); 49 BNetworkSettingsItem* 50 _SettingsItemFor(BListItem* item); 51 void _SortItemsUnder(BListItem* item); 52 BListItem* _ListItemFor(BNetworkSettingsType type); 53 BListItem* _CreateItem(const char* label); 54 void _SelectItem(BListItem* listItem); 55 void _BroadcastSettingsUpdate(uint32 type); 56 void _BroadcastConfigurationUpdate( 57 const BMessage& message); 58 void _UpdateRevertButton(); 59 60 bool _IsReplicantInstalled(); 61 void _ShowReplicant(bool show); 62 63 static const char* _ItemName(const BListItem* item); 64 static int _CompareTopLevelListItems(const BListItem* a, 65 const BListItem* b); 66 static int _CompareListItems(const BListItem* a, 67 const BListItem* b); 68 69private: 70 typedef BObjectList<BNetworkSettingsAddOn> AddOnList; 71 typedef std::map<BString, BListItem*> ItemMap; 72 typedef std::map<BListItem*, BNetworkSettingsItem*> SettingsMap; 73 74 BNetworkSettings fSettings; 75 AddOnList fAddOns; 76 77 BOutlineListView* fListView; 78 ItemMap fInterfaceItemMap; 79 BListItem* fServicesItem; 80 BListItem* fDialUpItem; 81 BListItem* fVPNItem; 82 BListItem* fOtherItem; 83 84 SettingsMap fSettingsMap; 85 86 InterfaceView* fInterfaceView; 87 BView* fAddOnShellView; 88 89 BButton* fRevertButton; 90}; 91 92 93extern BMessenger gNetworkWindow; 94 95 96#endif // NETWORK_WINDOW_H 97