xref: /haiku/src/preferences/media/Media.cpp (revision a10cf76ef5b9e8c726ebc47183abd6943023cf8f)
1*a10cf76eSAxel Dörfler // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
2*a10cf76eSAxel Dörfler //
3*a10cf76eSAxel Dörfler //	Copyright (c) 2003, OpenBeOS
4*a10cf76eSAxel Dörfler //
5*a10cf76eSAxel Dörfler //  This software is part of the OpenBeOS distribution and is covered
6*a10cf76eSAxel Dörfler //  by the OpenBeOS license.
7*a10cf76eSAxel Dörfler //
8*a10cf76eSAxel Dörfler //
9*a10cf76eSAxel Dörfler //  File:        Media.cpp
10*a10cf76eSAxel Dörfler //  Author:      Sikosis, Jérôme Duval
11*a10cf76eSAxel Dörfler //  Description: Media Preferences
12*a10cf76eSAxel Dörfler //  Created :    June 25, 2003
13*a10cf76eSAxel Dörfler //
14*a10cf76eSAxel Dörfler // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
15*a10cf76eSAxel Dörfler 
16*a10cf76eSAxel Dörfler 
17*a10cf76eSAxel Dörfler // Includes -------------------------------------------------------------------------------------------------- //
18*a10cf76eSAxel Dörfler #include <StorageKit.h>
19*a10cf76eSAxel Dörfler #include <Roster.h>
20*a10cf76eSAxel Dörfler #include <String.h>
21*a10cf76eSAxel Dörfler #include <stdio.h>
22*a10cf76eSAxel Dörfler #include "Media.h"
23*a10cf76eSAxel Dörfler 
24*a10cf76eSAxel Dörfler // Media -- constructor
25*a10cf76eSAxel Dörfler Media::Media()
26*a10cf76eSAxel Dörfler : BApplication (APP_SIGNATURE)
27*a10cf76eSAxel Dörfler {
28*a10cf76eSAxel Dörfler 	BRect rect(32,64,637,442);
29*a10cf76eSAxel Dörfler 
30*a10cf76eSAxel Dörfler 	BPath path;
31*a10cf76eSAxel Dörfler 	if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) {
32*a10cf76eSAxel Dörfler 		path.Append(SETTINGS_FILE);
33*a10cf76eSAxel Dörfler 		BFile file(path.Path(),B_READ_ONLY);
34*a10cf76eSAxel Dörfler 		if (file.InitCheck()==B_OK) {
35*a10cf76eSAxel Dörfler 			char buffer[255];
36*a10cf76eSAxel Dörfler 			ssize_t size = 0;
37*a10cf76eSAxel Dörfler 			while ((size = file.Read(buffer, 255)) > 0) {
38*a10cf76eSAxel Dörfler 				int32 i=0;
39*a10cf76eSAxel Dörfler 				while(buffer[i]=='#') {
40*a10cf76eSAxel Dörfler 					while(i<size&&buffer[i]!='\n')
41*a10cf76eSAxel Dörfler 						i++;
42*a10cf76eSAxel Dörfler 					i++;
43*a10cf76eSAxel Dörfler 				}
44*a10cf76eSAxel Dörfler 				int32 a,b,c,d;
45*a10cf76eSAxel Dörfler 				if (sscanf(&buffer[i], " rect = %li,%li,%li,%li", &a, &b, &c, &d) > 0) {
46*a10cf76eSAxel Dörfler 					if (c-a >= rect.IntegerWidth()) {
47*a10cf76eSAxel Dörfler 						rect.left = a;
48*a10cf76eSAxel Dörfler 						rect.right = c;
49*a10cf76eSAxel Dörfler 					}
50*a10cf76eSAxel Dörfler 					if (d-b >= rect.IntegerHeight()) {
51*a10cf76eSAxel Dörfler 						rect.top = b;
52*a10cf76eSAxel Dörfler 						rect.bottom = d;
53*a10cf76eSAxel Dörfler 					}
54*a10cf76eSAxel Dörfler 				}
55*a10cf76eSAxel Dörfler 			}
56*a10cf76eSAxel Dörfler 		}
57*a10cf76eSAxel Dörfler 	}
58*a10cf76eSAxel Dörfler 
59*a10cf76eSAxel Dörfler 	mWindow = new MediaWindow(rect);
60*a10cf76eSAxel Dörfler 	mWindow->SetSizeLimits(605.0, 10000.0, 378.0, 10000.0);
61*a10cf76eSAxel Dörfler 
62*a10cf76eSAxel Dörfler 	be_roster->StartWatching(BMessenger(this));
63*a10cf76eSAxel Dörfler }
64*a10cf76eSAxel Dörfler // ---------------------------------------------------------------------------------------------------------- //
65*a10cf76eSAxel Dörfler 
66*a10cf76eSAxel Dörfler Media::~Media()
67*a10cf76eSAxel Dörfler {
68*a10cf76eSAxel Dörfler 	be_roster->StopWatching(BMessenger(this));
69*a10cf76eSAxel Dörfler }
70*a10cf76eSAxel Dörfler 
71*a10cf76eSAxel Dörfler 
72*a10cf76eSAxel Dörfler status_t
73*a10cf76eSAxel Dörfler Media::InitCheck()
74*a10cf76eSAxel Dörfler {
75*a10cf76eSAxel Dörfler 	if (mWindow)
76*a10cf76eSAxel Dörfler 		return mWindow->InitCheck();
77*a10cf76eSAxel Dörfler 	return B_OK;
78*a10cf76eSAxel Dörfler }
79*a10cf76eSAxel Dörfler 
80*a10cf76eSAxel Dörfler 
81*a10cf76eSAxel Dörfler // Media::MessageReceived -- handles incoming messages
82*a10cf76eSAxel Dörfler void Media::MessageReceived (BMessage *message)
83*a10cf76eSAxel Dörfler {
84*a10cf76eSAxel Dörfler 	switch(message->what)
85*a10cf76eSAxel Dörfler 	{
86*a10cf76eSAxel Dörfler 		case B_SOME_APP_LAUNCHED:
87*a10cf76eSAxel Dörfler 		case B_SOME_APP_QUIT:
88*a10cf76eSAxel Dörfler 			mWindow->PostMessage(message);
89*a10cf76eSAxel Dörfler 			break;
90*a10cf76eSAxel Dörfler 	    default:
91*a10cf76eSAxel Dörfler     	    BApplication::MessageReceived(message); // pass it along ...
92*a10cf76eSAxel Dörfler         	break;
93*a10cf76eSAxel Dörfler     }
94*a10cf76eSAxel Dörfler }
95*a10cf76eSAxel Dörfler // ---------------------------------------------------------------------------------------------------------- //
96*a10cf76eSAxel Dörfler 
97*a10cf76eSAxel Dörfler // Media Main
98*a10cf76eSAxel Dörfler int main(void)
99*a10cf76eSAxel Dörfler {
100*a10cf76eSAxel Dörfler    Media theApp;
101*a10cf76eSAxel Dörfler    if (theApp.InitCheck() == B_OK)
102*a10cf76eSAxel Dörfler    	theApp.Run();
103*a10cf76eSAxel Dörfler    return 0;
104*a10cf76eSAxel Dörfler }
105*a10cf76eSAxel Dörfler // end ------------------------------------------------------------------------------------------------------ //
106