Author: axeld Date: 2011-06-15 22:12:24 +0200 (Wed, 15 Jun 2011) New Revision: 42196 Changeset: https://dev.haiku-os.org/changeset/42196 Ticket: https://dev.haiku-os.org/ticket/7038 Modified: haiku/trunk/src/preferences/network/EthernetSettingsView.cpp Log: * Solved #7038 a bit nicer by disabling the interface. Modified: haiku/trunk/src/preferences/network/EthernetSettingsView.cpp =================================================================== --- haiku/trunk/src/preferences/network/EthernetSettingsView.cpp 2011-06-15 20:11:35 UTC (rev 42195) +++ haiku/trunk/src/preferences/network/EthernetSettingsView.cpp 2011-06-15 20:12:24 UTC (rev 42196) @@ -114,7 +114,7 @@ rootLayout->SetSpacing(inset); layout->SetSpacing(inset, inset); - BPopUpMenu* deviceMenu = new BPopUpMenu("devices"); + BPopUpMenu* deviceMenu = new BPopUpMenu("<No adapter>"); for (int32 i = 0; i < fInterfaces.CountItems(); i++) { BString& name = *fInterfaces.ItemAt(i); BString label = name; @@ -235,9 +235,8 @@ fNetworkMenuField->Menu()->SetTargetForItems(this); fTypeMenuField->Menu()->SetTargetForItems(this); - // display settigs of first adapter on startup - if (fSettings.ItemAt(0)) - _ShowConfiguration(fSettings.ItemAt(0)); + // Display settigs of first adapter on startup, if any + _ShowConfiguration(fSettings.ItemAt(0)); } @@ -331,10 +330,33 @@ fSecondaryDNSTextControl->SetText(""); fDomainTextControl->SetText(""); + fDeviceMenuField->SetEnabled(settings != NULL); + fTypeMenuField->SetEnabled(settings != NULL); + + bool enableControls = false; + BMenuItem* item; + + if (settings == NULL || settings->IsDisabled()) + item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("Disabled")); + else if (settings->AutoConfigure()) + item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("DHCP")); + else { + item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("Static")); + enableControls = true; + } + if (item != NULL) + item->SetMarked(true); + + if (settings == NULL) { + if (!fNetworkMenuField->IsHidden(fNetworkMenuField)) + fNetworkMenuField->Hide(); + _EnableTextControls(false); + return; + } + // Show/hide networks menu BNetworkDevice device(settings->Name()); - if (fNetworkMenuField->IsHidden(fNetworkMenuField) - && device.IsWireless()) { + if (fNetworkMenuField->IsHidden(fNetworkMenuField) && device.IsWireless()) { fNetworkMenuField->Show(); Window()->InvalidateLayout(); } else if (!fNetworkMenuField->IsHidden(fNetworkMenuField) @@ -381,30 +403,14 @@ menu->SetTargetForItems(this); } - bool enableControls = false; - fTypeMenuField->SetEnabled(settings != NULL); - - BMenuItem* item = fDeviceMenuField->Menu()->FindItem(settings->Name()); - if (item) + item = fDeviceMenuField->Menu()->FindItem(settings->Name()); + if (item != NULL) item->SetMarked(true); fIPTextControl->SetText(settings->IP()); fGatewayTextControl->SetText(settings->Gateway()); fNetMaskTextControl->SetText(settings->Netmask()); - enableControls = false; - - if (settings->IsDisabled()) - item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("Disabled")); - else if (settings->AutoConfigure()) - item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("DHCP")); - else { - item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("Static")); - enableControls = true; - } - if (item) - item->SetMarked(true); - if (settings->NameServers().CountItems() >= 2) { fSecondaryDNSTextControl->SetText( settings->NameServers().ItemAt(1)->String());