[haiku-commits] r40239 - haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 17 Jan 2011 12:21:13 +0100 (CET)

Author: phoudoin
Date: 2011-01-17 12:21:12 +0100 (Mon, 17 Jan 2011)
New Revision: 40239
Changeset: http://dev.haiku-os.org/changeset/40239

Removed:
   
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.cpp
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/EthernetSettingsView.h
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/Setting.cpp
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/Setting.h
Modified:
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp
   haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.h
Log:
Switched to new BNetwork* classes.


Modified: 
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp
===================================================================
--- haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp  
2011-01-16 16:33:11 UTC (rev 40238)
+++ haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesAddOn.cpp  
2011-01-17 11:21:12 UTC (rev 40239)
@@ -61,14 +61,14 @@
 {
        float w, h;
        BRect r = *bounds;
-       
+
 #define H_MARGIN       10
 #define V_MARGIN       10
 #define SMALL_MARGIN   3
-       
+
        if (r.Width() < 100 || r.Height() < 100)
                r.Set(0, 0, 100, 100);
-               
+
        ResizeTo(r.Width(), r.Height());
 
        BRect rlv = r;
@@ -77,14 +77,14 @@
        rlv.right -= B_V_SCROLL_BAR_WIDTH;
        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 
+       fListview->SetInvocationMessage(new BMessage(CONFIGURE_INTERFACE_MSG));
+       AddChild(new BScrollView(NULL, fListview, B_FOLLOW_ALL_SIDES, 
B_WILL_DRAW
                        | B_FRAME_EVENTS, false, true));
-       
+
        r.top = r.bottom - 60;
-       fConfigure = new BButton(r, "configure", "Configure" B_UTF8_ELLIPSIS, 
+       fConfigure = new BButton(r, "configure", "Configure" B_UTF8_ELLIPSIS,
                new BMessage(CONFIGURE_INTERFACE_MSG), B_FOLLOW_BOTTOM | 
B_FOLLOW_LEFT);
-               
+
        fConfigure->GetPreferredSize(&w, &h);
        fConfigure->ResizeToPreferred();
        fConfigure->SetEnabled(false);
@@ -99,7 +99,7 @@
        fOnOff->Hide();
        AddChild(fOnOff);
 
-       *bounds = Bounds();     
+       *bounds = Bounds();
        return this;
 }
 
@@ -119,7 +119,7 @@
 {
        int nr = fListview->CurrentSelection();
        InterfaceListItem *item = NULL;
-       if(nr != -1) {          
+       if(nr != -1) {
                item = dynamic_cast<InterfaceListItem*>(fListview->ItemAt(nr));
        }
 
@@ -131,26 +131,26 @@
                        fOnOff->Hide();
                        break;
                }
-               fOnOff->SetLabel(item->Enabled() ? "Disable" : "Enable");
-               fOnOff->Show();         
+               fOnOff->SetLabel(item->IsDisabled() ? "Enable" : "Disable");
+               fOnOff->Show();
                break;
        }
-               
+
        case CONFIGURE_INTERFACE_MSG: {
                if (!item)
                        break;
 
-               NetworkWindow* nw = new NetworkWindow(item->GetSetting());
+               NetworkWindow* nw = new NetworkWindow(item->GetSettings());
                nw->Show();
                break;
        }
-               
+
        case ONOFF_INTERFACE_MSG:
                if (!item)
                        break;
-               
-               item->SetEnabled(!item->Enabled());
-               fOnOff->SetLabel(item->Enabled() ? "Disable" : "Enable");
+
+               item->SetDisabled(!item->IsDisabled());
+               fOnOff->SetLabel(item->IsDisabled() ? "Enable" : "Disable");
                fListview->Invalidate();
                break;
 

Modified: 
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp
===================================================================
--- 
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp   
    2011-01-16 16:33:11 UTC (rev 40238)
+++ 
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.cpp   
    2011-01-17 11:21:12 UTC (rev 40239)
@@ -9,7 +9,6 @@
 
 
 #include "InterfacesListView.h"
-#include "Setting.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -22,44 +21,19 @@
 #include <sys/socket.h>
 #include <sys/sockio.h>
 
-#include <IconUtils.h>
 #include <File.h>
+#include <IconUtils.h>
+#include <net_notifications.h>
+#include <NetworkDevice.h>
+#include <NetworkInterface.h>
+#include <NetworkRoster.h>
 #include <Resources.h>
 
 #include <AutoDeleter.h>
-#include <net_notifications.h>
 
+#include "Settings.h"
 
 
-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 -
 
 
@@ -77,25 +51,30 @@
 }
 
 
