Network: added global settings.
* NetworkWindow now manages a single BNetworkSettings object that is shared with all add-ons.
This commit is contained in:
@@ -24,6 +24,7 @@ enum BNetworkSettingsType {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class BNetworkProfile;
|
class BNetworkProfile;
|
||||||
|
class BNetworkSettings;
|
||||||
|
|
||||||
|
|
||||||
class BNetworkSettingsItem {
|
class BNetworkSettingsItem {
|
||||||
@@ -68,7 +69,8 @@ private:
|
|||||||
|
|
||||||
class BNetworkSettingsAddOn {
|
class BNetworkSettingsAddOn {
|
||||||
public:
|
public:
|
||||||
BNetworkSettingsAddOn(image_id image);
|
BNetworkSettingsAddOn(image_id image,
|
||||||
|
BNetworkSettings& settings);
|
||||||
virtual ~BNetworkSettingsAddOn();
|
virtual ~BNetworkSettingsAddOn();
|
||||||
|
|
||||||
virtual BNetworkSettingsInterfaceItem*
|
virtual BNetworkSettingsInterfaceItem*
|
||||||
@@ -79,16 +81,18 @@ public:
|
|||||||
|
|
||||||
image_id Image();
|
image_id Image();
|
||||||
BResources* Resources();
|
BResources* Resources();
|
||||||
|
BNetworkSettings& Settings();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
image_id fImage;
|
image_id fImage;
|
||||||
BResources* fResources;
|
BResources* fResources;
|
||||||
|
BNetworkSettings& fSettings;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Your add-on needs to export this hook in order to be picked up
|
// Your add-on needs to export this hook in order to be picked up
|
||||||
extern "C" BNetworkSettingsAddOn* instantiate_network_settings_add_on(
|
extern "C" BNetworkSettingsAddOn* instantiate_network_settings_add_on(
|
||||||
image_id image);
|
image_id image, BNetworkSettings& settings);
|
||||||
|
|
||||||
|
|
||||||
} // namespace BNetworkKit
|
} // namespace BNetworkKit
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ using namespace BNetworkKit;
|
|||||||
|
|
||||||
class IPv4InterfaceAddOn : public BNetworkSettingsAddOn {
|
class IPv4InterfaceAddOn : public BNetworkSettingsAddOn {
|
||||||
public:
|
public:
|
||||||
IPv4InterfaceAddOn(image_id image);
|
IPv4InterfaceAddOn(image_id image,
|
||||||
|
BNetworkSettings& settings);
|
||||||
virtual ~IPv4InterfaceAddOn();
|
virtual ~IPv4InterfaceAddOn();
|
||||||
|
|
||||||
virtual BNetworkSettingsInterfaceItem*
|
virtual BNetworkSettingsInterfaceItem*
|
||||||
@@ -34,7 +35,8 @@ public:
|
|||||||
|
|
||||||
class IPv4InterfaceItem : public BNetworkSettingsInterfaceItem {
|
class IPv4InterfaceItem : public BNetworkSettingsInterfaceItem {
|
||||||
public:
|
public:
|
||||||
IPv4InterfaceItem(const char* interface);
|
IPv4InterfaceItem(const char* interface,
|
||||||
|
BNetworkSettings& settings);
|
||||||
virtual ~IPv4InterfaceItem();
|
virtual ~IPv4InterfaceItem();
|
||||||
|
|
||||||
virtual BListItem* ListItem();
|
virtual BListItem* ListItem();
|
||||||
@@ -45,6 +47,7 @@ public:
|
|||||||
virtual bool IsRevertable();
|
virtual bool IsRevertable();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
BNetworkSettings& fSettings;
|
||||||
BStringItem* fItem;
|
BStringItem* fItem;
|
||||||
InterfaceAddressView*
|
InterfaceAddressView*
|
||||||
fView;
|
fView;
|
||||||
@@ -54,9 +57,11 @@ private:
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
IPv4InterfaceItem::IPv4InterfaceItem(const char* interface)
|
IPv4InterfaceItem::IPv4InterfaceItem(const char* interface,
|
||||||
|
BNetworkSettings& settings)
|
||||||
:
|
:
|
||||||
BNetworkSettingsInterfaceItem(interface),
|
BNetworkSettingsInterfaceItem(interface),
|
||||||
|
fSettings(settings),
|
||||||
fItem(new BStringItem(B_TRANSLATE("IPv4"))),
|
fItem(new BStringItem(B_TRANSLATE("IPv4"))),
|
||||||
fView(NULL)
|
fView(NULL)
|
||||||
{
|
{
|
||||||
@@ -82,10 +87,9 @@ IPv4InterfaceItem::ListItem()
|
|||||||
BView*
|
BView*
|
||||||
IPv4InterfaceItem::View()
|
IPv4InterfaceItem::View()
|
||||||
{
|
{
|
||||||
if (fView == NULL) {
|
if (fView == NULL)
|
||||||
// TODO!
|
fView = new InterfaceAddressView(AF_INET, Interface(), fSettings);
|
||||||
fView = new InterfaceAddressView(AF_INET, Interface());
|
|
||||||
}
|
|
||||||
return fView;
|
return fView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,9 +118,10 @@ IPv4InterfaceItem::IsRevertable()
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
IPv4InterfaceAddOn::IPv4InterfaceAddOn(image_id image)
|
IPv4InterfaceAddOn::IPv4InterfaceAddOn(image_id image,
|
||||||
|
BNetworkSettings& settings)
|
||||||
:
|
:
|
||||||
BNetworkSettingsAddOn(image)
|
BNetworkSettingsAddOn(image, settings)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +136,7 @@ IPv4InterfaceAddOn::CreateNextInterfaceItem(uint32& cookie,
|
|||||||
const char* interface)
|
const char* interface)
|
||||||
{
|
{
|
||||||
if (cookie++ == 0)
|
if (cookie++ == 0)
|
||||||
return new IPv4InterfaceItem(interface);
|
return new IPv4InterfaceItem(interface, Settings());
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -142,7 +147,7 @@ IPv4InterfaceAddOn::CreateNextInterfaceItem(uint32& cookie,
|
|||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
BNetworkSettingsAddOn*
|
BNetworkSettingsAddOn*
|
||||||
instantiate_network_settings_add_on(image_id image)
|
instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings)
|
||||||
{
|
{
|
||||||
return new IPv4InterfaceAddOn(image);
|
return new IPv4InterfaceAddOn(image, settings);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
#include "InterfaceAddressView.h"
|
#include "InterfaceAddressView.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <Catalog.h>
|
#include <Catalog.h>
|
||||||
#include <ControlLook.h>
|
#include <ControlLook.h>
|
||||||
#include <LayoutBuilder.h>
|
#include <LayoutBuilder.h>
|
||||||
@@ -26,22 +28,21 @@
|
|||||||
#define B_TRANSLATION_CONTEXT "IntefaceAddressView"
|
#define B_TRANSLATION_CONTEXT "IntefaceAddressView"
|
||||||
|
|
||||||
|
|
||||||
enum {
|
const uint32 kModeAuto = 'iato';
|
||||||
M_MODE_AUTO = 'iato',
|
const uint32 kModeStatic = 'istc';
|
||||||
M_MODE_STATIC = 'istc',
|
const uint32 kModeDisabled = 'ioff';
|
||||||
M_MODE_OFF = 'ioff'
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - InterfaceAddressView
|
// #pragma mark - InterfaceAddressView
|
||||||
|
|
||||||
|
|
||||||
InterfaceAddressView::InterfaceAddressView(int family,
|
InterfaceAddressView::InterfaceAddressView(int family,
|
||||||
const char* interface)
|
const char* interface, BNetworkSettings& settings)
|
||||||
:
|
:
|
||||||
BGroupView(B_VERTICAL),
|
BGroupView(B_VERTICAL),
|
||||||
fFamily(family),
|
fFamily(family),
|
||||||
fInterface(interface)
|
fInterface(interface),
|
||||||
|
fSettings(settings)
|
||||||
{
|
{
|
||||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||||
|
|
||||||
@@ -50,38 +51,40 @@ InterfaceAddressView::InterfaceAddressView(int family,
|
|||||||
|
|
||||||
if (fFamily == AF_INET) {
|
if (fFamily == AF_INET) {
|
||||||
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("DHCP"),
|
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("DHCP"),
|
||||||
new BMessage(M_MODE_AUTO)));
|
new BMessage(kModeAuto)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fFamily == AF_INET6) {
|
if (fFamily == AF_INET6) {
|
||||||
// Automatic can be DHCPv6 or Router Advertisements
|
// Automatic can be DHCPv6 or Router Advertisements
|
||||||
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Automatic"),
|
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Automatic"),
|
||||||
new BMessage(M_MODE_AUTO)));
|
new BMessage(kModeAuto)));
|
||||||
}
|
}
|
||||||
|
|
||||||
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Static"),
|
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Static"),
|
||||||
new BMessage(M_MODE_STATIC)));
|
new BMessage(kModeStatic)));
|
||||||
fModePopUpMenu->AddSeparatorItem();
|
fModePopUpMenu->AddSeparatorItem();
|
||||||
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Off"),
|
fModePopUpMenu->AddItem(new BMenuItem(B_TRANSLATE("Disabled"),
|
||||||
new BMessage(M_MODE_OFF)));
|
new BMessage(kModeDisabled)));
|
||||||
|
|
||||||
fModeField = new BMenuField(B_TRANSLATE("Mode:"), fModePopUpMenu);
|
fModeField = new BMenuField(B_TRANSLATE("Mode:"), fModePopUpMenu);
|
||||||
fModeField->SetToolTip(BString(B_TRANSLATE("The method for obtaining an IP address")));
|
fModeField->SetToolTip(
|
||||||
|
B_TRANSLATE("The method for obtaining an IP address"));
|
||||||
|
|
||||||
float minimumWidth = be_control_look->DefaultItemSpacing() * 16;
|
float minimumWidth = be_control_look->DefaultItemSpacing() * 16;
|
||||||
|
|
||||||
fAddressField = new BTextControl(B_TRANSLATE("IP Address:"), NULL, NULL);
|
fAddressField = new BTextControl(B_TRANSLATE("IP Address:"), NULL, NULL);
|
||||||
fAddressField->SetToolTip(BString(B_TRANSLATE("Your IP address")));
|
fAddressField->SetToolTip(B_TRANSLATE("Your IP address"));
|
||||||
fAddressField->TextView()->SetExplicitMinSize(BSize(minimumWidth, B_SIZE_UNSET));
|
fAddressField->TextView()->SetExplicitMinSize(BSize(minimumWidth, B_SIZE_UNSET));
|
||||||
fNetmaskField = new BTextControl(B_TRANSLATE("Netmask:"), NULL, NULL);
|
fNetmaskField = new BTextControl(B_TRANSLATE("Netmask:"), NULL, NULL);
|
||||||
fNetmaskField->SetToolTip(BString(B_TRANSLATE("Your netmask")));
|
fNetmaskField->SetToolTip(B_TRANSLATE("The netmask defines your local network"));
|
||||||
fNetmaskField->TextView()->SetExplicitMinSize(BSize(minimumWidth, B_SIZE_UNSET));
|
fNetmaskField->TextView()->SetExplicitMinSize(BSize(minimumWidth, B_SIZE_UNSET));
|
||||||
fGatewayField = new BTextControl(B_TRANSLATE("Gateway:"), NULL, NULL);
|
fGatewayField = new BTextControl(B_TRANSLATE("Gateway:"), NULL, NULL);
|
||||||
fGatewayField->SetToolTip(BString(B_TRANSLATE("Your gateway")));
|
fGatewayField->SetToolTip(B_TRANSLATE("Your gateway to the internet"));
|
||||||
fGatewayField->TextView()->SetExplicitMinSize(BSize(minimumWidth, B_SIZE_UNSET));
|
fGatewayField->TextView()->SetExplicitMinSize(BSize(minimumWidth, B_SIZE_UNSET));
|
||||||
|
|
||||||
Revert();
|
fSettings.GetInterface(interface, fOriginalInterface);
|
||||||
// Populate the fields
|
fInterfaceSettings = fOriginalInterface;
|
||||||
|
_UpdateFields();
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(this)
|
BLayoutBuilder::Group<>(this)
|
||||||
.AddGrid()
|
.AddGrid()
|
||||||
@@ -90,15 +93,12 @@ InterfaceAddressView::InterfaceAddressView(int family,
|
|||||||
.AddTextControl(fNetmaskField, 0, 2, B_ALIGN_RIGHT)
|
.AddTextControl(fNetmaskField, 0, 2, B_ALIGN_RIGHT)
|
||||||
.AddTextControl(fGatewayField, 0, 3, B_ALIGN_RIGHT)
|
.AddTextControl(fGatewayField, 0, 3, B_ALIGN_RIGHT)
|
||||||
.End()
|
.End()
|
||||||
.AddGlue()
|
.AddGlue();
|
||||||
.SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING,
|
|
||||||
B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
InterfaceAddressView::~InterfaceAddressView()
|
InterfaceAddressView::~InterfaceAddressView()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -116,22 +116,11 @@ void
|
|||||||
InterfaceAddressView::MessageReceived(BMessage* message)
|
InterfaceAddressView::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
case M_MODE_AUTO:
|
case kModeAuto:
|
||||||
_EnableFields(false);
|
case kModeStatic:
|
||||||
_ShowFields(true);
|
case kModeDisabled:
|
||||||
break;
|
_SetModeField(message->what);
|
||||||
|
_UpdateSettings();
|
||||||
case M_MODE_STATIC:
|
|
||||||
_EnableFields(true);
|
|
||||||
_ShowFields(true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case M_MODE_OFF:
|
|
||||||
fAddressField->SetText("");
|
|
||||||
fNetmaskField->SetText("");
|
|
||||||
fGatewayField->SetText("");
|
|
||||||
_EnableFields(false);
|
|
||||||
_ShowFields(false);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -152,27 +141,6 @@ InterfaceAddressView::_EnableFields(bool enable)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
InterfaceAddressView::_ShowFields(bool show)
|
|
||||||
{
|
|
||||||
if (show) {
|
|
||||||
if (fAddressField->IsHidden())
|
|
||||||
fAddressField->Show();
|
|
||||||
if (fNetmaskField->IsHidden())
|
|
||||||
fNetmaskField->Show();
|
|
||||||
if (fGatewayField->IsHidden())
|
|
||||||
fGatewayField->Show();
|
|
||||||
} else {
|
|
||||||
if (!fAddressField->IsHidden())
|
|
||||||
fAddressField->Hide();
|
|
||||||
if (!fNetmaskField->IsHidden())
|
|
||||||
fNetmaskField->Hide();
|
|
||||||
if (!fGatewayField->IsHidden())
|
|
||||||
fGatewayField->Hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - InterfaceAddressView public methods
|
// #pragma mark - InterfaceAddressView public methods
|
||||||
|
|
||||||
|
|
||||||
@@ -185,17 +153,14 @@ InterfaceAddressView::Revert()
|
|||||||
/*
|
/*
|
||||||
int32 mode;
|
int32 mode;
|
||||||
if (fSettings->AutoConfigure(fFamily)) {
|
if (fSettings->AutoConfigure(fFamily)) {
|
||||||
mode = M_MODE_AUTO;
|
mode = kModeAuto;
|
||||||
_EnableFields(false);
|
_EnableFields(false);
|
||||||
_ShowFields(true);
|
|
||||||
} else if (fSettings->IPAddr(fFamily).IsEmpty()) {
|
} else if (fSettings->IPAddr(fFamily).IsEmpty()) {
|
||||||
mode = M_MODE_OFF;
|
mode = kModeDisabled;
|
||||||
_EnableFields(false);
|
_EnableFields(false);
|
||||||
_ShowFields(false);
|
|
||||||
} else {
|
} else {
|
||||||
mode = M_MODE_STATIC;
|
mode = kModeStatic;
|
||||||
_EnableFields(true);
|
_EnableFields(true);
|
||||||
_ShowFields(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BMenuItem* item = fModePopUpMenu->FindItem(mode);
|
BMenuItem* item = fModePopUpMenu->FindItem(mode);
|
||||||
@@ -222,7 +187,74 @@ InterfaceAddressView::Save()
|
|||||||
fSettings->SetIP(fFamily, fAddressField->Text());
|
fSettings->SetIP(fFamily, fAddressField->Text());
|
||||||
fSettings->SetNetmask(fFamily, fNetmaskField->Text());
|
fSettings->SetNetmask(fFamily, fNetmaskField->Text());
|
||||||
fSettings->SetGateway(fFamily, fGatewayField->Text());
|
fSettings->SetGateway(fFamily, fGatewayField->Text());
|
||||||
fSettings->SetAutoConfigure(fFamily, item->Command() == M_MODE_AUTO);
|
fSettings->SetAutoConfigure(fFamily, item->Command() == kModeAuto);
|
||||||
*/
|
*/
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
InterfaceAddressView::_UpdateFields()
|
||||||
|
{
|
||||||
|
bool autoConfigure = (fInterface.Flags()
|
||||||
|
& (IFF_AUTO_CONFIGURED | IFF_CONFIGURING)) != 0;
|
||||||
|
|
||||||
|
BNetworkInterfaceAddress address;
|
||||||
|
status_t status = B_ERROR;
|
||||||
|
|
||||||
|
int32 index = fInterface.FindFirstAddress(fFamily);
|
||||||
|
if (index >= 0)
|
||||||
|
status = fInterface.GetAddressAt(index, address);
|
||||||
|
if (index < 0 || status != B_OK
|
||||||
|
|| address.Address().IsEmpty() && !autoConfigure) {
|
||||||
|
if (status == B_OK) {
|
||||||
|
// Check persistent settings for the mode -- the address
|
||||||
|
// can also be empty if the automatic configuration hasn't
|
||||||
|
// started yet.
|
||||||
|
autoConfigure = fInterfaceSettings.IsEmpty()
|
||||||
|
|| fInterfaceSettings.GetBool("auto_config", false);
|
||||||
|
}
|
||||||
|
if (!autoConfigure) {
|
||||||
|
_SetModeField(kModeDisabled);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (autoConfigure)
|
||||||
|
_SetModeField(kModeAuto);
|
||||||
|
else
|
||||||
|
_SetModeField(kModeStatic);
|
||||||
|
|
||||||
|
fAddressField->SetText(address.Address().ToString());
|
||||||
|
fNetmaskField->SetText(address.Mask().ToString());
|
||||||
|
|
||||||
|
BNetworkAddress gateway;
|
||||||
|
if (fInterface.GetDefaultRoute(fFamily, gateway) == B_OK)
|
||||||
|
fGatewayField->SetText(gateway.ToString());
|
||||||
|
else
|
||||||
|
fGatewayField->SetText(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
InterfaceAddressView::_SetModeField(uint32 mode)
|
||||||
|
{
|
||||||
|
BMenuItem* item = fModePopUpMenu->FindItem(mode);
|
||||||
|
if (item != NULL)
|
||||||
|
item->SetMarked(true);
|
||||||
|
|
||||||
|
_EnableFields(mode == kModeStatic);
|
||||||
|
|
||||||
|
if (mode == kModeDisabled) {
|
||||||
|
fAddressField->SetText(NULL);
|
||||||
|
fNetmaskField->SetText(NULL);
|
||||||
|
fGatewayField->SetText(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Updates the current settings from the controls. */
|
||||||
|
void
|
||||||
|
InterfaceAddressView::_UpdateSettings()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <GroupView.h>
|
#include <GroupView.h>
|
||||||
#include <NetworkInterface.h>
|
#include <NetworkInterface.h>
|
||||||
|
#include <NetworkSettings.h>
|
||||||
|
|
||||||
|
|
||||||
class BMenuField;
|
class BMenuField;
|
||||||
@@ -21,10 +22,14 @@ class BRect;
|
|||||||
class BTextControl;
|
class BTextControl;
|
||||||
|
|
||||||
|
|
||||||
|
using namespace BNetworkKit;
|
||||||
|
|
||||||
|
|
||||||
class InterfaceAddressView : public BGroupView {
|
class InterfaceAddressView : public BGroupView {
|
||||||
public:
|
public:
|
||||||
InterfaceAddressView(int family,
|
InterfaceAddressView(int family,
|
||||||
const char* interface);
|
const char* interface,
|
||||||
|
BNetworkSettings& settings);
|
||||||
virtual ~InterfaceAddressView();
|
virtual ~InterfaceAddressView();
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
virtual void AttachedToWindow();
|
||||||
@@ -35,10 +40,17 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void _EnableFields(bool enable);
|
void _EnableFields(bool enable);
|
||||||
void _ShowFields(bool show);
|
void _UpdateFields();
|
||||||
|
void _SetModeField(uint32 mode);
|
||||||
|
void _UpdateSettings();
|
||||||
|
|
||||||
|
private:
|
||||||
int fFamily;
|
int fFamily;
|
||||||
BNetworkInterface fInterface;
|
BNetworkInterface fInterface;
|
||||||
|
BNetworkSettings& fSettings;
|
||||||
|
|
||||||
|
BMessage fOriginalInterface;
|
||||||
|
BMessage fInterfaceSettings;
|
||||||
|
|
||||||
BPopUpMenu* fModePopUpMenu;
|
BPopUpMenu* fModePopUpMenu;
|
||||||
BMenuField* fModeField;
|
BMenuField* fModeField;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
SubDir HAIKU_TOP src preferences network ;
|
SubDir HAIKU_TOP src preferences network ;
|
||||||
|
|
||||||
UsePublicHeaders [ FDirName add-ons network_settings ] ;
|
UsePublicHeaders [ FDirName add-ons network_settings ] ;
|
||||||
UsePrivateHeaders net shared ;
|
UsePrivateHeaders net shared storage ;
|
||||||
|
|
||||||
SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps networkstatus ]
|
SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps networkstatus ]
|
||||||
[ FDirName $(HAIKU_TOP) src bin network ifconfig ] ;
|
[ FDirName $(HAIKU_TOP) src bin network ifconfig ] ;
|
||||||
|
|||||||
@@ -73,10 +73,12 @@ BNetworkSettingsInterfaceItem::Interface() const
|
|||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
BNetworkSettingsAddOn::BNetworkSettingsAddOn(image_id image)
|
BNetworkSettingsAddOn::BNetworkSettingsAddOn(image_id image,
|
||||||
|
BNetworkSettings& settings)
|
||||||
:
|
:
|
||||||
fImage(image),
|
fImage(image),
|
||||||
fResources(NULL)
|
fResources(NULL),
|
||||||
|
fSettings(settings)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,3 +128,10 @@ BNetworkSettingsAddOn::Resources()
|
|||||||
}
|
}
|
||||||
return fResources;
|
return fResources;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BNetworkSettings&
|
||||||
|
BNetworkSettingsAddOn::Settings()
|
||||||
|
{
|
||||||
|
return fSettings;
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include <OutlineListView.h>
|
#include <OutlineListView.h>
|
||||||
#include <Path.h>
|
#include <Path.h>
|
||||||
#include <PathFinder.h>
|
#include <PathFinder.h>
|
||||||
|
#include <PathMonitor.h>
|
||||||
#include <Roster.h>
|
#include <Roster.h>
|
||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
#include <SymLink.h>
|
#include <SymLink.h>
|
||||||
@@ -129,13 +130,17 @@ NetworkWindow::NetworkWindow()
|
|||||||
_ScanInterfaces();
|
_ScanInterfaces();
|
||||||
_ScanAddOns();
|
_ScanAddOns();
|
||||||
|
|
||||||
// Set preferred size of the list view from its contents
|
// Set size of the list view from its contents
|
||||||
float width;
|
float width;
|
||||||
float height;
|
float height;
|
||||||
fListView->GetPreferredSize(&width, &height);
|
fListView->GetPreferredSize(&width, &height);
|
||||||
|
width += 2 * be_control_look->DefaultItemSpacing();
|
||||||
|
fListView->SetExplicitSize(BSize(width, B_SIZE_UNSET));
|
||||||
fListView->SetExplicitMinSize(BSize(width, std::min(height, 400.f)));
|
fListView->SetExplicitMinSize(BSize(width, std::min(height, 400.f)));
|
||||||
|
|
||||||
CenterOnScreen();
|
CenterOnScreen();
|
||||||
|
|
||||||
|
fSettings.StartMonitoring(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -206,6 +211,12 @@ NetworkWindow::MessageReceived(BMessage* message)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case B_PATH_MONITOR:
|
||||||
|
{
|
||||||
|
fSettings.Update(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
inherited::MessageReceived(message);
|
inherited::MessageReceived(message);
|
||||||
}
|
}
|
||||||
@@ -283,6 +294,8 @@ NetworkWindow::_ScanInterfaces()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
InterfaceListItem* item = new InterfaceListItem(interface.Name());
|
InterfaceListItem* item = new InterfaceListItem(interface.Name());
|
||||||
|
item->SetExpanded(true);
|
||||||
|
|
||||||
fInterfaceItemMap.insert(std::pair<BString, BListItem*>(
|
fInterfaceItemMap.insert(std::pair<BString, BListItem*>(
|
||||||
BString(interface.Name()), item));
|
BString(interface.Name()), item));
|
||||||
fListView->AddItem(item);
|
fListView->AddItem(item);
|
||||||
@@ -314,7 +327,8 @@ NetworkWindow::_ScanAddOns()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
BNetworkSettingsAddOn* (*instantiateAddOn)(image_id image);
|
BNetworkSettingsAddOn* (*instantiateAddOn)(image_id image,
|
||||||
|
BNetworkSettings& settings);
|
||||||
|
|
||||||
status_t status = get_image_symbol(image,
|
status_t status = get_image_symbol(image,
|
||||||
"instantiate_network_settings_add_on",
|
"instantiate_network_settings_add_on",
|
||||||
@@ -328,7 +342,7 @@ NetworkWindow::_ScanAddOns()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
BNetworkSettingsAddOn* addOn = instantiateAddOn(image);
|
BNetworkSettingsAddOn* addOn = instantiateAddOn(image, fSettings);
|
||||||
if (addOn == NULL) {
|
if (addOn == NULL) {
|
||||||
unload_add_on(image);
|
unload_add_on(image);
|
||||||
continue;
|
continue;
|
||||||
@@ -388,8 +402,10 @@ NetworkWindow::_ListItemFor(BNetworkSettingsType type)
|
|||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case B_NETWORK_SETTINGS_TYPE_SERVICE:
|
case B_NETWORK_SETTINGS_TYPE_SERVICE:
|
||||||
if (fServicesItem == NULL)
|
if (fServicesItem == NULL) {
|
||||||
fServicesItem = new BStringItem(B_TRANSLATE("Services"));
|
fServicesItem = new BStringItem(B_TRANSLATE("Services"));
|
||||||
|
fServicesItem->SetExpanded(true);
|
||||||
|
}
|
||||||
|
|
||||||
return fServicesItem;
|
return fServicesItem;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,8 @@
|
|||||||
#include <ObjectList.h>
|
#include <ObjectList.h>
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
#include "NetworkSettingsAddOn.h"
|
#include <NetworkSettings.h>
|
||||||
|
#include <NetworkSettingsAddOn.h>
|
||||||
|
|
||||||
|
|
||||||
using namespace BNetworkKit;
|
using namespace BNetworkKit;
|
||||||
@@ -53,9 +54,7 @@ private:
|
|||||||
typedef std::map<BString, BListItem*> ItemMap;
|
typedef std::map<BString, BListItem*> ItemMap;
|
||||||
typedef std::map<BListItem*, BNetworkSettingsItem*> SettingsMap;
|
typedef std::map<BListItem*, BNetworkSettingsItem*> SettingsMap;
|
||||||
|
|
||||||
BButton* fRevertButton;
|
BNetworkSettings fSettings;
|
||||||
BButton* fApplyButton;
|
|
||||||
|
|
||||||
AddOnList fAddOns;
|
AddOnList fAddOns;
|
||||||
|
|
||||||
BOutlineListView* fListView;
|
BOutlineListView* fListView;
|
||||||
@@ -68,6 +67,9 @@ private:
|
|||||||
|
|
||||||
InterfaceView* fInterfaceView;
|
InterfaceView* fInterfaceView;
|
||||||
BView* fAddOnShellView;
|
BView* fAddOnShellView;
|
||||||
|
|
||||||
|
BButton* fRevertButton;
|
||||||
|
BButton* fApplyButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user