xref: /haiku/src/preferences/media/Media.cpp (revision 2af5f8952c9f5fe601d2db1c419914687e9aaa5b)
137ec4f04SAxel Dörfler /*
237ec4f04SAxel Dörfler  * Copyright 2003-2006, Haiku. All rights reserved.
337ec4f04SAxel Dörfler  * Distributed under the terms of the MIT License.
437ec4f04SAxel Dörfler  *
537ec4f04SAxel Dörfler  * Authors in chronological order:
637ec4f04SAxel Dörfler  *		Sikosis
737ec4f04SAxel Dörfler  *		Jérôme Duval
837ec4f04SAxel Dörfler  */
9a10cf76eSAxel Dörfler 
10a10cf76eSAxel Dörfler 
1137ec4f04SAxel Dörfler #include "Media.h"
1237ec4f04SAxel Dörfler 
13a10cf76eSAxel Dörfler #include <StorageKit.h>
14a10cf76eSAxel Dörfler #include <Roster.h>
15a10cf76eSAxel Dörfler #include <String.h>
16a10cf76eSAxel Dörfler #include <stdio.h>
17a10cf76eSAxel Dörfler 
1837ec4f04SAxel Dörfler 
19a10cf76eSAxel Dörfler Media::Media()
2037ec4f04SAxel Dörfler 	: BApplication("application/x-vnd.Haiku-Media")
21a10cf76eSAxel Dörfler {
22*2af5f895SStephan Aßmus 	BRect rect(32,64,637,462);
23a10cf76eSAxel Dörfler 
24a10cf76eSAxel Dörfler 	BPath path;
25a10cf76eSAxel Dörfler 	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) {
26a10cf76eSAxel Dörfler 		path.Append(SETTINGS_FILE);
27a10cf76eSAxel Dörfler 		BFile file(path.Path(),B_READ_ONLY);
28a10cf76eSAxel Dörfler 		if (file.InitCheck()==B_OK) {
29a10cf76eSAxel Dörfler 			char buffer[255];
30a10cf76eSAxel Dörfler 			ssize_t size = 0;
31a10cf76eSAxel Dörfler 			while ((size = file.Read(buffer, 255)) > 0) {
32a10cf76eSAxel Dörfler 				int32 i = 0;
33a10cf76eSAxel Dörfler 				while (buffer[i] == '#') {
34a10cf76eSAxel Dörfler 					while (i < size && buffer[i] != '\n')
35a10cf76eSAxel Dörfler 						i++;
36a10cf76eSAxel Dörfler 					i++;
37a10cf76eSAxel Dörfler 				}
38a10cf76eSAxel Dörfler 				int32 a, b, c, d;
39a10cf76eSAxel Dörfler 				if (sscanf(&buffer[i], " rect = %li,%li,%li,%li", &a, &b, &c, &d) > 0) {
40a10cf76eSAxel Dörfler 					if (c - a >= rect.IntegerWidth()) {
41a10cf76eSAxel Dörfler 						rect.left = a;
42a10cf76eSAxel Dörfler 						rect.right = c;
43a10cf76eSAxel Dörfler 					}
44a10cf76eSAxel Dörfler 					if (d - b >= rect.IntegerHeight()) {
45a10cf76eSAxel Dörfler 						rect.top = b;
46a10cf76eSAxel Dörfler 						rect.bottom = d;
47a10cf76eSAxel Dörfler 					}
48a10cf76eSAxel Dörfler 				}
49a10cf76eSAxel Dörfler 			}
50a10cf76eSAxel Dörfler 		}
51a10cf76eSAxel Dörfler 	}
52a10cf76eSAxel Dörfler 
53b4a12470SJérôme Duval 	fWindow = new MediaWindow(rect);
54a10cf76eSAxel Dörfler 
55a10cf76eSAxel Dörfler 	be_roster->StartWatching(BMessenger(this));
56a10cf76eSAxel Dörfler }
5737ec4f04SAxel Dörfler 
58a10cf76eSAxel Dörfler 
59a10cf76eSAxel Dörfler Media::~Media()
60a10cf76eSAxel Dörfler {
61a10cf76eSAxel Dörfler 	be_roster->StopWatching(BMessenger(this));
62a10cf76eSAxel Dörfler }
63a10cf76eSAxel Dörfler 
64a10cf76eSAxel Dörfler 
65a10cf76eSAxel Dörfler status_t
66a10cf76eSAxel Dörfler Media::InitCheck()
67a10cf76eSAxel Dörfler {
68b4a12470SJérôme Duval 	if (fWindow)
69b4a12470SJérôme Duval 		return fWindow->InitCheck();
70a10cf76eSAxel Dörfler 	return B_OK;
71a10cf76eSAxel Dörfler }
72a10cf76eSAxel Dörfler 
73a10cf76eSAxel Dörfler 
7437ec4f04SAxel Dörfler void
7537ec4f04SAxel Dörfler Media::MessageReceived(BMessage *message)
76a10cf76eSAxel Dörfler {
7737ec4f04SAxel Dörfler 	switch (message->what) {
78a10cf76eSAxel Dörfler 		case B_SOME_APP_LAUNCHED:
79a10cf76eSAxel Dörfler 		case B_SOME_APP_QUIT:
80b4a12470SJérôme Duval 			fWindow->PostMessage(message);
81a10cf76eSAxel Dörfler 			break;
8237ec4f04SAxel Dörfler 
83a10cf76eSAxel Dörfler 		default:
8437ec4f04SAxel Dörfler 			BApplication::MessageReceived(message);
85a10cf76eSAxel Dörfler 			break;
86a10cf76eSAxel Dörfler 	}
87a10cf76eSAxel Dörfler }
88a10cf76eSAxel Dörfler 
8937ec4f04SAxel Dörfler 
9037ec4f04SAxel Dörfler //	#pragma mark -
9137ec4f04SAxel Dörfler 
9237ec4f04SAxel Dörfler 
9337ec4f04SAxel Dörfler int
9437ec4f04SAxel Dörfler main(int, char**)
95a10cf76eSAxel Dörfler {
9637ec4f04SAxel Dörfler 	Media app;
9737ec4f04SAxel Dörfler 	if (app.InitCheck() == B_OK)
9837ec4f04SAxel Dörfler 		app.Run();
9937ec4f04SAxel Dörfler 
100a10cf76eSAxel Dörfler 	return 0;
101a10cf76eSAxel Dörfler }
10237ec4f04SAxel Dörfler 
103