From 18c5b74250dfe71d9514414725c3c0063949f4ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 26 Sep 2005 15:04:52 +0000 Subject: [PATCH] added package icon added a InstallerCopyLoopControl class git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14243 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../installer/InstallerCopyLoopControl.cpp | 16 ++++++++++++++ src/apps/installer/InstallerCopyLoopControl.h | 21 +++++++++++++++++++ src/apps/installer/Jamfile | 4 +++- src/apps/installer/PackageViews.cpp | 20 +++++++++++++++++- src/apps/installer/PackageViews.h | 11 +++++----- 5 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 src/apps/installer/InstallerCopyLoopControl.cpp create mode 100644 src/apps/installer/InstallerCopyLoopControl.h diff --git a/src/apps/installer/InstallerCopyLoopControl.cpp b/src/apps/installer/InstallerCopyLoopControl.cpp new file mode 100644 index 0000000000..e9c9ccb482 --- /dev/null +++ b/src/apps/installer/InstallerCopyLoopControl.cpp @@ -0,0 +1,16 @@ +/* + * Copyright 2005, Jérôme Duval. All rights reserved. + * Distributed under the terms of the MIT License. + * + */ +#include "InstallerCopyLoopControl.h" + +InstallerCopyLoopControl::InstallerCopyLoopControl() + : CopyLoopControl() +{ +} + + +InstallerCopyLoopControl::~InstallerCopyLoopControl(void) +{ +} diff --git a/src/apps/installer/InstallerCopyLoopControl.h b/src/apps/installer/InstallerCopyLoopControl.h new file mode 100644 index 0000000000..319d4786c8 --- /dev/null +++ b/src/apps/installer/InstallerCopyLoopControl.h @@ -0,0 +1,21 @@ +/* + * Copyright 2005, Jérôme Duval. All rights reserved. + * Distributed under the terms of the MIT License. + * + */ + +#ifndef _INSTALLERCOPYLOOPCONTROL_H +#define _INSTALLERCOPYLOOPCONTROL_H + +#include "FSUtils.h" + +class InstallerCopyLoopControl : public CopyLoopControl +{ +public: + InstallerCopyLoopControl(); + ~InstallerCopyLoopControl(void); + +private: +}; + +#endif diff --git a/src/apps/installer/Jamfile b/src/apps/installer/Jamfile index 1c20b9d505..667e166df0 100644 --- a/src/apps/installer/Jamfile +++ b/src/apps/installer/Jamfile @@ -1,14 +1,16 @@ SubDir OBOS_TOP src apps installer ; UsePrivateHeaders shared ; +UsePrivateHeaders tracker ; SubDirHdrs [ FDirName $(OBOS_TOP) src kits tracker ] ; App Installer : DrawButton.cpp InstallerApp.cpp + InstallerCopyLoopControl.cpp InstallerWindow.cpp PackageViews.cpp PartitionMenuItem.cpp - : be tracker + : libbe.so libtracker.so : Installer.rdef ; diff --git a/src/apps/installer/PackageViews.cpp b/src/apps/installer/PackageViews.cpp index a6928fdd33..669d36ce4e 100644 --- a/src/apps/installer/PackageViews.cpp +++ b/src/apps/installer/PackageViews.cpp @@ -3,6 +3,7 @@ * Distributed under the terms of the MIT License. */ +#include #include #include #include @@ -10,6 +11,8 @@ #include #include "PackageViews.h" +#define ICON_ATTRIBUTE "INSTALLER PACKAGE: ICON" + Package::Package() : Group(), fName(NULL), @@ -25,7 +28,7 @@ Package::~Package() { free(fName); free(fDescription); - free(fIcon); + delete fIcon; } @@ -60,6 +63,16 @@ Package::PackageFromEntry(BEntry &entry) package->SetSize(size); package->SetAlwaysOn(alwaysOn); package->SetOnByDefault(onByDefault); + + attr_info info; + if (directory.GetAttrInfo(ICON_ATTRIBUTE, &info) == B_OK) { + char buffer[info.size]; + BMessage msg; + if ((directory.ReadAttr(ICON_ATTRIBUTE, info.type, 0, buffer, info.size) == info.size) + && (msg.Unflatten(buffer) == B_OK)) { + package->SetIcon(new BBitmap(&msg)); + } + } return package; err: delete package; @@ -117,6 +130,10 @@ PackageCheckBox::Draw(BRect update) fPackage.GetSizeAsString(string); float width = StringWidth(string); DrawString(string, BPoint(Bounds().right - width - 8, 11)); + + const BBitmap *icon = fPackage.Icon(); + if (icon) + DrawBitmap(icon, BPoint(Bounds().right - 92, 0)); } GroupView::GroupView(BRect rect, Group &group) @@ -126,6 +143,7 @@ GroupView::GroupView(BRect rect, Group &group) SetFont(be_bold_font); } + GroupView::~GroupView() { } diff --git a/src/apps/installer/PackageViews.h b/src/apps/installer/PackageViews.h index 2c2e80428e..9bc5b5e5a4 100644 --- a/src/apps/installer/PackageViews.h +++ b/src/apps/installer/PackageViews.h @@ -6,6 +6,7 @@ #ifndef __PACKAGEVIEWS_H__ #define __PACKAGEVIEWS_H__ +#include #include #include #include @@ -30,7 +31,7 @@ public: void SetName(const char *name) { free(fName); fName=strdup(name);}; void SetDescription(const char *description) { free(fDescription); fDescription=strdup(description);}; void SetSize(const int32 size) { fSize = size; }; - void SetIcon(const BBitmap * icon); + void SetIcon(BBitmap * icon) { delete fIcon; fIcon = icon; }; void SetOnByDefault(bool onByDefault) { fOnByDefault = onByDefault; }; void SetAlwaysOn(bool alwaysOn) { fAlwaysOn = alwaysOn; }; const char * Name() const { return fName; }; @@ -54,8 +55,8 @@ private: class PackageCheckBox : public BCheckBox { public: PackageCheckBox(BRect rect, Package &item); - ~PackageCheckBox(); - void Draw(BRect update); + virtual ~PackageCheckBox(); + virtual void Draw(BRect update); private: Package &fPackage; }; @@ -63,7 +64,7 @@ class PackageCheckBox : public BCheckBox { class GroupView : public BStringView { public: GroupView(BRect rect, Group &group); - ~GroupView(); + virtual ~GroupView(); private: Group &fGroup; @@ -73,7 +74,7 @@ class GroupView : public BStringView { class PackagesView : public BView { public: PackagesView(BRect rect, const char* name); - ~PackagesView(); + virtual ~PackagesView(); void Clean(); void AddPackages(BList &list); private: