From b461fb1d4b16336f284c500d47e246c66b1d659a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 18 Oct 2005 23:10:27 +0000 Subject: [PATCH] added a haiku logo from stippi, thanks! enlarged the window improves widget placement git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14419 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/installer/CopyEngine.cpp | 4 +- src/apps/installer/CopyEngine.h | 2 +- src/apps/installer/Installer.rdef | 2 + src/apps/installer/InstallerApp.cpp | 2 +- src/apps/installer/InstallerWindow.cpp | 68 ++++++++++++++++++++----- src/apps/installer/InstallerWindow.h | 4 ++ src/apps/installer/Jamfile | 2 +- src/apps/installer/haikulogo.png | Bin 0 -> 8860 bytes 8 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 src/apps/installer/haikulogo.png diff --git a/src/apps/installer/CopyEngine.cpp b/src/apps/installer/CopyEngine.cpp index a19893eb31..186883496a 100644 --- a/src/apps/installer/CopyEngine.cpp +++ b/src/apps/installer/CopyEngine.cpp @@ -54,12 +54,12 @@ CopyEngine::Start() void CopyEngine::ScanDisksPartitions(BMenu *srcMenu, BMenu *dstMenu) { - BDiskDeviceRoster roster; + /*BDiskDeviceRoster roster; BDiskDevice device; roster.VisitEachDevice(this, &device); BPartition *partition; - roster.VisitEachPartition(this, &device, &partition); + roster.VisitEachPartition(this, &device, &partition);*/ } diff --git a/src/apps/installer/CopyEngine.h b/src/apps/installer/CopyEngine.h index f2c0c5091e..21d8e80aac 100644 --- a/src/apps/installer/CopyEngine.h +++ b/src/apps/installer/CopyEngine.h @@ -15,7 +15,7 @@ class InstallerWindow; -class CopyEngine : public BLooper, BDiskDeviceVisitor { +class CopyEngine : public BLooper/*, BDiskDeviceVisitor*/ { public: CopyEngine(InstallerWindow *window); void Start(); diff --git a/src/apps/installer/Installer.rdef b/src/apps/installer/Installer.rdef index 320550f5da..592358702d 100644 --- a/src/apps/installer/Installer.rdef +++ b/src/apps/installer/Installer.rdef @@ -1,3 +1,5 @@ +resource(1, "haikulogo.png") #'PNG ' import "haikulogo.png"; + resource large_icon { $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" diff --git a/src/apps/installer/InstallerApp.cpp b/src/apps/installer/InstallerApp.cpp index b0e5ce1ff8..3e2c14f127 100644 --- a/src/apps/installer/InstallerApp.cpp +++ b/src/apps/installer/InstallerApp.cpp @@ -28,7 +28,7 @@ int main(int, char **) InstallerApp::InstallerApp() : BApplication(APP_SIG) { - BRect windowFrame(0,0,332,160); + BRect windowFrame(0,0,INSTALLER_RIGHT, 160); BRect frame = BScreen().Frame(); windowFrame.OffsetBy((frame.Width() - windowFrame.Width())/2, frame.Height()/2 - windowFrame.Height()/4 - 113); diff --git a/src/apps/installer/InstallerWindow.cpp b/src/apps/installer/InstallerWindow.cpp index b998deb75c..e93e870230 100644 --- a/src/apps/installer/InstallerWindow.cpp +++ b/src/apps/installer/InstallerWindow.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include "InstallerWindow.h" #include "PartitionMenuItem.h" @@ -27,19 +28,62 @@ const uint32 SRC_PARTITION = 'iSPT'; const uint32 DST_PARTITION = 'iDPT'; const uint32 PACKAGE_CHECKBOX = 'iPCB'; +class LogoView : public BBox { + public: + LogoView(const BRect &r); + ~LogoView(void); + virtual void Draw(BRect update); + private: + BBitmap *fLogo; + BPoint fDrawPoint; +}; + + +LogoView::LogoView(const BRect &r) + : BBox(r, "logoview", B_FOLLOW_LEFT|B_FOLLOW_TOP, B_WILL_DRAW, B_NO_BORDER) +{ + fLogo = BTranslationUtils::GetBitmap('PNG ', "haikulogo.png"); + if (fLogo) { + fDrawPoint.x = (r.Width() - fLogo->Bounds().Width()) / 2; + fDrawPoint.y = 0; + } +} + + +LogoView::~LogoView(void) +{ + delete fLogo; +} + + +void +LogoView::Draw(BRect update) +{ + if (fLogo) + DrawBitmap(fLogo, fDrawPoint); +} + + InstallerWindow::InstallerWindow(BRect frame_rect) : BWindow(frame_rect, "Installer", B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE), fDriveSetupLaunched(false), fCopyEngine(this) { - BRect bounds = Bounds(); bounds.bottom += 1; bounds.right += 1; fBackBox = new BBox(bounds, NULL, B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS, B_FANCY_BORDER); AddChild(fBackBox); + + BRect logoRect = fBackBox->Bounds(); + logoRect.left += 1; + logoRect.top = 12; + logoRect.right -= 226; + logoRect.bottom = logoRect.top + 46 + B_H_SCROLL_BAR_HEIGHT; + LogoView *logoView = new LogoView(logoRect); + fBackBox->AddChild(logoView); - BRect statusRect(bounds.left+120, bounds.top+14, bounds.right-14, bounds.top+60); + BRect statusRect(bounds.right-222, logoRect.top+2, bounds.right-14, logoRect.bottom - B_H_SCROLL_BAR_HEIGHT+4); BRect textRect(statusRect); textRect.OffsetTo(B_ORIGIN); textRect.InsetBy(2,2); @@ -56,7 +100,7 @@ InstallerWindow::InstallerWindow(BRect frame_rect) fBeginButton->MakeDefault(true); fBackBox->AddChild(fBeginButton); - fSetupButton = new BButton(BRect(bounds.left+11, bounds.bottom-35, bounds.left+111, bounds.bottom-22), + fSetupButton = new BButton(BRect(bounds.left+11, bounds.bottom-35, bounds.left+121, bounds.bottom-22), "setup_button", "Setup partitions" B_UTF8_ELLIPSIS, new BMessage(SETUP_MESSAGE), B_FOLLOW_LEFT|B_FOLLOW_BOTTOM); fBackBox->AddChild(fSetupButton); fSetupButton->Hide(); @@ -67,7 +111,7 @@ InstallerWindow::InstallerWindow(BRect frame_rect) fBackBox->AddChild(fPackagesScrollView); fPackagesScrollView->Hide(); - fDrawButton = new DrawButton(BRect(bounds.left+12, bounds.bottom-33, bounds.left+100, bounds.bottom-20), + fDrawButton = new DrawButton(BRect(bounds.left+12, bounds.bottom-33, bounds.left+120, bounds.bottom-20), "options_button", "Fewer options", "More options", new BMessage(SHOW_BOTTOM_MESSAGE)); fBackBox->AddChild(fDrawButton); @@ -77,14 +121,14 @@ InstallerWindow::InstallerWindow(BRect frame_rect) BRect fieldRect(bounds.left+50, bounds.top+70, bounds.right-13, bounds.top+90); fSrcMenuField = new BMenuField(fieldRect, "srcMenuField", "Install from: ", fSrcMenu); - fSrcMenuField->SetDivider(70.0); - fSrcMenuField->SetAlignment(B_ALIGN_RIGHT); - fBackBox->AddChild(fSrcMenuField); + fSrcMenuField->SetDivider(bounds.right-274); + fSrcMenuField->SetAlignment(B_ALIGN_RIGHT); + fBackBox->AddChild(fSrcMenuField); fieldRect.OffsetBy(0,23); fDestMenuField = new BMenuField(fieldRect, "destMenuField", "Onto: ", fDestMenu); - fDestMenuField->SetDivider(70.0); + fDestMenuField->SetDivider(bounds.right-274); fDestMenuField->SetAlignment(B_ALIGN_RIGHT); fBackBox->AddChild(fDestMenuField); @@ -92,7 +136,7 @@ InstallerWindow::InstallerWindow(BRect frame_rect) sizeRect.top = 105; sizeRect.bottom = sizeRect.top + 15; sizeRect.right -= 12; - sizeRect.left = sizeRect.right - 150; + sizeRect.left = sizeRect.right - 170; fSizeView = new BStringView(sizeRect, "size_view", "Disk space required: 0.0 KB", B_FOLLOW_RIGHT | B_FOLLOW_BOTTOM); fSizeView->SetAlignment(B_ALIGN_RIGHT); fBackBox->AddChild(fSizeView); @@ -173,7 +217,7 @@ void InstallerWindow::ShowBottom() { if (fDrawButton->Value()) { - ResizeTo(332,306); + ResizeTo(INSTALLER_RIGHT, 306); if (fSetupButton->IsHidden()) fSetupButton->Show(); if (fPackagesScrollView->IsHidden()) @@ -187,7 +231,7 @@ InstallerWindow::ShowBottom() fPackagesScrollView->Hide(); if (!fSizeView->IsHidden()) fSizeView->Hide(); - ResizeTo(332,160); + ResizeTo(INSTALLER_RIGHT, 160); } } @@ -236,7 +280,7 @@ InstallerWindow::StartScan() fSrcMenu->ItemAt(0)->SetMarked(true); PublishPackages(); } - SetStatusMessage("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 from the pop-up menu. Then click \"Begin\"."); } diff --git a/src/apps/installer/InstallerWindow.h b/src/apps/installer/InstallerWindow.h index 665c4197b7..0d41068215 100644 --- a/src/apps/installer/InstallerWindow.h +++ b/src/apps/installer/InstallerWindow.h @@ -17,6 +17,8 @@ #include "DrawButton.h" #include "PackageViews.h" +#define INSTALLER_RIGHT 402 + class InstallerWindow : public BWindow { public: InstallerWindow(BRect frameRect); @@ -43,6 +45,8 @@ private: BScrollView *fPackagesScrollView; BStringView *fSizeView; + BBitmap *fLogo; + BPoint fDrawPoint; CopyEngine fCopyEngine; }; diff --git a/src/apps/installer/Jamfile b/src/apps/installer/Jamfile index 2c382738fd..730f751c2b 100644 --- a/src/apps/installer/Jamfile +++ b/src/apps/installer/Jamfile @@ -13,6 +13,6 @@ App Installer : InstallerWindow.cpp PackageViews.cpp PartitionMenuItem.cpp - : libbe.so libtracker.so + : libbe.so libtracker.so libtranslation.so : Installer.rdef ; diff --git a/src/apps/installer/haikulogo.png b/src/apps/installer/haikulogo.png new file mode 100644 index 0000000000000000000000000000000000000000..baff8282572dd80be615e1589359853b3d51d61e GIT binary patch literal 8860 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 eyj=c^m;VjA;|;qm*)c!>0000