1 // AlertTestWindow.cpp
2
3 #include <Application.h>
4 #include <Roster.h>
5 #include <Alert.h>
6 #include <TextView.h>
7 #include <Entry.h>
8 #include <Path.h>
9 #include <String.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include "AlertTestWindow.h"
13
14 const char *k20X = "XXXXXXXXXXXXXXXXXXXX";
15 const char *k40X = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
16 const char *k60X = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
17
AlertTestWindow(BRect frame)18 AlertTestWindow::AlertTestWindow(BRect frame)
19 : BWindow(frame, "AlertTestWindow", B_TITLED_WINDOW,
20 B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
21 {
22 fAlertType = 'H';
23
24 BString strLabel = "Alert Manual Test";
25 app_info info;
26 if (be_app->GetAppInfo(&info) >= B_OK) {
27 BEntry entry(&info.ref);
28 if (entry.InitCheck() >= B_OK) {
29 BPath path(&entry);
30 if (path.InitCheck() >= B_OK) {
31 strLabel.Append(" (");
32 strLabel.Append(path.Leaf());
33 strLabel.Append(")");
34 printf(": Version: %s\n", path.Leaf());
35
36 if (path.Leaf()[0] == 'b')
37 fAlertType = 'B';
38 else
39 fAlertType = 'H';
40 }
41 }
42 }
43
44 fTitleView = new BStringView(BRect(10, 10, Bounds().Width() - 10, 30),
45 "title", strLabel.String());
46 fTitleView->SetFontSize(16);
47
48 fRunButton = new BButton(BRect(10, 40, 100, 60),
49 "runbtn", "Run", new BMessage(MSG_RUN_BUTTON));
50
51 AddChild(fTitleView);
52 AddChild(fRunButton);
53 }
54
55 void
MessageReceived(BMessage * message)56 AlertTestWindow::MessageReceived(BMessage *message)
57 {
58 switch (message->what) {
59 case MSG_RUN_BUTTON:
60 printf("%c<Run Button\n", fAlertType);
61 Test();
62 break;
63 default:
64 break;
65 }
66 }
67
which_label(const char * text,BString & outString)68 void which_label(const char *text, BString &outString)
69 {
70 int nX = 0;
71 if (strcmp(text, k60X) == 0)
72 nX = 60;
73 else if (strcmp(text, k40X) == 0)
74 nX = 40;
75 else if (strcmp(text, k20X) == 0)
76 nX = 20;
77
78 outString = "";
79 if (nX == 0) {
80 outString << '"' << text << '"';
81 } else {
82 outString << 'k' << nX << 'X';
83 }
84 }
85
86 void
Test()87 AlertTestWindow::Test()
88 {
89 BAlert *pAlert = new BAlert(
90 "alert1",
91 k60X,
92 k20X, "OK", "Cancel",
93 B_WIDTH_AS_USUAL, // widthStyle
94 B_OFFSET_SPACING,
95 B_EMPTY_ALERT // alert_type
96 );
97 if (fAlertType == 'H') {
98 BView *master = pAlert->ChildAt(0);
99 master->SetViewUIColor(B_MENU_BACKGROUND_COLOR);
100 }
101
102 BPoint pt;
103 BString strLabel;
104 BButton *pBtns[3] = { NULL };
105 pBtns[0] = pAlert->ButtonAt(0);
106 pBtns[1] = pAlert->ButtonAt(1);
107 pBtns[2] = pAlert->ButtonAt(2);
108
109 BTextView *pTextView = pAlert->TextView();
110
111 // Window info
112 printf("wi.width = %.1ff;\n"
113 "wi.height = %.1ff;\n"
114 "ati.SetWinInfo(wi);\n",
115 pAlert->Bounds().Width(), pAlert->Bounds().Height());
116
117 // TextView info
118 printf("\n");
119 which_label(pTextView->Text(), strLabel);
120 pt = pTextView->ConvertToParent(BPoint(0, 0));
121 printf("ti.label = %s;\n"
122 "ti.width = %.1ff;\n"
123 "ti.height = %.1ff;\n"
124 "ti.topleft.Set(%.1ff, %.1ff);\n"
125 "ati.SetTextViewInfo(ti);\n",
126 strLabel.String(), pTextView->Bounds().Width(),
127 pTextView->Bounds().Height(), pt.x, pt.y);
128
129 // Button info
130 printf("\n");
131 int32 i = 0;
132 while (i < 3 && pBtns[i] != NULL) {
133 BButton *pb = pBtns[i];
134 which_label(pb->Label(), strLabel);
135 pt = pb->ConvertToParent(BPoint(0, 0));
136 printf("bi.label = %s;\n"
137 "bi.width = %.1ff;\n"
138 "bi.height = %.1ff;\n"
139 "bi.topleft.Set(%.1ff, %.1ff);\n"
140 "ati.SetButtonInfo(%d, bi);\n",
141 strLabel.String(), pb->Bounds().Width(),
142 pb->Bounds().Height(), pt.x, pt.y,
143 (int)i);
144 i++;
145 }
146
147 int32 result = pAlert->Go();
148 printf("%c<Clicked: %d\n", fAlertType, static_cast<int>(result));
149 pAlert = NULL;
150 }
151
152 bool
QuitRequested()153 AlertTestWindow::QuitRequested()
154 {
155 printf("%c<Quit\n", fAlertType);
156 be_app->PostMessage(B_QUIT_REQUESTED);
157 return true;
158 }
159