total size is now working

copied BPrivate::CopyLoopControl impl from libtracker.so because R5 loader doesn't seem able to find these symbols correctly in libtracker.so


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14271 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-09-28 22:50:52 +00:00
parent 8285d6b3c0
commit b5feb1f13f
5 changed files with 51 additions and 9 deletions
@@ -5,14 +5,40 @@
*/ */
#include "InstallerCopyLoopControl.h" #include "InstallerCopyLoopControl.h"
InstallerCopyLoopControl::InstallerCopyLoopControl(InstallerWindow *window) /* copied from libtracker, because beos loader doesn't seem to find them correctly in libtracker.so */
: CopyLoopControl(),
fWindow(window) BPrivate::CopyLoopControl::~CopyLoopControl()
{
}
void
BPrivate::CopyLoopControl::ChecksumChunk(const char *, size_t)
{ {
} }
InstallerCopyLoopControl::~InstallerCopyLoopControl(void) bool
BPrivate::CopyLoopControl::ChecksumFile(const entry_ref *)
{
return true;
}
bool
BPrivate::CopyLoopControl::SkipAttribute(const char*)
{
return false;
}
bool
BPrivate::CopyLoopControl::PreserveAttribute(const char*)
{
return false;
}
InstallerCopyLoopControl::InstallerCopyLoopControl(InstallerWindow *window)
: fWindow(window)
{ {
} }
@@ -14,7 +14,7 @@ class InstallerCopyLoopControl : public CopyLoopControl
{ {
public: public:
InstallerCopyLoopControl(InstallerWindow *window); InstallerCopyLoopControl(InstallerWindow *window);
~InstallerCopyLoopControl(void); virtual ~InstallerCopyLoopControl() {};
virtual bool FileError(const char *message, const char *name, status_t error, virtual bool FileError(const char *message, const char *name, status_t error,
bool allowContinue); bool allowContinue);
+11 -3
View File
@@ -87,11 +87,14 @@ InstallerWindow::InstallerWindow(BRect frame_rect)
fBackBox->AddChild(fDestMenuField); fBackBox->AddChild(fDestMenuField);
BRect sizeRect = fBackBox->Bounds(); BRect sizeRect = fBackBox->Bounds();
sizeRect.top = sizeRect.bottom - 15; sizeRect.top = 105;
sizeRect.left = sizeRect.right - 100; sizeRect.bottom = sizeRect.top + 15;
fSizeView = new BStringView(sizeRect, "size_view", "Disk space required : 0.0 KB"); sizeRect.right -= 12;
sizeRect.left = sizeRect.right - 150;
fSizeView = new BStringView(sizeRect, "size_view", "Disk space required: 0.0 KB", B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM);
fSizeView->SetAlignment(B_ALIGN_RIGHT); fSizeView->SetAlignment(B_ALIGN_RIGHT);
fBackBox->AddChild(fSizeView); fBackBox->AddChild(fSizeView);
fSizeView->Hide();
// finish creating window // finish creating window
Show(); Show();
@@ -172,11 +175,15 @@ InstallerWindow::ShowBottom()
fSetupButton->Show(); fSetupButton->Show();
if (fPackagesScrollView->IsHidden()) if (fPackagesScrollView->IsHidden())
fPackagesScrollView->Show(); fPackagesScrollView->Show();
if (fSizeView->IsHidden())
fSizeView->Show();
} else { } else {
if (!fSetupButton->IsHidden()) if (!fSetupButton->IsHidden())
fSetupButton->Hide(); fSetupButton->Hide();
if (!fPackagesScrollView->IsHidden()) if (!fPackagesScrollView->IsHidden())
fPackagesScrollView->Hide(); fPackagesScrollView->Hide();
if (!fSizeView->IsHidden())
fSizeView->Hide();
ResizeTo(332,160); ResizeTo(332,160);
} }
} }
@@ -253,6 +260,7 @@ InstallerWindow::PublishPackages()
packages.SortItems(ComparePackages); packages.SortItems(ComparePackages);
fPackagesView->AddPackages(packages, new BMessage(PACKAGE_CHECKBOX)); fPackagesView->AddPackages(packages, new BMessage(PACKAGE_CHECKBOX));
PostMessage(PACKAGE_CHECKBOX);
} }
+8 -1
View File
@@ -223,5 +223,12 @@ PackagesView::AddPackages(BList &packages, BMessage *msg)
void void
PackagesView::GetTotalSizeAsString(char *string) PackagesView::GetTotalSizeAsString(char *string)
{ {
SizeAsString(0, string); int32 count = CountChildren();
int32 size = 0;
for (int32 i=0; i<count; i++) {
PackageCheckBox *cb = dynamic_cast<PackageCheckBox*>(ChildAt(i));
if (cb && cb->Value())
size += cb->GetPackage()->Size();
}
SizeAsString(size, string);
} }
+1
View File
@@ -57,6 +57,7 @@ class PackageCheckBox : public BCheckBox {
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; };
private: private:
Package &fPackage; Package &fPackage;
}; };