xref: /haiku/src/kits/bluetooth/UI/ConnectionView.cpp (revision d4e4909c6a3fe4290b78be2b78035c4774e3ff18)
1 /*
2  * Copyright 2021, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  * 		Tri-Edge AI <triedgeai@gmail.com>
7  */
8 
9 #include <ConnectionView.h>
10 #include <BluetoothIconView.h>
11 
12 namespace Bluetooth
13 {
14 
15 ConnectionView::ConnectionView(BRect frame, BString device, BString address)
16 	:
17 	BView(frame, "ConnectionView", 0, B_PULSE_NEEDED)
18 {
19 	SetLayout(new BGroupLayout(B_HORIZONTAL));
20 	SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
21 
22 	fIcon = new BluetoothIconView();
23 
24 	strMessage = "A new connection is incoming..";
25 
26 	fMessage = new BStringView(frame, "", strMessage, B_FOLLOW_LEFT);
27 	fMessage->SetAlignment(B_ALIGN_LEFT);
28 
29 	fDeviceLabel = new BStringView(frame, "", "Device Name:", B_FOLLOW_LEFT);
30 	fDeviceLabel->SetFont(be_bold_font);
31 
32 	fDeviceText = new BStringView(frame, "", device, B_FOLLOW_RIGHT);
33 	fDeviceText->SetAlignment(B_ALIGN_RIGHT);
34 
35 	fAddressLabel = new BStringView(frame, "", "MAC Address:", B_FOLLOW_LEFT);
36 	fAddressLabel->SetFont(be_bold_font);
37 
38 	fAddressText = new BStringView(frame, "", address, B_FOLLOW_RIGHT);
39 	fAddressText->SetAlignment(B_ALIGN_RIGHT);
40 
41 	AddChild(BGroupLayoutBuilder(B_HORIZONTAL, 0)
42 			.Add(BGroupLayoutBuilder(B_VERTICAL, 8)
43 				.Add(fIcon)
44 			)
45 			.Add(BGroupLayoutBuilder(B_VERTICAL, 0)
46 				.Add(fMessage)
47 				.AddGlue()
48 				.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
49 					.Add(fDeviceLabel)
50 					.AddGlue()
51 					.Add(fDeviceText)
52 				)
53 				.Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
54 					.Add(fAddressLabel)
55 					.AddGlue()
56 					.Add(fAddressText)
57 				)
58 				.AddGlue()
59 			)
60 			.AddGlue()
61 			.SetInsets(8, 8, 8, 8)
62 	);
63 }
64 
65 
66 void
67 ConnectionView::Pulse()
68 {
69 	static int pulses = 0;
70 
71 	pulses++;
72 
73 	if (pulses >= 5) {
74 		Window()->PostMessage(B_QUIT_REQUESTED);
75 	} else {
76 		strMessage += ".";
77 		fMessage->SetText(strMessage);
78 	}
79 }
80 
81 }
82