[haiku-commits] r39180 - haiku/trunk/src/preferences/media

  • From: yourpalal2@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 29 Oct 2010 03:22:23 +0200 (CEST)

Author: yourpalal
Date: 2010-10-29 03:22:23 +0200 (Fri, 29 Oct 2010)
New Revision: 39180
Changeset: http://dev.haiku-os.org/changeset/39180

Added:
   haiku/trunk/src/preferences/media/IconHandles.h
   haiku/trunk/src/preferences/media/MediaIcons.cpp
   haiku/trunk/src/preferences/media/MediaIcons.h
Removed:
   haiku/trunk/src/preferences/media/iconfile.h
Modified:
   haiku/trunk/src/preferences/media/Jamfile
   haiku/trunk/src/preferences/media/Media.cpp
   haiku/trunk/src/preferences/media/MediaListItem.cpp
   haiku/trunk/src/preferences/media/MediaListItem.h
   haiku/trunk/src/preferences/media/MediaWindow.cpp
   haiku/trunk/src/preferences/media/MediaWindow.h
   haiku/trunk/src/preferences/media/media.rdef
Log:
In Media preflet:
* Move icons to resource file.
* Add MediaIcons class to handle loading and storing the icons.
* Use a MediaIcons object in place of a BList for passing icons to our list 
items.
* Add IconHandles.h to hold an enum for identifying icons in/from our resource 
file.
* style fixes


Added: haiku/trunk/src/preferences/media/IconHandles.h
===================================================================
--- haiku/trunk/src/preferences/media/IconHandles.h                             
(rev 0)
+++ haiku/trunk/src/preferences/media/IconHandles.h     2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2010, Haiku, Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+
+
+enum {
+       devices_icon = 1,
+       mixer_icon = 2,
+       tv_icon = 3,
+       cam_icon = 4,
+       mic_icon = 5,
+       speaker_icon = 6
+};
+

Modified: haiku/trunk/src/preferences/media/Jamfile
===================================================================
--- haiku/trunk/src/preferences/media/Jamfile   2010-10-28 22:20:04 UTC (rev 
39179)
+++ haiku/trunk/src/preferences/media/Jamfile   2010-10-29 01:22:23 UTC (rev 
39180)
@@ -11,10 +11,11 @@
 
 Preference Media :
        Media.cpp
+       MediaAlert.cpp 
+       MediaIcons.cpp
+       MediaListItem.cpp
+       MediaViews.cpp
        MediaWindow.cpp
-       MediaViews.cpp
-       MediaListItem.cpp
-       MediaAlert.cpp 
        : media be $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++)
        : media.rdef 
        ;

Modified: haiku/trunk/src/preferences/media/Media.cpp
===================================================================
--- haiku/trunk/src/preferences/media/Media.cpp 2010-10-28 22:20:04 UTC (rev 
39179)
+++ haiku/trunk/src/preferences/media/Media.cpp 2010-10-29 01:22:23 UTC (rev 
39180)
@@ -21,7 +21,8 @@
 
 Media::Media() 
        :
