Big style cleanup in preparation for refactoring the media preflet and tackling #6544.
Fix one use of sscanf(...) > 0, where it ought to be sscanf(...) == 4. Otherwise, no functional changes intended. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38865 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -20,9 +20,10 @@
|
||||
|
||||
|
||||
Media::Media()
|
||||
: BApplication("application/x-vnd.Haiku-Media")
|
||||
:
|
||||
BApplication("application/x-vnd.Haiku-Media")
|
||||
{
|
||||
BRect rect(32,64,637,462);
|
||||
BRect rect(32, 64, 637, 462);
|
||||
|
||||
BPath path;
|
||||
if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) {
|
||||
@@ -39,7 +40,8 @@ Media::Media()
|
||||
i++;
|
||||
}
|
||||
int32 a, b, c, d;
|
||||
if (sscanf(&buffer[i], " rect = %li,%li,%li,%li", &a, &b, &c, &d) > 0) {
|
||||
const char* scanString = " rect = %li,%li,%li,%li";
|
||||
if (sscanf(&buffer[i], scanString, &a, &b, &c, &d) == 4) {
|
||||
if (c - a >= rect.IntegerWidth()) {
|
||||
rect.left = a;
|
||||
rect.right = c;
|
||||
@@ -75,7 +77,7 @@ Media::InitCheck()
|
||||
|
||||
|
||||
void
|
||||
Media::MessageReceived(BMessage *message)
|
||||
Media::MessageReceived(BMessage* message)
|
||||
{
|
||||
switch (message->what) {
|
||||
case B_SOME_APP_LAUNCHED:
|
||||
|
||||
@@ -18,15 +18,15 @@
|
||||
|
||||
|
||||
class Media : public BApplication {
|
||||
public:
|
||||
Media();
|
||||
virtual ~Media();
|
||||
public:
|
||||
Media();
|
||||
virtual ~Media();
|
||||
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
status_t InitCheck();
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
status_t InitCheck();
|
||||
|
||||
private:
|
||||
MediaWindow* fWindow;
|
||||
private:
|
||||
MediaWindow* fWindow;
|
||||
};
|
||||
|
||||
#endif // MEDIA_H
|
||||
|
||||
@@ -41,10 +41,10 @@ private:
|
||||
|
||||
|
||||
MediaAlert::MediaAlert(BRect _rect, const char* title, const char* text)
|
||||
: BWindow(_rect, title, B_MODAL_WINDOW, B_NOT_CLOSABLE | B_NOT_RESIZABLE)
|
||||
:
|
||||
BWindow(_rect, title, B_MODAL_WINDOW, B_NOT_CLOSABLE | B_NOT_RESIZABLE),
|
||||
fTextView(NULL)
|
||||
{
|
||||
fTextView = NULL;
|
||||
|
||||
// Set up the "_master_" view
|
||||
TAlertView* masterView = new TAlertView(Bounds());
|
||||
masterView->SetBitmap(InitIcon());
|
||||
@@ -131,7 +131,8 @@ MediaAlert::InitIcon()
|
||||
|
||||
|
||||
TAlertView::TAlertView(BRect frame)
|
||||
: BView(frame, "TAlertView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW),
|
||||
:
|
||||
BView(frame, "TAlertView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW),
|
||||
fIconBitmap(NULL)
|
||||
{
|
||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
|
||||
@@ -12,29 +12,25 @@
|
||||
// Created : June 25, 2003
|
||||
//
|
||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||
|
||||
#ifndef _MEDIAALERT_H
|
||||
#define _MEDIAALERT_H
|
||||
|
||||
// System Includes -------------------------------------------------------------
|
||||
#include <Window.h>
|
||||
#include <Bitmap.h>
|
||||
#include <TextView.h>
|
||||
|
||||
// MediaAlert class ----------------------------------------------------------------
|
||||
|
||||
class MediaAlert : public BWindow
|
||||
{
|
||||
public:
|
||||
|
||||
MediaAlert(BRect rect, const char* title, const char* text);
|
||||
virtual ~MediaAlert();
|
||||
BTextView* TextView() const;
|
||||
MediaAlert(BRect rect, const char* title,
|
||||
const char* text);
|
||||
virtual ~MediaAlert();
|
||||
BTextView* TextView() const;
|
||||
private:
|
||||
BBitmap *InitIcon();
|
||||
|
||||
BTextView *fTextView;
|
||||
BBitmap* InitIcon();
|
||||
BTextView* fTextView;
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#endif // _MEDIAALERT_H
|
||||
|
||||
|
||||
@@ -14,18 +14,20 @@
|
||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||
|
||||
|
||||
// Includes -------------------------------------------------------------------------------------------------- //
|
||||
#include "MediaListItem.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <View.h>
|
||||
|
||||
#include "MediaListItem.h"
|
||||
|
||||
#define kITEM_MARGIN 1
|
||||
|
||||
// MediaListItem - Constructor
|
||||
MediaListItem::MediaListItem(dormant_node_info *info, uint32 level, bool isVideo, BList *icons, uint32 modifiers)
|
||||
: BListItem(level),
|
||||
|
||||
MediaListItem::MediaListItem(dormant_node_info* info, uint32 level,
|
||||
bool isVideo, BList* icons, uint32 modifiers)
|
||||
:
|
||||
BListItem(level),
|
||||
fIsAudioMixer(false),
|
||||
fIsVideo(isVideo),
|
||||
fIsDefaultInput(false),
|
||||
@@ -38,8 +40,11 @@ MediaListItem::MediaListItem(dormant_node_info *info, uint32 level, bool isVideo
|
||||
SetHeight(16 + kITEM_MARGIN);
|
||||
}
|
||||
|
||||
MediaListItem::MediaListItem(const char *label, uint32 level, bool isVideo, BList *icons, uint32 modifiers)
|
||||
: BListItem(level),
|
||||
|
||||
MediaListItem::MediaListItem(const char* label, uint32 level,
|
||||
bool isVideo, BList* icons, uint32 modifiers)
|
||||
:
|
||||
BListItem(level),
|
||||
fLabel(label),
|
||||
fIsAudioMixer(false),
|
||||
fIsVideo(isVideo),
|
||||
@@ -52,15 +57,15 @@ MediaListItem::MediaListItem(const char *label, uint32 level, bool isVideo, BLis
|
||||
SetHeight(16 + kITEM_MARGIN);
|
||||
}
|
||||
|
||||
|
||||
MediaListItem::~MediaListItem()
|
||||
{
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------------------//
|
||||
|
||||
|
||||
//MediaListItem - DrawItem
|
||||
void
|
||||
MediaListItem::DrawItem(BView *owner, BRect frame, bool complete)
|
||||
MediaListItem::DrawItem(BView* owner, BRect frame, bool complete)
|
||||
{
|
||||
rgb_color kHighlight = { 140,140,140,0 };
|
||||
rgb_color kBlack = { 0,0,0,0 };
|
||||
@@ -84,7 +89,8 @@ MediaListItem::DrawItem(BView *owner, BRect frame, bool complete)
|
||||
|
||||
frame.left += 4;
|
||||
BRect iconFrame(frame);
|
||||
iconFrame.Set(iconFrame.left, iconFrame.top+1, iconFrame.left+15, iconFrame.top+16);
|
||||
iconFrame.Set(iconFrame.left, iconFrame.top+1,
|
||||
iconFrame.left+15, iconFrame.top+16);
|
||||
uint32 index = 0;
|
||||
if (OutlineLevel()==0 || (fIsDefaultInput && fIsDefaultOutput)) {
|
||||
if (fIsDefaultInput && fIsVideo)
|
||||
@@ -92,7 +98,9 @@ MediaListItem::DrawItem(BView *owner, BRect frame, bool complete)
|
||||
else if (fIsDefaultInput && !fIsVideo)
|
||||
index = 2;
|
||||
owner->SetDrawingMode(B_OP_OVER);
|
||||
owner->DrawBitmap(static_cast<BBitmap*>(fIcons->ItemAt(index)), iconFrame);
|
||||
|
||||
BBitmap* icon = static_cast<BBitmap*>(fIcons->ItemAt(index));
|
||||
owner->DrawBitmap(icon, iconFrame);
|
||||
owner->SetDrawingMode(B_OP_COPY);
|
||||
}
|
||||
iconFrame.OffsetBy(16, 0);
|
||||
@@ -111,22 +119,25 @@ MediaListItem::DrawItem(BView *owner, BRect frame, bool complete)
|
||||
index = 2;
|
||||
}
|
||||
owner->SetDrawingMode(B_OP_OVER);
|
||||
owner->DrawBitmap(static_cast<BBitmap*>(fIcons->ItemAt(index)), iconFrame);
|
||||
BBitmap* icon = static_cast<BBitmap*>(fIcons->ItemAt(index));
|
||||
owner->DrawBitmap(icon, iconFrame);
|
||||
owner->SetDrawingMode(B_OP_COPY);
|
||||
}
|
||||
|
||||
frame.left += 16 * (OutlineLevel() + 1);
|
||||
owner->SetHighColor(kBlack);
|
||||
|
||||
BFont font = be_plain_font;
|
||||
font_height finfo;
|
||||
font.GetHeight(&finfo);
|
||||
BFont font = be_plain_font;
|
||||
font_height fontInfo;
|
||||
font.GetHeight(&fontInfo);
|
||||
float lineHeight = fontInfo.ascent + fontInfo.descent + fontInfo.leading;
|
||||
owner->SetFont(&font);
|
||||
owner->MovePenTo(frame.left+8, frame.top + ((frame.Height() - (finfo.ascent + finfo.descent + finfo.leading)) / 2) +
|
||||
(finfo.ascent + finfo.descent) - 1);
|
||||
owner->MovePenTo(frame.left + 8, frame.top
|
||||
+ ((frame.Height() - (lineHeight)) / 2)
|
||||
+ (fontInfo.ascent + fontInfo.descent) - 1);
|
||||
owner->DrawString(fLabel);
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------------------//
|
||||
|
||||
|
||||
void
|
||||
MediaListItem::SetDefault(bool isDefault, bool isInput)
|
||||
@@ -137,14 +148,16 @@ MediaListItem::SetDefault(bool isDefault, bool isInput)
|
||||
fIsDefaultOutput = isDefault;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MediaListItem::SetAudioMixer(bool isAudioMixer)
|
||||
{
|
||||
fIsAudioMixer = isAudioMixer;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MediaListItem::Update(BView *owner, const BFont *finfo)
|
||||
MediaListItem::Update(BView* owner, const BFont* finfo)
|
||||
{
|
||||
// we need to override the update method so we can make sure are
|
||||
// list item size doesn't change
|
||||
@@ -154,16 +167,20 @@ MediaListItem::Update(BView *owner, const BFont *finfo)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
MediaListItem::Compare(const void *firstArg, const void *secondArg)
|
||||
MediaListItem::Compare(const void* firstArg, const void* secondArg)
|
||||
{
|
||||
const MediaListItem *item1 = *static_cast<const MediaListItem * const *>(firstArg);
|
||||
const MediaListItem *item2 = *static_cast<const MediaListItem * const *>(secondArg);
|
||||
const MediaListItem* item1
|
||||
= *static_cast<const MediaListItem * const *>(firstArg);
|
||||
const MediaListItem* item2
|
||||
= *static_cast<const MediaListItem * const *>(secondArg);
|
||||
|
||||
if (item1->fIsVideo != item2->fIsVideo)
|
||||
return item1->fIsVideo ? 1 : -1;
|
||||
if (item1->OutlineLevel()!=item2->OutlineLevel())
|
||||
return item1->OutlineLevel()>item2->OutlineLevel() ? 1 : -1;
|
||||
if (item1->fIsAudioMixer!=item2->fIsAudioMixer)
|
||||
if (item1->OutlineLevel() != item2->OutlineLevel())
|
||||
return item1->OutlineLevel() > item2->OutlineLevel() ? 1 : -1;
|
||||
if (item1->fIsAudioMixer != item2->fIsAudioMixer)
|
||||
return item2->fIsAudioMixer ? 1 : -1;
|
||||
return strcmp(item1->fLabel, item2->fLabel);
|
||||
}
|
||||
|
||||
@@ -21,33 +21,46 @@
|
||||
|
||||
|
||||
class MediaListItem : public BListItem {
|
||||
public:
|
||||
MediaListItem(dormant_node_info *info, uint32 level, bool isVideo, BList *icons, uint32 modifiers=0);
|
||||
MediaListItem(const char* label, uint32 level, bool isVideo, BList *icons, uint32 modifiers=0);
|
||||
~MediaListItem();
|
||||
public:
|
||||
MediaListItem(dormant_node_info* info,
|
||||
uint32 level, bool isVideo, BList* icons,
|
||||
uint32 modifiers=0);
|
||||
MediaListItem(const char* label, uint32 level,
|
||||
bool isVideo, BList* icons,
|
||||
uint32 modifiers=0);
|
||||
virtual ~MediaListItem();
|
||||
|
||||
virtual void Update(BView *owner, const BFont *finfo);
|
||||
virtual void DrawItem(BView *owner, BRect frame, bool complete = false);
|
||||
virtual void Update(BView* owner, const BFont* font);
|
||||
virtual void DrawItem(BView* owner, BRect frame,
|
||||
bool complete = false);
|
||||
|
||||
void SetDefault(bool isDefaultInput, bool isInput);
|
||||
void SetAudioMixer(bool isAudioMixer);
|
||||
bool IsDefault(bool isInput) { return isInput ? fIsDefaultInput : fIsDefaultOutput; }
|
||||
bool IsAudioMixer() { return fIsAudioMixer; }
|
||||
bool IsVideo() { return fIsVideo; }
|
||||
const char *GetLabel() { return fLabel; }
|
||||
void SetDefault(bool isDefaultInput, bool isInput);
|
||||
void SetAudioMixer(bool isAudioMixer);
|
||||
|
||||
dormant_node_info *fInfo;
|
||||
|
||||
static int Compare(const void *firstArg, const void *secondArg);
|
||||
bool IsDefault(bool isInput)
|
||||
{
|
||||
return isInput ? fIsDefaultInput : fIsDefaultOutput;
|
||||
}
|
||||
|
||||
bool IsAudioMixer() { return fIsAudioMixer; }
|
||||
bool IsVideo() { return fIsVideo; }
|
||||
const char* GetLabel() { return fLabel; }
|
||||
|
||||
private:
|
||||
const char *fLabel;
|
||||
bool fIsAudioMixer;
|
||||
bool fIsVideo;
|
||||
bool fIsDefaultInput;
|
||||
bool fIsDefaultOutput;
|
||||
//dormant_node_info fNodeInfo;
|
||||
BList *fIcons;
|
||||
|
||||
dormant_node_info* fInfo;
|
||||
|
||||
static int Compare(const void* firstArg,
|
||||
const void* secondArg);
|
||||
|
||||
private:
|
||||
const char* fLabel;
|
||||
bool fIsAudioMixer;
|
||||
bool fIsVideo;
|
||||
bool fIsDefaultInput;
|
||||
bool fIsDefaultOutput;
|
||||
//dormant_node_info fNodeInfo;
|
||||
BList* fIcons;
|
||||
};
|
||||
|
||||
#endif /* __MEDIALISTITEM_H__ */
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||
|
||||
|
||||
// Includes -------------------------------------------------------------------------------------------------- //
|
||||
#include <stdio.h>
|
||||
#include "MediaViews.h"
|
||||
|
||||
#include <Box.h>
|
||||
#include <Button.h>
|
||||
@@ -32,7 +31,7 @@
|
||||
#include <String.h>
|
||||
#include <TextView.h>
|
||||
|
||||
#include "MediaViews.h"
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#undef B_TRANSLATE_CONTEXT
|
||||
@@ -40,11 +39,13 @@
|
||||
|
||||
|
||||
BarView::BarView()
|
||||
: BView ("barView", B_WILL_DRAW ),
|
||||
:
|
||||
BView("barView", B_WILL_DRAW ),
|
||||
fDisplay(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
BarView::Draw(BRect updateRect)
|
||||
{
|
||||
@@ -65,12 +66,13 @@ BarView::Draw(BRect updateRect)
|
||||
|
||||
|
||||
SettingsView::SettingsView (bool isVideo)
|
||||
: BView ("SettingsView", B_WILL_DRAW | B_SUPPORTS_LAYOUT),
|
||||
:
|
||||
BView("SettingsView", B_WILL_DRAW | B_SUPPORTS_LAYOUT),
|
||||
fIsVideo(isVideo)
|
||||
{
|
||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
|
||||
BBox *defaultsBox = new BBox("defaults");
|
||||
BBox* defaultsBox = new BBox("defaults");
|
||||
defaultsBox->SetLabel(fIsVideo ? B_TRANSLATE("Default nodes")
|
||||
: B_TRANSLATE("Defaults"));
|
||||
|
||||
@@ -89,14 +91,14 @@ SettingsView::SettingsView (bool isVideo)
|
||||
: B_TRANSLATE("Audio output:")) + 5;
|
||||
fMenu1 = new BPopUpMenu(B_TRANSLATE("<none>"));
|
||||
fMenu1->SetLabelFromMarked(true);
|
||||
BMenuField *menuField1 = new BMenuField("menuField1",
|
||||
BMenuField* menuField1 = new BMenuField("menuField1",
|
||||
fIsVideo ? B_TRANSLATE("Video input:")
|
||||
: B_TRANSLATE("Audio input:"), fMenu1, NULL);
|
||||
menuField1->SetDivider(divider);
|
||||
|
||||
fMenu2 = new BPopUpMenu(B_TRANSLATE("<none>"));
|
||||
fMenu2->SetLabelFromMarked(true);
|
||||
BMenuField *menuField2 = new BMenuField("menuField2",
|
||||
BMenuField* menuField2 = new BMenuField("menuField2",
|
||||
fIsVideo ? B_TRANSLATE("Video output:")
|
||||
: B_TRANSLATE("Audio output:"), fMenu2, NULL);
|
||||
menuField2->SetDivider(divider);
|
||||
@@ -104,7 +106,7 @@ SettingsView::SettingsView (bool isVideo)
|
||||
inputField->GroupLayout()->AddView(menuField1);
|
||||
outputField->GroupLayout()->AddView(menuField2);
|
||||
|
||||
BMenuField *menuField3 = NULL;
|
||||
BMenuField* menuField3 = NULL;
|
||||
if (!fIsVideo) {
|
||||
fMenu3 = new BPopUpMenu(B_TRANSLATE("<none>"));
|
||||
fMenu3->SetLabelFromMarked(true);
|
||||
@@ -122,10 +124,10 @@ SettingsView::SettingsView (bool isVideo)
|
||||
fRestartView->Hide();
|
||||
|
||||
// create the realtime box
|
||||
BBox *realtimeBox = new BBox("realtime");
|
||||
BBox* realtimeBox = new BBox("realtime");
|
||||
realtimeBox->SetLabel(B_TRANSLATE("Real-time"));
|
||||
|
||||
BMessage *message = new BMessage(ML_ENABLE_REAL_TIME);
|
||||
BMessage* message = new BMessage(ML_ENABLE_REAL_TIME);
|
||||
message->AddBool("isVideo", fIsVideo);
|
||||
fRealtimeCheckBox = new BCheckBox("realtimeCheckBox",
|
||||
fIsVideo ? B_TRANSLATE("Enable real-time video")
|
||||
@@ -137,7 +139,7 @@ SettingsView::SettingsView (bool isVideo)
|
||||
if (flags & (fIsVideo ? B_MEDIA_REALTIME_VIDEO : B_MEDIA_REALTIME_AUDIO))
|
||||
fRealtimeCheckBox->SetValue(B_CONTROL_ON);
|
||||
|
||||
BTextView *textView = new BTextView("stringView");
|
||||
BTextView* textView = new BTextView("stringView");
|
||||
textView->Insert(fIsVideo ? B_TRANSLATE(
|
||||
"Enabling real-time video allows system to "
|
||||
"perform video operations as fast and smoothly as possible. It "
|
||||
@@ -145,8 +147,10 @@ SettingsView::SettingsView (bool isVideo)
|
||||
"\n\nOnly enable this feature if you need the lowest latency possible.")
|
||||
: B_TRANSLATE(
|
||||
"Enabling real-time audio allows system to record and play audio "
|
||||
"as fast as possible. It achieves this performance by using more CPU and RAM."
|
||||
"\n\nOnly enable this feature if you need the lowest latency possible."));
|
||||
"as fast as possible. It achieves this performance by using more"
|
||||
" CPU and RAM.\n\nOnly enable this feature if you need the lowest"
|
||||
" latency possible."));
|
||||
|
||||
textView->MakeEditable(false);
|
||||
textView->MakeSelectable(false);
|
||||
textView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
@@ -161,7 +165,7 @@ SettingsView::SettingsView (bool isVideo)
|
||||
|
||||
// create the bottom line: volumen in deskbar checkbox and restart button
|
||||
BGroupView* bottomView = new BGroupView(B_HORIZONTAL);
|
||||
BButton *restartButton = new BButton("restartButton",
|
||||
BButton* restartButton = new BButton("restartButton",
|
||||
B_TRANSLATE("Restart media services"),
|
||||
new BMessage(ML_RESTART_MEDIA_SERVER));
|
||||
|
||||
@@ -187,49 +191,57 @@ SettingsView::SettingsView (bool isVideo)
|
||||
rootlayout->AddView(bottomView);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SettingsView::AddNodes(BList &list, bool isInput)
|
||||
SettingsView::AddNodes(BList& list, bool isInput)
|
||||
{
|
||||
BMenu *menu = isInput ? fMenu1 : fMenu2;
|
||||
void *item;
|
||||
BMenu* menu = isInput ? fMenu1 : fMenu2;
|
||||
void* item;
|
||||
while ((item = menu->RemoveItem((int32)0)) != NULL)
|
||||
delete static_cast<dormant_node_info *>(item);
|
||||
delete static_cast<dormant_node_info*>(item);
|
||||
|
||||
BMessage message(ML_DEFAULT_CHANGE);
|
||||
message.AddBool("isVideo", fIsVideo);
|
||||
message.AddBool("isInput", isInput);
|
||||
|
||||
for (int32 i = 0; i < list.CountItems(); i++) {
|
||||
dormant_node_info *info = static_cast<dormant_node_info *>(list.ItemAt(i));
|
||||
dormant_node_info* info
|
||||
= static_cast<dormant_node_info*>(list.ItemAt(i));
|
||||
menu->AddItem(new SettingsItem(info, new BMessage(message)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
SettingsView::SetDefault(dormant_node_info &info, bool isInput, int32 outputID)
|
||||
{
|
||||
BMenu *menu = isInput ? fMenu1 : fMenu2;
|
||||
BMenu* menu = isInput ? fMenu1 : fMenu2;
|
||||
|
||||
for (int32 i = 0; i < menu->CountItems(); i++) {
|
||||
SettingsItem *item = static_cast<SettingsItem *>(menu->ItemAt(i));
|
||||
if (item->fInfo && item->fInfo->addon == info.addon && item->fInfo->flavor_id == info.flavor_id) {
|
||||
SettingsItem* item = static_cast<SettingsItem*>(menu->ItemAt(i));
|
||||
if (item->fInfo && item->fInfo->addon == info.addon
|
||||
&& item->fInfo->flavor_id == info.flavor_id) {
|
||||
item->SetMarked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!fIsVideo&&!isInput&&outputID>-1) {
|
||||
BMenuItem *item;
|
||||
if (!fIsVideo && !isInput && outputID >= 0) {
|
||||
BMenuItem* item;
|
||||
while ((item = fMenu3->RemoveItem((int32)0)) != NULL)
|
||||
delete item;
|
||||
BMediaRoster *roster = BMediaRoster::Roster();
|
||||
|
||||
BMediaRoster* roster = BMediaRoster::Roster();
|
||||
media_node node;
|
||||
media_node_id node_id;
|
||||
status_t err;
|
||||
if (roster->GetInstancesFor(info.addon, info.flavor_id, &node_id)!=B_OK)
|
||||
err = roster->InstantiateDormantNode(info, &node, B_FLAVOR_IS_GLOBAL);
|
||||
else
|
||||
if (roster->GetInstancesFor(info.addon, info.flavor_id,
|
||||
&node_id) != B_OK) {
|
||||
err = roster->InstantiateDormantNode(info, &node,
|
||||
B_FLAVOR_IS_GLOBAL);
|
||||
} else {
|
||||
err = roster->GetNodeFor(node_id, &node);
|
||||
}
|
||||
|
||||
if (err == B_OK) {
|
||||
media_input inputs[16];
|
||||
@@ -238,9 +250,11 @@ SettingsView::SetDefault(dormant_node_info &info, bool isInput, int32 outputID)
|
||||
BMessage message(ML_DEFAULTOUTPUT_CHANGE);
|
||||
|
||||
for (int32 i = 0; i < inputCount; i++) {
|
||||
media_input *input = new media_input();
|
||||
media_input* input = new media_input();
|
||||
memcpy(input, &inputs[i], sizeof(*input));
|
||||
fMenu3->AddItem(item = new Settings2Item(&info, input, new BMessage(message)));
|
||||
item = new Settings2Item(&info, input,
|
||||
new BMessage(message));
|
||||
fMenu3->AddItem(item);
|
||||
if (inputs[i].destination.id == outputID)
|
||||
item->SetMarked(true);
|
||||
}
|
||||
@@ -249,9 +263,11 @@ SettingsView::SetDefault(dormant_node_info &info, bool isInput, int32 outputID)
|
||||
}
|
||||
}
|
||||
|
||||
SettingsItem::SettingsItem(dormant_node_info *info, BMessage *message,
|
||||
char shortcut, uint32 modifiers)
|
||||
: BMenuItem(info->name, message, shortcut, modifiers),
|
||||
|
||||
SettingsItem::SettingsItem(dormant_node_info* info, BMessage* message,
|
||||
char shortcut, uint32 modifiers)
|
||||
:
|
||||
BMenuItem(info->name, message, shortcut, modifiers),
|
||||
fInfo(info)
|
||||
{
|
||||
|
||||
@@ -259,7 +275,7 @@ SettingsItem::SettingsItem(dormant_node_info *info, BMessage *message,
|
||||
|
||||
|
||||
status_t
|
||||
SettingsItem::Invoke(BMessage *message)
|
||||
SettingsItem::Invoke(BMessage* message)
|
||||
{
|
||||
if (IsMarked())
|
||||
return B_OK;
|
||||
@@ -267,13 +283,13 @@ SettingsItem::Invoke(BMessage *message)
|
||||
}
|
||||
|
||||
|
||||
Settings2Item::Settings2Item(dormant_node_info *info, media_input *input, BMessage *message,
|
||||
char shortcut, uint32 modifiers)
|
||||
: BMenuItem(input->name, message, shortcut, modifiers),
|
||||
Settings2Item::Settings2Item(dormant_node_info* info, media_input* input,
|
||||
BMessage* message, char shortcut, uint32 modifiers)
|
||||
:
|
||||
BMenuItem(input->name, message, shortcut, modifiers),
|
||||
fInfo(info),
|
||||
fInput(input)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -284,7 +300,7 @@ Settings2Item::~Settings2Item()
|
||||
|
||||
|
||||
status_t
|
||||
Settings2Item::Invoke(BMessage *message)
|
||||
Settings2Item::Invoke(BMessage* message)
|
||||
{
|
||||
if (IsMarked())
|
||||
return B_OK;
|
||||
|
||||
@@ -17,59 +17,76 @@
|
||||
#ifndef __MEDIAVIEWS_H__
|
||||
#define __MEDIAVIEWS_H__
|
||||
#include <CheckBox.h>
|
||||
#include <MediaAddOn.h>
|
||||
#include <MenuItem.h>
|
||||
#include <StringView.h>
|
||||
#include <View.h>
|
||||
|
||||
|
||||
const uint32 ML_RESTART_MEDIA_SERVER = 'resr';
|
||||
const uint32 ML_SHOW_VOLUME_CONTROL = 'shvc';
|
||||
const uint32 ML_ENABLE_REAL_TIME = 'enrt';
|
||||
const uint32 ML_DEFAULT_CHANGE = 'dech';
|
||||
const uint32 ML_DEFAULTOUTPUT_CHANGE = 'doch';
|
||||
|
||||
|
||||
class BarView : public BView
|
||||
{
|
||||
public:
|
||||
BarView();
|
||||
virtual void Draw(BRect updateRect);
|
||||
bool fDisplay;
|
||||
public:
|
||||
BarView();
|
||||
virtual void Draw(BRect updateRect);
|
||||
|
||||
bool fDisplay;
|
||||
};
|
||||
|
||||
|
||||
class SettingsItem : public BMenuItem
|
||||
{
|
||||
public:
|
||||
SettingsItem(dormant_node_info *info, BMessage *message,
|
||||
char shortcut = 0, uint32 modifiers = 0);
|
||||
dormant_node_info *fInfo;
|
||||
virtual status_t Invoke(BMessage *message = NULL);
|
||||
public:
|
||||
SettingsItem(dormant_node_info* info,
|
||||
BMessage* message, char shortcut = 0,
|
||||
uint32 modifiers = 0);
|
||||
virtual status_t Invoke(BMessage* message = NULL);
|
||||
|
||||
dormant_node_info* fInfo;
|
||||
};
|
||||
|
||||
|
||||
class Settings2Item : public BMenuItem
|
||||
{
|
||||
public:
|
||||
Settings2Item(dormant_node_info *info, media_input *input, BMessage *message,
|
||||
char shortcut = 0, uint32 modifiers = 0);
|
||||
virtual ~Settings2Item();
|
||||
virtual status_t Invoke(BMessage *message = NULL);
|
||||
dormant_node_info *fInfo;
|
||||
media_input *fInput;
|
||||
public:
|
||||
Settings2Item(dormant_node_info* info,
|
||||
media_input* input, BMessage* message,
|
||||
char shortcut = 0, uint32 modifiers = 0);
|
||||
virtual ~Settings2Item();
|
||||
virtual status_t Invoke(BMessage* message = NULL);
|
||||
|
||||
dormant_node_info* fInfo;
|
||||
media_input* fInput;
|
||||
};
|
||||
|
||||
|
||||
class SettingsView : public BView
|
||||
{
|
||||
public:
|
||||
SettingsView(bool isVideo);
|
||||
void AddNodes(BList &list, bool isInput);
|
||||
void SetDefault(dormant_node_info &info, bool isInput, int32 outputID = -1);
|
||||
BCheckBox *fRealtimeCheckBox;
|
||||
BCheckBox *fVolumeCheckBox;
|
||||
BMenu *fMenu1;
|
||||
BMenu *fMenu2;
|
||||
BMenu *fMenu3;
|
||||
BStringView *fRestartView;
|
||||
public:
|
||||
SettingsView(bool isVideo);
|
||||
void AddNodes(BList &list, bool isInput);
|
||||
void SetDefault(dormant_node_info &info,
|
||||
bool isInput, int32 outputID = -1);
|
||||
|
||||
private:
|
||||
bool fIsVideo;
|
||||
BCheckBox* fRealtimeCheckBox;
|
||||
BCheckBox* fVolumeCheckBox;
|
||||
|
||||
BMenu* fMenu1;
|
||||
// input menu
|
||||
BMenu* fMenu2;
|
||||
// output menu
|
||||
BMenu* fMenu3;
|
||||
// channel menu (audio only)
|
||||
BStringView* fRestartView;
|
||||
|
||||
private:
|
||||
bool fIsVideo;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "MediaWindow.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <Alert.h>
|
||||
@@ -19,8 +21,8 @@
|
||||
#include <Deskbar.h>
|
||||
#include <GroupView.h>
|
||||
#include <Locale.h>
|
||||
#include <MediaTheme.h>
|
||||
#include <MediaRoster.h>
|
||||
#include <MediaTheme.h>
|
||||
#include <Roster.h>
|
||||
#include <Screen.h>
|
||||
#include <ScrollView.h>
|
||||
@@ -28,7 +30,6 @@
|
||||
#include <StorageKit.h>
|
||||
#include <String.h>
|
||||
#include <TextView.h>
|
||||
#include "MediaWindow.h"
|
||||
|
||||
// Images
|
||||
#include "iconfile.h"
|
||||
@@ -43,8 +44,9 @@ const uint32 ML_INIT_MEDIA = 'MlIM';
|
||||
|
||||
// MediaWindow - Constructor
|
||||
MediaWindow::MediaWindow(BRect frame)
|
||||
: BWindow (frame, B_TRANSLATE("Media"), B_TITLED_WINDOW,
|
||||
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||
:
|
||||
BWindow (frame, B_TRANSLATE("Media"), B_TITLED_WINDOW,
|
||||
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||
fCurrentNode(NULL),
|
||||
fParamWeb(NULL),
|
||||
fAlert(NULL),
|
||||
@@ -61,19 +63,18 @@ MediaWindow::InitCheck()
|
||||
}
|
||||
|
||||
|
||||
// MediaWindow - Destructor
|
||||
MediaWindow::~MediaWindow()
|
||||
{
|
||||
for (int i = 0; i<fAudioOutputs.CountItems(); i++)
|
||||
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));
|
||||
for (int i = 0; i < fAudioOutputs.CountItems(); i++)
|
||||
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)
|
||||
roster->ReleaseNode(*fCurrentNode);
|
||||
|
||||
@@ -100,8 +101,8 @@ MediaWindow::FindNodes(media_type type, uint64 kind, BList &list)
|
||||
dormant_node_info node_info[64];
|
||||
int32 node_info_count = 64;
|
||||
media_format format;
|
||||
media_format *format1 = NULL, *format2 = NULL;
|
||||
BMediaRoster *roster = BMediaRoster::Roster();
|
||||
media_format* format1 = NULL, *format2 = NULL;
|
||||
BMediaRoster* roster = BMediaRoster::Roster();
|
||||
format.type = type;
|
||||
|
||||
if (kind & B_PHYSICAL_OUTPUT)
|
||||
@@ -120,7 +121,7 @@ MediaWindow::FindNodes(media_type type, uint64 kind, BList &list)
|
||||
for (int32 i = 0; i<node_info_count; i++) {
|
||||
PRINT(("node : %s, media_addon %i, flavor_id %i\n",
|
||||
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);
|
||||
info->flavor_id = node_info[i].flavor_id;
|
||||
info->addon = node_info[i].addon;
|
||||
@@ -130,10 +131,10 @@ MediaWindow::FindNodes(media_type type, uint64 kind, BList &list)
|
||||
|
||||
|
||||
MediaListItem *
|
||||
MediaWindow::FindMediaListItem(dormant_node_info *info)
|
||||
MediaWindow::FindMediaListItem(dormant_node_info* info)
|
||||
{
|
||||
for (int32 j = 0; j<fListView->CountItems(); j++) {
|
||||
MediaListItem *item
|
||||
MediaListItem* item
|
||||
= static_cast<MediaListItem *>(fListView->ItemAt(j));
|
||||
if (item->fInfo && item->fInfo->addon == info->addon
|
||||
&& item->fInfo->flavor_id == info->flavor_id) {
|
||||
@@ -149,21 +150,20 @@ void
|
||||
MediaWindow::AddNodes(BList &list, bool isVideo)
|
||||
{
|
||||
for (int32 i = 0; i<list.CountItems(); i++) {
|
||||
dormant_node_info *info
|
||||
= static_cast<dormant_node_info *>(list.ItemAt(i));
|
||||
dormant_node_info* info
|
||||
= static_cast<dormant_node_info*>(list.ItemAt(i));
|
||||
if (!FindMediaListItem(info))
|
||||
fListView->AddItem(new MediaListItem(info, 1, isVideo, &fIcons));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MediaWindow::InitWindow -- Initialization Commands here
|
||||
void
|
||||
MediaWindow::InitWindow(void)
|
||||
{
|
||||
// Bitmaps
|
||||
BRect iconRect(0, 0, 15, 15);
|
||||
BBitmap *icon = new BBitmap(iconRect, B_CMAP8);
|
||||
BBitmap* icon = new BBitmap(iconRect, B_CMAP8);
|
||||
icon->SetBits(kDevicesBits, kDevicesWidth * kDevicesHeight, 0,
|
||||
kDevicesColorSpace);
|
||||
fIcons.AddItem(icon);
|
||||
@@ -191,7 +191,7 @@ MediaWindow::InitWindow(void)
|
||||
fListView->SetSelectionMessage(new BMessage(ML_SELECTED_NODE));
|
||||
|
||||
// Add ScrollView to Media Menu
|
||||
BScrollView *scrollView = new BScrollView("listscroller",
|
||||
BScrollView* scrollView = new BScrollView("listscroller",
|
||||
fListView, 0, false, false, B_FANCY_BORDER);
|
||||
scrollView->SetExplicitMinSize(BSize(scrollWidth, B_SIZE_UNSET));
|
||||
scrollView->SetExplicitMaxSize(BSize(scrollWidth, B_SIZE_UNSET));
|
||||
@@ -253,10 +253,10 @@ status_t
|
||||
MediaWindow::InitMedia(bool first)
|
||||
{
|
||||
status_t err = B_OK;
|
||||
BMediaRoster *roster = BMediaRoster::Roster(&err);
|
||||
BMediaRoster* roster = BMediaRoster::Roster(&err);
|
||||
|
||||
if (first && err != B_OK) {
|
||||
BAlert *alert = new BAlert("start_media_server",
|
||||
BAlert* alert = new BAlert("start_media_server",
|
||||
B_TRANSLATE("Could not connect to the media server.\n"
|
||||
"Would you like to start it ?"),
|
||||
B_TRANSLATE("Quit"),
|
||||
@@ -289,7 +289,7 @@ MediaWindow::InitMedia(bool first)
|
||||
B_TRANSLATE("Ready for use" B_UTF8_ELLIPSIS));
|
||||
}
|
||||
|
||||
void *listItem;
|
||||
void* listItem;
|
||||
while ((listItem = fListView->RemoveItem((int32)0)))
|
||||
delete static_cast<MediaListItem *>(listItem);
|
||||
while ((listItem = fAudioOutputs.RemoveItem((int32)0)))
|
||||
@@ -301,8 +301,6 @@ MediaWindow::InitMedia(bool first)
|
||||
while ((listItem = fVideoInputs.RemoveItem((int32)0)))
|
||||
delete static_cast<dormant_node_info *>(listItem);
|
||||
|
||||
MediaListItem *item, *mixer, *audio, *video;
|
||||
|
||||
// Grab Media Info
|
||||
FindNodes(B_MEDIA_RAW_AUDIO, B_PHYSICAL_OUTPUT, fAudioOutputs);
|
||||
FindNodes(B_MEDIA_RAW_AUDIO, B_PHYSICAL_INPUT, fAudioInputs);
|
||||
@@ -325,22 +323,31 @@ MediaWindow::InitMedia(bool first)
|
||||
fVideoView->AddNodes(fVideoOutputs, false);
|
||||
fVideoView->AddNodes(fVideoInputs, true);
|
||||
|
||||
fListView->AddItem(audio = new MediaListItem(B_TRANSLATE("Audio settings"), 0, false, &fIcons));
|
||||
fListView->AddItem(video = new MediaListItem(B_TRANSLATE("Video settings"), 0, true, &fIcons));
|
||||
// build our list view
|
||||
MediaListItem* audio = new MediaListItem(B_TRANSLATE("Audio settings"), 0,
|
||||
false, &fIcons);
|
||||
fListView->AddItem(audio);
|
||||
|
||||
fListView->AddItem(mixer = new MediaListItem(B_TRANSLATE("Audio mixer"), 1, false, &fIcons));
|
||||
MediaListItem* video = new MediaListItem(B_TRANSLATE("Video settings"), 0,
|
||||
true, &fIcons);
|
||||
fListView->AddItem(video);
|
||||
|
||||
MediaListItem* mixer = new MediaListItem(B_TRANSLATE("Audio mixer"),
|
||||
1, false, &fIcons);
|
||||
fListView->AddItem(mixer);
|
||||
mixer->SetAudioMixer(true);
|
||||
|
||||
fListView->SortItems(&MediaListItem::Compare);
|
||||
|
||||
// Set default nodes for our setting views
|
||||
media_node default_node;
|
||||
dormant_node_info node_info;
|
||||
int32 outputID;
|
||||
BString outputName;
|
||||
|
||||
if (roster->GetAudioInput(&default_node)==B_OK) {
|
||||
if (roster->GetAudioInput(&default_node) == B_OK) {
|
||||
roster->GetDormantNodeFor(default_node, &node_info);
|
||||
item = FindMediaListItem(&node_info);
|
||||
MediaListItem* item = FindMediaListItem(&node_info);
|
||||
if (item)
|
||||
item->SetDefault(true, true);
|
||||
fAudioView->SetDefault(node_info, true);
|
||||
@@ -348,7 +355,7 @@ MediaWindow::InitMedia(bool first)
|
||||
|
||||
if (roster->GetAudioOutput(&default_node, &outputID, &outputName)==B_OK) {
|
||||
roster->GetDormantNodeFor(default_node, &node_info);
|
||||
item = FindMediaListItem(&node_info);
|
||||
MediaListItem* item = FindMediaListItem(&node_info);
|
||||
if (item)
|
||||
item->SetDefault(true, false);
|
||||
fAudioView->SetDefault(node_info, false, outputID);
|
||||
@@ -356,7 +363,7 @@ MediaWindow::InitMedia(bool first)
|
||||
|
||||
if (roster->GetVideoInput(&default_node)==B_OK) {
|
||||
roster->GetDormantNodeFor(default_node, &node_info);
|
||||
item = FindMediaListItem(&node_info);
|
||||
MediaListItem* item = FindMediaListItem(&node_info);
|
||||
if (item)
|
||||
item->SetDefault(true, true);
|
||||
fVideoView->SetDefault(node_info, true);
|
||||
@@ -364,7 +371,7 @@ MediaWindow::InitMedia(bool first)
|
||||
|
||||
if (roster->GetVideoOutput(&default_node)==B_OK) {
|
||||
roster->GetDormantNodeFor(default_node, &node_info);
|
||||
item = FindMediaListItem(&node_info);
|
||||
MediaListItem* item = FindMediaListItem(&node_info);
|
||||
if (item)
|
||||
item->SetDefault(true, false);
|
||||
fVideoView->SetDefault(node_info, false);
|
||||
@@ -396,22 +403,19 @@ MediaWindow::InitMedia(bool first)
|
||||
}
|
||||
|
||||
|
||||
// MediaWindow::QuitRequested -- Post a message to the app to quit
|
||||
bool
|
||||
MediaWindow::QuitRequested()
|
||||
{
|
||||
// stop watching the MediaRoster
|
||||
BMediaRoster *roster = BMediaRoster::CurrentRoster();
|
||||
BMediaRoster* roster = BMediaRoster::CurrentRoster();
|
||||
if (roster && fCurrentNode) {
|
||||
roster->StopWatching(this, *fCurrentNode, B_MEDIA_WILDCARD);
|
||||
}
|
||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||
return true;
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------- //
|
||||
|
||||
|
||||
// MediaWindow::FrameResized -- When the main frame is resized fix up the other views
|
||||
void
|
||||
MediaWindow::FrameResized (float width, float height)
|
||||
{
|
||||
@@ -419,23 +423,21 @@ MediaWindow::FrameResized (float width, float height)
|
||||
BRect r;
|
||||
r = Bounds();
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------- //
|
||||
|
||||
|
||||
// ErrorAlert -- Displays a BAlert Box with a Custom Error or Debug Message
|
||||
void
|
||||
ErrorAlert(char* errorMessage) {
|
||||
printf("%s\n", errorMessage);
|
||||
BAlert *alert = new BAlert("BAlert", errorMessage, B_TRANSLATE("OK"),
|
||||
BAlert* alert = new BAlert("BAlert", errorMessage, B_TRANSLATE("OK"),
|
||||
NULL, NULL, B_WIDTH_AS_USUAL, B_STOP_ALERT);
|
||||
alert->Go();
|
||||
exit(1);
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------- //
|
||||
|
||||
|
||||
// MediaWindow::MessageReceived -- receives messages
|
||||
void
|
||||
MediaWindow::MessageReceived (BMessage *message)
|
||||
MediaWindow::MessageReceived(BMessage* message)
|
||||
{
|
||||
switch(message->what)
|
||||
{
|
||||
@@ -447,10 +449,11 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
int32 index;
|
||||
if (message->FindInt32("index", &index)!=B_OK)
|
||||
break;
|
||||
Settings2Item *item = static_cast<Settings2Item *>(fAudioView->fMenu3->ItemAt(index));
|
||||
Settings2Item* item = static_cast<Settings2Item*>(
|
||||
fAudioView->fMenu3->ItemAt(index));
|
||||
|
||||
if (item) {
|
||||
BMediaRoster *roster = BMediaRoster::Roster();
|
||||
BMediaRoster* roster = BMediaRoster::Roster();
|
||||
roster->SetAudioOutput(*item->fInput);
|
||||
|
||||
if (fAudioView->fRestartView->IsHidden())
|
||||
@@ -470,13 +473,15 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
int32 index;
|
||||
if (message->FindInt32("index", &index)!=B_OK)
|
||||
break;
|
||||
SettingsView *settingsView = isVideo ? fVideoView : fAudioView;
|
||||
BMenu *menu = isInput ? settingsView->fMenu1 : settingsView->fMenu2;
|
||||
SettingsItem *item = static_cast<SettingsItem *>(menu->ItemAt(index));
|
||||
SettingsView* settingsView = isVideo ? fVideoView : fAudioView;
|
||||
BMenu* menu = isInput ? settingsView->fMenu1
|
||||
: settingsView->fMenu2;
|
||||
SettingsItem* item = static_cast<SettingsItem*>(
|
||||
menu->ItemAt(index));
|
||||
|
||||
if (item) {
|
||||
PRINT(("isVideo %i isInput %i\n", isVideo, isInput));
|
||||
BMediaRoster *roster = BMediaRoster::Roster();
|
||||
BMediaRoster* roster = BMediaRoster::Roster();
|
||||
if (isVideo) {
|
||||
if (isInput)
|
||||
roster->SetVideoInput(*item->fInfo);
|
||||
@@ -491,10 +496,12 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
}
|
||||
}
|
||||
|
||||
MediaListItem *oldListItem = NULL;
|
||||
for (int32 j = 0; j<fListView->CountItems(); j++) {
|
||||
oldListItem = static_cast<MediaListItem *>(fListView->ItemAt(j));
|
||||
if (oldListItem->fInfo && oldListItem->IsVideo() == isVideo
|
||||
MediaListItem* oldListItem = NULL;
|
||||
for (int32 j = 0; j < fListView->CountItems(); j++) {
|
||||
oldListItem = static_cast<MediaListItem*>(
|
||||
fListView->ItemAt(j));
|
||||
if (oldListItem->fInfo
|
||||
&& oldListItem->IsVideo() == isVideo
|
||||
&& oldListItem->IsDefault(isInput))
|
||||
break;
|
||||
}
|
||||
@@ -503,7 +510,7 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
else
|
||||
fprintf(stderr, "oldListItem not found\n");
|
||||
|
||||
MediaListItem *listItem = FindMediaListItem(item->fInfo);
|
||||
MediaListItem* listItem = FindMediaListItem(item->fInfo);
|
||||
if (listItem) {
|
||||
listItem->SetDefault(true, isInput);
|
||||
} else
|
||||
@@ -557,12 +564,13 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
bool isVideo = true;
|
||||
if (message->FindBool("isVideo", &isVideo)!=B_OK)
|
||||
break;
|
||||
SettingsView *settingsView = isVideo ? fVideoView : fAudioView;
|
||||
SettingsView* settingsView = isVideo ? fVideoView : fAudioView;
|
||||
uint32 flags;
|
||||
uint32 realtimeFlag = isVideo ? B_MEDIA_REALTIME_VIDEO : B_MEDIA_REALTIME_AUDIO;
|
||||
BMediaRoster *roster = BMediaRoster::Roster();
|
||||
uint32 realtimeFlag = isVideo
|
||||
? B_MEDIA_REALTIME_VIDEO : B_MEDIA_REALTIME_AUDIO;
|
||||
BMediaRoster* roster = BMediaRoster::Roster();
|
||||
roster->GetRealtimeFlags(&flags);
|
||||
if (settingsView->fRealtimeCheckBox->Value()==B_CONTROL_ON)
|
||||
if (settingsView->fRealtimeCheckBox->Value() == B_CONTROL_ON)
|
||||
flags |= realtimeFlag;
|
||||
else
|
||||
flags &= ~realtimeFlag;
|
||||
@@ -574,7 +582,8 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
{
|
||||
PRINT_OBJECT(*message);
|
||||
|
||||
MediaListItem *item = static_cast<MediaListItem *>(fListView->ItemAt(fListView->CurrentSelection()));
|
||||
MediaListItem* item = static_cast<MediaListItem*>(
|
||||
fListView->ItemAt(fListView->CurrentSelection()));
|
||||
if (!item)
|
||||
break;
|
||||
BMediaRoster* roster = BMediaRoster::Roster();
|
||||
@@ -584,7 +593,7 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
roster->ReleaseNode(*fCurrentNode);
|
||||
}
|
||||
fCurrentNode = NULL;
|
||||
BView *paramView = fContentView->ChildAt(0);
|
||||
BView* paramView = fContentView->ChildAt(0);
|
||||
if (paramView!=NULL) {
|
||||
fContentView->RemoveChild(paramView);
|
||||
}
|
||||
@@ -619,9 +628,9 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
|
||||
roster->StartWatching(this, *fCurrentNode, B_MEDIA_WILDCARD);
|
||||
} else {
|
||||
if (fParamWeb)
|
||||
delete fParamWeb;
|
||||
delete fParamWeb;
|
||||
fParamWeb = NULL;
|
||||
|
||||
BRect bounds = fContentView->Bounds();
|
||||
BStringView* stringView = new BStringView(bounds,
|
||||
"noControls", B_TRANSLATE("This hardware has no controls."),
|
||||
@@ -633,7 +642,8 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
}
|
||||
}
|
||||
|
||||
bool barChanged = (item->OutlineLevel() == 0 || fParamWeb == NULL || fParamWeb->CountGroups()<2);
|
||||
bool barChanged = (item->OutlineLevel() == 0
|
||||
|| fParamWeb == NULL || fParamWeb->CountGroups()<2);
|
||||
if (barChanged != fBar->fDisplay) {
|
||||
fBar->fDisplay = barChanged;
|
||||
fBar->Invalidate();
|
||||
@@ -643,10 +653,13 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
case B_SOME_APP_LAUNCHED:
|
||||
{
|
||||
PRINT_OBJECT(*message);
|
||||
const char *mimeSig;
|
||||
if (fAlert && message->FindString("be:signature", &mimeSig)==B_OK
|
||||
&& (strcmp(mimeSig, "application/x-vnd.Be.addon-host")==0
|
||||
|| strcmp(mimeSig, "application/x-vnd.Be.media-server")==0)) {
|
||||
if (!fAlert)
|
||||
break;
|
||||
|
||||
BString mimeSig;
|
||||
if (message->FindString("be:signature", &mimeSig) == B_OK
|
||||
&& (mimeSig == "application/x-vnd.Be.addon-host"
|
||||
|| mimeSig == "application/x-vnd.Be.media-server")) {
|
||||
fAlert->Lock();
|
||||
fAlert->TextView()->SetText(
|
||||
B_TRANSLATE("Starting media server" B_UTF8_ELLIPSIS));
|
||||
@@ -657,12 +670,12 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
case B_SOME_APP_QUIT:
|
||||
{
|
||||
PRINT_OBJECT(*message);
|
||||
const char *mimeSig;
|
||||
if (message->FindString("be:signature", &mimeSig)==B_OK) {
|
||||
if (strcmp(mimeSig, "application/x-vnd.Be.addon-host")==0
|
||||
|| strcmp(mimeSig, "application/x-vnd.Be.media-server")==0) {
|
||||
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&&roster->Lock())
|
||||
if (roster && roster->Lock())
|
||||
roster->Quit();
|
||||
}
|
||||
}
|
||||
@@ -676,16 +689,17 @@ MediaWindow::MessageReceived (BMessage *message)
|
||||
}
|
||||
|
||||
status_t
|
||||
MediaWindow::RestartMediaServices(void *data)
|
||||
MediaWindow::RestartMediaServices(void* data)
|
||||
{
|
||||
MediaWindow *window = (MediaWindow *)data;
|
||||
MediaWindow* window = (MediaWindow*)data;
|
||||
window->fAlert = new MediaAlert(BRect(0, 0, 300, 60),
|
||||
"restart_alert", B_TRANSLATE(
|
||||
"Restarting media services\nShutting down media server\n"));
|
||||
|
||||
window->fAlert->Show();
|
||||
|
||||
shutdown_media_server(B_INFINITE_TIMEOUT, MediaWindow::UpdateProgress, window->fAlert);
|
||||
shutdown_media_server(B_INFINITE_TIMEOUT, MediaWindow::UpdateProgress,
|
||||
window->fAlert);
|
||||
|
||||
{
|
||||
BAutolock locker(window->fAlert);
|
||||
@@ -698,12 +712,13 @@ MediaWindow::RestartMediaServices(void *data)
|
||||
return window->PostMessage(ML_INIT_MEDIA);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
MediaWindow::UpdateProgress(int stage, const char * message, void * cookie)
|
||||
{
|
||||
MediaAlert *alert = static_cast<MediaAlert*>(cookie);
|
||||
MediaAlert* alert = static_cast<MediaAlert*>(cookie);
|
||||
PRINT(("stage : %i\n", stage));
|
||||
const char *string = "Unknown stage";
|
||||
const char* string = "Unknown stage";
|
||||
switch (stage) {
|
||||
case 10:
|
||||
string = B_TRANSLATE("Stopping media server" B_UTF8_ELLIPSIS);
|
||||
|
||||
@@ -27,45 +27,53 @@
|
||||
#include "MediaListItem.h"
|
||||
#include "MediaAlert.h"
|
||||
|
||||
|
||||
#define SETTINGS_FILE "MediaPrefs Settings"
|
||||
|
||||
|
||||
class MediaWindow : public BWindow
|
||||
{
|
||||
public:
|
||||
MediaWindow(BRect frame);
|
||||
~MediaWindow();
|
||||
virtual bool QuitRequested();
|
||||
virtual void MessageReceived(BMessage *message);
|
||||
virtual void FrameResized(float width, float height);
|
||||
status_t InitCheck();
|
||||
private:
|
||||
status_t InitMedia(bool first);
|
||||
void FindNodes(media_type type, uint64 kind, BList &list);
|
||||
void AddNodes(BList &list, bool isVideo);
|
||||
MediaListItem *FindMediaListItem(dormant_node_info *info);
|
||||
void InitWindow(void);
|
||||
static status_t RestartMediaServices(void *data);
|
||||
static bool UpdateProgress(int stage, const char * message, void * cookie);
|
||||
|
||||
BBox * fBox;
|
||||
BListView* fListView;
|
||||
BStringView* fTitleView;
|
||||
BView* fContentView;
|
||||
SettingsView* fAudioView;
|
||||
SettingsView* fVideoView;
|
||||
BarView* fBar;
|
||||
|
||||
media_node* fCurrentNode;
|
||||
BParameterWeb* fParamWeb;
|
||||
|
||||
BList fAudioInputs;
|
||||
BList fAudioOutputs;
|
||||
BList fVideoInputs;
|
||||
BList fVideoOutputs;
|
||||
|
||||
BList fIcons;
|
||||
MediaAlert *fAlert;
|
||||
status_t fInitCheck;
|
||||
public:
|
||||
MediaWindow(BRect frame);
|
||||
~MediaWindow();
|
||||
virtual bool QuitRequested();
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
virtual void FrameResized(float width, float height);
|
||||
status_t InitCheck();
|
||||
|
||||
private:
|
||||
|
||||
status_t InitMedia(bool first);
|
||||
void FindNodes(media_type type, uint64 kind,
|
||||
BList &list);
|
||||
void AddNodes(BList &list, bool isVideo);
|
||||
|
||||
MediaListItem* FindMediaListItem(dormant_node_info* info);
|
||||
void InitWindow();
|
||||
|
||||
static status_t RestartMediaServices(void* data);
|
||||
static bool UpdateProgress(int stage, const char * message,
|
||||
void * cookie);
|
||||
|
||||
BBox* fBox;
|
||||
BListView* fListView;
|
||||
BStringView* fTitleView;
|
||||
BView* fContentView;
|
||||
SettingsView* fAudioView;
|
||||
SettingsView* fVideoView;
|
||||
BarView* fBar;
|
||||
|
||||
media_node* fCurrentNode;
|
||||
BParameterWeb* fParamWeb;
|
||||
|
||||
BList fAudioInputs;
|
||||
BList fAudioOutputs;
|
||||
BList fVideoInputs;
|
||||
BList fVideoOutputs;
|
||||
|
||||
BList fIcons;
|
||||
MediaAlert* fAlert;
|
||||
status_t fInitCheck;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user