haiku/src/apps/installer/PackageViews.h

123 lines
2.8 KiB
C++

/*
* Copyright 2005, Jérôme DUVAL. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef __PACKAGEVIEWS_H__
#define __PACKAGEVIEWS_H__
#include <stdlib.h>
#include <string.h>
#include <Bitmap.h>
#include <CheckBox.h>
#include <Entry.h>
#include <List.h>
#include <Path.h>
#include <String.h>
#include <StringView.h>
class Group {
public:
Group();
virtual ~Group();
void SetGroupName(const char* group)
{ strcpy(fGroup, group); }
const char* GroupName() const
{ return fGroup; }
private:
char fGroup[64];
};
class Package : public Group {
public:
Package(const BPath &path);
virtual ~Package();
void SetPath(const BPath &path)
{ fPath = path; }
void SetName(const BString name)
{ fName = name; }
void SetDescription(const BString description)
{ fDescription = description; }
void SetSize(const int32 size)
{ fSize = size; }
void SetIcon(BBitmap* icon)
{ delete fIcon; fIcon = icon; }
void SetOnByDefault(bool onByDefault)
{ fOnByDefault = onByDefault; }
void SetAlwaysOn(bool alwaysOn)
{ fAlwaysOn = alwaysOn; }
BPath Path() const
{ return fPath; }
BString Name() const
{ return fName; }
BString Description() const
{ return fDescription; }
const int32 Size() const
{ return fSize; }
void GetSizeAsString(char* string,
size_t stringSize);
const BBitmap* Icon() const
{ return fIcon; }
bool OnByDefault() const
{ return fOnByDefault; }
bool AlwaysOn() const
{ return fAlwaysOn; }
static Package* PackageFromEntry(BEntry &dir);
private:
BPath fPath;
BString fName;
BString fDescription;
int32 fSize;
BBitmap* fIcon;
bool fAlwaysOn;
bool fOnByDefault;
};
class PackageCheckBox : public BCheckBox {
public:
PackageCheckBox(Package* item);
virtual ~PackageCheckBox();
virtual void Draw(BRect updateRect);
virtual void MouseMoved(BPoint point, uint32 transit,
const BMessage* dragMessage);
Package* GetPackage()
{ return fPackage; };
private:
Package* fPackage;
};
class GroupView : public BStringView {
public:
GroupView(Group* group);
virtual ~GroupView();
private:
Group* fGroup;
};
class PackagesView : public BView {
public:
PackagesView(const char* name);
virtual ~PackagesView();
void Clean();
void AddPackages(BList& list, BMessage* message);
void GetTotalSizeAsString(char* string,
size_t stringSize);
void GetPackagesToInstall(BList* list, int32* size);
virtual void Draw(BRect updateRect);
};
#endif // __PACKAGEVIEWS_H__