Modified launching of applications. Should be able to launch Haiku, BeOS or Zeta RC3

Media Player, Media and Sounds preferences.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8581 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
beveloper 2004-08-15 15:55:45 +00:00
parent ed942695d6
commit 6a217e6df7

View File

@ -11,7 +11,8 @@
// Description: VolumeControl and link items in Deskbar
// Created : October 20, 2003
// Modified by: Jérome Duval
// Modified by: François Revol, 10/31/2003
// Modified by: François Revol, 10/31/2003
// Modified by: Marcus Overhagen, 15/08/2004
//
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
@ -77,6 +78,8 @@ public:
virtual void MessageReceived(BMessage *);
private:
status_t LaunchByPath(const char *path);
status_t LaunchBySig(const char *sig);
void LoadSettings();
void SaveSettings();
BBitmap * segments;
@ -168,15 +171,33 @@ MediaReplicant::MessageReceived(BMessage *message)
break;
case OPEN_MEDIA_PLAYER:
// launch the media player app
be_roster->Launch("application/x-vnd.Be.MediaPlayer");
if (B_OK == LaunchBySig("application/x-vnd.Haiku.MediaPlayer"))
break;
if (B_OK == LaunchBySig("application/x-vnd.Be.MediaPlayer"))
break;
if (B_OK == LaunchByPath("/boot/beos/apps/MediaPlayer"))
break;
(new BAlert("desklink", "Couldn't launch MediaPlayer", "OK"))->Go();
break;
case MEDIA_SETTINGS:
// launch the media prefs app
be_roster->Launch("application/x-vnd.Be.MediaPrefs");
if (B_OK == LaunchBySig("application/x-vnd.Haiku.MediaPrefs"))
break;
if (B_OK == LaunchBySig("application/x-vnd.Be.MediaPrefs"))
break;
if (B_OK == LaunchByPath("/boot/home/config/be/Preferences/Media"))
break;
(new BAlert("desklink", "Couldn't launch Media Preferences", "OK"))->Go();
break;
case SOUND_SETTINGS:
// launch the sounds prefs app
be_roster->Launch("application/x-vnd.Be.SoundsPrefs");
if (B_OK == LaunchBySig("application/x-vnd.Haiku.SoundsPrefs"))
break;
if (B_OK == LaunchBySig("application/x-vnd.Be.SoundsPrefs"))
break;
if (B_OK == LaunchByPath("/boot/home/config/be/Preferences/Sounds"))
break;
(new BAlert("desklink", "Couldn't launch Sounds Preferences", "OK"))->Go();
break;
case TOGGLE_DONT_BEEP:
confDontBeep = !confDontBeep;
@ -191,6 +212,46 @@ MediaReplicant::MessageReceived(BMessage *message)
}
status_t
MediaReplicant::LaunchByPath(const char *path)
{
BEntry ent;
entry_ref ref;
app_info appInfo;
status_t err;
err = ent.SetTo(path);
if (err)
return err;
err = ent.GetRef(&ref);
if (err)
return err;
err = be_roster->Launch(&ref);
if (err != B_ALREADY_RUNNING)
return err; // should be B_OK or fatal error
err = be_roster->GetAppInfo(&ref, &appInfo);
if (err)
return err;
return be_roster->ActivateApp(appInfo.team);
}
status_t
MediaReplicant::LaunchBySig(const char *sig)
{
app_info appInfo;
status_t err;
err = be_roster->Launch(sig);
if (err != B_ALREADY_RUNNING)
return err; // should be B_OK or fatal error
err = be_roster->GetAppInfo(sig, &appInfo);
if (err)
return err;
return be_roster->ActivateApp(appInfo.team);
}
void
MediaReplicant::Draw(BRect rect)
{