diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/Icons.rdef b/src/tests/kits/net/preflet/InterfacesAddOn/Icons.rdef deleted file mode 100644 index 244469d65e..0000000000 --- a/src/tests/kits/net/preflet/InterfacesAddOn/Icons.rdef +++ /dev/null @@ -1,70 +0,0 @@ - -resource(0, "loop") #'ICON' array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFF008C8C8C00FFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFF008C8C8C8CD3000EFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFF008C8C8C8CD3D3000E0EFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFF0000000000000000000002FFFF" - $"FFFFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFF003F8C8C8C8C8C8C8C8C00FFFF" - $"FFFFFFFF008C8C8C8CD3D3D3000E0EFFFFFFFF00663F8C8C8C8C8C8C8C000E0E" - $"FFFFFF008C8C8C8CD3D3D5000E0EFFFFFFFFFF006666008C8C8C8C8C8C000E0E" - $"FFFF008C8C8C8C00D5D5000E0EFFFFFFFFFFFFFF00008C8C8C8C3F8C8C000E0E" - $"FFFF003F8C8C8C8C00000E0EFFFFFFFFFFFFFFFF008C8C8C8CD3663F8C000E0E" - $"FFFF00663F8C8C8C8C000EFFFFFFFFFFFFFFFF008C8C8C8CD3D366663F000E0E" - $"FFFF0066663F8C8C8C8C00FFFFFFFFFFFFFF008C8C8C8CD3D3D3006666290E0E" - $"FFFFFF0066663F8C8C8C8C00FFFFFFFFFF008C8C8C8CD3D3D3000E0066290E0E" - $"FFFFFFFF0066663F8C8C8C8C00FFFFFF008C8C8C8CD3D3D3000E0EFF00000E0E" - $"FFFFFFFFFF0066663F8C8C8C8C00FF008C8C8C8CD3D3D3000E0EFFFFFFFFFFFF" - $"FFFFFFFFFFFF0066663F8C8C8C8C008C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFF0066663F8C8C8C8C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFF0066663F8C8C8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0066663F8C8C8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFF0066663F8CD3D3D3000E0EFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFF006666D3D3D3000E0EFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFF0066D3D3000E0EFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFF0000000E0EFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" -}; - -resource(1, "generic_device") #'ICON' array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF00370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF003737370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF0037FA3737370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF0037FA37FA3737370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF00370037FA37733737370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF003700000037FAFA373737370000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF0037FA370037FA37FAFA373737370000FFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF0037FA37FA37FA0037FA3700373737370000FFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFF003721FAFA37FA0000FA370000FA373737370000FFFFFFFFFFFFFFFFFF" - $"FFFFFF003737FA3737FA3700FA373700FA37FAFA37373700000908FFFFFFFFFF" - $"FFFFFF0037FAFA37FAFA2137FA37FAFAFA37FA37FAFA3737091B1B08FFFFFFFF" - $"FFFFFF0037FA37FA37373721FA37FA37FA37FA3737FA37091B1B08FFFFFFFFFF" - $"FFFFFF003737C4C437FAFA373737FA37C437FA373721081B1B0929FFFFFFFFFF" - $"FFFFFF0037FA37C4FAFA0037FA37FA37C4C4FAFA37370808081601FFFFFFFFFF" - $"FFFFFF0037FA37FA37FA37FA373737FA37C43737FAFA0816161600FFFFFFFFFF" - $"FFFFFF00377373FA37FA37FAC437FA37FAFA3737373709160B1601FFFFFFFFFF" - $"FFFFFF0037FA37FA372137FA37C437373737FAFA733709160B1601FFFFFFFFFF" - $"FFFFFF00003737FA37FA21FA3737FA370D373737FAFA0916161601FFFFFFFFFF" - $"FFFFFF0D0D00003737FA37FAFA37FAFA0D0D3737373708160B1601FFFFFFFFFF" - $"FFFFFFFFFF0D0D0100373737FA73FA37370DFAFA373707160B1601FFFFFFFFFF" - $"FFFFFFFFFFFFFF0D0D010038FA37FA373737FA37FAFA0816161600FFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0D0D010038FA37FA37FA3737370916161601FFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFF0D0D010037FA37FA37C4370716161600FFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFF0D0D000037FA0000370816161600FFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D0D00000DFF000816161600FFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D0D0DFFFF00161616010D0DFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00161616010D0D0D0DFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D0016010D0D0D0DFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D010D0D0D0DFFFFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D0D0DFFFFFFFFFF" -}; diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesIcons.rdef b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesIcons.rdef new file mode 100644 index 0000000000..e4cc468e71 --- /dev/null +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesIcons.rdef @@ -0,0 +1,59 @@ +/* + * Copyright 2009, Haiku. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Philippe Houdoin + */ + +resource(0, "ether") #'VICN' array { + $"6E6369661402001202B824AC3806CBBA4336BA6493473BC54BC7420000FFFF00" + $"0002000202B824AC3806CBBA4336BA6493473BC54BC74200FFCC00FFFFFFCC00" + $"0002000202B824AC3806CBBA4336BA6493473BC54BC74200FF7E00FFFFFF7E00" + $"0002000202B824AC3806CBBA4336BA6493473BC54BC74200CA5A00FFFFCA5A00" + $"000500020016023399B4B75BF1375BF13399B44AD48948E8EF00B2FFE5020016" + $"02318347B546FD3546FD3183474B45EA4773A900B2FFE5020006043A40000000" + $"000000003A40004B300049D000006F8793536A7883A6A4B2BDFF7C8A94020016" + $"02307296B448A03448A03072964B41B24733780040FF800200160232EF4FB6BD" + $"0436BD0432EF4F4ADA2D48BAFA0040FF800200160238A00000000000000038A0" + $"004B340048400000BFFF8C05AF02001602000000B680003840000000004B0800" + $"46E00000CCFFFF02001602000000B810003810000000004AC00047A80000CCFF" + $"FF020016023910000000000000003910004A8E0048BD4B0080FFA30200060236" + $"EE70377E56B77E5636EE704997264AB18000FF8000FFB60D040200060238B328" + $"36361FB7483A3A00E74951A949ABFE00FFDE00FFFFA20002000603385FFB385F" + $"FBB85FFB385FFB49E80449E80100FFAE00BFE05D00FF99000002000603385FFB" + $"385FFBB85FFB385FFB49A8044A140000FFC105C1C05405FF720303020106033A" + $"42EC0000000000003985D949DFFB4840045AFFCA00B5FF8A00FDCA4700170802" + $"3151255D0606AE0B4030363A363A323E2F4F3353464A424E464A50400A0BC91D" + $"B795C983B72F5426C730B5A751254E284D27C214B8A1C00CB9AC4E3E5C300A04" + $"4D2742324A3A552F0A0451254E285630592D0A06592D5630552F4A3A4E3E5C30" + $"0A04542E572B5327502A0A08C487B893453547374E304F31532D4F294B2D0A06" + $"C983B72F582A4E2F4EB92D572BC91DB7950A044A2B4E2F4EB92D4AB7950A0454" + $"264A2B4E2F582A0A044DB72FC00CB9ACC0D8BA784FB7FB0A04C0D8BA78C0F9BA" + $"9A4F2D4FB7FB0606AE0B4A3A404440443C4831513353464A424E464A50400606" + $"AE0B4030363A363A323E2F4F315140443C4840444A3A0205483C483C473D3C39" + $"413D3E3B433B413B453B4939483A49394C3C4C3C4B3D0606FF0B3C2F3C2F3B30" + $"3A333A323A343C393A373E3B433B413B453B4939483A4939BECDB87A08022F4E" + $"34530802304C3652080230493851080231473A50080231443C4F080232423E4E" + $"150A0001001001178800040A040201101001178300040A040102100117830004" + $"0A010100301F1F01178200040A0201001001178200040A030100302121011782" + $"00040A050103000A060104000A070105000A080106000A090107000A0A010800" + $"0A0B0109000A0C010A000A0D010B000A0E010C000A0F010D000A10010E000A11" + $"010F000A130110000A1206111213141516100117810004" +}; + +resource(1, "wifi") #'VICN' array { + $"6E636966060501020106023AC13B376E9EBA3AF53D9492491C574943F200F0F7" + $"FDFFAEBFD0020106023A77ECB52AD8B7CD04BCF64E4A7F6A4A8A3F008FA0B1FF" + $"677788020106043A40000000000000003A4000494000450000D06777889C8EA5" + $"BC00FFFFFFFF8EA5BC02030203000000B9000039000000000049800046000055" + $"FF050500D2FF0606007CFF0606FF04007208080328543C2A405E0803405E3C2A" + $"5050080A3E562C4E3E4A30443C40343C3C3A37373C343932080A40564C4A3E4A" + $"48423E40443A3E3A41353E34403202043C223F22392236283625362B3C2E392E" + $"3F2E4228422B4225080328545C5A405E08033A4A5C5A505002025B585F585758" + $"5B5C575C5F5C080A0401041243B3CF00000000000043B3CFCC5D55C8B3CF0317" + $"84000417820004178100040A05030506071001178422040A0002010310011786" + $"22040A000200021001178622040A020201031001178222040A01020002100117" + $"8222040A0001041001178400040A03010400" +}; + diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp index 64ff5a5cf0..9e70c4d13a 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -182,6 +183,18 @@ InterfaceListItem::_InitIcon() { BBitmap* icon = NULL; + const char* mediaTypeName = ""; + int media = fSetting->Media(); + printf("%s media = 0x%x\n", Name(), media); + switch (IFM_TYPE(media)) { + case IFM_ETHER: + mediaTypeName = "ether"; + break; + case IFM_IEEE80211: + mediaTypeName = "wifi"; + break; + } + image_info info; if (our_image(info) != B_OK) return; @@ -195,16 +208,23 @@ InterfaceListItem::_InitIcon() return; size_t size; - const void *data = resources.LoadResource('ICON', Name(), &size); - if (!data) - data = resources.LoadResource('ICON', "generic_device", &size); + // Try specific interface icon? + const uint8* rawIcon = (const uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, Name(), &size); + if (!rawIcon) + // Not found, try interface media type? + rawIcon = (const uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, mediaTypeName, &size); + if (!rawIcon) + // Not found, try default interface icon? + rawIcon = (const uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, "wifi", &size); - if (data) { + if (rawIcon) { // Now build the bitmap - icon = new BBitmap(BRect(0, 0, 31, 31), B_CMAP8); - icon->SetBits(data, size, 0, B_CMAP8); + icon = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); + if (BIconUtils::GetVectorIcon(rawIcon, size, icon) == B_OK) + fIcon = icon; + else + delete icon; } - fIcon = icon; } // #pragma mark - @@ -311,8 +331,10 @@ InterfacesListView::_InitList() MakeEmpty(); for (uint32 i = 0; i < count; i++) { - AddItem(new InterfaceListItem(interface->ifr_name)); -// printf("Name = %s\n", interface->ifr_name); + // if (strcmp(interface->ifr_name, "loop") != 0) { + AddItem(new InterfaceListItem(interface->ifr_name)); + // printf("Name = %s\n", interface->ifr_name); + // } interface = (ifreq*)((addr_t)interface + IF_NAMESIZE + interface->ifr_addr.sa_len); } diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile b/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile index 5c1cd3cad1..62e5779270 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile +++ b/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile @@ -4,9 +4,10 @@ UseHeaders [ FDirName $(HAIKU_TOP) src tests kits net preflet ] ; UseHeaders [ FDirName $(HAIKU_TOP) src servers net ] : true ; UsePrivateHeaders net shared ; +UseLibraryHeaders agg icon ; AddResources Interfaces : - Icons.rdef + InterfacesIcons.rdef ; Addon Interfaces : @@ -18,7 +19,8 @@ Addon Interfaces : : be NetworkSetup - $(HAIKU_NETWORK_LIBS) - $(TARGET_LIBSTDC++) + $(TARGET_NETWORK_LIBS) + $(TARGET_LIBSUPC++) + libicon.a libagg.a ; diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp index e27fc3fe2c..f5a2d553a3 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp @@ -147,6 +147,9 @@ Setting::ReadConfiguration() flags = request.ifr_flags; fAuto = flags & IFF_AUTO_CONFIGURED; + + if (ioctl(fSocket, SIOCGIFMEDIA, &request, sizeof(struct ifreq)) == 0) + fMedia = request.ifr_media; // read resolv.conf for the dns. fNameservers.MakeEmpty(); diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h index 2ce5ede27a..cffb365390 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h @@ -26,19 +26,22 @@ class Setting { const char* Gateway() {return fGateway.String(); } const char* Netmask() {return fNetmask.String(); } const char* Name() {return fName.String(); } - bool AutoConfigured() {return fAuto; } + bool AutoConfigured() {return fAuto; } + int Media() { return fMedia; } BObjectList fNameservers; void ReadConfiguration(); private: - bool _PrepareRequest(struct ifreq& request); + bool _PrepareRequest(struct ifreq& request); + + int fSocket; BString fIP; BString fGateway; BString fNetmask; BString fName; - int fSocket; - bool fAuto; + bool fAuto; + int fMedia; }; #endif /* SETTINGS_H */