fix static message names to remove abbreviation; add secondary click menu to InterfacesListView; make interface icon adjustable

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40855 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Alexander von Gluck IV
2011-03-06 23:10:56 +00:00
parent eb7719b442
commit df3ba0993e
4 changed files with 62 additions and 22 deletions
@@ -65,21 +65,19 @@ InterfacesAddOn::CreateView(BRect *bounds)
// Construct the ListView // Construct the ListView
fListview = new InterfacesListView(intViewRect, fListview = new InterfacesListView(intViewRect,
"interfaces", B_FOLLOW_ALL_SIDES); "interfaces", B_FOLLOW_ALL_SIDES);
fListview->SetSelectionMessage(new BMessage(kMsgInterfaceSel)); fListview->SetSelectionMessage(new BMessage(kMsgInterfaceSelected));
fListview->SetInvocationMessage(new BMessage(kMsgInterfaceAct)); fListview->SetInvocationMessage(new BMessage(kMsgInterfaceConfigure));
BScrollView* scrollView = new BScrollView(NULL, fListview, BScrollView* scrollView = new BScrollView(NULL, fListview,
B_FOLLOW_ALL_SIDES, B_WILL_DRAW | B_FRAME_EVENTS, false, true); B_FOLLOW_ALL_SIDES, B_WILL_DRAW | B_FRAME_EVENTS, false, true);
// Construct the BButtons // Construct the BButtons
fConfigure = new BButton(intViewRect, "configure", fConfigure = new BButton(intViewRect, "configure",
"Configure" B_UTF8_ELLIPSIS, new BMessage(kMsgInterfaceCfg)); "Configure" B_UTF8_ELLIPSIS, new BMessage(kMsgInterfaceConfigure));
fConfigure->SetEnabled(false); fConfigure->SetEnabled(false);
fOnOff = new BButton(intViewRect, "onoff", "Disable", fOnOff = new BButton(intViewRect, "onoff", "Disable",
new BMessage(kMsgInterfaceTog)); new BMessage(kMsgInterfaceToggle));
fOnOff->SetEnabled(false); fOnOff->SetEnabled(false);
// Build the layout // Build the layout
@@ -127,7 +125,7 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
} }
switch (msg->what) { switch (msg->what) {
case kMsgInterfaceSel: case kMsgInterfaceSelected:
{ {
fOnOff->SetEnabled(item != NULL); fOnOff->SetEnabled(item != NULL);
fConfigure->SetEnabled(item != NULL); fConfigure->SetEnabled(item != NULL);
@@ -138,8 +136,7 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
break; break;
} }
case kMsgInterfaceAct: case kMsgInterfaceConfigure:
case kMsgInterfaceCfg:
{ {
if (!item) if (!item)
break; break;
@@ -149,7 +146,7 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
break; break;
} }
case kMsgInterfaceTog: case kMsgInterfaceToggle:
{ {
if (!item) if (!item)
break; break;
@@ -20,6 +20,11 @@
#include "InterfacesListView.h" #include "InterfacesListView.h"
static const uint32 kMsgInterfaceSelected = 'ifce';
static const uint32 kMsgInterfaceConfigure = 'ifcf';
static const uint32 kMsgInterfaceToggle = 'onof';
class InterfacesAddOn : public NetworkSetupAddOn, public BBox class InterfacesAddOn : public NetworkSetupAddOn, public BBox
{ {
public: public:
@@ -31,11 +36,6 @@ public:
BView* CreateView(BRect *bounds); BView* CreateView(BRect *bounds);
static const uint32 kMsgInterfaceSel = 'ifce';
static const uint32 kMsgInterfaceAct = 'ifac';
static const uint32 kMsgInterfaceCfg = 'ifcf';
static const uint32 kMsgInterfaceTog = 'onof';
void AttachedToWindow(); void AttachedToWindow();
void MessageReceived(BMessage* msg); void MessageReceived(BMessage* msg);
@@ -29,6 +29,7 @@
#include <NetworkInterface.h> #include <NetworkInterface.h>
#include <NetworkRoster.h> #include <NetworkRoster.h>
#include <Resources.h> #include <Resources.h>
#include <Window.h>
#include <AutoDeleter.h> #include <AutoDeleter.h>
@@ -144,9 +145,9 @@ InterfaceListItem::DrawItem(BView* owner, BRect /*bounds*/, bool complete)
iconPt += BPoint(4, 4); iconPt += BPoint(4, 4);
statePt += BPoint(0, fFirstlineOffset); statePt += BPoint(0, fFirstlineOffset);
namePt += BPoint(32 + 12, fFirstlineOffset); namePt += BPoint(ICON_SIZE + 12, fFirstlineOffset);
v4addrPt += BPoint(32 + 12, fSecondlineOffset); v4addrPt += BPoint(ICON_SIZE + 12, fSecondlineOffset);
v6addrPt += BPoint(32 + 12, fThirdlineOffset); v6addrPt += BPoint(ICON_SIZE + 12, fThirdlineOffset);
statePt statePt
-= BPoint(be_plain_font->StringWidth(interfaceState.String()), 0); -= BPoint(be_plain_font->StringWidth(interfaceState.String()), 0);
@@ -274,7 +275,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
if (interfaceHVIF) { if (interfaceHVIF) {
// Now build the bitmap // Now build the bitmap
interfaceBitmap = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); interfaceBitmap = new BBitmap(BRect(0, 0, ICON_SIZE, ICON_SIZE),
0, B_RGBA32);
if (BIconUtils::GetVectorIcon(interfaceHVIF, if (BIconUtils::GetVectorIcon(interfaceHVIF,
iconSize, interfaceBitmap) == B_OK) iconSize, interfaceBitmap) == B_OK)
fIcon = interfaceBitmap; fIcon = interfaceBitmap;
@@ -287,7 +289,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
B_VECTOR_ICON_TYPE, "offline", &iconSize); B_VECTOR_ICON_TYPE, "offline", &iconSize);
if (offlineHVIF) { if (offlineHVIF) {
fIconOffline = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); fIconOffline = new BBitmap(BRect(0, 0, ICON_SIZE, ICON_SIZE),
0, B_RGBA32);
BIconUtils::GetVectorIcon(offlineHVIF, iconSize, fIconOffline); BIconUtils::GetVectorIcon(offlineHVIF, iconSize, fIconOffline);
} }
@@ -295,7 +298,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
B_VECTOR_ICON_TYPE, "pending", &iconSize); B_VECTOR_ICON_TYPE, "pending", &iconSize);
if (pendingHVIF) { if (pendingHVIF) {
fIconPending = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); fIconPending = new BBitmap(BRect(0, 0, ICON_SIZE, ICON_SIZE),
0, B_RGBA32);
BIconUtils::GetVectorIcon(pendingHVIF, iconSize, fIconPending); BIconUtils::GetVectorIcon(pendingHVIF, iconSize, fIconPending);
} }
@@ -303,7 +307,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
B_VECTOR_ICON_TYPE, "online", &iconSize); B_VECTOR_ICON_TYPE, "online", &iconSize);
if (onlineHVIF) { if (onlineHVIF) {
fIconOnline = new BBitmap(BRect(0, 0, 31, 31), 0, B_RGBA32); fIconOnline = new BBitmap(BRect(0, 0, ICON_SIZE, ICON_SIZE),
0, B_RGBA32);
BIconUtils::GetVectorIcon(onlineHVIF, iconSize, fIconOnline); BIconUtils::GetVectorIcon(onlineHVIF, iconSize, fIconOnline);
} }
@@ -366,6 +371,36 @@ InterfacesListView::MessageReceived(BMessage* message)
} }
void
InterfacesListView::MouseDown(BPoint point)
{
BMessage *msg = Window()->CurrentMessage();
BListView::MouseDown(point);
// if user is clicking and an item that has been selected
// via MouseDown call above. (eg. user clicked a list item)
if (msg->what == B_MOUSE_DOWN
&& this->CurrentSelection() >= 0) {
uint32 buttons = 0;
msg->FindInt32("buttons", (int32 *)&buttons);
// was it the secondary mouse button? If so show interface options
if (buttons & B_SECONDARY_MOUSE_BUTTON) {
BPopUpMenu *menu = new BPopUpMenu("IntefaceOptions");
menu->SetFont(be_plain_font);
menu->AddItem(new BMenuItem("Renegotiate Address",
new BMessage(kMsgInterfaceReconfigure)));
menu->Go(ConvertToScreen(point));
//if (selected)
// Window()->PostMessage(selected->Message()->what);
//delete menu;
return;
}
}
return;
}
InterfaceListItem * InterfaceListItem *
InterfacesListView::FindItem(const char* name) InterfacesListView::FindItem(const char* name)
{ {
@@ -19,13 +19,20 @@
#include <Bitmap.h> #include <Bitmap.h>
#include <ListView.h> #include <ListView.h>
#include <ListItem.h> #include <ListItem.h>
#include <MenuItem.h>
#include <NetworkDevice.h> #include <NetworkDevice.h>
#include <NetworkInterface.h> #include <NetworkInterface.h>
#include <PopUpMenu.h>
#include <String.h> #include <String.h>
#include "NetworkSettings.h" #include "NetworkSettings.h"
#define ICON_SIZE 37
static const uint32 kMsgInterfaceReconfigure = 'ifre';
class InterfaceListItem : public BListItem { class InterfaceListItem : public BListItem {
public: public:
InterfaceListItem(const char* name); InterfaceListItem(const char* name);
@@ -78,6 +85,7 @@ public:
protected: protected:
virtual void AttachedToWindow(); virtual void AttachedToWindow();
virtual void DetachedFromWindow(); virtual void DetachedFromWindow();
virtual void MouseDown(BPoint point);
virtual void MessageReceived(BMessage* message); virtual void MessageReceived(BMessage* message);