-       BApplication("application/x-vnd.Haiku-Media")
+       BApplication("application/x-vnd.Haiku-Media"),
+       fWindow(NULL)
 {
        BRect rect(32, 64, 637, 462);
 

Added: haiku/trunk/src/preferences/media/MediaIcons.cpp
===================================================================
--- haiku/trunk/src/preferences/media/MediaIcons.cpp                            
(rev 0)
+++ haiku/trunk/src/preferences/media/MediaIcons.cpp    2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2010, Haiku, Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+
+#include "MediaIcons.h"
+
+#include <Application.h>
+#include <File.h>
+#include <Resources.h>
+#include <Roster.h>
+
+#include "IconHandles.h"
+
+
+const BRect MediaIcons::sBounds(0, 0, 15, 15);
+
+MediaIcons::MediaIcons()
+       :
+       devicesIcon(sBounds, B_CMAP8),
+       mixerIcon(sBounds, B_CMAP8),
+       tvIcon(sBounds, B_CMAP8),
+       camIcon(sBounds, B_CMAP8),
+       micIcon(sBounds, B_CMAP8),
+       speakerIcon(sBounds, B_CMAP8)
+{
+       app_info info;
+       be_app->GetAppInfo(&info);
+       BFile executableFile(&info.ref, B_READ_ONLY);
+       BResources resources(&executableFile);
+       resources.PreloadResourceType(B_COLOR_8_BIT_TYPE);
+
+       _LoadBitmap(&resources, devices_icon, &devicesIcon);
+       _LoadBitmap(&resources, mixer_icon, &mixerIcon);
+       _LoadBitmap(&resources, tv_icon, &tvIcon);
+       _LoadBitmap(&resources, cam_icon, &camIcon);
+       _LoadBitmap(&resources, mic_icon, &micIcon);
+       _LoadBitmap(&resources, speaker_icon, &speakerIcon);
+}
+
+
+void
+MediaIcons::_LoadBitmap(BResources* resources, int32 id, BBitmap* bitmap)
+{
+       size_t size;
+       const void* bits = resources->LoadResource(B_COLOR_8_BIT_TYPE, id, 
&size);
+       bitmap->SetBits(bits, size, 0, B_CMAP8);
+}
+
+
+BRect
+MediaIcons::IconRectAt(const BPoint& topLeft)
+{
+       return BRect(sBounds).OffsetToSelf(topLeft);
+}

Added: haiku/trunk/src/preferences/media/MediaIcons.h
===================================================================
--- haiku/trunk/src/preferences/media/MediaIcons.h                              
(rev 0)
+++ haiku/trunk/src/preferences/media/MediaIcons.h      2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2010, Haiku, Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef __MEDIA_ICONS_H
+#define __MEDIA_ICONS_H
+
+#include <Bitmap.h>
+
+
+class BResources;
+
+
+struct MediaIcons {
+                                                               MediaIcons();
+
+                       BBitmap                         devicesIcon;
+                       BBitmap                         mixerIcon;
+                       BBitmap                         tvIcon;
+                       BBitmap                         camIcon;
+                       BBitmap                         micIcon;
+                       BBitmap                         speakerIcon;
+
+                       BRect                           IconRectAt(const 
BPoint& topLeft);
+private:
+
+       static  const BRect                     sBounds;
+
+                       void                            _LoadBitmap(BResources* 
resources, int32 id,
+                                                                       
BBitmap* bitmap);
+};
+
+#endif

Modified: haiku/trunk/src/preferences/media/MediaListItem.cpp
===================================================================
--- haiku/trunk/src/preferences/media/MediaListItem.cpp 2010-10-28 22:20:04 UTC 
(rev 39179)
+++ haiku/trunk/src/preferences/media/MediaListItem.cpp 2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -20,40 +20,40 @@
 
 #include <View.h>
 
+#include "MediaIcons.h"
 
+
 #define kITEM_MARGIN                                     1
 
 
 MediaListItem::MediaListItem(dormant_node_info* info, uint32 level,
-               bool isVideo, BList* icons, uint32 modifiers) 
+               bool isVideo, MediaIcons* icons, uint32 modifiers) 
        :
        BListItem(level),
+       fInfo(info),
+       fLabel(info->name),
        fIsAudioMixer(false),
        fIsVideo(isVideo),
        fIsDefaultInput(false),
-       fIsDefaultOutput(false)
+       fIsDefaultOutput(false),
+       fIcons(icons)
 {
-       fIcons = icons;
-       fInfo = info;
-       fLabel = fInfo->name;
-       
        SetHeight(16 + kITEM_MARGIN);
 }
 
 
 MediaListItem::MediaListItem(const char* label, uint32 level,
-               bool isVideo, BList* icons, uint32 modifiers) 
+               bool isVideo, MediaIcons* icons, uint32 modifiers) 
        :
        BListItem(level),
+       fInfo(NULL),
        fLabel(label),
        fIsAudioMixer(false),
        fIsVideo(isVideo),
        fIsDefaultInput(false),
