From e58807ed85d518c3ccf9e0a7ec77b55a3d3e2701 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Fri, 16 Mar 2012 04:07:42 +0000 Subject: [PATCH] networkstatus: Scale icon to large and small sizes * This gives us a nice status icon to use for notification messages. --- src/apps/networkstatus/NetworkStatusView.cpp | 35 ++++++++++++++------ src/apps/networkstatus/NetworkStatusView.h | 3 +- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/apps/networkstatus/NetworkStatusView.cpp b/src/apps/networkstatus/NetworkStatusView.cpp index 1dcae82c8d..5e5485d91f 100644 --- a/src/apps/networkstatus/NetworkStatusView.cpp +++ b/src/apps/networkstatus/NetworkStatusView.cpp @@ -145,7 +145,8 @@ void NetworkStatusView::_Init() { for (int i = 0; i < kStatusCount; i++) { - fBitmaps[i] = NULL; + fTrayIcons[i] = NULL; + fNotifyIcons[i] = NULL; } _UpdateBitmaps(); @@ -156,8 +157,10 @@ void NetworkStatusView::_UpdateBitmaps() { for (int i = 0; i < kStatusCount; i++) { - delete fBitmaps[i]; - fBitmaps[i] = NULL; + delete fTrayIcons[i]; + delete fNotifyIcons[i]; + fTrayIcons[i] = NULL; + fNotifyIcons[i] = NULL; } image_info info; @@ -180,13 +183,23 @@ NetworkStatusView::_UpdateBitmaps() data = resources.LoadResource(B_VECTOR_ICON_TYPE, kNetworkStatusNoDevice + i, &size); if (data != NULL) { - BBitmap* icon = new BBitmap(Bounds(), B_RGBA32); - if (icon->InitCheck() == B_OK + // Scale main tray icon + BBitmap* trayIcon = new BBitmap(Bounds(), B_RGBA32); + if (trayIcon->InitCheck() == B_OK && BIconUtils::GetVectorIcon((const uint8 *)data, - size, icon) == B_OK) { - fBitmaps[i] = icon; + size, trayIcon) == B_OK) { + fTrayIcons[i] = trayIcon; } 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 NetworkStatusView::Draw(BRect updateRect) { - if (fBitmaps[fStatus] == NULL) + if (fTrayIcons[fStatus] == NULL) return; SetDrawingMode(B_OP_ALPHA); - DrawBitmap(fBitmaps[fStatus]); + DrawBitmap(fTrayIcons[fStatus]); SetDrawingMode(B_OP_COPY); } @@ -552,7 +565,7 @@ NetworkStatusView::_Update(bool force) notification.SetGroup(B_TRANSLATE("Network Status")); notification.SetTitle(interface.Name()); notification.SetMessageID(interface.Name()); - notification.SetIcon(fBitmaps[fStatus]); + notification.SetIcon(fNotifyIcons[fStatus]); if (fStatus == kStatusConnecting) { notification.SetContent(B_TRANSLATE("Connecting...")); notification.Send(); diff --git a/src/apps/networkstatus/NetworkStatusView.h b/src/apps/networkstatus/NetworkStatusView.h index 9bd6b45fab..09c7661973 100644 --- a/src/apps/networkstatus/NetworkStatusView.h +++ b/src/apps/networkstatus/NetworkStatusView.h @@ -59,7 +59,8 @@ class NetworkStatusView : public BView { BObjectList fInterfaces; bool fInDeskbar; - BBitmap* fBitmaps[kStatusCount]; + BBitmap* fTrayIcons[kStatusCount]; + BBitmap* fNotifyIcons[kStatusCount]; int32 fStatus; };