NetworkSetup: move renegociate and disable buttons to HardwareView

The idea is making the interface list a generic list to add some stuff
that are not interfaces there (ie services: DNS, FTP, SSH, ...)
This commit is contained in:
Adrien Destugues 2014-10-29 22:15:51 +01:00
parent afc5d438a7
commit de6278fec1
5 changed files with 45 additions and 43 deletions

View File

@ -14,6 +14,7 @@
#include "NetworkSettings.h"
#include "WirelessNetworkMenuItem.h"
#include <Button.h>
#include <Catalog.h>
#include <ControlLook.h>
#include <LayoutBuilder.h>
@ -79,6 +80,14 @@ InterfaceHardwareView::InterfaceHardwareView(NetworkSettings* settings)
fNetworkMenuField->SetAlignment(B_ALIGN_RIGHT);
fNetworkMenuField->Menu()->SetLabelFromMarked(true);
// Construct the BButtons
fOnOff = new BButton("onoff", B_TRANSLATE("Disable"),
new BMessage(kMsgInterfaceToggle));
fRenegotiate = new BButton("heal", B_TRANSLATE("Renegotiate"),
new BMessage(kMsgInterfaceRenegotiate));
fRenegotiate->SetEnabled(false);
BLayoutBuilder::Group<>(this)
.AddGrid()
.Add(status, 0, 0)
@ -95,6 +104,11 @@ InterfaceHardwareView::InterfaceHardwareView(NetworkSettings* settings)
.Add(fLinkRxField, 1, 5)
.End()
.AddGlue()
.AddGroup(B_HORIZONTAL)
.Add(fOnOff)
.AddGlue()
.Add(fRenegotiate)
.End()
.SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING,
B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING);
}
@ -114,6 +128,9 @@ InterfaceHardwareView::AttachedToWindow()
{
Update();
// Populate the fields
fOnOff->SetTarget(this);
fRenegotiate->SetTarget(this);
}
@ -126,6 +143,20 @@ InterfaceHardwareView::MessageReceived(BMessage* message)
fSettings->SetWirelessNetwork(message->FindString("name"));
break;
}
case kMsgInterfaceToggle:
{
fSettings->SetDisabled(!fSettings->IsDisabled());
Update();
Window()->FindView("interfaces")->Invalidate();
break;
}
case kMsgInterfaceRenegotiate:
{
fSettings->RenegotiateAddresses();
break;
}
default:
BView::MessageReceived(message);
}
@ -233,6 +264,9 @@ InterfaceHardwareView::Update()
menu->SetTargetForItems(this);
}
fRenegotiate->SetEnabled(!fSettings->IsDisabled());
fOnOff->SetLabel(fSettings->IsDisabled() ? "Enable" : "Disable");
return B_OK;
}

View File

@ -15,6 +15,11 @@
#include <GroupView.h>
static const uint32 kMsgInterfaceToggle = 'onof';
static const uint32 kMsgInterfaceRenegotiate = 'redo';
class BButton;
class BMenuField;
class BMessage;
class BRect;
@ -45,6 +50,9 @@ private:
BStringView* fLinkRxField;
BMenuField* fNetworkMenuField;
BButton* fOnOff;
BButton* fRenegotiate;
};

View File

@ -41,6 +41,8 @@ public:
void Apply();
void Revert();
NetworkSettings* Settings() { return fNetworkSettings; }
private:
status_t _PopulateTabs();

View File

@ -76,25 +76,11 @@ InterfacesAddOn::CreateView()
BScrollView* scrollView = new BScrollView("scrollView", fListView,
B_WILL_DRAW | B_FRAME_EVENTS, false, true);
// Construct the BButtons
fOnOff = new BButton("onoff", B_TRANSLATE("Disable"),
new BMessage(kMsgInterfaceToggle));
fOnOff->SetEnabled(false);
fRenegotiate = new BButton("heal", B_TRANSLATE("Renegotiate"),
new BMessage(kMsgInterfaceRenegotiate));
fRenegotiate->SetEnabled(false);
// Build the layout
SetLayout(new BGroupLayout(B_HORIZONTAL));
AddChild(BGroupLayoutBuilder(B_VERTICAL, B_USE_DEFAULT_SPACING)
.Add(scrollView)
.AddGroup(B_HORIZONTAL, B_USE_SMALL_SPACING)
.Add(fOnOff)
.AddGlue()
.Add(fRenegotiate)
.End()
);
return this;
@ -105,8 +91,6 @@ void
InterfacesAddOn::AttachedToWindow()
{
fListView->SetTarget(this);
fOnOff->SetTarget(this);
fRenegotiate->SetTarget(this);
}
@ -142,12 +126,8 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
switch (msg->what) {
case kMsgInterfaceSelected:
{
fOnOff->SetEnabled(item != NULL);
fRenegotiate->SetEnabled(item != NULL);
if (item == NULL)
break;
fRenegotiate->SetEnabled(!item->IsDisabled());
fOnOff->SetLabel(item->IsDisabled() ? "Enable" : "Disable");
// TODO it would be better to reuse the view instead of recreating
// one.
@ -160,27 +140,9 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
break;
}
case kMsgInterfaceToggle:
{
if (item == NULL)
break;
item->SetDisabled(!item->IsDisabled());
fOnOff->SetLabel(item->IsDisabled() ? "Enable" : "Disable");
fRenegotiate->SetEnabled(!item->IsDisabled());
case B_OBSERVER_NOTICE_CHANGE:
fListView->Invalidate();
break;
}
case kMsgInterfaceRenegotiate:
{
if (item == NULL)
break;
NetworkSettings* ns = item->GetSettings();
ns->RenegotiateAddresses();
break;
}
default:
BBox::MessageReceived(msg);

View File

@ -19,8 +19,6 @@
static const uint32 kMsgInterfaceSelected = 'ifce';
static const uint32 kMsgInterfaceToggle = 'onof';
static const uint32 kMsgInterfaceRenegotiate = 'redo';
class BButton;
@ -46,8 +44,6 @@ public:
private:
InterfacesListView* fListView;
InterfaceView* fSettingsView;
BButton* fOnOff;
BButton* fRenegotiate;
};