fix packages view, added a copy engine class
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14283 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
aa6505c068
commit
633dee064e
|
@ -0,0 +1,85 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2005, Jérôme DUVAL. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "CopyEngine.h"
|
||||||
|
#include "InstallerWindow.h"
|
||||||
|
#include <DiskDeviceRoster.h>
|
||||||
|
#include <Path.h>
|
||||||
|
|
||||||
|
CopyEngine::CopyEngine(InstallerWindow *window)
|
||||||
|
: BLooper("copy_engine"),
|
||||||
|
fWindow(window)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CopyEngine::LaunchInitScript(BVolume *volume)
|
||||||
|
{
|
||||||
|
fWindow->SetStatusMessage("Starting Installation.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CopyEngine::LaunchFinishScript(BVolume *volume)
|
||||||
|
{
|
||||||
|
fWindow->SetStatusMessage("Finishing Installation.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CopyEngine::Start()
|
||||||
|
{
|
||||||
|
BVolume *volume;
|
||||||
|
// check not installing on boot volume
|
||||||
|
|
||||||
|
|
||||||
|
// check if target is initialized
|
||||||
|
|
||||||
|
// ask if init ou mount as is
|
||||||
|
|
||||||
|
LaunchInitScript(volume);
|
||||||
|
|
||||||
|
// copy source volume
|
||||||
|
|
||||||
|
// copy selected packages
|
||||||
|
|
||||||
|
LaunchFinishScript(volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CopyEngine::ScanDisksPartitions(BMenu *srcMenu, BMenu *dstMenu)
|
||||||
|
{
|
||||||
|
BDiskDeviceRoster roster;
|
||||||
|
BDiskDevice device;
|
||||||
|
roster.VisitEachDevice(this, &device);
|
||||||
|
|
||||||
|
BPartition *partition;
|
||||||
|
roster.VisitEachPartition(this, &device, &partition);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
CopyEngine::Visit(BDiskDevice *device)
|
||||||
|
{
|
||||||
|
BPath path;
|
||||||
|
if (device->GetPath(&path)==B_OK)
|
||||||
|
printf("CopyEngine::Visit(BDiskDevice *) : %s\n", path.Path());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
CopyEngine::Visit(BPartition *partition, int32 level)
|
||||||
|
{
|
||||||
|
BPath path;
|
||||||
|
if (partition->GetPath(&path)==B_OK)
|
||||||
|
printf("CopyEngine::Visit(BPartition *) : %s\n", path.Path());
|
||||||
|
printf("CopyEngine::Visit(BPartition *) : %s\n", partition->Name());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2005, Jérôme DUVAL. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CopyEngine_h
|
||||||
|
#define _CopyEngine_h
|
||||||
|
|
||||||
|
#include <DiskDeviceVisitor.h>
|
||||||
|
#include <DiskDevice.h>
|
||||||
|
#include <Looper.h>
|
||||||
|
#include <Messenger.h>
|
||||||
|
#include <Partition.h>
|
||||||
|
#include <Volume.h>
|
||||||
|
|
||||||
|
class InstallerWindow;
|
||||||
|
|
||||||
|
class CopyEngine : public BLooper, BDiskDeviceVisitor {
|
||||||
|
public:
|
||||||
|
CopyEngine(InstallerWindow *window);
|
||||||
|
void Start();
|
||||||
|
void ScanDisksPartitions(BMenu *srcMenu, BMenu *dstMenu);
|
||||||
|
|
||||||
|
virtual bool Visit(BDiskDevice *device);
|
||||||
|
virtual bool Visit(BPartition *partition, int32 level);
|
||||||
|
private:
|
||||||
|
void LaunchInitScript(BVolume *volume);
|
||||||
|
void LaunchFinishScript(BVolume *volume);
|
||||||
|
InstallerWindow *fWindow;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _CopyEngine_h */
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <Alert.h>
|
#include <Alert.h>
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
|
#include <Autolock.h>
|
||||||
#include <Box.h>
|
#include <Box.h>
|
||||||
#include <ClassInfo.h>
|
#include <ClassInfo.h>
|
||||||
#include <Directory.h>
|
#include <Directory.h>
|
||||||
|
@ -28,7 +29,8 @@ const uint32 PACKAGE_CHECKBOX = 'iPCB';
|
||||||
|
|
||||||
InstallerWindow::InstallerWindow(BRect frame_rect)
|
InstallerWindow::InstallerWindow(BRect frame_rect)
|
||||||
: BWindow(frame_rect, "Installer", B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE),
|
: BWindow(frame_rect, "Installer", B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE),
|
||||||
fDriveSetupLaunched(false)
|
fDriveSetupLaunched(false),
|
||||||
|
fCopyEngine(this)
|
||||||
{
|
{
|
||||||
|
|
||||||
BRect bounds = Bounds();
|
BRect bounds = Bounds();
|
||||||
|
@ -119,6 +121,7 @@ InstallerWindow::MessageReceived(BMessage *msg)
|
||||||
StartScan();
|
StartScan();
|
||||||
break;
|
break;
|
||||||
case BEGIN_MESSAGE:
|
case BEGIN_MESSAGE:
|
||||||
|
fCopyEngine.Start();
|
||||||
break;
|
break;
|
||||||
case SHOW_BOTTOM_MESSAGE:
|
case SHOW_BOTTOM_MESSAGE:
|
||||||
ShowBottom();
|
ShowBottom();
|
||||||
|
@ -209,14 +212,14 @@ InstallerWindow::DisableInterface(bool disable)
|
||||||
fSrcMenuField->SetEnabled(!disable);
|
fSrcMenuField->SetEnabled(!disable);
|
||||||
fDestMenuField->SetEnabled(!disable);
|
fDestMenuField->SetEnabled(!disable);
|
||||||
if (disable)
|
if (disable)
|
||||||
fStatusView->SetText("Running DriveSetup" B_UTF8_ELLIPSIS "\nClose DriveSetup to continue with the\ninstallation.");
|
SetStatusMessage("Running DriveSetup" B_UTF8_ELLIPSIS "\nClose DriveSetup to continue with the\ninstallation.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
InstallerWindow::StartScan()
|
InstallerWindow::StartScan()
|
||||||
{
|
{
|
||||||
fStatusView->SetText("Scanning for disks" B_UTF8_ELLIPSIS);
|
SetStatusMessage("Scanning for disks" B_UTF8_ELLIPSIS);
|
||||||
|
|
||||||
BMenuItem *item;
|
BMenuItem *item;
|
||||||
while ((item = fSrcMenu->RemoveItem((int32)0)))
|
while ((item = fSrcMenu->RemoveItem((int32)0)))
|
||||||
|
@ -224,6 +227,8 @@ InstallerWindow::StartScan()
|
||||||
while ((item = fDestMenu->RemoveItem((int32)0)))
|
while ((item = fDestMenu->RemoveItem((int32)0)))
|
||||||
delete item;
|
delete item;
|
||||||
|
|
||||||
|
fCopyEngine.ScanDisksPartitions(fSrcMenu, fDestMenu);
|
||||||
|
|
||||||
fSrcMenu->AddItem(new PartitionMenuItem("BeOS 5 PE Max Edition V3.1 beta",
|
fSrcMenu->AddItem(new PartitionMenuItem("BeOS 5 PE Max Edition V3.1 beta",
|
||||||
new BMessage(SRC_PARTITION), "/BeOS 5 PE Max Edition V3.1 beta"));
|
new BMessage(SRC_PARTITION), "/BeOS 5 PE Max Edition V3.1 beta"));
|
||||||
|
|
||||||
|
@ -231,7 +236,7 @@ InstallerWindow::StartScan()
|
||||||
fSrcMenu->ItemAt(0)->SetMarked(true);
|
fSrcMenu->ItemAt(0)->SetMarked(true);
|
||||||
PublishPackages();
|
PublishPackages();
|
||||||
}
|
}
|
||||||
fStatusView->SetText("Choose the disk you want to install onto\nfrom the pop-up menu. Then click \"Begin\".");
|
SetStatusMessage("Choose the disk you want to install onto\nfrom the pop-up menu. Then click \"Begin\".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,3 +286,10 @@ InstallerWindow::ComparePackages(const void *firstArg, const void *secondArg)
|
||||||
return strcmp(package1->Name(), package2->Name());
|
return strcmp(package1->Name(), package2->Name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
InstallerWindow::SetStatusMessage(char *text)
|
||||||
|
{
|
||||||
|
BAutolock(this);
|
||||||
|
fStatusView->SetText(text);
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
#include <TextView.h>
|
#include <TextView.h>
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
#include "CopyEngine.h"
|
||||||
#include "DrawButton.h"
|
#include "DrawButton.h"
|
||||||
#include "PackageViews.h"
|
#include "PackageViews.h"
|
||||||
|
|
||||||
|
@ -23,6 +24,7 @@ public:
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage *msg);
|
virtual void MessageReceived(BMessage *msg);
|
||||||
virtual bool QuitRequested();
|
virtual bool QuitRequested();
|
||||||
|
void SetStatusMessage(char *text);
|
||||||
private:
|
private:
|
||||||
void DisableInterface(bool disable);
|
void DisableInterface(bool disable);
|
||||||
void LaunchDriveSetup();
|
void LaunchDriveSetup();
|
||||||
|
@ -40,6 +42,8 @@ private:
|
||||||
PackagesView *fPackagesView;
|
PackagesView *fPackagesView;
|
||||||
BScrollView *fPackagesScrollView;
|
BScrollView *fPackagesScrollView;
|
||||||
BStringView *fSizeView;
|
BStringView *fSizeView;
|
||||||
|
|
||||||
|
CopyEngine fCopyEngine;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _InstallerWindow_h */
|
#endif /* _InstallerWindow_h */
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
SubDir OBOS_TOP src apps installer ;
|
SubDir OBOS_TOP src apps installer ;
|
||||||
|
|
||||||
UsePrivateHeaders shared ;
|
UsePrivateHeaders shared ;
|
||||||
|
UsePrivateHeaders storage ;
|
||||||
UsePrivateHeaders tracker ;
|
UsePrivateHeaders tracker ;
|
||||||
SubDirHdrs [ FDirName $(OBOS_TOP) src kits tracker ] ;
|
SubDirHdrs [ FDirName $(OBOS_TOP) src kits tracker ] ;
|
||||||
|
|
||||||
App Installer :
|
App Installer :
|
||||||
|
CopyEngine.cpp
|
||||||
DrawButton.cpp
|
DrawButton.cpp
|
||||||
InstallerApp.cpp
|
InstallerApp.cpp
|
||||||
InstallerCopyLoopControl.cpp
|
InstallerCopyLoopControl.cpp
|
||||||
|
|
|
@ -32,8 +32,6 @@ SizeAsString(int32 size, char *string)
|
||||||
|
|
||||||
Package::Package()
|
Package::Package()
|
||||||
: Group(),
|
: Group(),
|
||||||
fName(NULL),
|
|
||||||
fDescription(NULL),
|
|
||||||
fSize(0),
|
fSize(0),
|
||||||
fIcon(NULL)
|
fIcon(NULL)
|
||||||
{
|
{
|
||||||
|
@ -43,8 +41,6 @@ Package::Package()
|
||||||
|
|
||||||
Package::~Package()
|
Package::~Package()
|
||||||
{
|
{
|
||||||
free(fName);
|
|
||||||
free(fDescription);
|
|
||||||
delete fIcon;
|
delete fIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,17 +52,16 @@ Package::PackageFromEntry(BEntry &entry)
|
||||||
if (directory.InitCheck()!=B_OK)
|
if (directory.InitCheck()!=B_OK)
|
||||||
return NULL;
|
return NULL;
|
||||||
Package *package = new Package();
|
Package *package = new Package();
|
||||||
char name[255];
|
|
||||||
char group[255];
|
|
||||||
char description[255];
|
|
||||||
bool alwaysOn;
|
bool alwaysOn;
|
||||||
bool onByDefault;
|
bool onByDefault;
|
||||||
int32 size;
|
int32 size;
|
||||||
if (directory.ReadAttr("INSTALLER PACKAGE: NAME", B_STRING_TYPE, 0, name, 255)<0)
|
char group[64];
|
||||||
|
memset(group, 0, 64);
|
||||||
|
if (directory.ReadAttr("INSTALLER PACKAGE: NAME", B_STRING_TYPE, 0, package->fName, 64)<0)
|
||||||
goto err;
|
goto err;
|
||||||
if (directory.ReadAttr("INSTALLER PACKAGE: GROUP", B_STRING_TYPE, 0, group, 255)<0)
|
if (directory.ReadAttr("INSTALLER PACKAGE: GROUP", B_STRING_TYPE, 0, group, 64)<0)
|
||||||
goto err;
|
goto err;
|
||||||
if (directory.ReadAttr("INSTALLER PACKAGE: DESCRIPTION", B_STRING_TYPE, 0, description, 255)<0)
|
if (directory.ReadAttr("INSTALLER PACKAGE: DESCRIPTION", B_STRING_TYPE, 0, package->fDescription, 64)<0)
|
||||||
goto err;
|
goto err;
|
||||||
if (directory.ReadAttr("INSTALLER PACKAGE: ON_BY_DEFAULT", B_BOOL_TYPE, 0, &onByDefault, sizeof(onByDefault))<0)
|
if (directory.ReadAttr("INSTALLER PACKAGE: ON_BY_DEFAULT", B_BOOL_TYPE, 0, &onByDefault, sizeof(onByDefault))<0)
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -74,9 +69,7 @@ Package::PackageFromEntry(BEntry &entry)
|
||||||
goto err;
|
goto err;
|
||||||
if (directory.ReadAttr("INSTALLER PACKAGE: SIZE", B_INT32_TYPE, 0, &size, sizeof(size))<0)
|
if (directory.ReadAttr("INSTALLER PACKAGE: SIZE", B_INT32_TYPE, 0, &size, sizeof(size))<0)
|
||||||
goto err;
|
goto err;
|
||||||
package->SetName(name);
|
|
||||||
package->SetGroupName(group);
|
package->SetGroupName(group);
|
||||||
package->SetDescription(description);
|
|
||||||
package->SetSize(size);
|
package->SetSize(size);
|
||||||
package->SetAlwaysOn(alwaysOn);
|
package->SetAlwaysOn(alwaysOn);
|
||||||
package->SetOnByDefault(onByDefault);
|
package->SetOnByDefault(onByDefault);
|
||||||
|
@ -105,19 +98,17 @@ Package::GetSizeAsString(char *string)
|
||||||
|
|
||||||
|
|
||||||
Group::Group()
|
Group::Group()
|
||||||
: fGroup(NULL)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Group::~Group()
|
Group::~Group()
|
||||||
{
|
{
|
||||||
free(fGroup);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PackageCheckBox::PackageCheckBox(BRect rect, Package &item)
|
PackageCheckBox::PackageCheckBox(BRect rect, Package *item)
|
||||||
: BCheckBox(rect.OffsetBySelf(7,0), "pack_cb", item.Name(), NULL),
|
: BCheckBox(rect.OffsetBySelf(7,0), "pack_cb", item->Name(), NULL),
|
||||||
fPackage(item)
|
fPackage(item)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -125,6 +116,7 @@ PackageCheckBox::PackageCheckBox(BRect rect, Package &item)
|
||||||
|
|
||||||
PackageCheckBox::~PackageCheckBox()
|
PackageCheckBox::~PackageCheckBox()
|
||||||
{
|
{
|
||||||
|
delete fPackage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,17 +125,17 @@ PackageCheckBox::Draw(BRect update)
|
||||||
{
|
{
|
||||||
BCheckBox::Draw(update);
|
BCheckBox::Draw(update);
|
||||||
char string[15];
|
char string[15];
|
||||||
fPackage.GetSizeAsString(string);
|
fPackage->GetSizeAsString(string);
|
||||||
float width = StringWidth(string);
|
float width = StringWidth(string);
|
||||||
DrawString(string, BPoint(Bounds().right - width - 8, 11));
|
DrawString(string, BPoint(Bounds().right - width - 8, 11));
|
||||||
|
|
||||||
const BBitmap *icon = fPackage.Icon();
|
const BBitmap *icon = fPackage->Icon();
|
||||||
if (icon)
|
if (icon)
|
||||||
DrawBitmap(icon, BPoint(Bounds().right - 92, 0));
|
DrawBitmap(icon, BPoint(Bounds().right - 92, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupView::GroupView(BRect rect, Group &group)
|
GroupView::GroupView(BRect rect, Group *group)
|
||||||
: BStringView(rect, "group", group.GroupName()),
|
: BStringView(rect, "group", group->GroupName()),
|
||||||
fGroup(group)
|
fGroup(group)
|
||||||
{
|
{
|
||||||
SetFont(be_bold_font);
|
SetFont(be_bold_font);
|
||||||
|
@ -152,6 +144,7 @@ GroupView::GroupView(BRect rect, Group &group)
|
||||||
|
|
||||||
GroupView::~GroupView()
|
GroupView::~GroupView()
|
||||||
{
|
{
|
||||||
|
delete fGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,7 +163,14 @@ PackagesView::~PackagesView()
|
||||||
void
|
void
|
||||||
PackagesView::Clean()
|
PackagesView::Clean()
|
||||||
{
|
{
|
||||||
|
BView *view;
|
||||||
|
while ((view = ChildAt(0))) {
|
||||||
|
if (dynamic_cast<GroupView*>(view) || dynamic_cast<PackageCheckBox*>(view)) {
|
||||||
|
RemoveChild(view);
|
||||||
|
delete view;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ScrollTo(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -182,6 +182,7 @@ PackagesView::AddPackages(BList &packages, BMessage *msg)
|
||||||
BRect bounds = rect;
|
BRect bounds = rect;
|
||||||
rect.left = 1;
|
rect.left = 1;
|
||||||
rect.bottom = 15;
|
rect.bottom = 15;
|
||||||
|
rect.top = 0;
|
||||||
BString lastGroup = "";
|
BString lastGroup = "";
|
||||||
for (int32 i=0; i<count; i++) {
|
for (int32 i=0; i<count; i++) {
|
||||||
void *item = packages.ItemAt(i);
|
void *item = packages.ItemAt(i);
|
||||||
|
@ -191,30 +192,30 @@ PackagesView::AddPackages(BList &packages, BMessage *msg)
|
||||||
lastGroup = package->GroupName();
|
lastGroup = package->GroupName();
|
||||||
Group *group = new Group();
|
Group *group = new Group();
|
||||||
group->SetGroupName(package->GroupName());
|
group->SetGroupName(package->GroupName());
|
||||||
GroupView *view = new GroupView(rect, *group);
|
GroupView *view = new GroupView(rect, group);
|
||||||
AddChild(view);
|
AddChild(view);
|
||||||
rect.OffsetBy(0, 17);
|
rect.OffsetBy(0, 17);
|
||||||
}
|
}
|
||||||
PackageCheckBox *checkBox = new PackageCheckBox(rect, *package);
|
PackageCheckBox *checkBox = new PackageCheckBox(rect, package);
|
||||||
checkBox->SetValue(package->OnByDefault() ? B_CONTROL_ON : B_CONTROL_OFF);
|
checkBox->SetValue(package->OnByDefault() ? B_CONTROL_ON : B_CONTROL_OFF);
|
||||||
checkBox->SetEnabled(!package->AlwaysOn());
|
checkBox->SetEnabled(!package->AlwaysOn());
|
||||||
checkBox->SetMessage(msg);
|
checkBox->SetMessage(new BMessage(*msg));
|
||||||
AddChild(checkBox);
|
AddChild(checkBox);
|
||||||
rect.OffsetBy(0, 20);
|
rect.OffsetBy(0, 20);
|
||||||
}
|
}
|
||||||
ResizeTo(bounds.Width(), rect.bottom);
|
ResizeTo(bounds.Width(), rect.top);
|
||||||
|
|
||||||
BScrollBar *vertScroller = ScrollBar(B_VERTICAL);
|
BScrollBar *vertScroller = ScrollBar(B_VERTICAL);
|
||||||
|
|
||||||
if (bounds.Height() > rect.top) {
|
if (vertScroller->Bounds().Height() > rect.top) {
|
||||||
vertScroller->SetRange(0.0f, 0.0f);
|
vertScroller->SetRange(0.0f, 0.0f);
|
||||||
vertScroller->SetValue(0.0f);
|
vertScroller->SetValue(0.0f);
|
||||||
} else {
|
} else {
|
||||||
vertScroller->SetRange(0.0f, rect.top - bounds.Height());
|
vertScroller->SetRange(0.0f, rect.top - vertScroller->Bounds().Height());
|
||||||
vertScroller->SetProportion(bounds.Height () / rect.top);
|
vertScroller->SetProportion(vertScroller->Bounds().Height() / rect.top);
|
||||||
}
|
}
|
||||||
|
|
||||||
vertScroller->SetSteps(15, bounds.Height());
|
vertScroller->SetSteps(15, vertScroller->Bounds().Height());
|
||||||
|
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
@ -232,3 +233,4 @@ PackagesView::GetTotalSizeAsString(char *string)
|
||||||
}
|
}
|
||||||
SizeAsString(size, string);
|
SizeAsString(size, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,10 @@ class Group {
|
||||||
public:
|
public:
|
||||||
Group();
|
Group();
|
||||||
virtual ~Group();
|
virtual ~Group();
|
||||||
void SetGroupName(const char *group) { free(fGroup); fGroup=strdup(group);};
|
void SetGroupName(const char *group) { strcpy(fGroup, group); };
|
||||||
const char * GroupName() const { return fGroup; };
|
const char * GroupName() const { return fGroup; };
|
||||||
private:
|
private:
|
||||||
char *fGroup;
|
char fGroup[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,8 +28,8 @@ class Package : public Group {
|
||||||
public:
|
public:
|
||||||
Package();
|
Package();
|
||||||
virtual ~Package();
|
virtual ~Package();
|
||||||
void SetName(const char *name) { free(fName); fName=strdup(name);};
|
void SetName(const char *name) { strcpy(fName, name);};
|
||||||
void SetDescription(const char *description) { free(fDescription); fDescription=strdup(description);};
|
void SetDescription(const char *description) { strcpy(fDescription, description);};
|
||||||
void SetSize(const int32 size) { fSize = size; };
|
void SetSize(const int32 size) { fSize = size; };
|
||||||
void SetIcon(BBitmap * icon) { delete fIcon; fIcon = icon; };
|
void SetIcon(BBitmap * icon) { delete fIcon; fIcon = icon; };
|
||||||
void SetOnByDefault(bool onByDefault) { fOnByDefault = onByDefault; };
|
void SetOnByDefault(bool onByDefault) { fOnByDefault = onByDefault; };
|
||||||
|
@ -44,8 +44,8 @@ public:
|
||||||
|
|
||||||
static Package *PackageFromEntry(BEntry &dir);
|
static Package *PackageFromEntry(BEntry &dir);
|
||||||
private:
|
private:
|
||||||
char *fName;
|
char fName[64];
|
||||||
char *fDescription;
|
char fDescription[64];
|
||||||
int32 fSize;
|
int32 fSize;
|
||||||
BBitmap *fIcon;
|
BBitmap *fIcon;
|
||||||
bool fAlwaysOn, fOnByDefault;
|
bool fAlwaysOn, fOnByDefault;
|
||||||
|
@ -54,20 +54,20 @@ private:
|
||||||
|
|
||||||
class PackageCheckBox : public BCheckBox {
|
class PackageCheckBox : public BCheckBox {
|
||||||
public:
|
public:
|
||||||
PackageCheckBox(BRect rect, Package &item);
|
PackageCheckBox(BRect rect, Package *item);
|
||||||
virtual ~PackageCheckBox();
|
virtual ~PackageCheckBox();
|
||||||
virtual void Draw(BRect update);
|
virtual void Draw(BRect update);
|
||||||
Package *GetPackage() { return &fPackage; };
|
Package *GetPackage() { return fPackage; };
|
||||||
private:
|
private:
|
||||||
Package &fPackage;
|
Package *fPackage;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GroupView : public BStringView {
|
class GroupView : public BStringView {
|
||||||
public:
|
public:
|
||||||
GroupView(BRect rect, Group &group);
|
GroupView(BRect rect, Group *group);
|
||||||
virtual ~GroupView();
|
virtual ~GroupView();
|
||||||
private:
|
private:
|
||||||
Group &fGroup;
|
Group *fGroup;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue