xref: /haiku/src/tests/servers/app/find_view/FindView.cpp (revision 5ae0bbaad06ffefc3176fa597e157a708002df7b)
1*5ae0bbaaSStephan Aßmus /*
2*5ae0bbaaSStephan Aßmus  * Copyright 2008, Stephan Aßmus <superstippi@gmx.de>
3*5ae0bbaaSStephan Aßmus  * Distributed under the terms of the MIT License.
4*5ae0bbaaSStephan Aßmus  */
5*5ae0bbaaSStephan Aßmus 
6*5ae0bbaaSStephan Aßmus 
7*5ae0bbaaSStephan Aßmus #include <Application.h>
8*5ae0bbaaSStephan Aßmus #include <Window.h>
9*5ae0bbaaSStephan Aßmus #include <View.h>
10*5ae0bbaaSStephan Aßmus 
11*5ae0bbaaSStephan Aßmus #include <stdio.h>
12*5ae0bbaaSStephan Aßmus 
13*5ae0bbaaSStephan Aßmus 
14*5ae0bbaaSStephan Aßmus class View : public BView {
15*5ae0bbaaSStephan Aßmus public:
View(BRect rect,const char * name,uint32 followMode,uint8 red,uint8 green,uint8 blue)16*5ae0bbaaSStephan Aßmus 	View(BRect rect, const char* name, uint32 followMode,
17*5ae0bbaaSStephan Aßmus 			uint8 red, uint8 green, uint8 blue)
18*5ae0bbaaSStephan Aßmus 		: BView(rect, name, followMode, 0)
19*5ae0bbaaSStephan Aßmus 	{
20*5ae0bbaaSStephan Aßmus 		SetViewColor(red, green, blue);
21*5ae0bbaaSStephan Aßmus 	}
22*5ae0bbaaSStephan Aßmus };
23*5ae0bbaaSStephan Aßmus 
24*5ae0bbaaSStephan Aßmus 
25*5ae0bbaaSStephan Aßmus class TestView : public View {
26*5ae0bbaaSStephan Aßmus public:
TestView(BRect rect,const char * name,uint32 followMode,uint8 red,uint8 green,uint8 blue)27*5ae0bbaaSStephan Aßmus 	TestView(BRect rect, const char* name, uint32 followMode,
28*5ae0bbaaSStephan Aßmus 			uint8 red, uint8 green, uint8 blue)
29*5ae0bbaaSStephan Aßmus 		: View(rect, name, followMode, red, green, blue)
30*5ae0bbaaSStephan Aßmus 	{
31*5ae0bbaaSStephan Aßmus 		SetEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
32*5ae0bbaaSStephan Aßmus 	}
33*5ae0bbaaSStephan Aßmus 
MouseMoved(BPoint where,uint32 transit,const BMessage * dragMessage)34*5ae0bbaaSStephan Aßmus 	virtual	void MouseMoved(BPoint where, uint32 transit,
35*5ae0bbaaSStephan Aßmus 			const BMessage* dragMessage)
36*5ae0bbaaSStephan Aßmus 	{
37*5ae0bbaaSStephan Aßmus 		ConvertToScreen(&where);
38*5ae0bbaaSStephan Aßmus 		where -= Window()->Frame().LeftTop();
39*5ae0bbaaSStephan Aßmus 		BView* view = Window()->FindView(where);
40*5ae0bbaaSStephan Aßmus 		printf("View at (%.1f, %.1f): %s\n", where.x, where.y,
41*5ae0bbaaSStephan Aßmus 			view ? view->Name() : "NULL");
42*5ae0bbaaSStephan Aßmus 	}
43*5ae0bbaaSStephan Aßmus };
44*5ae0bbaaSStephan Aßmus 
45*5ae0bbaaSStephan Aßmus 
46*5ae0bbaaSStephan Aßmus //	#pragma mark -
47*5ae0bbaaSStephan Aßmus 
48*5ae0bbaaSStephan Aßmus 
49*5ae0bbaaSStephan Aßmus int
main(int argc,char ** argv)50*5ae0bbaaSStephan Aßmus main(int argc, char **argv)
51*5ae0bbaaSStephan Aßmus {
52*5ae0bbaaSStephan Aßmus 	BApplication app("application/x-vnd.haiku-find_view");
53*5ae0bbaaSStephan Aßmus 
54*5ae0bbaaSStephan Aßmus 	BWindow* window = new BWindow(BRect(100, 100, 400, 400),
55*5ae0bbaaSStephan Aßmus 		"ViewTransit-Test", B_TITLED_WINDOW,
56*5ae0bbaaSStephan Aßmus 		B_ASYNCHRONOUS_CONTROLS | B_QUIT_ON_WINDOW_CLOSE);
57*5ae0bbaaSStephan Aßmus 
58*5ae0bbaaSStephan Aßmus 	// TestView
59*5ae0bbaaSStephan Aßmus 	BRect frame = window->Bounds();
60*5ae0bbaaSStephan Aßmus 	View* testView = new TestView(frame, "Test View", B_FOLLOW_ALL, 255, 0, 0);
61*5ae0bbaaSStephan Aßmus 	window->AddChild(testView);
62*5ae0bbaaSStephan Aßmus 
63*5ae0bbaaSStephan Aßmus 	// View 1
64*5ae0bbaaSStephan Aßmus 	frame.InsetBy(20, 20);
65*5ae0bbaaSStephan Aßmus 	frame.right /= 2;
66*5ae0bbaaSStephan Aßmus 	View* view1 = new View(frame, "View 1",
67*5ae0bbaaSStephan Aßmus 		B_FOLLOW_TOP_BOTTOM | B_FOLLOW_RIGHT, 0, 255, 0);
68*5ae0bbaaSStephan Aßmus 	testView->AddChild(view1);
69*5ae0bbaaSStephan Aßmus 
70*5ae0bbaaSStephan Aßmus 	// View 2
71*5ae0bbaaSStephan Aßmus 	frame.left = frame.right + 1;
72*5ae0bbaaSStephan Aßmus 	frame.right = window->Bounds().right - 20;
73*5ae0bbaaSStephan Aßmus 	View* view2 = new View(frame, "View 2",
74*5ae0bbaaSStephan Aßmus 		B_FOLLOW_TOP_BOTTOM | B_FOLLOW_RIGHT, 0, 0, 255);
75*5ae0bbaaSStephan Aßmus 	testView->AddChild(view2);
76*5ae0bbaaSStephan Aßmus 	view2->Hide();
77*5ae0bbaaSStephan Aßmus 
78*5ae0bbaaSStephan Aßmus 
79*5ae0bbaaSStephan Aßmus 	window->Show();
80*5ae0bbaaSStephan Aßmus 
81*5ae0bbaaSStephan Aßmus 	app.Run();
82*5ae0bbaaSStephan Aßmus 	return 0;
83*5ae0bbaaSStephan Aßmus }
84