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