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