MediaWindow::~MediaWindow() { _EmptyNodeLists(); _ClearParamView(); char buffer[512]; BRect rect = Frame(); PRINT_OBJECT(rect); snprintf(buffer, 512, "# MediaPrefs Settings\n rect = %i,%i,%i,%i\n", int(rect.left), int(rect.top), int(rect.right), int(rect.bottom)); BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) { path.Append(SETTINGS_FILE); BFile file(path.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); if (file.InitCheck() == B_OK) file.Write(buffer, strlen(buffer)); } BMediaRoster* roster = BMediaRoster::CurrentRoster(); roster->StopWatching(BMessenger(this, this), B_MEDIA_SERVER_STARTED); roster->StartWatching(BMessenger(this, this), B_MEDIA_SERVER_QUIT); }
void MediaWindow::MessageReceived(BMessage* message) { switch (message->what) { case ML_RESTART_THREAD_FINISHED: fRestartThread = -1; _InitMedia(false); break; case ML_RESTART_MEDIA_SERVER: { fRestartThread = spawn_thread(&MediaWindow::_RestartMediaServices, "restart_thread", B_NORMAL_PRIORITY, this); if (fRestartThread < 0) fprintf(stderr, "couldn't create restart thread\n"); else resume_thread(fRestartThread); break; } case B_MEDIA_WEB_CHANGED: case ML_SELECTED_NODE: { PRINT_OBJECT(*message); MediaListItem* item = static_cast<MediaListItem*>( fListView->ItemAt(fListView->CurrentSelection())); if (item == NULL) break; fCurrentNode.SetTo(NULL); _ClearParamView(); item->AlterWindow(this); break; } case B_MEDIA_SERVER_STARTED: case B_MEDIA_SERVER_QUIT: { PRINT_OBJECT(*message); _InitMedia(false); break; } default: BWindow::MessageReceived(message); break; } }
MediaWindow::~MediaWindow() { _EmptyNodeLists(); _ClearParamView(); char buffer[512]; BRect rect = Frame(); PRINT_OBJECT(rect); snprintf(buffer, 512, "# MediaPrefs Settings\n rect = %i,%i,%i,%i\n", int(rect.left), int(rect.top), int(rect.right), int(rect.bottom)); BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) { path.Append(SETTINGS_FILE); BFile file(path.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); if (file.InitCheck() == B_OK) file.Write(buffer, strlen(buffer)); } }
void MediaWindow::MessageReceived(BMessage* message) { switch (message->what) { case ML_INIT_MEDIA: _InitMedia(false); break; case ML_RESTART_MEDIA_SERVER: { thread_id thread = spawn_thread(&MediaWindow::_RestartMediaServices, "restart_thread", B_NORMAL_PRIORITY, this); if (thread < 0) fprintf(stderr, "couldn't create restart thread\n"); else resume_thread(thread); break; } case B_MEDIA_WEB_CHANGED: case ML_SELECTED_NODE: { PRINT_OBJECT(*message); MediaListItem* item = static_cast<MediaListItem*>( fListView->ItemAt(fListView->CurrentSelection())); if (item == NULL) break; fCurrentNode.SetTo(NULL); _ClearParamView(); item->AlterWindow(this); break; } case B_SOME_APP_LAUNCHED: { PRINT_OBJECT(*message); BString mimeSig; if (message->FindString("be:signature", &mimeSig) == B_OK && (mimeSig == "application/x-vnd.Be.addon-host" || mimeSig == "application/x-vnd.Be.media-server")) { _Notify(0.75, B_TRANSLATE("Starting media server" B_UTF8_ELLIPSIS)); } break; } case B_SOME_APP_QUIT: { PRINT_OBJECT(*message); BString mimeSig; if (message->FindString("be:signature", &mimeSig) == B_OK) { if (mimeSig == "application/x-vnd.Be.addon-host" || mimeSig == "application/x-vnd.Be.media-server") { BMediaRoster* roster = BMediaRoster::CurrentRoster(); if (roster != NULL && roster->Lock()) roster->Quit(); } } break; } default: BWindow::MessageReceived(message); break; } }