xref: /haiku/src/preferences/bluetooth/BluetoothMain.cpp (revision 7a74a5df454197933bc6e80a542102362ee98703)
1 /*
2  * Copyright 2008-10, Oliver Ruiz Dorantes, <oliver.ruiz.dorantes_at_gmail.com>
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 #include <stdio.h>
6 
7 #include <Alert.h>
8 #include <Catalog.h>
9 #include <MessageRunner.h>
10 #include <Roster.h>
11 
12 #include "BluetoothMain.h"
13 #include "BluetoothWindow.h"
14 #include "defs.h"
15 
16 
17 #undef B_TRANSLATION_CONTEXT
18 #define B_TRANSLATION_CONTEXT "main"
19 
20 BluetoothApplication::BluetoothApplication(void)
21  :	BApplication(BLUETOOTH_APP_SIGNATURE)
22 {
23 }
24 
25 
26 void
27 BluetoothApplication::ReadyToRun()
28 {
29 	if (!be_roster->IsRunning(BLUETOOTH_SIGNATURE)) {
30 		BAlert* alert = new BAlert("bluetooth_server not running",
31 			B_TRANSLATE("bluetooth_server has not been found running on the "
32 			"system. Should be started, or stay offline"),
33 			B_TRANSLATE("Work offline"), B_TRANSLATE("Quit"),
34 			B_TRANSLATE("Start please"), B_WIDTH_AS_USUAL,
35 			B_WARNING_ALERT);
36 		alert->SetShortcut(2, B_ESCAPE);
37 		int32 choice = alert->Go();
38 
39 
40 		switch (choice) {
41 			case 1:
42 				PostMessage(B_QUIT_REQUESTED);
43 			case 2:
44 			{
45 				status_t error;
46 				error = be_roster->Launch(BLUETOOTH_SIGNATURE);
47 				printf("kMsgStartServices: %s\n", strerror(error));
48 				// TODO: This is temporal
49 				// BMessage handcheck: use the version of Launch()
50 				// that includes a BMessage	in that message include
51 				// a BMessenger to yourself and the BT server could
52 				// use that messenger to send back a reply indicating
53 				// when it's ready and you could just create window
54 				BMessageRunner::StartSending(be_app_messenger,
55 					new BMessage('Xtmp'), 2 * 1000000, 1);
56 			}
57 		}
58 
59 		return;
60 	}
61 
62 	PostMessage(new BMessage('Xtmp'));
63 }
64 
65 
66 void
67 BluetoothApplication::MessageReceived(BMessage* message)
68 {
69 	switch (message->what) {
70 		case kMsgAddToRemoteList:
71 			fWindow->PostMessage(message);
72 			break;
73 
74 		case 'Xtmp':
75 			if (!be_roster->IsRunning(BLUETOOTH_SIGNATURE)) {
76 				// Give another chance
77 				BMessageRunner::StartSending(be_app_messenger,
78 					new BMessage('Xtmp'), 2 * 1000000, 1);
79 			} else {
80 				fWindow = new BluetoothWindow(BRect(100, 100, 550, 420));
81 				fWindow->Show();
82 			}
83 			break;
84 
85 		default:
86 			BApplication::MessageReceived(message);
87 	}
88 }
89 
90 
91 void
92 BluetoothApplication::AboutRequested()
93 {
94 	BAlert* alert = new BAlert("about", B_TRANSLATE(
95 							"Haiku Bluetooth system, (ARCE)\n\n"
96 							"Created by Oliver Ruiz Dorantes\n\n"
97 							"With support of:\n"
98 							"	- Mika Lindqvist\n"
99 							"	- Adrien Destugues\n"
100 							"	- Maksym Yevmenkin\n\n"
101 							"Thanks to the individuals who helped...\n\n"
102 							"Shipping/donating hardware:\n"
103 							"	- Henry Jair Abril Florez (el Colombian)\n"
104 							"		& Stefanie Bartolich\n"
105 							"	- Edwin Erik Amsler\n"
106 							"	- Dennis d'Entremont\n"
107 							"	- Luroh\n"
108 							"	- Pieter Panman\n\n"
109 							"Economically:\n"
110 							"	- Karl vom Dorff, Andrea Bernardi (OSDrawer),\n"
111 							"	- Matt M, Doug F, Hubert H,\n"
112 							"	- Sebastian B, Andrew M, Jared E,\n"
113 							"	- Frederik H, Tom S, Ferry B,\n"
114 							"	- Greg G, David F, Richard S, Martin W:\n\n"
115 							"With patches:\n"
116 							"	- Michael Weirauch\n"
117 							"	- Fredrik Ekdahl\n"
118 							"	- Raynald Lesieur\n"
119 							"	- Andreas Färber\n"
120 							"	- Joerg Meyer\n"
121 							"Testing:\n"
122 							"	- Petter H. Juliussen\n"
123 							"Who gave me all the knowledge:\n"
124 							"	- the yellowTAB team"),
125 						B_TRANSLATE("OK"));
126 	alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
127 	alert->Go();
128 }
129 
130 
131 int
132 main(int, char**)
133 {
134 	BluetoothApplication myApplication;
135 	myApplication.Run();
136 
137 	return 0;
138 }
139