diff --git a/src/tests/kits/net/preflet/StatusAddOn/EthernetSettingsView.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.cpp similarity index 94% rename from src/tests/kits/net/preflet/StatusAddOn/EthernetSettingsView.cpp rename to src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.cpp index 6964caa1dc..ea4a58fc35 100644 --- a/src/tests/kits/net/preflet/StatusAddOn/EthernetSettingsView.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.cpp @@ -193,19 +193,19 @@ EthernetSettingsView::_ShowConfiguration(Setting* setting) fTypeMenuField->SetEnabled(setting != NULL); if (setting) { - fIPTextControl->SetText(setting->GetIP()); - fGatewayTextControl->SetText(setting->GetGateway()); - fNetMaskTextControl->SetText(setting->GetNetmask()); + fIPTextControl->SetText(setting->IP()); + fGatewayTextControl->SetText(setting->Gateway()); + fNetMaskTextControl->SetText(setting->Netmask()); BMenuItem* item; - if (setting->GetAutoConfigure() == true) + if (setting->AutoConfigured() == true) item = fTypeMenuField->Menu()->FindItem("DHCP"); else item = fTypeMenuField->Menu()->FindItem("Static"); if (item) item->SetMarked(true); - enableControls = setting->GetAutoConfigure() == false; + enableControls = setting->AutoConfigured() == false; if (setting->fNameservers.CountItems() >= 2) { fSecondaryDNSTextControl->SetText( @@ -219,7 +219,7 @@ EthernetSettingsView::_ShowConfiguration(Setting* setting) } //We don't want to enable loop - if (strcmp(fCurrentSettings->GetName(), "loop") == 0) { + if (strcmp(fCurrentSettings->Name(), "loop") == 0) { _EnableTextControls(false); fTypeMenuField->SetEnabled(false); } else @@ -268,8 +268,8 @@ EthernetSettingsView::_SaveConfiguration() _ApplyControlsToConfiguration(); _SaveDNSConfiguration(); _SaveAdaptersConfiguration(); - if (fCurrentSettings->GetAutoConfigure()) - _TriggerAutoConfig(fCurrentSettings->GetName()); + if (fCurrentSettings->AutoConfigured()) + _TriggerAutoConfig(fCurrentSettings->Name()); } @@ -305,7 +305,7 @@ EthernetSettingsView::_SaveAdaptersConfiguration() return; FILE* fp = NULL; - if (fCurrentSettings->GetAutoConfigure()) + if (fCurrentSettings->AutoConfigured()) return; if (fp == NULL) { @@ -317,11 +317,11 @@ EthernetSettingsView::_SaveAdaptersConfiguration() } } - fprintf(fp, "interface %s {\n\t\taddress {\n",fCurrentSettings->GetName()); + fprintf(fp, "interface %s {\n\t\taddress {\n",fCurrentSettings->Name()); fprintf(fp, "\t\t\tfamily\tinet\n"); - fprintf(fp, "\t\t\taddress\t%s\n",fCurrentSettings->GetIP()); - fprintf(fp, "\t\t\tgateway\t%s\n",fCurrentSettings->GetGateway()); - fprintf(fp, "\t\t\tmask\t%s\n",fCurrentSettings->GetNetmask()); + fprintf(fp, "\t\t\taddress\t%s\n",fCurrentSettings->IP()); + fprintf(fp, "\t\t\tgateway\t%s\n",fCurrentSettings->Gateway()); + fprintf(fp, "\t\t\tmask\t%s\n",fCurrentSettings->Netmask()); fprintf(fp, "\t\t}\n}\n\n"); if (fp) { @@ -445,7 +445,7 @@ EthernetSettingsView::MessageReceived(BMessage* message) case kMsgChange: fErrorMessage->SetText(""); //We don't want to enable loop - if (strcmp(fCurrentSettings->GetName(), "loop") == 0) + if (strcmp(fCurrentSettings->Name(), "loop") == 0) fApplyButton->SetEnabled(false); else fApplyButton->SetEnabled(true); diff --git a/src/tests/kits/net/preflet/StatusAddOn/EthernetSettingsView.h b/src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.h similarity index 100% rename from src/tests/kits/net/preflet/StatusAddOn/EthernetSettingsView.h rename to src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.h diff --git a/src/tests/kits/net/preflet/StatusAddOn/Icons.rdef b/src/tests/kits/net/preflet/InterfacesAddOn/Icons.rdef similarity index 100% rename from src/tests/kits/net/preflet/StatusAddOn/Icons.rdef rename to src/tests/kits/net/preflet/InterfacesAddOn/Icons.rdef diff --git a/src/tests/kits/net/preflet/StatusAddOn/NetworkStatusAddOn.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp similarity index 60% rename from src/tests/kits/net/preflet/StatusAddOn/NetworkStatusAddOn.cpp rename to src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp index 02e05a70e6..3b3639c4b5 100644 --- a/src/tests/kits/net/preflet/StatusAddOn/NetworkStatusAddOn.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp @@ -13,32 +13,30 @@ */ -#include "NetworkStatusAddOn.h" - -#include - -#include +#include "InterfacesAddOn.h" +#include "InterfacesListView.h" +#include "NetworkWindow.h" #include -#include #include #include -#include "InterfaceStatusItem.h" -#include "NetworkWindow.h" + NetworkSetupAddOn* get_nth_addon(image_id image, int index) { if (index == 0) - return new NetworkStatusAddOn(image); + return new InterfacesAddOn(image); return NULL; } // #pragma mark - -NetworkStatusAddOn::NetworkStatusAddOn(image_id image) + + +InterfacesAddOn::InterfacesAddOn(image_id image) : NetworkSetupAddOn(image), BBox(BRect(0, 0, 0, 0), NULL, B_FOLLOW_ALL, B_NAVIGABLE_JUMP, B_NO_BORDER) @@ -46,20 +44,20 @@ NetworkStatusAddOn::NetworkStatusAddOn(image_id image) } -NetworkStatusAddOn::~NetworkStatusAddOn() +InterfacesAddOn::~InterfacesAddOn() { } const char* -NetworkStatusAddOn::Name() +InterfacesAddOn::Name() { - return "Overview"; + return "Interfaces"; } BView* -NetworkStatusAddOn::CreateView(BRect *bounds) +InterfacesAddOn::CreateView(BRect *bounds) { float w, h; BRect r = *bounds; @@ -77,8 +75,7 @@ NetworkStatusAddOn::CreateView(BRect *bounds) rlv.bottom -= 72; rlv.InsetBy(2, 2); rlv.right -= B_V_SCROLL_BAR_WIDTH; - fListview = new BListView(rlv, NULL, B_SINGLE_SELECTION_LIST, - B_FOLLOW_ALL_SIDES); + fListview = new InterfacesListView(rlv, "interfaces", B_FOLLOW_ALL_SIDES); fListview->SetSelectionMessage(new BMessage(INTERFACE_SELECTED_MSG)); fListview->SetInvocationMessage(new BMessage(CONFIGURE_INTERFACE_MSG)); AddChild(new BScrollView(NULL, fListview, B_FOLLOW_ALL_SIDES, B_WILL_DRAW @@ -102,16 +99,13 @@ NetworkStatusAddOn::CreateView(BRect *bounds) fOnOff->Hide(); AddChild(fOnOff); - fSocket = socket(AF_INET, SOCK_DGRAM, 0); - _LookupDevices(); - *bounds = Bounds(); return this; } void -NetworkStatusAddOn::AttachedToWindow() +InterfacesAddOn::AttachedToWindow() { fListview->SetTarget(this); fConfigure->SetTarget(this); @@ -121,19 +115,16 @@ NetworkStatusAddOn::AttachedToWindow() void -NetworkStatusAddOn::MessageReceived(BMessage* msg) +InterfacesAddOn::MessageReceived(BMessage* msg) { int nr = fListview->CurrentSelection(); - InterfaceStatusItem *item = NULL; + InterfaceListItem *item = NULL; if(nr != -1) { - item = dynamic_cast(fListview->ItemAt(nr)); + item = dynamic_cast(fListview->ItemAt(nr)); } switch (msg->what) { case INTERFACE_SELECTED_MSG: { - if (!item) - break; - fConfigure->SetEnabled(item != NULL); fOnOff->SetEnabled(item != NULL); if (item == NULL) { @@ -167,40 +158,3 @@ NetworkStatusAddOn::MessageReceived(BMessage* msg) BBox::MessageReceived(msg); } } - - -status_t -NetworkStatusAddOn::_LookupDevices() -{ - // iterate over all interfaces and retrieve minimal status - ifconf config; - config.ifc_len = sizeof(config.ifc_value); - if (ioctl(fSocket, SIOCGIFCOUNT, &config, sizeof(struct ifconf)) < 0) - return B_ERROR; - - uint32 count = (uint32)config.ifc_value; - if (count == 0) - return B_ERROR; - - void* buffer = malloc(count * sizeof(struct ifreq)); - if (buffer == NULL) - return B_ERROR; - - MemoryDeleter deleter(buffer); - - config.ifc_len = count * sizeof(struct ifreq); - config.ifc_buf = buffer; - if (ioctl(fSocket, SIOCGIFCONF, &config, sizeof(struct ifconf)) < 0) - return B_ERROR; - - ifreq* interface = (ifreq*)buffer; - fListview->MakeEmpty(); - - for (uint32 i = 0; i < count; i++) { - fListview->AddItem(new InterfaceStatusItem(interface->ifr_name, this)); -// printf("Name = %s\n", interface->ifr_name); - interface = (ifreq*)((addr_t)interface + IF_NAMESIZE - + interface->ifr_addr.sa_len); - } - return B_OK; -} diff --git a/src/tests/kits/net/preflet/StatusAddOn/NetworkStatusAddOn.h b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.h similarity index 55% rename from src/tests/kits/net/preflet/StatusAddOn/NetworkStatusAddOn.h rename to src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.h index 21111c6824..8317a13cdd 100644 --- a/src/tests/kits/net/preflet/StatusAddOn/NetworkStatusAddOn.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.h @@ -8,8 +8,8 @@ */ -#ifndef NETWORKSTATUSADDON_H -#define NETWORKSTATUSADDON_H +#ifndef INTERFACES_ADDON_H +#define INTERFACES_ADDON_H #include #include @@ -17,31 +17,28 @@ #include "NetworkSetupAddOn.h" -class NetworkStatusAddOn : public NetworkSetupAddOn, public BBox +class InterfacesAddOn : public NetworkSetupAddOn, public BBox { public: - NetworkStatusAddOn(image_id addon_image); - ~NetworkStatusAddOn(); + InterfacesAddOn(image_id addon_image); + ~InterfacesAddOn(); const char* Name(); BView* CreateView(BRect *bounds); - enum { - INTERFACE_SELECTED_MSG = 'ifce', - CONFIGURE_INTERFACE_MSG = 'conf', - ONOFF_INTERFACE_MSG = 'onof' - }; + enum { + INTERFACE_SELECTED_MSG = 'ifce', + CONFIGURE_INTERFACE_MSG = 'conf', + ONOFF_INTERFACE_MSG = 'onof' + }; void AttachedToWindow(); void MessageReceived(BMessage* msg); private: - status_t _LookupDevices(); - BListView* fListview; BButton* fConfigure; BButton* fOnOff; - int fSocket; }; -#endif /*NETWORKSTATUSADDON_H*/ +#endif /*INTERFACES_ADDON_H*/ diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp new file mode 100644 index 0000000000..64ff5a5cf0 --- /dev/null +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp @@ -0,0 +1,329 @@ +/* + * Copyright 2004-2009 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Philippe Houdoin + * Fredrik Modéen + */ + + +#include "InterfacesListView.h" +#include "Setting.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + + + +class SocketOpener { +public: + SocketOpener() + { + fSocket = socket(AF_INET, SOCK_DGRAM, 0); + } + + ~SocketOpener() + { + close(fSocket); + } + + status_t InitCheck() + { + return fSocket >= 0 ? B_OK : B_ERROR; + } + + operator int() const + { + return fSocket; + } + +private: + int fSocket; +}; + + + + +// #pragma mark - + + +status_t +our_image(image_info& image) +{ + int32 cookie = 0; + while (get_next_image_info(B_CURRENT_TEAM, &cookie, &image) == B_OK) { + if ((char *)our_image >= (char *)image.text + && (char *)our_image <= (char *)image.text + image.text_size) + return B_OK; + } + + return B_ERROR; +} + + +InterfaceListItem::InterfaceListItem(const char* name) + : + BListItem(0, false), + fEnabled(true), + fIcon(NULL), + fSetting(new Setting(name)) +{ + _InitIcon(); +} + + +InterfaceListItem::~InterfaceListItem() +{ + delete fIcon; +} + + +void InterfaceListItem::Update(BView* owner, const BFont* font) +{ + BListItem::Update(owner,font); + font_height height; + font->GetHeight(&height); + + // TODO: take into account icon height, if he's taller... + SetHeight((height.ascent+height.descent+height.leading) * 3.0 + 8); +} + + +void +InterfaceListItem::DrawItem(BView* owner, BRect /*bounds*/, bool complete) +{ + BListView* list = dynamic_cast(owner); + if (!list) + return; + + font_height height; + BFont font; + owner->GetFont(&font); + font.GetHeight(&height); + float fntheight = height.ascent+height.descent+height.leading; + + BRect bounds = list->ItemFrame(list->IndexOf(this)); + + rgb_color oldviewcolor = owner->ViewColor(); + rgb_color oldlowcolor = owner->LowColor(); + rgb_color oldcolor = owner->HighColor(); + + rgb_color color = oldviewcolor; + if ( IsSelected() ) + color = tint_color(color, B_HIGHLIGHT_BACKGROUND_TINT); + + owner->SetViewColor( color ); + owner->SetHighColor( color ); + owner->SetLowColor( color ); + owner->FillRect(bounds); + + owner->SetViewColor( oldviewcolor); + owner->SetLowColor( oldlowcolor ); + owner->SetHighColor( oldcolor ); + + BPoint iconPt = bounds.LeftTop() + BPoint(4,4); + BPoint namePt = iconPt + BPoint(32+8, fntheight); + BPoint driverPt = iconPt + BPoint(32+8, fntheight*2); + BPoint commentPt = iconPt + BPoint(32+8, fntheight*3); + + drawing_mode mode = owner->DrawingMode(); + if (fEnabled) + owner->SetDrawingMode(B_OP_OVER); + else { + owner->SetDrawingMode(B_OP_ALPHA); + owner->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_OVERLAY); + owner->SetHighColor(0, 0, 0, 32); + } + + owner->DrawBitmapAsync(fIcon, iconPt); + + if (!fEnabled) + owner->SetHighColor(tint_color(oldcolor, B_LIGHTEN_1_TINT)); + + owner->SetFont(be_bold_font); + owner->DrawString(Name(), namePt); + owner->SetFont(be_plain_font); + + if (fEnabled) { + BString str("Enabled, IPv4 address: "); + str << fSetting->IP(); + owner->DrawString(str.String(), driverPt); + if (fSetting->AutoConfigured()) + owner->DrawString("DHCP enabled", commentPt); + else + owner->DrawString("DHCP disabled, use static IP address", commentPt); + + + } else + owner->DrawString("Disabled.", driverPt); + + owner->SetHighColor(oldcolor); + owner->SetDrawingMode(mode); +} + + +void +InterfaceListItem::_InitIcon() +{ + BBitmap* icon = NULL; + + image_info info; + if (our_image(info) != B_OK) + return; + + BFile file(info.name, B_READ_ONLY); + if (file.InitCheck() < B_OK) + return; + + BResources resources(&file); + if (resources.InitCheck() < B_OK) + return; + + size_t size; + const void *data = resources.LoadResource('ICON', Name(), &size); + if (!data) + data = resources.LoadResource('ICON', "generic_device", &size); + + if (data) { + // Now build the bitmap + icon = new BBitmap(BRect(0, 0, 31, 31), B_CMAP8); + icon->SetBits(data, size, 0, B_CMAP8); + } + fIcon = icon; +} + +// #pragma mark - + + +InterfacesListView::InterfacesListView(BRect rect, const char* name, uint32 resizingMode) + : BListView(rect, name, B_SINGLE_SELECTION_LIST, resizingMode) +{ +} + + +InterfacesListView::~InterfacesListView() +{ +} + + +void +InterfacesListView::AttachedToWindow() +{ + BListView::AttachedToWindow(); + + _InitList(); + + start_watching_network( + B_WATCH_NETWORK_INTERFACE_CHANGES | B_WATCH_NETWORK_LINK_CHANGES, this); +} + + +void +InterfacesListView::DetachedFromWindow() +{ + BListView::DetachedFromWindow(); + + stop_watching_network(this); + + // free all items, they will be retrieved again in AttachedToWindow() + for (int32 i = CountItems(); i-- > 0;) { + delete ItemAt(i); + } + MakeEmpty(); +} + + +void +InterfacesListView::MessageReceived(BMessage* message) +{ + switch (message->what) { + case B_NETWORK_MONITOR: + message->PrintToStream(); + _UpdateList(); + break; + + default: + BListView::MessageReceived(message); + } +} + + +InterfaceListItem * +InterfacesListView::FindItem(const char* name) +{ + for (int32 i = CountItems(); i-- > 0;) { + InterfaceListItem* item = dynamic_cast(ItemAt(i)); + if (item == NULL) + continue; + + if (strcmp(item->Name(), name) == 0) + return item; + } + + return NULL; +} + + +status_t +InterfacesListView::_InitList() +{ + SocketOpener socket; + if (socket.InitCheck() != B_OK) + return B_ERROR; + + // iterate over all interfaces and retrieve minimal status + ifconf config; + config.ifc_len = sizeof(config.ifc_value); + if (ioctl(socket, SIOCGIFCOUNT, &config, sizeof(struct ifconf)) < 0) + return B_ERROR; + + uint32 count = (uint32)config.ifc_value; + if (count == 0) + return B_ERROR; + + void* buffer = malloc(count * sizeof(struct ifreq)); + if (buffer == NULL) + return B_ERROR; + + MemoryDeleter deleter(buffer); + + config.ifc_len = count * sizeof(struct ifreq); + config.ifc_buf = buffer; + if (ioctl(socket, SIOCGIFCONF, &config, sizeof(struct ifconf)) < 0) + return B_ERROR; + + ifreq* interface = (ifreq*)buffer; + MakeEmpty(); + + for (uint32 i = 0; i < count; i++) { + 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); + } + return B_OK; +} + + +status_t +InterfacesListView::_UpdateList() +{ + // TODO + return B_OK; +} + diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h new file mode 100644 index 0000000000..a487f7edfc --- /dev/null +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h @@ -0,0 +1,67 @@ +/* + * Copyright 2004-2009 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Philippe Houdoin + * Fredrik Modéen + */ + + +#ifndef INTERFACES_LIST_VIEW_H +#define INTERFACES_LIST_VIEW_H + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "Setting.h" + +class InterfaceListItem : public BListItem { +public: + InterfaceListItem(const char* name); + ~InterfaceListItem(); + + void DrawItem(BView* owner, BRect bounds, bool complete); + void Update(BView* owner, const BFont* font); + + inline const char* Name() { return fSetting->Name(); } + inline bool Enabled() { return fEnabled; } + inline void SetEnabled(bool enable){ fEnabled = enable; } + inline Setting* GetSetting() { return fSetting; } + +private: + void _InitIcon(); + + bool fEnabled; + BBitmap* fIcon; + Setting* fSetting; +}; + + +class InterfacesListView : public BListView { +public: + InterfacesListView(BRect rect, const char* name, + uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP); + virtual ~InterfacesListView(); + + InterfaceListItem* FindItem(const char* name); + +protected: + virtual void AttachedToWindow(); + virtual void DetachedFromWindow(); + + virtual void MessageReceived(BMessage* message); + +private: + status_t _InitList(); + status_t _UpdateList(); +}; + +#endif /*INTERFACES_LIST_VIEW_H*/ diff --git a/src/tests/kits/net/preflet/StatusAddOn/Jamfile b/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile similarity index 60% rename from src/tests/kits/net/preflet/StatusAddOn/Jamfile rename to src/tests/kits/net/preflet/InterfacesAddOn/Jamfile index aa4699c2fc..5c1cd3cad1 100644 --- a/src/tests/kits/net/preflet/StatusAddOn/Jamfile +++ b/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile @@ -1,17 +1,17 @@ -SubDir HAIKU_TOP src tests kits net preflet StatusAddOn ; +SubDir HAIKU_TOP src tests kits net preflet InterfacesAddOn ; UseHeaders [ FDirName $(HAIKU_TOP) src tests kits net preflet ] ; UseHeaders [ FDirName $(HAIKU_TOP) src servers net ] : true ; -UsePrivateHeaders shared ; +UsePrivateHeaders net shared ; -AddResources Overview : +AddResources Interfaces : Icons.rdef ; -Addon Overview : - NetworkStatusAddOn.cpp - InterfaceStatusItem.cpp +Addon Interfaces : + InterfacesAddOn.cpp + InterfacesListView.cpp Setting.cpp NetworkWindow.cpp EthernetSettingsView.cpp diff --git a/src/tests/kits/net/preflet/StatusAddOn/NetworkWindow.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp similarity index 96% rename from src/tests/kits/net/preflet/StatusAddOn/NetworkWindow.cpp rename to src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp index 2417f6c1dd..9ee801e775 100644 --- a/src/tests/kits/net/preflet/StatusAddOn/NetworkWindow.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp @@ -24,7 +24,7 @@ NetworkWindow::NetworkWindow(Setting* setting) fEthernetView = new EthernetSettingsView(setting); GetLayout()->AddView(fEthernetView); - SetTitle(setting->GetName()); + SetTitle(setting->Name()); } diff --git a/src/tests/kits/net/preflet/StatusAddOn/NetworkWindow.h b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.h similarity index 100% rename from src/tests/kits/net/preflet/StatusAddOn/NetworkWindow.h rename to src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.h diff --git a/src/tests/kits/net/preflet/StatusAddOn/Setting.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp similarity index 100% rename from src/tests/kits/net/preflet/StatusAddOn/Setting.cpp rename to src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp diff --git a/src/tests/kits/net/preflet/StatusAddOn/Setting.h b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h similarity index 75% rename from src/tests/kits/net/preflet/StatusAddOn/Setting.h rename to src/tests/kits/net/preflet/InterfacesAddOn/Setting.h index 4095faf3ef..2ce5ede27a 100644 --- a/src/tests/kits/net/preflet/StatusAddOn/Setting.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h @@ -22,11 +22,11 @@ class Setting { void SetNetmask(BString ip) {fNetmask = ip; } void SetAutoConfigure(bool t) {fAuto = t; } - const char* GetIP() {return fIP.String(); } - const char* GetGateway() {return fGateway.String(); } - const char* GetNetmask() {return fNetmask.String(); } - const char* GetName() {return fName.String(); } - bool GetAutoConfigure() {return fAuto; } + const char* IP() {return fIP.String(); } + const char* Gateway() {return fGateway.String(); } + const char* Netmask() {return fNetmask.String(); } + const char* Name() {return fName.String(); } + bool AutoConfigured() {return fAuto; } BObjectList fNameservers; void ReadConfiguration(); diff --git a/src/tests/kits/net/preflet/StatusAddOn/StatusAddOn.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/StatusAddOn.cpp similarity index 100% rename from src/tests/kits/net/preflet/StatusAddOn/StatusAddOn.cpp rename to src/tests/kits/net/preflet/InterfacesAddOn/StatusAddOn.cpp diff --git a/src/tests/kits/net/preflet/Jamfile b/src/tests/kits/net/preflet/Jamfile index a1a5f60940..a7942b8d92 100644 --- a/src/tests/kits/net/preflet/Jamfile +++ b/src/tests/kits/net/preflet/Jamfile @@ -8,7 +8,7 @@ SimpleTest NetworkSetup : : be root $(TARGET_LIBSTDC++) ; -SubInclude HAIKU_TOP src tests kits net preflet StatusAddOn ; +SubInclude HAIKU_TOP src tests kits net preflet InterfacesAddOn ; SubInclude HAIKU_TOP src tests kits net preflet ServicesAddOn ; SubInclude HAIKU_TOP src tests kits net preflet DummyAddOn ; SubInclude HAIKU_TOP src tests kits net preflet MultipleAddOns ; diff --git a/src/tests/kits/net/preflet/NetworkSetupWindow.cpp b/src/tests/kits/net/preflet/NetworkSetupWindow.cpp index 58b10693ed..605ba1969a 100644 --- a/src/tests/kits/net/preflet/NetworkSetupWindow.cpp +++ b/src/tests/kits/net/preflet/NetworkSetupWindow.cpp @@ -15,8 +15,8 @@ // -------------------------------------------------------------- NetworkSetupWindow::NetworkSetupWindow(const char *title) : - BWindow(BRect(100, 100, 600, 600), title, B_TITLED_WINDOW - , B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE) + BWindow(BRect(100, 100, 600, 600), title, B_TITLED_WINDOW, + B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS) { BMenu *show_menu; BMenu *profiles_menu; @@ -250,7 +250,7 @@ NetworkSetupWindow::_BuildProfilesMenu(BMenu* menu, int32 msg_what) menu->SetRadioMode(true); - BDirectory dir("/etc/network/profiles"); + BDirectory dir("/boot/common/settings/network/profiles"); if (dir.InitCheck() == B_OK) { BEntry entry; diff --git a/src/tests/kits/net/preflet/StatusAddOn/InterfaceStatusItem.cpp b/src/tests/kits/net/preflet/StatusAddOn/InterfaceStatusItem.cpp deleted file mode 100644 index 64f09417c2..0000000000 --- a/src/tests/kits/net/preflet/StatusAddOn/InterfaceStatusItem.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright 2004-2009 Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Philippe Houdoin - * Fredrik Modéen - */ - -#include "InterfaceStatusItem.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "NetworkSetupAddOn.h" -#include "Setting.h" - -InterfaceStatusItem::InterfaceStatusItem(const char* name, NetworkStatusAddOn* addon) - : - BListItem(0, false), - fIcon(NULL), - fSetting(new Setting(name)), - fAddon(addon) -{ - fEnabled = true; - _InitIcon(); -} - - -InterfaceStatusItem::~InterfaceStatusItem() -{ - delete fIcon; -} - - -void InterfaceStatusItem::Update(BView* owner, const BFont* font) -{ - BListItem::Update(owner,font); - font_height height; - font->GetHeight(&height); - - // TODO: take into account icon height, if he's taller... - SetHeight((height.ascent+height.descent+height.leading) * 3.0 + 8); -} - - -void -InterfaceStatusItem::DrawItem(BView* owner, BRect /*bounds*/, bool complete) -{ - BListView* list = dynamic_cast(owner); - if (!list) - return; - - font_height height; - BFont font; - owner->GetFont(&font); - font.GetHeight(&height); - float fntheight = height.ascent+height.descent+height.leading; - - BRect bounds = list->ItemFrame(list->IndexOf(this)); - - rgb_color oldviewcolor = owner->ViewColor(); - rgb_color oldlowcolor = owner->LowColor(); - rgb_color oldcolor = owner->HighColor(); - - rgb_color color = oldviewcolor; - if ( IsSelected() ) - color = tint_color(color, B_HIGHLIGHT_BACKGROUND_TINT); - - owner->SetViewColor( color ); - owner->SetHighColor( color ); - owner->SetLowColor( color ); - owner->FillRect(bounds); - - owner->SetViewColor( oldviewcolor); - owner->SetLowColor( oldlowcolor ); - owner->SetHighColor( oldcolor ); - - BPoint iconPt = bounds.LeftTop() + BPoint(4,4); - BPoint namePt = iconPt + BPoint(32+8, fntheight); - BPoint driverPt = iconPt + BPoint(32+8, fntheight*2); - BPoint commentPt = iconPt + BPoint(32+8, fntheight*3); - - drawing_mode mode = owner->DrawingMode(); - if (fEnabled) - owner->SetDrawingMode(B_OP_OVER); - else { - owner->SetDrawingMode(B_OP_ALPHA); - owner->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_OVERLAY); - owner->SetHighColor(0, 0, 0, 32); - } - - owner->DrawBitmapAsync(fIcon, iconPt); - - if (!fEnabled) - owner->SetHighColor(tint_color(oldcolor, B_LIGHTEN_2_TINT)); - - owner->SetFont(be_bold_font); - owner->DrawString(Name(), namePt); - owner->SetFont(be_plain_font); - - if (fEnabled) { - BString str("Enabled, IPv4 address: "); - str << fSetting->GetIP(); - owner->DrawString(str.String(), driverPt); - if (fSetting->GetAutoConfigure()) - owner->DrawString("DHCP enabled", commentPt); - else - owner->DrawString("DHCP disabled, use static IP address", commentPt); - - - } else - owner->DrawString("Disabled.", driverPt); - - owner->SetHighColor(oldcolor); - owner->SetDrawingMode(mode); -} - - -void -InterfaceStatusItem::_InitIcon() -{ - BBitmap* icon = NULL; - - BResources *resources = fAddon->Resources(); - if (resources) { - size_t size; - const void *data = resources->LoadResource('ICON', Name(), &size); - if (!data) - data = resources->LoadResource('ICON', "generic_device", &size); - - if (data) { - // Now build the bitmap - icon = new BBitmap(BRect(0, 0, 31, 31), B_CMAP8); - icon->SetBits(data, size, 0, B_CMAP8); - } - } - fIcon = icon; -} diff --git a/src/tests/kits/net/preflet/StatusAddOn/InterfaceStatusItem.h b/src/tests/kits/net/preflet/StatusAddOn/InterfaceStatusItem.h deleted file mode 100644 index 8844c4762b..0000000000 --- a/src/tests/kits/net/preflet/StatusAddOn/InterfaceStatusItem.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2004-2009 Haiku Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Philippe Houdoin - * Fredrik Modéen - */ - - -#ifndef INTERFACESTATUSITEM_H -#define INTERFACESTATUSITEM_H - -#include -#include -#include - -#include -#include -#include -#include - -#include "NetworkStatusAddOn.h" -#include "Setting.h" - -class InterfaceStatusItem : public BListItem -{ - public: - InterfaceStatusItem(const char* name, NetworkStatusAddOn* addon); - ~InterfaceStatusItem(); - - void DrawItem(BView* owner, BRect bounds, bool complete); - void Update(BView* owner, const BFont* font); - - inline const char* Name() { return fSetting->GetName(); } - inline bool Enabled() { return fEnabled; } - inline void SetEnabled(bool enable){ fEnabled = enable; } - inline Setting* GetSetting() { return fSetting; } - - private: - void _InitIcon(); - - bool fEnabled; - BBitmap* fIcon; - Setting* fSetting; - NetworkStatusAddOn* fAddon; -}; -#endif /*INTERFACESTATUSITEM_H*/