xref: /haiku/src/apps/installer/EULAWindow.cpp (revision ae0a10cad3999b13cbfa47a3d947a5219d2d90f4)
1 /*
2  * Copyright 2013,	Jérôme DUVAL.
3  * All rights reserved. Distributed under the terms of the MIT license.
4  */
5 
6 
7 #include "EULAWindow.h"
8 
9 #include <Application.h>
10 #include <Box.h>
11 #include <Button.h>
12 #include <Catalog.h>
13 #include <LayoutBuilder.h>
14 #include <LayoutUtils.h>
15 #include <Roster.h>
16 #include <ScrollView.h>
17 #include <SpaceLayoutItem.h>
18 
19 #include "tracker_private.h"
20 
21 static const uint32 kMsgAgree = 'agre';
22 static const uint32 kMsgNext = 'next';
23 
24 #undef B_TRANSLATION_CONTEXT
25 #define B_TRANSLATION_CONTEXT "InstallerApp"
26 
27 
28 EULAWindow::EULAWindow()
29 	:
30 	BWindow(BRect(0, 0, 600, 450), B_TRANSLATE("README"),
31 		B_MODAL_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, B_NOT_ZOOMABLE
32 		| B_NOT_MINIMIZABLE | B_AUTO_UPDATE_SIZE_LIMITS)
33 {
34 	BString infoText;
35 	infoText << B_TRANSLATE(
36 		"Welcome to the Haiku Installer!\n\n");
37 	infoText << B_TRANSLATE(
38 		"IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n");
39 	infoText << B_TRANSLATE(
40 		"This is beta-quality software! It means there is a risk of "
41 		"losing important data. Make frequent backups! You have been "
42 		"warned.\n\n\n");
43 	infoText << B_TRANSLATE(
44 		"1)   If you are installing Haiku onto real hardware (not inside an "
45 		"emulator), you may want to prepare a hard disk partition from "
46 		"another OS (you could, for example, use a GParted Live-CD, which "
47 		"can also resize existing partitions to make room).\n"
48 		"You can also set up partitions by launching DriveSetup from "
49 		"Installer, but you won't be able to resize existing partitions with "
50 		"it. While DriveSetup has been quite thoroughly tested over the "
51 		"years, it's recommended to have up-to-date backups of the other "
52 		"partitions on your system. Just in case" B_UTF8_ELLIPSIS);
53 	infoText << "\n\n\n";
54 	infoText << B_TRANSLATE(
55 		"2)   The Installer will make the Haiku partition itself bootable, "
56 		"but takes no steps to integrate Haiku into an existing boot menu. "
57 		"If you have GRUB already installed, you can add Haiku to it.\n"
58 		"For details, please consult the guide on booting Haiku on our "
59 		"website at https://www.haiku-os.org/guides/booting.\n"
60 		"Or you can set up a boot menu from Installer's \"Tools\" menu, see "
61 		"the Haiku User Guide's topic on the application \"BootManager\"."
62 		"\n\n\n");
63 	infoText << B_TRANSLATE(
64 		"3)   When you successfully boot into Haiku for the first time, make "
65 		"sure to read our \"User Guide\" and take the \"Quick Tour\". There "
66 		"are links on the Desktop and in WebPositive's bookmarks.\n\n");
67 	infoText << B_TRANSLATE(
68 		"Have fun and thanks for trying out Haiku!");
69 
70 	BTextView* textView = new BTextView("eula", be_plain_font, NULL, B_WILL_DRAW);
71 	textView->SetInsets(10, 10, 10, 10);
72 	textView->MakeEditable(false);
73 	textView->MakeSelectable(false);
74 	textView->SetText(infoText);
75 
76 	BScrollView* scrollView = new BScrollView("eulaScroll",
77 		textView, B_WILL_DRAW, false, true);
78 
79 	BButton* cancelButton = new BButton(B_TRANSLATE("Quit"),
80 		new BMessage(B_QUIT_REQUESTED));
81 	cancelButton->SetTarget(be_app);
82 
83 	BButton* continueButton = new BButton(B_TRANSLATE("Continue"),
84 		new BMessage(kMsgAgree));
85 	continueButton->SetTarget(be_app);
86 	continueButton->MakeDefault(true);
87 
88 	if (!be_roster->IsRunning(kTrackerSignature))
89 		SetWorkspaces(B_ALL_WORKSPACES);
90 
91 	BLayoutBuilder::Group<>(this, B_VERTICAL, B_USE_DEFAULT_SPACING)
92 		.SetInsets(B_USE_WINDOW_SPACING)
93 		.Add(scrollView)
94 		.AddGroup(B_HORIZONTAL, B_USE_ITEM_SPACING)
95 			.AddGlue()
96 			.Add(cancelButton)
97 			.Add(continueButton);
98 
99 	CenterOnScreen();
100 	Show();
101 }
102 
103 
104 bool
105 EULAWindow::QuitRequested()
106 {
107 	be_app->PostMessage(kMsgNext);
108 	return true;
109 }
110