+// #pragma mark -
+
+
 InterfaceListItem::InterfaceListItem(const char* name)
-       : 
+       :
        BListItem(0, false),
-       fIcon(NULL),    
-       fSettings(new Setting(name))
+       fIcon(NULL)
 {
-       _InitIcon();
+       fInterface.SetTo(name);
+       _Init();
 }
 
 
 InterfaceListItem::~InterfaceListItem()
 {
        delete fIcon;
+       delete fSettings;
 }
 
 
-void InterfaceListItem::Update(BView* owner, const BFont* font)
-{      
-       BListItem::Update(owner,font);  
+void
+InterfaceListItem::Update(BView* owner, const BFont* font)
+{
+       BListItem::Update(owner,font);
        font_height height;
        font->GetHeight(&height);
 
@@ -110,21 +89,21 @@
        BListView* list = dynamic_cast<BListView*>(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));            
-                                                               
+       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() ) 
+       if ( IsSelected() )
                color = tint_color(color, B_HIGHLIGHT_BACKGROUND_TINT);
 
        owner->SetViewColor( color );
@@ -140,35 +119,35 @@
        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 (fSettings->Enabled())
-               owner->SetDrawingMode(B_OP_OVER);
-       else {
+       if (fSettings->IsDisabled()) {
                owner->SetDrawingMode(B_OP_ALPHA);
                owner->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_OVERLAY);
                owner->SetHighColor(0, 0, 0, 32);
-       }
-       
+       } else
+               owner->SetDrawingMode(B_OP_OVER);
+
        owner->DrawBitmapAsync(fIcon, iconPt);
 
-       if (!fSettings->Enabled())
+       if (fSettings->IsDisabled())
                owner->SetHighColor(tint_color(oldcolor, B_LIGHTEN_1_TINT));
 
        owner->SetFont(be_bold_font);
        owner->DrawString(Name(), namePt);
        owner->SetFont(be_plain_font);
 
