networkstatus: Scale icon to large and small sizes
* This gives us a nice status icon to use for notification messages.
This commit is contained in:
@@ -145,7 +145,8 @@ void
|
|||||||
NetworkStatusView::_Init()
|
NetworkStatusView::_Init()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < kStatusCount; i++) {
|
for (int i = 0; i < kStatusCount; i++) {
|
||||||
fBitmaps[i] = NULL;
|
fTrayIcons[i] = NULL;
|
||||||
|
fNotifyIcons[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_UpdateBitmaps();
|
_UpdateBitmaps();
|
||||||
@@ -156,8 +157,10 @@ void
|
|||||||
NetworkStatusView::_UpdateBitmaps()
|
NetworkStatusView::_UpdateBitmaps()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < kStatusCount; i++) {
|
for (int i = 0; i < kStatusCount; i++) {
|
||||||
delete fBitmaps[i];
|
delete fTrayIcons[i];
|
||||||
fBitmaps[i] = NULL;
|
delete fNotifyIcons[i];
|
||||||
|
fTrayIcons[i] = NULL;
|
||||||
|
fNotifyIcons[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
image_info info;
|
image_info info;
|
||||||
@@ -180,13 +183,23 @@ NetworkStatusView::_UpdateBitmaps()
|
|||||||
data = resources.LoadResource(B_VECTOR_ICON_TYPE,
|
data = resources.LoadResource(B_VECTOR_ICON_TYPE,
|
||||||
kNetworkStatusNoDevice + i, &size);
|
kNetworkStatusNoDevice + i, &size);
|
||||||
if (data != NULL) {
|
if (data != NULL) {
|
||||||
BBitmap* icon = new BBitmap(Bounds(), B_RGBA32);
|
// Scale main tray icon
|
||||||
if (icon->InitCheck() == B_OK
|
BBitmap* trayIcon = new BBitmap(Bounds(), B_RGBA32);
|
||||||
|
if (trayIcon->InitCheck() == B_OK
|
||||||
&& BIconUtils::GetVectorIcon((const uint8 *)data,
|
&& BIconUtils::GetVectorIcon((const uint8 *)data,
|
||||||
size, icon) == B_OK) {
|
size, trayIcon) == B_OK) {
|
||||||
fBitmaps[i] = icon;
|
fTrayIcons[i] = trayIcon;
|
||||||
} else
|
} else
|
||||||
delete icon;
|
delete trayIcon;
|
||||||
|
|
||||||
|
// Scale notification icon
|
||||||
|
BBitmap* notifyIcon = new BBitmap(BRect(0, 0, 31, 31), B_RGBA32);
|
||||||
|
if (notifyIcon->InitCheck() == B_OK
|
||||||
|
&& BIconUtils::GetVectorIcon((const uint8 *)data,
|
||||||
|
size, notifyIcon) == B_OK) {
|
||||||
|
fNotifyIcons[i] = notifyIcon;
|
||||||
|
} else
|
||||||
|
delete notifyIcon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -313,11 +326,11 @@ NetworkStatusView::FrameResized(float width, float height)
|
|||||||
void
|
void
|
||||||
NetworkStatusView::Draw(BRect updateRect)
|
NetworkStatusView::Draw(BRect updateRect)
|
||||||
{
|
{
|
||||||
if (fBitmaps[fStatus] == NULL)
|
if (fTrayIcons[fStatus] == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SetDrawingMode(B_OP_ALPHA);
|
SetDrawingMode(B_OP_ALPHA);
|
||||||
DrawBitmap(fBitmaps[fStatus]);
|
DrawBitmap(fTrayIcons[fStatus]);
|
||||||
SetDrawingMode(B_OP_COPY);
|
SetDrawingMode(B_OP_COPY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -552,7 +565,7 @@ NetworkStatusView::_Update(bool force)
|
|||||||
notification.SetGroup(B_TRANSLATE("Network Status"));
|
notification.SetGroup(B_TRANSLATE("Network Status"));
|
||||||
notification.SetTitle(interface.Name());
|
notification.SetTitle(interface.Name());
|
||||||
notification.SetMessageID(interface.Name());
|
notification.SetMessageID(interface.Name());
|
||||||
notification.SetIcon(fBitmaps[fStatus]);
|
notification.SetIcon(fNotifyIcons[fStatus]);
|
||||||
if (fStatus == kStatusConnecting) {
|
if (fStatus == kStatusConnecting) {
|
||||||
notification.SetContent(B_TRANSLATE("Connecting..."));
|
notification.SetContent(B_TRANSLATE("Connecting..."));
|
||||||
notification.Send();
|
notification.Send();
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ class NetworkStatusView : public BView {
|
|||||||
|
|
||||||
BObjectList<BString> fInterfaces;
|
BObjectList<BString> fInterfaces;
|
||||||
bool fInDeskbar;
|
bool fInDeskbar;
|
||||||
BBitmap* fBitmaps[kStatusCount];
|
BBitmap* fTrayIcons[kStatusCount];
|
||||||
|
BBitmap* fNotifyIcons[kStatusCount];
|
||||||
int32 fStatus;
|
int32 fStatus;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user