Update Media prefs to use BObjectList in place of BList + a few style fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39070 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -7,7 +7,7 @@ if ! $(TARGET_PLATFORM_HAIKU_COMPATIBLE) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
UseLibraryHeaders icon ;
|
UseLibraryHeaders icon ;
|
||||||
UsePrivateHeaders media ;
|
UsePrivateHeaders media shared ;
|
||||||
|
|
||||||
Preference Media :
|
Preference Media :
|
||||||
Media.cpp
|
Media.cpp
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ SettingsView::SettingsView (bool isVideo)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SettingsView::AddNodes(BList& list, bool isInput)
|
SettingsView::AddNodes(NodeList& list, bool isInput)
|
||||||
{
|
{
|
||||||
BMenu* menu = isInput ? fMenu1 : fMenu2;
|
BMenu* menu = isInput ? fMenu1 : fMenu2;
|
||||||
void* item;
|
void* item;
|
||||||
@@ -178,8 +178,7 @@ SettingsView::AddNodes(BList& list, bool isInput)
|
|||||||
message.AddBool("isInput", isInput);
|
message.AddBool("isInput", isInput);
|
||||||
|
|
||||||
for (int32 i = 0; i < list.CountItems(); i++) {
|
for (int32 i = 0; i < list.CountItems(); i++) {
|
||||||
dormant_node_info* info
|
dormant_node_info* info = list.ItemAt(i);
|
||||||
= static_cast<dormant_node_info*>(list.ItemAt(i));
|
|
||||||
menu->AddItem(new SettingsItem(info, new BMessage(message)));
|
menu->AddItem(new SettingsItem(info, new BMessage(message)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,6 @@
|
|||||||
// Created : June 25, 2003
|
// Created : June 25, 2003
|
||||||
//
|
//
|
||||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
|
|
||||||
|
|
||||||
#ifndef __MEDIAVIEWS_H__
|
#ifndef __MEDIAVIEWS_H__
|
||||||
#define __MEDIAVIEWS_H__
|
#define __MEDIAVIEWS_H__
|
||||||
#include <CheckBox.h>
|
#include <CheckBox.h>
|
||||||
@@ -22,6 +20,8 @@
|
|||||||
#include <StringView.h>
|
#include <StringView.h>
|
||||||
#include <View.h>
|
#include <View.h>
|
||||||
|
|
||||||
|
#include <ObjectList.h>
|
||||||
|
|
||||||
|
|
||||||
const uint32 ML_RESTART_MEDIA_SERVER = 'resr';
|
const uint32 ML_RESTART_MEDIA_SERVER = 'resr';
|
||||||
const uint32 ML_SHOW_VOLUME_CONTROL = 'shvc';
|
const uint32 ML_SHOW_VOLUME_CONTROL = 'shvc';
|
||||||
@@ -59,8 +59,10 @@ public:
|
|||||||
class SettingsView : public BView
|
class SettingsView : public BView
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
typedef BObjectList<dormant_node_info> NodeList;
|
||||||
|
|
||||||
SettingsView(bool isVideo);
|
SettingsView(bool isVideo);
|
||||||
void AddNodes(BList &list, bool isInput);
|
void AddNodes(NodeList &nodes, bool isInput);
|
||||||
void SetDefault(dormant_node_info &info,
|
void SetDefault(dormant_node_info &info,
|
||||||
bool isInput, int32 outputID = -1);
|
bool isInput, int32 outputID = -1);
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,10 @@ MediaWindow::MediaWindow(BRect frame)
|
|||||||
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
|
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||||
fCurrentNode(NULL),
|
fCurrentNode(NULL),
|
||||||
fParamWeb(NULL),
|
fParamWeb(NULL),
|
||||||
|
fAudioInputs(5, true),
|
||||||
|
fAudioOutputs(5, true),
|
||||||
|
fVideoInputs(5, true),
|
||||||
|
fVideoOutputs(5, true),
|
||||||
fAlert(NULL),
|
fAlert(NULL),
|
||||||
fInitCheck(B_OK)
|
fInitCheck(B_OK)
|
||||||
{
|
{
|
||||||
@@ -66,14 +70,7 @@ MediaWindow::InitCheck()
|
|||||||
|
|
||||||
MediaWindow::~MediaWindow()
|
MediaWindow::~MediaWindow()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < fAudioOutputs.CountItems(); i++)
|
_EmptyNodeLists();
|
||||||
delete static_cast<dormant_node_info*>(fAudioOutputs.ItemAt(i));
|
|
||||||
for (int i = 0; i < fAudioInputs.CountItems(); i++)
|
|
||||||
delete static_cast<dormant_node_info*>(fAudioInputs.ItemAt(i));
|
|
||||||
for (int i = 0; i < fVideoOutputs.CountItems(); i++)
|
|
||||||
delete static_cast<dormant_node_info*>(fVideoOutputs.ItemAt(i));
|
|
||||||
for (int i = 0; i < fVideoInputs.CountItems(); i++)
|
|
||||||
delete static_cast<dormant_node_info*>(fVideoInputs.ItemAt(i));
|
|
||||||
|
|
||||||
BMediaRoster* roster = BMediaRoster::Roster();
|
BMediaRoster* roster = BMediaRoster::Roster();
|
||||||
if (roster && fCurrentNode)
|
if (roster && fCurrentNode)
|
||||||
@@ -97,7 +94,21 @@ MediaWindow::~MediaWindow()
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaWindow::FindNodes(media_type type, uint64 kind, BList &list)
|
MediaWindow::_FindNodes()
|
||||||
|
{
|
||||||
|
_FindNodes(B_MEDIA_RAW_AUDIO, B_PHYSICAL_OUTPUT, fAudioOutputs);
|
||||||
|
_FindNodes(B_MEDIA_RAW_AUDIO, B_PHYSICAL_INPUT, fAudioInputs);
|
||||||
|
_FindNodes(B_MEDIA_ENCODED_AUDIO, B_PHYSICAL_OUTPUT, fAudioOutputs);
|
||||||
|
_FindNodes(B_MEDIA_ENCODED_AUDIO, B_PHYSICAL_INPUT, fAudioInputs);
|
||||||
|
_FindNodes(B_MEDIA_RAW_VIDEO, B_PHYSICAL_OUTPUT, fVideoOutputs);
|
||||||
|
_FindNodes(B_MEDIA_RAW_VIDEO, B_PHYSICAL_INPUT, fVideoInputs);
|
||||||
|
_FindNodes(B_MEDIA_ENCODED_VIDEO, B_PHYSICAL_OUTPUT, fVideoOutputs);
|
||||||
|
_FindNodes(B_MEDIA_ENCODED_VIDEO, B_PHYSICAL_INPUT, fVideoInputs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
MediaWindow::_FindNodes(media_type type, uint64 kind, NodeList& into)
|
||||||
{
|
{
|
||||||
dormant_node_info node_info[64];
|
dormant_node_info node_info[64];
|
||||||
int32 node_info_count = 64;
|
int32 node_info_count = 64;
|
||||||
@@ -115,6 +126,7 @@ MediaWindow::FindNodes(media_type type, uint64 kind, BList &list)
|
|||||||
|
|
||||||
if (roster->GetDormantNodes(node_info, &node_info_count, format1, format2,
|
if (roster->GetDormantNodes(node_info, &node_info_count, format1, format2,
|
||||||
NULL, kind)!=B_OK) {
|
NULL, kind)!=B_OK) {
|
||||||
|
// TODO: better error reporting!
|
||||||
fprintf(stderr, "error\n");
|
fprintf(stderr, "error\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -122,11 +134,12 @@ MediaWindow::FindNodes(media_type type, uint64 kind, BList &list)
|
|||||||
for (int32 i = 0; i < node_info_count; i++) {
|
for (int32 i = 0; i < node_info_count; i++) {
|
||||||
PRINT(("node : %s, media_addon %i, flavor_id %i\n",
|
PRINT(("node : %s, media_addon %i, flavor_id %i\n",
|
||||||
node_info[i].name, node_info[i].addon, node_info[i].flavor_id));
|
node_info[i].name, node_info[i].addon, node_info[i].flavor_id));
|
||||||
|
|
||||||
dormant_node_info* info = new dormant_node_info();
|
dormant_node_info* info = new dormant_node_info();
|
||||||
strcpy(info->name, node_info[i].name);
|
strncpy(info->name, node_info[i].name, B_MEDIA_NAME_LENGTH);
|
||||||
info->flavor_id = node_info[i].flavor_id;
|
info->flavor_id = node_info[i].flavor_id;
|
||||||
info->addon = node_info[i].addon;
|
info->addon = node_info[i].addon;
|
||||||
list.AddItem(info);
|
into.AddItem(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,17 +161,27 @@ MediaWindow::FindMediaListItem(dormant_node_info* info)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaWindow::AddNodes(BList &list, bool isVideo)
|
MediaWindow::_AddNodeItems(NodeList &list, bool isVideo)
|
||||||
{
|
{
|
||||||
for (int32 i = 0; i<list.CountItems(); i++) {
|
int32 count = list.CountItems();
|
||||||
dormant_node_info* info
|
for (int32 i = 0; i < count; i++) {
|
||||||
= static_cast<dormant_node_info*>(list.ItemAt(i));
|
dormant_node_info* info = list.ItemAt(i);
|
||||||
if (!FindMediaListItem(info))
|
if (!FindMediaListItem(info))
|
||||||
fListView->AddItem(new MediaListItem(info, 1, isVideo, &fIcons));
|
fListView->AddItem(new MediaListItem(info, 1, isVideo, &fIcons));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
MediaWindow::_EmptyNodeLists()
|
||||||
|
{
|
||||||
|
fAudioOutputs.MakeEmpty();
|
||||||
|
fAudioInputs.MakeEmpty();
|
||||||
|
fVideoOutputs.MakeEmpty();
|
||||||
|
fVideoInputs.MakeEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaWindow::InitWindow(void)
|
MediaWindow::InitWindow(void)
|
||||||
{
|
{
|
||||||
@@ -283,34 +306,17 @@ MediaWindow::InitMedia(bool first)
|
|||||||
B_TRANSLATE("Ready for use" B_UTF8_ELLIPSIS));
|
B_TRANSLATE("Ready for use" B_UTF8_ELLIPSIS));
|
||||||
}
|
}
|
||||||
|
|
||||||
void* listItem;
|
_EmptyNodeLists();
|
||||||
while ((listItem = fListView->RemoveItem((int32)0)))
|
|
||||||
delete static_cast<MediaListItem *>(listItem);
|
|
||||||
while ((listItem = fAudioOutputs.RemoveItem((int32)0)))
|
|
||||||
delete static_cast<dormant_node_info *>(listItem);
|
|
||||||
while ((listItem = fAudioInputs.RemoveItem((int32)0)))
|
|
||||||
delete static_cast<dormant_node_info *>(listItem);
|
|
||||||
while ((listItem = fVideoOutputs.RemoveItem((int32)0)))
|
|
||||||
delete static_cast<dormant_node_info *>(listItem);
|
|
||||||
while ((listItem = fVideoInputs.RemoveItem((int32)0)))
|
|
||||||
delete static_cast<dormant_node_info *>(listItem);
|
|
||||||
|
|
||||||
// Grab Media Info
|
// Grab Media Info
|
||||||
FindNodes(B_MEDIA_RAW_AUDIO, B_PHYSICAL_OUTPUT, fAudioOutputs);
|
_FindNodes();
|
||||||
FindNodes(B_MEDIA_RAW_AUDIO, B_PHYSICAL_INPUT, fAudioInputs);
|
|
||||||
FindNodes(B_MEDIA_ENCODED_AUDIO, B_PHYSICAL_OUTPUT, fAudioOutputs);
|
|
||||||
FindNodes(B_MEDIA_ENCODED_AUDIO, B_PHYSICAL_INPUT, fAudioInputs);
|
|
||||||
FindNodes(B_MEDIA_RAW_VIDEO, B_PHYSICAL_OUTPUT, fVideoOutputs);
|
|
||||||
FindNodes(B_MEDIA_RAW_VIDEO, B_PHYSICAL_INPUT, fVideoInputs);
|
|
||||||
FindNodes(B_MEDIA_ENCODED_VIDEO, B_PHYSICAL_OUTPUT, fVideoOutputs);
|
|
||||||
FindNodes(B_MEDIA_ENCODED_VIDEO, B_PHYSICAL_INPUT, fVideoInputs);
|
|
||||||
|
|
||||||
// Add video nodes first. They might have an additional audio
|
// Add video nodes first. They might have an additional audio
|
||||||
// output or input, but still should be listed as video node.
|
// output or input, but still should be listed as video node.
|
||||||
AddNodes(fVideoOutputs, true);
|
_AddNodeItems(fVideoOutputs, true);
|
||||||
AddNodes(fVideoInputs, true);
|
_AddNodeItems(fVideoInputs, true);
|
||||||
AddNodes(fAudioOutputs, false);
|
_AddNodeItems(fAudioOutputs, false);
|
||||||
AddNodes(fAudioInputs, false);
|
_AddNodeItems(fAudioInputs, false);
|
||||||
|
|
||||||
fAudioView->AddNodes(fAudioOutputs, false);
|
fAudioView->AddNodes(fAudioOutputs, false);
|
||||||
fAudioView->AddNodes(fAudioInputs, true);
|
fAudioView->AddNodes(fAudioInputs, true);
|
||||||
|
|||||||
@@ -12,16 +12,18 @@
|
|||||||
// Created : June 25, 2003
|
// Created : June 25, 2003
|
||||||
//
|
//
|
||||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
|
|
||||||
#ifndef __MEDIAWINDOWS_H__
|
#ifndef __MEDIAWINDOWS_H__
|
||||||
#define __MEDIAWINDOWS_H__
|
#define __MEDIAWINDOWS_H__
|
||||||
|
|
||||||
|
|
||||||
|
#include <Box.h>
|
||||||
|
#include <ListView.h>
|
||||||
#include <MediaAddOn.h>
|
#include <MediaAddOn.h>
|
||||||
#include <Window.h>
|
|
||||||
#include <ParameterWeb.h>
|
#include <ParameterWeb.h>
|
||||||
#include <StringView.h>
|
#include <StringView.h>
|
||||||
#include <ListView.h>
|
#include <Window.h>
|
||||||
#include <Box.h>
|
|
||||||
|
#include <ObjectList.h>
|
||||||
|
|
||||||
#include "MediaViews.h"
|
#include "MediaViews.h"
|
||||||
#include "MediaListItem.h"
|
#include "MediaListItem.h"
|
||||||
@@ -46,10 +48,15 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
typedef BObjectList<dormant_node_info> NodeList;
|
||||||
|
|
||||||
|
|
||||||
status_t InitMedia(bool first);
|
status_t InitMedia(bool first);
|
||||||
void FindNodes(media_type type, uint64 kind,
|
void _FindNodes();
|
||||||
BList &list);
|
void _FindNodes(media_type type, uint64 kind,
|
||||||
void AddNodes(BList &list, bool isVideo);
|
NodeList& into);
|
||||||
|
void _AddNodeItems(NodeList& from, bool isVideo);
|
||||||
|
void _EmptyNodeLists();
|
||||||
|
|
||||||
MediaListItem* FindMediaListItem(dormant_node_info* info);
|
MediaListItem* FindMediaListItem(dormant_node_info* info);
|
||||||
void InitWindow();
|
void InitWindow();
|
||||||
@@ -68,10 +75,11 @@ private:
|
|||||||
media_node* fCurrentNode;
|
media_node* fCurrentNode;
|
||||||
BParameterWeb* fParamWeb;
|
BParameterWeb* fParamWeb;
|
||||||
|
|
||||||
BList fAudioInputs;
|
|
||||||
BList fAudioOutputs;
|
NodeList fAudioInputs;
|
||||||
BList fVideoInputs;
|
NodeList fAudioOutputs;
|
||||||
BList fVideoOutputs;
|
NodeList fVideoInputs;
|
||||||
|
NodeList fVideoOutputs;
|
||||||
|
|
||||||
BList fIcons;
|
BList fIcons;
|
||||||
MediaAlert* fAlert;
|
MediaAlert* fAlert;
|
||||||
|
|||||||
Reference in New Issue
Block a user