-       if (fSettings->Enabled()) {
+       if (fSettings->IsDisabled())
+               owner->DrawString("Disabled.", driverPt);
+       else {
                BString str("Enabled, IPv4 address: ");
                str << fSettings->IP();
                owner->DrawString(str.String(), driverPt);
-               if (fSettings->AutoConfigured())
+               if (fSettings->AutoConfigure())
                        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);
@@ -176,12 +155,16 @@
 
 
 void
-InterfaceListItem::_InitIcon()
+InterfaceListItem::_Init()
 {
+       fSettings = new Settings(Name());
+
+       // Init icon
        BBitmap* icon = NULL;
-       
-       const char* mediaTypeName = "";
-       int media = fSettings->Media();
+
+       const char* mediaTypeName = NULL;
+
+       int media = fInterface.Media();
        printf("%s media = 0x%x\n", Name(), media);
        switch (IFM_TYPE(media)) {
                case IFM_ETHER:
@@ -190,6 +173,14 @@
                case IFM_IEEE80211:
                        mediaTypeName = "wifi";
                        break;
+               default: {
+                       BNetworkDevice device(Name());
+                       if (device.IsWireless())
+                               mediaTypeName = "wifi";
+                       else if (device.IsEthernet())
+                               mediaTypeName = "ether";
+                       break;
+               }
        }
 
        image_info info;
@@ -207,12 +198,12 @@
        size_t size;
        // Try specific interface icon?
        const uint8* rawIcon = (const 
uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, Name(), &size);
-       if (!rawIcon)
+       if (rawIcon == NULL && mediaTypeName != NULL)
                // Not found, try interface media type?
                rawIcon = (const 
uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, mediaTypeName, &size);
-       if (!rawIcon)
+       if (rawIcon == NULL)
                // Not found, try default interface icon?
-               rawIcon = (const 
uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, "wifi", &size);
+               rawIcon = (const 
uint8*)resources.LoadResource(B_VECTOR_ICON_TYPE, "ether", &size);
 
        if (rawIcon) {
                // Now build the bitmap
@@ -244,7 +235,7 @@
        BListView::AttachedToWindow();
 
        _InitList();
-       
+
        start_watching_network(
                B_WATCH_NETWORK_INTERFACE_CHANGES | 
B_WATCH_NETWORK_LINK_CHANGES, this);
 }
@@ -298,42 +289,16 @@
 status_t
 InterfacesListView::_InitList()
 {
-       SocketOpener socket;
-       if (socket.InitCheck() != B_OK)
-               return B_ERROR;
+       BNetworkRoster& roster = BNetworkRoster::Default();
+       BNetworkInterface interface;
+       uint32 cookie = 0;
 
-       // 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++) {
-               if (strcmp(interface->ifr_name, "loop") != 0) {
-                       AddItem(new InterfaceListItem(interface->ifr_name));
-       //              printf("Name = %s\n", interface->ifr_name);
+       while (roster.GetNextInterface(&cookie, interface) == B_OK) {
+               if (strncmp(interface.Name(), "loop", 4) && 
interface.Name()[0]) {
+                       AddItem(new InterfaceListItem(interface.Name()));
                }
-               interface = (ifreq*)((addr_t)interface + IF_NAMESIZE 
-                       + interface->ifr_addr.sa_len);
-       }       
+       }
+
        return B_OK;
 }
 
@@ -345,17 +310,17 @@
        return B_OK;
 }
 
-void 
+void
 InterfacesListView::_HandleNetworkMessage(BMessage* message)
 {
        const char* name;
        int32 opcode;
-       
+
        message->PrintToStream();
-       
+
        if (message->FindInt32("opcode", &opcode) != B_OK)
                return;
-               
+
        if (message->FindString("interface", &name) != B_OK
                && message->FindString("device", &name) != B_OK)
                return;
@@ -370,14 +335,14 @@
                        if (item)
                                InvalidateItem(IndexOf(item));
                        break;
-               
+
                case B_NETWORK_INTERFACE_ADDED:
                        if (item)
                                InvalidateItem(IndexOf(item));
                        else
                                AddItem(new InterfaceListItem(name));
                        break;
-                       
+
                case B_NETWORK_INTERFACE_REMOVED:
                        if (item) {
                                RemoveItem(item);

Modified: 
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h
===================================================================
--- haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h 
2011-01-16 16:33:11 UTC (rev 40238)
+++ haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/InterfacesListView.h 
2011-01-17 11:21:12 UTC (rev 40239)
@@ -11,18 +11,20 @@
 #ifndef INTERFACES_LIST_VIEW_H
 #define INTERFACES_LIST_VIEW_H
 
-#include <String.h>
-#include <ListView.h>
-#include <ListItem.h>
-#include <Bitmap.h>
-
 #include <net/if.h>
 #include <net/if_dl.h>
 #include <net/if_media.h>
 #include <net/if_types.h>
 
-#include "Setting.h"
+#include <Bitmap.h>
+#include <ListView.h>
+#include <ListItem.h>
+#include <NetworkDevice.h>
+#include <NetworkInterface.h>
+#include <String.h>
 
+#include "Settings.h"
+
 class InterfaceListItem : public BListItem {
 public:
        InterfaceListItem(const char* name);
@@ -30,17 +32,18 @@
 
        void DrawItem(BView* owner, BRect bounds, bool complete);
        void Update(BView* owner, const BFont* font);
-               
-       inline const char*              Name()                  { return 
fSettings->Name(); }
-       inline bool                             Enabled()               { 
return fSettings->Enabled(); } 
-       inline void                             SetEnabled(bool enable){ 
fSettings->Enable(enable); }
-       inline Setting*                 GetSetting()    { return fSettings; } 
 
+       inline const char*              Name()                  { return 
fInterface.Name(); }
+       inline bool                             IsDisabled()    { return 
fSettings->IsDisabled(); }
+       inline void                             SetDisabled(bool disable){ 
fSettings->SetDisabled(disable); }
+       inline Settings*                GetSettings()   { return fSettings; }
+
 private:
-       void                                    _InitIcon();
+       void                                    _Init();
 
        BBitmap*                                fIcon;
-       Setting*                                fSettings;
+       BNetworkInterface               fInterface;
+       Settings*                               fSettings;
 };
 
 

Modified: haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile
===================================================================
--- haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile      
2011-01-16 16:33:11 UTC (rev 40238)
+++ haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/Jamfile      
2011-01-17 11:21:12 UTC (rev 40239)
@@ -1,26 +1,37 @@
 SubDir HAIKU_TOP src tests kits net preflet InterfacesAddOn ;
 
+SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps networkstatus ] ;
+SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src preferences network ] ;
+
 UseHeaders [ FDirName $(HAIKU_TOP) src tests kits net preflet ] ;
 UseHeaders [ FDirName $(HAIKU_TOP) src servers net ] : true ;
 
 UsePrivateHeaders net shared ;
 UseLibraryHeaders agg icon ;
 
-AddResources Interfaces : 
-       InterfacesIcons.rdef 
+
+AddResources Interfaces :
+       InterfacesIcons.rdef
 ;
 
-Addon Interfaces : 
+Addon Interfaces :
        InterfacesAddOn.cpp
        InterfacesListView.cpp
-       Setting.cpp
        NetworkWindow.cpp
+
+       # from src/preferences/network
        EthernetSettingsView.cpp
-       : 
-       be 
-       <nogrist>NetworkSetup 
-       $(TARGET_NETWORK_LIBS) 
-       $(TARGET_LIBSUPC++) 
+       Settings.cpp
+
+       # from src/apps/networkstatus
+       RadioView.cpp
+       WirelessNetworkMenuItem.cpp
+       :
+       be
+       <nogrist>NetworkSetup
+       $(TARGET_NETWORK_LIBS)
+       libbnetapi.so
+       $(TARGET_LIBSUPC++)
+       $(HAIKU_LOCALE_LIBS)
        libicon.a libagg.a
 ;
-

Modified: 
haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp
===================================================================
--- haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp    
2011-01-16 16:33:11 UTC (rev 40238)
+++ haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.cpp    
2011-01-17 11:21:12 UTC (rev 40239)
@@ -4,7 +4,7 @@
  *
  * Author:
  *             Andre Alves Garzia, andre@xxxxxxxxxxxxxxx
- *             Fredrik Modéen  
+ *             Fredrik Modéen
  */
 
 #include "NetworkWindow.h"
@@ -13,18 +13,19 @@
 #include <GroupLayout.h>
 
 #include "EthernetSettingsView.h"
+#include "Settings.h"
 
 
-NetworkWindow::NetworkWindow(Setting* setting)
+NetworkWindow::NetworkWindow(Settings* settings)
        : BWindow(BRect(50, 50, 269, 302), "Network", B_TITLED_WINDOW,
                B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE
                | B_AUTO_UPDATE_SIZE_LIMITS)
 {
        SetLayout(new BGroupLayout(B_HORIZONTAL));
-       fEthernetView = new EthernetSettingsView(setting);
+       fEthernetView = new EthernetSettingsView(); // settings);
        GetLayout()->AddView(fEthernetView);
-       
-       SetTitle(setting->Name());
+
+       SetTitle(settings->Name());
 }
 
 

Modified: haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.h
===================================================================
--- haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.h      
2011-01-16 16:33:11 UTC (rev 40238)
+++ haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn/NetworkWindow.h      
2011-01-17 11:21:12 UTC (rev 40239)
@@ -4,7 +4,7 @@
  *
  * Author:
  *             Andre Alves Garzia, andre@xxxxxxxxxxxxxxx
- *             Fredrik Modéen  
+ *             Fredrik Modéen
  */
 #ifndef NETWORK_WINDOW_H
 #define NETWORK_WINDOW_H
@@ -12,12 +12,13 @@
 
 #include <Window.h>
 
-#include "EthernetSettingsView.h"
+class Settings;
+class EthernetSettingsView;
 
 
 class NetworkWindow : public BWindow {
 public:
-                                       NetworkWindow(Setting* setting);
+                                       NetworkWindow(Settings* setting);
        virtual                 ~NetworkWindow();
        virtual bool    QuitRequested();
        virtual void    MessageReceived(BMessage* mesage);


Other related posts:

  • » [haiku-commits] r40239 - haiku/trunk/src/tests/kits/net/preflet/InterfacesAddOn - philippe . houdoin