diff --git a/src/preferences/network/InterfacesAddOn/InterfacesAddOn.cpp b/src/preferences/network/InterfacesAddOn/InterfacesAddOn.cpp index f5da22097d..25c9ab5d18 100644 --- a/src/preferences/network/InterfacesAddOn/InterfacesAddOn.cpp +++ b/src/preferences/network/InterfacesAddOn/InterfacesAddOn.cpp @@ -116,44 +116,58 @@ InterfacesAddOn::Revert() void InterfacesAddOn::MessageReceived(BMessage* msg) { - int nr = fListView->CurrentSelection(); - InterfaceListItem *item = NULL; - if (nr != -1) - item = dynamic_cast(fListView->ItemAt(nr)); - switch (msg->what) { case kMsgInterfaceSelected: - { - if (item == NULL) - break; - - BView* panel = Window()->FindView("panel"); - BView* settingsView = panel->ChildAt(0); - - // Remove currently displayed settings view - if (settingsView != NULL) { - settingsView->RemoveSelf(); - delete settingsView; - } - - settingsView = new InterfaceView(item->GetSettings()); - Window()->FindView("panel")->AddChild(settingsView); + _ShowPanel(); break; - } case B_OBSERVER_NOTICE_CHANGE: fListView->Invalidate(); break; default: + msg->PrintToStream(); BBox::MessageReceived(msg); } } +void +InterfacesAddOn::Show() +{ + BView::Show(); + _ShowPanel(); +} + + InterfaceView* InterfacesAddOn::_SettingsView() { BView* view = Window()->FindView("panel")->ChildAt(0); return dynamic_cast(view); } + + +void +InterfacesAddOn::_ShowPanel() +{ + int nr = fListView->CurrentSelection(); + InterfaceListItem *item = NULL; + if (nr != -1) + item = dynamic_cast(fListView->ItemAt(nr)); + + if (item == NULL) + return; + + BView* panel = Window()->FindView("panel"); + BView* settingsView = panel->ChildAt(0); + + // Remove currently displayed settings view + if (settingsView != NULL) { + settingsView->RemoveSelf(); + delete settingsView; + } + + settingsView = new InterfaceView(item->GetSettings()); + Window()->FindView("panel")->AddChild(settingsView); +} diff --git a/src/preferences/network/InterfacesAddOn/InterfacesAddOn.h b/src/preferences/network/InterfacesAddOn/InterfacesAddOn.h index 21704a128b..5363c3ab22 100644 --- a/src/preferences/network/InterfacesAddOn/InterfacesAddOn.h +++ b/src/preferences/network/InterfacesAddOn/InterfacesAddOn.h @@ -39,9 +39,11 @@ public: void AttachedToWindow(); void MessageReceived(BMessage* msg); + void Show(); private: InterfaceView* _SettingsView(); + void _ShowPanel(); private: InterfacesListView* fListView; }; diff --git a/src/preferences/network/ServicesAddOn/ServicesAddOn.cpp b/src/preferences/network/ServicesAddOn/ServicesAddOn.cpp index 3d648ccfed..f55e7a7975 100644 --- a/src/preferences/network/ServicesAddOn/ServicesAddOn.cpp +++ b/src/preferences/network/ServicesAddOn/ServicesAddOn.cpp @@ -83,27 +83,7 @@ ServicesAddOn::MessageReceived(BMessage* message) switch (message->what) { case kSelectionChanged: { - BStringItem* item = static_cast( - fServicesListView->ItemAt(message->FindInt32("index"))); - - if (item == NULL) - return; - - BView* panel = Window()->FindView("panel"); - BView* settingsView = panel->ChildAt(0); - - // Remove currently displayed settings view - if (settingsView != NULL) { - settingsView->RemoveSelf(); - delete settingsView; - } - - if (strcmp(item->Text(), "DNS") == 0) { - settingsView = new DNSSettingsView(); - panel->AddChild(settingsView); - } else { - // TODO show a standard "inetd service" view - } + _ShowPanel(); break; } default: @@ -112,6 +92,14 @@ ServicesAddOn::MessageReceived(BMessage* message) } +void +ServicesAddOn::Show() +{ + BView::Show(); + _ShowPanel(); +} + + status_t ServicesAddOn::Save() { @@ -219,3 +207,30 @@ ServicesAddOn::_ParseXinetd() return B_ERROR; } + + +void +ServicesAddOn::_ShowPanel() +{ + BStringItem* item = static_cast( + fServicesListView->ItemAt(fServicesListView->CurrentSelection())); + + if (item == NULL) + return; + + BView* panel = Window()->FindView("panel"); + BView* settingsView = panel->ChildAt(0); + + // Remove currently displayed settings view + if (settingsView != NULL) { + settingsView->RemoveSelf(); + delete settingsView; + } + + if (strcmp(item->Text(), "DNS") == 0) { + settingsView = new DNSSettingsView(); + panel->AddChild(settingsView); + } else { + // TODO show a standard "inetd service" view + } +} diff --git a/src/preferences/network/ServicesAddOn/ServicesAddOn.h b/src/preferences/network/ServicesAddOn/ServicesAddOn.h index 311f48af93..bb0c0df68a 100644 --- a/src/preferences/network/ServicesAddOn/ServicesAddOn.h +++ b/src/preferences/network/ServicesAddOn/ServicesAddOn.h @@ -22,6 +22,7 @@ class ServicesAddOn : public NetworkSetupAddOn, public BGroupView { void AttachedToWindow(); void MessageReceived(BMessage*); + void Show(); status_t Save(); status_t Revert(); @@ -29,6 +30,7 @@ class ServicesAddOn : public NetworkSetupAddOn, public BGroupView { private: status_t _ParseInetd(); status_t _ParseXinetd(); + void _ShowPanel(); private: BListView* fServicesListView;