Fix menu1 menu2 menu3. Now allows to choose the audio output.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4037 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval 2003-07-21 08:36:55 +00:00
parent 24c9a2dc58
commit 6202b8bf70
2 changed files with 49 additions and 28 deletions

View File

@ -68,7 +68,7 @@ SettingsView::SettingsView (BRect frame, bool isVideo)
AddChild(defaultsBox);
BRect defaultRect(20, 22, 250, 40);
mMenu1 = new BPopUpMenu("menu1");
mMenu1 = new BPopUpMenu("<none>");
mMenu1->SetLabelFromMarked(true);
BMenuField *menuField1 = new BMenuField(defaultRect, "menuField1",
mIsVideo ? "Video Input:" : "Audio Input:", mMenu1);
@ -76,7 +76,7 @@ SettingsView::SettingsView (BRect frame, bool isVideo)
menuField1->SetDivider(75);
defaultRect.OffsetBy(0, 26);
mMenu2 = new BPopUpMenu("menu2");
mMenu2 = new BPopUpMenu("<none>");
mMenu2->SetLabelFromMarked(true);
BMenuField *menuField2 = new BMenuField(defaultRect, "menuField2",
mIsVideo ? "Video Output:" : "Audio Output:", mMenu2);
@ -85,7 +85,7 @@ SettingsView::SettingsView (BRect frame, bool isVideo)
if(!mIsVideo) {
defaultRect.OffsetBy(186, 0);
mMenu3 = new BPopUpMenu("menu3");
mMenu3 = new BPopUpMenu("<none>");
mMenu3->SetLabelFromMarked(true);
BMenuField *mMenuField3 = new BMenuField(defaultRect, "menuField3",
"Channel:", mMenu3);

View File

@ -290,33 +290,37 @@ MediaWindow::InitMedia(bool first)
int32 outputID;
BString outputName;
roster->GetAudioInput(&default_node);
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, true);
mAudioView->SetDefault(node_info, true);
if(roster->GetAudioInput(&default_node)==B_OK) {
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, true);
mAudioView->SetDefault(node_info, true);
}
roster->GetAudioOutput(&default_node, &outputID, &outputName);
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, false);
mAudioView->SetDefault(node_info, false, outputID);
if(roster->GetAudioOutput(&default_node, &outputID, &outputName)==B_OK) {
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, false);
mAudioView->SetDefault(node_info, false, outputID);
}
roster->GetVideoInput(&default_node);
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, true);
mVideoView->SetDefault(node_info, true);
if(roster->GetVideoInput(&default_node)==B_OK) {
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, true);
mVideoView->SetDefault(node_info, true);
}
roster->GetVideoOutput(&default_node);
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, false);
mVideoView->SetDefault(node_info, false);
if(roster->GetVideoOutput(&default_node)==B_OK) {
roster->GetDormantNodeFor(default_node, &node_info);
item = FindMediaListItem(&node_info);
if(item)
item->SetDefault(true, false);
mVideoView->SetDefault(node_info, false);
}
if(first) {
mListView->Select(mListView->IndexOf(mixer));
@ -389,6 +393,21 @@ MediaWindow::MessageReceived (BMessage *message)
InitMedia(false);
break;
case ML_DEFAULTOUTPUT_CHANGE:
{
int32 index;
if(message->FindInt32("index", &index)!=B_OK)
break;
Settings2Item *item = static_cast<Settings2Item *>(mAudioView->mMenu3->ItemAt(index));
if(item) {
BMediaRoster *roster = BMediaRoster::Roster();
roster->SetAudioOutput(*item->mInput);
if(mAudioView->mRestartTextView->IsHidden())
mAudioView->mRestartTextView->Show();
} else
fprintf(stderr, "Settings2Item not found\n");
}
break;
case ML_DEFAULT_CHANGE:
{
@ -416,8 +435,10 @@ MediaWindow::MessageReceived (BMessage *message)
} else {
if(isInput)
roster->SetAudioInput(*item->mInfo);
else
else {
roster->SetAudioOutput(*item->mInfo);
mAudioView->SetDefault(*item->mInfo, false, 0);
}
}
MediaListItem *oldListItem = NULL;