diff --git a/src/preferences/media/Media.cpp b/src/preferences/media/Media.cpp index c98d155457..d1fb80b020 100644 --- a/src/preferences/media/Media.cpp +++ b/src/preferences/media/Media.cpp @@ -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: diff --git a/src/preferences/media/Media.h b/src/preferences/media/Media.h index 3a54d329e7..9bf5427223 100644 --- a/src/preferences/media/Media.h +++ b/src/preferences/media/Media.h @@ -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 diff --git a/src/preferences/media/MediaAlert.cpp b/src/preferences/media/MediaAlert.cpp index 622d2d28dd..71779a0494 100644 --- a/src/preferences/media/MediaAlert.cpp +++ b/src/preferences/media/MediaAlert.cpp @@ -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)); diff --git a/src/preferences/media/MediaAlert.h b/src/preferences/media/MediaAlert.h index e23880cb50..91e6091f9c 100644 --- a/src/preferences/media/MediaAlert.h +++ b/src/preferences/media/MediaAlert.h @@ -12,29 +12,25 @@ // Created : June 25, 2003 // // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ - #ifndef _MEDIAALERT_H #define _MEDIAALERT_H -// System Includes ------------------------------------------------------------- #include #include #include -// 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 diff --git a/src/preferences/media/MediaListItem.cpp b/src/preferences/media/MediaListItem.cpp index 9726738d8d..ac4500f257 100644 --- a/src/preferences/media/MediaListItem.cpp +++ b/src/preferences/media/MediaListItem.cpp @@ -14,18 +14,20 @@ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ -// Includes -------------------------------------------------------------------------------------------------- // +#include "MediaListItem.h" + #include #include -#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(fIcons->ItemAt(index)), iconFrame); + + BBitmap* icon = static_cast(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(fIcons->ItemAt(index)), iconFrame); + BBitmap* icon = static_cast(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(firstArg); - const MediaListItem *item2 = *static_cast(secondArg); + const MediaListItem* item1 + = *static_cast(firstArg); + const MediaListItem* item2 + = *static_cast(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); } diff --git a/src/preferences/media/MediaListItem.h b/src/preferences/media/MediaListItem.h index 4a74b58848..4ca1579268 100644 --- a/src/preferences/media/MediaListItem.h +++ b/src/preferences/media/MediaListItem.h @@ -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__ */ diff --git a/src/preferences/media/MediaViews.cpp b/src/preferences/media/MediaViews.cpp index f04bb1ccc3..c9d7593728 100644 --- a/src/preferences/media/MediaViews.cpp +++ b/src/preferences/media/MediaViews.cpp @@ -14,8 +14,7 @@ // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ -// Includes -------------------------------------------------------------------------------------------------- // -#include +#include "MediaViews.h" #include #include @@ -32,7 +31,7 @@ #include #include -#include "MediaViews.h" +#include #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("")); 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("")); 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("")); 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(item); + delete static_cast(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(list.ItemAt(i)); + dormant_node_info* info + = static_cast(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(menu->ItemAt(i)); - if (item->fInfo && item->fInfo->addon == info.addon && item->fInfo->flavor_id == info.flavor_id) { + SettingsItem* item = static_cast(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; diff --git a/src/preferences/media/MediaViews.h b/src/preferences/media/MediaViews.h index ade76f0826..c404e9c95c 100644 --- a/src/preferences/media/MediaViews.h +++ b/src/preferences/media/MediaViews.h @@ -17,59 +17,76 @@ #ifndef __MEDIAVIEWS_H__ #define __MEDIAVIEWS_H__ #include +#include #include #include #include + 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 diff --git a/src/preferences/media/MediaWindow.cpp b/src/preferences/media/MediaWindow.cpp index f0e5e3a724..db0c2b4cc2 100644 --- a/src/preferences/media/MediaWindow.cpp +++ b/src/preferences/media/MediaWindow.cpp @@ -7,6 +7,8 @@ */ +#include "MediaWindow.h" + #include #include @@ -19,8 +21,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -28,7 +30,6 @@ #include #include #include -#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.ItemAt(i)); - for (int i = 0; i(fAudioInputs.ItemAt(i)); - for (int i = 0; i(fVideoOutputs.ItemAt(i)); - for (int i = 0; i(fVideoInputs.ItemAt(i)); + for (int i = 0; i < fAudioOutputs.CountItems(); i++) + delete static_cast(fAudioOutputs.ItemAt(i)); + for (int i = 0; i < fAudioInputs.CountItems(); i++) + delete static_cast(fAudioInputs.ItemAt(i)); + for (int i = 0; i < fVideoOutputs.CountItems(); i++) + delete static_cast(fVideoOutputs.ItemAt(i)); + for (int i = 0; i < fVideoInputs.CountItems(); i++) + delete static_cast(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; iname, 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; jCountItems(); j++) { - MediaListItem *item + MediaListItem* item = static_cast(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.ItemAt(i)); + dormant_node_info* info + = static_cast(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(listItem); while ((listItem = fAudioOutputs.RemoveItem((int32)0))) @@ -301,8 +301,6 @@ MediaWindow::InitMedia(bool first) while ((listItem = fVideoInputs.RemoveItem((int32)0))) delete static_cast(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(fAudioView->fMenu3->ItemAt(index)); + Settings2Item* item = static_cast( + 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(menu->ItemAt(index)); + SettingsView* settingsView = isVideo ? fVideoView : fAudioView; + BMenu* menu = isInput ? settingsView->fMenu1 + : settingsView->fMenu2; + SettingsItem* item = static_cast( + 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; jCountItems(); j++) { - oldListItem = static_cast(fListView->ItemAt(j)); - if (oldListItem->fInfo && oldListItem->IsVideo() == isVideo + MediaListItem* oldListItem = NULL; + for (int32 j = 0; j < fListView->CountItems(); j++) { + oldListItem = static_cast( + 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(fListView->ItemAt(fListView->CurrentSelection())); + MediaListItem* item = static_cast( + 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(cookie); + MediaAlert* alert = static_cast(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); diff --git a/src/preferences/media/MediaWindow.h b/src/preferences/media/MediaWindow.h index a6098904a9..71bdecb2a9 100644 --- a/src/preferences/media/MediaWindow.h +++ b/src/preferences/media/MediaWindow.h @@ -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