From 3b5c41fb0cc78094dd3e34fe1452c84009a289d3 Mon Sep 17 00:00:00 2001 From: Michael Pfeiffer Date: Mon, 23 Jul 2007 18:10:13 +0000 Subject: [PATCH] Fixed issue #1313 (2 kind of printer icons). For the selected printer the Printers preflet icon was used. For not selected printer the Printer filetype icon is used. The change of the Printers preflet icon to the vector format changed its appearance, so the two did not match anymore. Using the Printers preflet icon for the selected printer is a sub-optimal solution. Now the selected printer icon is created at runtime. A check mark bitmap is drawn over the "not selected" printer icon. Someone feel free to create a version in vector format of that bitmap. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21693 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/print/PrinterListView.cpp | 33 +++++++++++++-- src/preferences/print/Printers.rdef | 49 +++++++++++++++++++++++ 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/src/preferences/print/PrinterListView.cpp b/src/preferences/print/PrinterListView.cpp index f5ee52588a..dd8e83eb26 100644 --- a/src/preferences/print/PrinterListView.cpp +++ b/src/preferences/print/PrinterListView.cpp @@ -215,9 +215,36 @@ PrinterItem::PrinterItem(PrintersWindow* window, const BDirectory& node) } if (sSelectedIcon == NULL) { - sSelectedIcon = new BBitmap(BRect(0,0,B_LARGE_ICON-1,B_LARGE_ICON-1), B_CMAP8); - BMimeType type(PRNT_SIGNATURE_TYPE); - type.GetIcon(sSelectedIcon, B_LARGE_ICON); + BBitmap *checkMark = LoadBitmap("check_mark_icon", 'BBMP'); + if (checkMark == NULL) { + BAlert *alert = new BAlert("Error", + "Fatal error: Check mark icon could not be loaded from resources!", + "Bye"); + alert->Go(); + exit(1); + } + + // draw check mark at bottom left over printer icon + sSelectedIcon = new BBitmap(sIcon->Bounds(), B_RGBA32, true); + if (!sSelectedIcon->IsValid()) { + BAlert *alert = new BAlert("Error", + "Fatal error: Bitmap could not be created for selected printer icon!", + "Bye"); + alert->Go(); + exit(1); + } + BView *view = new BView(sIcon->Bounds(), "offscreen", B_FOLLOW_ALL, B_WILL_DRAW); + float y = sIcon->Bounds().Height() - checkMark->Bounds().Height(); + sSelectedIcon->Lock(); + sSelectedIcon->AddChild(view); + view->DrawBitmap(sIcon); + view->SetDrawingMode(B_OP_ALPHA); + view->DrawBitmap(checkMark, BPoint(0, y)); + view->Sync(); + view->RemoveSelf(); + sSelectedIcon->Unlock(); + delete view; + delete checkMark; } // Get Name of printer diff --git a/src/preferences/print/Printers.rdef b/src/preferences/print/Printers.rdef index 583e585381..30eb079508 100644 --- a/src/preferences/print/Printers.rdef +++ b/src/preferences/print/Printers.rdef @@ -102,6 +102,55 @@ resource(101, "BEOS:M:STD_ICON") #'MICN' array { resource(1, "BEOS:FILE_TYPES") message; +resource(102, "check_mark_icon") #'BBMP' archive BBitmap { + "_frame" = rect { 0.00000, 0.00000, 15.0000, 19.0000 }, + "_cspace" = 8200, + "_bmflags" = 1, + "_rowbytes" = 64, + "_data" = array { + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FFFFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00000000FF6666FFFF6666FFFF000000FFFFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00000000FFCBCBFFFF6666FFFF6666FFFF000000FF" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00000000FF0000E4FF0000E4FFCBCBFFFF6666FFFF000000FF" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00000000FF0000E4FF000080FF000080FF000000FFFFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00000000FF0000E4FF0000CBFF000098FF000080FF000000FFFFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00000000FF0000E4FF000080FF000080FF000000FFFFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"000000FF0000E4FF0000CBFF000098FF000080FF000000FFFFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00000000FF000000FF000000FFFFFFFF00FFFFFF00FFFFFF00" + $"000000FF0000E4FF000080FF000080FF000000FFFFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00000000FF6666FFFF6666FFFF6666FFFF000000FFFFFFFF00000000FF" + $"0000E4FF0000CBFF000098FF000080FF000000FFFFFFFF00FFFFFF00FFFFFF00" + $"000000FF6666FFFF6666FFFF6666FFFFCBCBFFFF000000FFFFFFFF00000000FF" + $"0000E4FF000080FF000080FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"000000FF0000E4FF0000CBFFCBCBFFFF6666FFFF6666FFFF000000FF0000E4FF" + $"0000CBFF000098FF000080FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00000000FF0000E4FF0000CBFFCBCBFFFF6666FFFF0000E4FF0000CBFF" + $"000098FF000080FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00000000FF0000E4FF0000CBFFCBCBFFFF6666FFFF0000E4FF0000CBFF" + $"000098FF000080FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00000000FF0000E4FF0000CBFF0000E4FF0000E4FF000080FF" + $"000080FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00000000FF0000E4FF0000CBFF0000E4FF0000E4FF000080FF" + $"000080FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00000000FF0000E4FF0000CBFF000098FF000080FF" + $"000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00000000FF0000E4FF0000CBFF000098FF000080FF" + $"000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000E4FF000080FF000000FF" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FF000000FFFFFFFF00" + $"FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00" + } +}; + resource(0, "init_icon") #'bits' array { $"424D369000000000000036000000280000004000000090000000010020000000" $"000000900000130B0000130B00000000000000000000808080FFFFFFFFFFFFFF"