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
21static const uint32 kMsgAgree = 'agre';
22static const uint32 kMsgNext = 'next';
23
24#undef B_TRANSLATION_CONTEXT
25#define B_TRANSLATION_CONTEXT "InstallerApp"
26
27
28EULAWindow::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
104bool
105EULAWindow::QuitRequested()
106{
107	be_app->PostMessage(kMsgNext);
108	return true;
109}
110