Media: Add support for media services notifications

This commit is contained in:
Dario Casalinuovo 2015-07-23 18:16:01 +02:00
parent 92ab0a8c3a
commit b43b20d38f
3 changed files with 11 additions and 49 deletions

View File

@ -14,7 +14,6 @@
#include <Catalog.h>
#include <Locale.h>
#include <Roster.h>
#include <StorageKit.h>
#include <String.h>
@ -59,14 +58,6 @@ Media::Media()
MediaListItem::SetIcons(&fIcons);
fWindow = new MediaWindow(rect);
be_roster->StartWatching(BMessenger(this));
}
Media::~Media()
{
be_roster->StopWatching(BMessenger(this));
}
@ -79,22 +70,6 @@ Media::InitCheck()
}
void
Media::MessageReceived(BMessage* message)
{
switch (message->what) {
case B_SOME_APP_LAUNCHED:
case B_SOME_APP_QUIT:
fWindow->PostMessage(message);
break;
default:
BApplication::MessageReceived(message);
break;
}
}
// #pragma mark -

View File

@ -23,9 +23,7 @@ static const char* kApplicationSignature = "application/x-vnd.Haiku-Media";
class Media : public BApplication {
public:
Media();
virtual ~Media();
virtual void MessageReceived(BMessage* message);
status_t InitCheck();
private:

View File

@ -167,6 +167,10 @@ MediaWindow::MediaWindow(BRect frame)
fInitCheck(B_OK)
{
_InitWindow();
BMediaRoster* roster = BMediaRoster::Roster();
roster->StartWatching(BMessenger(this, this),
B_MEDIA_SERVER_STARTED);
}
@ -188,6 +192,10 @@ MediaWindow::~MediaWindow()
if (file.InitCheck() == B_OK)
file.Write(buffer, strlen(buffer));
}
BMediaRoster* roster = BMediaRoster::CurrentRoster();
roster->StopWatching(BMessenger(this, this),
B_MEDIA_SERVER_STARTED);
}
@ -313,31 +321,12 @@ MediaWindow::MessageReceived(BMessage* message)
item->AlterWindow(this);
break;
}
case B_SOME_APP_LAUNCHED:
case B_MEDIA_SERVER_STARTED:
{
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();
}
}
_Notify(0.75, B_TRANSLATE("Starting media server"
B_UTF8_ELLIPSIS));
break;
}
default: