1/*
2 * Copyright (C) 2008 Stephan Aßmus <superstippi@gmx.de>
3 * All rights reserved. Distributed under the terms of the MIT license.
4 */
5#include "TestWindow.h"
6
7#include "Test.h"
8
9
10TestView::TestView(BRect frame, Test* test, drawing_mode mode,
11		bool useClipping, const BMessenger& target)
12	:
13	BView(frame, "test view", B_FOLLOW_ALL, B_WILL_DRAW),
14	fTest(test),
15	fTarget(target),
16	fUseClipping(useClipping)
17{
18	SetDrawingMode(mode);
19}
20
21
22void
23TestView::AttachedToWindow()
24{
25	fTest->Prepare(this);
26	if (fUseClipping)
27		fTest->SetupClipping(this);
28}
29
30
31void
32TestView::Draw(BRect updateRect)
33{
34	if (fTest->RunIteration(this)) {
35		Invalidate();
36		return;
37	}
38
39	fTarget.SendMessage(MSG_TEST_FINISHED);
40}
41
42
43TestWindow::TestWindow(BRect frame, Test* test, drawing_mode mode,
44		bool useClipping, const BMessenger& target)
45	: BWindow(frame, "Test Window", B_TITLED_WINDOW_LOOK,
46		B_FLOATING_ALL_WINDOW_FEEL, B_NOT_ZOOMABLE | B_NOT_RESIZABLE),
47	  fTarget(target),
48	  fAllowedToQuit(false)
49{
50	fTestView = new TestView(Bounds(), test, mode, useClipping, target);
51	AddChild(fTestView);
52	Show();
53}
54
55
56bool
57TestWindow::QuitRequested()
58{
59	if (fAllowedToQuit)
60		return true;
61
62	fTarget.SendMessage(MSG_TEST_CANCELED);
63	return false;
64}
65
66
67void
68TestWindow::SetAllowedToQuit(bool allowed)
69{
70	fAllowedToQuit = allowed;
71}
72
73