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
fListview = new InterfacesListView(intViewRect,
"interfaces", B_FOLLOW_ALL_SIDES);
fListview->SetSelectionMessage(new BMessage(kMsgInterfaceSel));
fListview->SetInvocationMessage(new BMessage(kMsgInterfaceAct));
fListview->SetSelectionMessage(new BMessage(kMsgInterfaceSelected));
fListview->SetInvocationMessage(new BMessage(kMsgInterfaceConfigure));
BScrollView* scrollView = new BScrollView(NULL, fListview,
B_FOLLOW_ALL_SIDES, B_WILL_DRAW | B_FRAME_EVENTS, false, true);
// Construct the BButtons
fConfigure = new BButton(intViewRect, "configure",
"Configure" B_UTF8_ELLIPSIS, new BMessage(kMsgInterfaceCfg));
"Configure" B_UTF8_ELLIPSIS, new BMessage(kMsgInterfaceConfigure));
fConfigure->SetEnabled(false);
fOnOff = new BButton(intViewRect, "onoff", "Disable",
new BMessage(kMsgInterfaceTog));
new BMessage(kMsgInterfaceToggle));
fOnOff->SetEnabled(false);
// Build the layout
@@ -127,7 +125,7 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
}
switch (msg->what) {
case kMsgInterfaceSel:
case kMsgInterfaceSelected:
{
fOnOff->SetEnabled(item != NULL);
fConfigure->SetEnabled(item != NULL);
@@ -138,8 +136,7 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
break;
}
case kMsgInterfaceAct:
case kMsgInterfaceCfg:
case kMsgInterfaceConfigure:
{
if (!item)
break;
@@ -149,7 +146,7 @@ InterfacesAddOn::MessageReceived(BMessage* msg)
break;
}
case kMsgInterfaceTog:
case kMsgInterfaceToggle:
{
if (!item)
break;
@@ -20,6 +20,11 @@
#include "InterfacesListView.h"
static const uint32 kMsgInterfaceSelected = 'ifce';
static const uint32 kMsgInterfaceConfigure = 'ifcf';
static const uint32 kMsgInterfaceToggle = 'onof';
class InterfacesAddOn : public NetworkSetupAddOn, public BBox
{
public:
@@ -31,11 +36,6 @@ public:
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 MessageReceived(BMessage* msg);
@@ -29,6 +29,7 @@
#include <NetworkInterface.h>
#include <NetworkRoster.h>
#include <Resources.h>
#include <Window.h>
#include <AutoDeleter.h>
@@ -144,9 +145,9 @@ InterfaceListItem::DrawItem(BView* owner, BRect /*bounds*/, bool complete)
iconPt += BPoint(4, 4);
statePt += BPoint(0, fFirstlineOffset);
namePt += BPoint(32 + 12, fFirstlineOffset);
v4addrPt += BPoint(32 + 12, fSecondlineOffset);
v6addrPt += BPoint(32 + 12, fThirdlineOffset);
namePt += BPoint(ICON_SIZE + 12, fFirstlineOffset);
v4addrPt += BPoint(ICON_SIZE + 12, fSecondlineOffset);
v6addrPt += BPoint(ICON_SIZE + 12, fThirdlineOffset);
statePt
-= BPoint(be_plain_font->StringWidth(interfaceState.String()), 0);
@@ -274,7 +275,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
if (interfaceHVIF) {
// 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,
iconSize, interfaceBitmap) == B_OK)
fIcon = interfaceBitmap;
@@ -287,7 +289,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
B_VECTOR_ICON_TYPE, "offline", &iconSize);
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);
}
@@ -295,7 +298,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
B_VECTOR_ICON_TYPE, "pending", &iconSize);
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);
}
@@ -303,7 +307,8 @@ InterfaceListItem::_PopulateBitmaps(const char* mediaType) {
B_VECTOR_ICON_TYPE, "online", &iconSize);
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);
}
@@ -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 *
InterfacesListView::FindItem(const char* name)
{
@@ -19,13 +19,20 @@
#include <Bitmap.h>
#include <ListView.h>
#include <ListItem.h>
#include <MenuItem.h>
#include <NetworkDevice.h>
#include <NetworkInterface.h>
#include <PopUpMenu.h>
#include <String.h>
#include "NetworkSettings.h"
#define ICON_SIZE 37
static const uint32 kMsgInterfaceReconfigure = 'ifre';
class InterfaceListItem : public BListItem {
public:
InterfaceListItem(const char* name);
@@ -78,6 +85,7 @@ public:
protected:
virtual void AttachedToWindow();
virtual void DetachedFromWindow();
virtual void MouseDown(BPoint point);
virtual void MessageReceived(BMessage* message);