-       fIsDefaultOutput(false)
+       fIsDefaultOutput(false),
+       fIcons(icons)
 {
-       fIcons = icons;
-       fInfo = NULL;
-       
        SetHeight(16 + kITEM_MARGIN);
 }
 
@@ -88,38 +88,36 @@
        }
        
        frame.left += 4;
-       BRect iconFrame(frame);
-       iconFrame.Set(iconFrame.left, iconFrame.top+1,
-               iconFrame.left+15, iconFrame.top+16);
-       uint32 index = 0;
-       if (OutlineLevel()==0 || (fIsDefaultInput && fIsDefaultOutput)) {
+       BRect iconFrame(fIcons->IconRectAt(BPoint(frame.left, frame.top + 1)));
+
+       BBitmap* icon = &fIcons->devicesIcon;
+       if (OutlineLevel() == 0 || (fIsDefaultInput && fIsDefaultOutput)) {
                if (fIsDefaultInput && fIsVideo)
-                       index = 4;
+                       icon = &fIcons->camIcon;
                else if (fIsDefaultInput && !fIsVideo)
-                       index = 2;
-               owner->SetDrawingMode(B_OP_OVER);
+                       icon = &fIcons->micIcon;
 
-               BBitmap* icon = static_cast<BBitmap*>(fIcons->ItemAt(index));
+               owner->SetDrawingMode(B_OP_OVER);
                owner->DrawBitmap(icon, iconFrame);
                owner->SetDrawingMode(B_OP_COPY);
        }
+
        iconFrame.OffsetBy(16, 0);
        if (fIsDefaultInput || fIsDefaultOutput || fIsAudioMixer) {
                if (fIsAudioMixer)
-                       index = 1;
+                       icon = &fIcons->mixerIcon;
                else if (fIsDefaultOutput) {
                        if (fIsVideo)
-                               index = 5;
+                               icon = &fIcons->tvIcon;
                        else
-                               index = 3;
+                               icon = &fIcons->speakerIcon;
                } else {
                        if (fIsVideo)
-                               index = 4;
+                               icon = &fIcons->camIcon;
                        else
-                               index = 2;
+                               icon = &fIcons->speakerIcon;
                }
                owner->SetDrawingMode(B_OP_OVER);
-               BBitmap* icon = static_cast<BBitmap*>(fIcons->ItemAt(index));
                owner->DrawBitmap(icon, iconFrame);
                owner->SetDrawingMode(B_OP_COPY);
        }
@@ -159,7 +157,7 @@
 void 
 MediaListItem::Update(BView* owner, const BFont* finfo)
 {
-       // we need to override the update method so we can make sure are
+       // we need to override the update method so we can make sure our
        // list item size doesn't change
        BListItem::Update(owner, finfo);
        if ((Height() < 16 + kITEM_MARGIN)) {
@@ -172,9 +170,9 @@
 MediaListItem::Compare(const void* firstArg, const void* secondArg)
 {
        const MediaListItem* item1
-               = *static_cast<const MediaListItem * const *>(firstArg);
+               = *static_cast<const MediaListItem* const*>(firstArg);
        const MediaListItem* item2
-               = *static_cast<const MediaListItem * const *>(secondArg);
+               = *static_cast<const MediaListItem* const*>(secondArg);
 
        if (item1->fIsVideo != item2->fIsVideo)
                return item1->fIsVideo ? 1 : -1;

Modified: haiku/trunk/src/preferences/media/MediaListItem.h
===================================================================
--- haiku/trunk/src/preferences/media/MediaListItem.h   2010-10-28 22:20:04 UTC 
(rev 39179)
+++ haiku/trunk/src/preferences/media/MediaListItem.h   2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -20,13 +20,16 @@
 #include <MediaAddOn.h>
 
 
+class MediaIcons;
+
+
 class MediaListItem : public BListItem {
 public:
                                                                
MediaListItem(dormant_node_info* info,
-                                                                       uint32 
level, bool isVideo, BList* icons,
-                                                                       uint32 
modifiers=0);
+                                                                       uint32 
level, bool isVideo,
+                                                                       
MediaIcons* icons, uint32 modifiers = 0);
                                                                
MediaListItem(const char* label, uint32 level,
-                                                                       bool 
isVideo, BList* icons,
+                                                                       bool 
isVideo, MediaIcons* icons,
                                                                        uint32 
modifiers=0);
        virtual                                         ~MediaListItem();
 
@@ -60,7 +63,7 @@
                        bool                            fIsDefaultInput;
                        bool                            fIsDefaultOutput;
                        //dormant_node_info     fNodeInfo;
-                       BList*                          fIcons;
+                       MediaIcons*                     fIcons;
 };
 
 #endif /* __MEDIALISTITEM_H__ */

Modified: haiku/trunk/src/preferences/media/MediaWindow.cpp
===================================================================
--- haiku/trunk/src/preferences/media/MediaWindow.cpp   2010-10-28 22:20:04 UTC 
(rev 39179)
+++ haiku/trunk/src/preferences/media/MediaWindow.cpp   2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -23,6 +23,7 @@
 #include <Locale.h>
 #include <MediaRoster.h>
 #include <MediaTheme.h>
+#include <Resources.h>
 #include <Roster.h>
 #include <Screen.h>
 #include <ScrollView.h>
@@ -32,8 +33,7 @@
 #include <String.h>
 #include <TextView.h>
 
-// Images
-#include "iconfile.h"
+#include "MediaIcons.h"
 
 
 #undef B_TRANSLATE_CONTEXT
@@ -43,6 +43,7 @@
 const uint32 ML_SELECTED_NODE = 'MlSN';
 const uint32 ML_INIT_MEDIA = 'MlIM';
 
+
 // MediaWindow - Constructor
 MediaWindow::MediaWindow(BRect frame)
        :
@@ -54,6 +55,7 @@
        fAudioOutputs(5, true),
        fVideoInputs(5, true),
        fVideoOutputs(5, true),
+       fIcons(),
        fAlert(NULL),
        fInitCheck(B_OK)
 {
@@ -183,32 +185,8 @@
 
 
 void
-MediaWindow::InitWindow(void)
+MediaWindow::InitWindow()
 {
-       // Bitmaps
-       BRect iconRect(0, 0, 15, 15);
-       BBitmap* icon = new BBitmap(iconRect, B_CMAP8);
-       icon->SetBits(kDevicesBits, kDevicesWidth * kDevicesHeight, 0,
-                       kDevicesColorSpace);
-       fIcons.AddItem(icon);
-       icon = new BBitmap(iconRect, B_CMAP8);
-       icon->SetBits(kMixerBits, kMixerWidth * kMixerHeight, 0,
-                       kMixerColorSpace);
-       fIcons.AddItem(icon);
-       icon = new BBitmap(iconRect, B_CMAP8);
-       icon->SetBits(kMicBits, kMicWidth * kMicHeight, 0, kMicColorSpace);
-       fIcons.AddItem(icon);
-       icon = new BBitmap(iconRect, B_CMAP8);
-       icon->SetBits(kSpeakerBits, kSpeakerWidth * kSpeakerHeight, 0,
-                       kSpeakerColorSpace);
-       fIcons.AddItem(icon);
-       icon = new BBitmap(iconRect, B_CMAP8);
-       icon->SetBits(kCamBits, kCamWidth * kCamHeight, 0, kCamColorSpace);
-       fIcons.AddItem(icon);
-       icon = new BBitmap(iconRect, B_CMAP8);
-       icon->SetBits(kTVBits, kTVWidth * kTVHeight, 0, kTVColorSpace);
-       fIcons.AddItem(icon);
-
        const float scrollWidth = 9 * be_plain_font->Size() + 30;
 
        fListView = new BListView("media_list_view");

Modified: haiku/trunk/src/preferences/media/MediaWindow.h
===================================================================
--- haiku/trunk/src/preferences/media/MediaWindow.h     2010-10-28 22:20:04 UTC 
(rev 39179)
+++ haiku/trunk/src/preferences/media/MediaWindow.h     2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -25,15 +25,17 @@
 
 #include <ObjectList.h>
 
+#include "MediaAlert.h"
+#include "MediaIcons.h"
+#include "MediaListItem.h"
 #include "MediaViews.h"
-#include "MediaListItem.h"
-#include "MediaAlert.h"
 
 
 #define SETTINGS_FILE "MediaPrefs Settings"
 
 
 class BSeparatorView;
+// struct dormant_node_info;
 
 
 class MediaWindow : public BWindow
@@ -81,7 +83,9 @@
                        NodeList                        fVideoInputs;
                        NodeList                        fVideoOutputs;
        
-                       BList                           fIcons;
+                       MediaIcons                      fIcons;
+
+
                        MediaAlert*                     fAlert;
                        status_t                        fInitCheck;
 };

Modified: haiku/trunk/src/preferences/media/media.rdef
===================================================================
--- haiku/trunk/src/preferences/media/media.rdef        2010-10-28 22:20:04 UTC 
(rev 39179)
+++ haiku/trunk/src/preferences/media/media.rdef        2010-10-29 01:22:23 UTC 
(rev 39180)
@@ -1,3 +1,4 @@
+#include "IconHandles.h"
 
 resource app_signature "application/x-vnd.Haiku-Media";
 
@@ -13,7 +14,7 @@
        internal = 0,
 
        short_info = "Media", 
-       long_info  = "Media ©2003-2009 Haiku"
+       long_info  = "Media ©2003-2010 Haiku"
 };
 
 resource app_flags B_SINGLE_LAUNCH;
@@ -41,3 +42,122 @@
        $"040A07010920372A0A08010A20372A0A09010B20372A"
 };
 
+
+resource(devices_icon) #'CLRB' array {
+       $"ffff0000ffffffffffffffffffffffff"
+       $"ffff009f2929ffffffffffffffffffff"
+       $"ffff0070379f0129ffffffffffffffff"
+       $"ffff01fafa773ab72929ffffffffffff"
+       $"ffff00913e91dc779797290000ffffff"
+       $"ffff00907f71fa6bfa7197071329ffff"
+       $"ffff0071706bfacb6b3e081400ffffff"
+       $"ffff006b45fafaaafa71051129ffffff"
+       $"ffff004be53c777171fa061129ffffff"
+       $"ffff0091fab7713c7770071200ffffff"
+       $"ffff2900fa516b3afafa061229ffffff"
+       $"ffffff290097f951fa97081601ffffff"
+       $"ffffffffff290097fa06071600ffffff"
+       $"ffffffffffffff290000061600ffffff"
+       $"ffffffffffffffffffff000d00ffffff"
+       $"ffffffffffffffffffffff00ffffffff"
+};
+
+
+resource(mixer_icon) #'CLRB' array {
+       $"ffffffffffff00ffffffffffffffffff"
+       $"ffffffffff00170000ffffffffffffff"
+       $"ffffffff001717183f0000ffffffffff"
+       $"ffffff0017173118003f3f0000ffffff"
+       $"ffff001717183f171700003f3f0000ff"
+       $"ff0017173118003f3f17170000181700"
+       $"001718173f171700003f3f1717180a00"
+       $"003f3117003f3f1717000018170b0400"
+       $"0017183f3f00003f3f1717180a050a00"
+       $"00111118173f3f000017170b040b000f"
+       $"000404111118173f3f170b040a000fff"
+       $"0011110404111117180a050a000fffff"
+       $"ff000011110404110b040b000effffff"
+       $"ffffff0000111104040b000fffffffff"
+       $"ffffffffff0000110a000fffffffffff"
+       $"ffffffffffffff00000effffffffffff"
+};
+
+
+resource(tv_icon) #'CLRB' array {
+       $"ffffffffffffffffffffffffffffffff"
+       $"ffffffffffffffff00ffffffffffffff"
+       $"ffff06060506ffff00ffff00ffffffff"
+       $"ff053f3f1e17050600ff00ffffffffff"
+       $"ff043f3f1d1e1d190000ffffffffffff"
+       $"ff0513143f3f1e1e00060600ffffffff"
+       $"ff0511d50c133f3f1e1e1e01ffffffff"
+       $"ff0511d5600c0a153f3f1601ffffffff"
+       $"ff0511d5606086d515170c03ffffffff"
+       $"ff0511d5606086d360190f03ffffffff"
+       $"ff0511d38686862360190f03ffffffff"
+       $"ff00151c1d3fd3d36019100511ffffff"
+       $"ffff020211193f3f60161105111111ff"
+       $"ffffffff0202111a201512051111ffff"
+       $"ffffffffffff0202122a0f0011ffffff"
+       $"ffffffffffffffff02050011ffffffff"
+};
+
+
+resource(cam_icon) #'CLRB' array {
+       $"ffffffffffffffffffffffffffffffff"
+       $"ffffffffffffffffffffffffffffffff"
+       $"ffffff0000ffffffffffff0000ffffff"
+       $"ff00001b1c00ffffff00013f1b01ffff"
+       $"003f1c1a0100ff00001a1c1c3f0f00ff"
+       $"0015153f1c1b021c1c1c3f0f0f0f00ff"
+       $"ff000015153f3f3f3f0f0f0f0f0f00ff"
+       $"ffffff00000a150a0f0f0f0f0f0f00ff"
+       $"ff05050500140b0a0f0f0f0f0f00ffff"
+       $"02021c0e000707070f0f0f0f06000f0f"
+       $"0015063f050707070f0f0600000f0f0f"
+       $"0006063f050707070f00000f0f0fffff"
+       $"02020202057b0700000f0f0fffffffff"
+       $"ff000005ff00000f0f0fffffffffffff"
+       $"ffffffffffffffffffffffffffffffff"
+       $"ffffffffffffffffffffffffffffffff"
+};
+
+
+resource(mic_icon) #'CLRB' array {
+       $"ffffffffff000000ffffffffffffffff"
+       $"ffffffff031919190000ffffffffffff"
+       $"ffffffff00091219190f00ffffffffff"
+       $"ffffffff00191912090f0f00ffffffff"
+       $"ffffffff0009121919050f00ffffffff"
+       $"ffffff0209191909050f0f00ffffffff"
+       $"ffffff00191212190f050f00ffffffff"
+       $"ffffff0009191909050f00ffffffffff"
+       $"ffffff00191209190f0f00ffffffffff"
+       $"ffffffff00191909050f00ffffffffff"
+       $"ffffffffff00080c0800ffffffffffff"
+       $"ffffffffffff000c00ffffffffffffff"
+       $"ffffff0000003f0c090000000f0fffff"
+       $"ffff003f1c1c190f0f090909000f0fff"
+       $"ffff00001c1c19140f0f0900000f0fff"
+       $"ffffffff000000000000030f0f0fffff"
+};
+
+
+resource(speaker_icon) #'CLRB' array {
+       $"ffffffffff000000ffffffffffffffff"
+       $"ffffffff003f1c1c0000ffffffffffff"
+       $"ffffff003f1c1c1c1c1c0000ffffffff"
+       $"ffff003f3f1c1c1c1c1c1c1100ffffff"
+       $"ffff0017183f3f1c1c1c110f00ffffff"
+       $"ffff00171718173f3f110f0f00ffffff"
+       $"ffff001100000017110f0f0f00ffffff"
+       $"ffff000008090011110f0f0f00ffffff"
+       $"ffff0000080f0b08110f0f0f00ffffff"
+       $"ffff0011000a0f09110f0f0f00ffffff"
+       $"ffff001711080911110f0f0f00ffffff"
+       $"ffff001717171717110f0f0f000fffff"
+       $"ffff000017172d18110f0f000f0fffff"
+       $"ffffffff00001717110f000f0fffffff"
+       $"ffffffffffff000011000f0fffffffff"
+       $"ffffffffffffffff000f0fffffffffff"
+};


Other related posts:

  • » [haiku-commits] r39180 - haiku/trunk/src/preferences/media - yourpalal2