Improved layout of controls and more cleanup. There is now a splitter

between the source file list and the controls on the right, and ticket
#6985 is fixed. A lot of issues and quirks remain with this application.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39855 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus 2010-12-15 17:31:57 +00:00
parent 0a81944d5d
commit 7730c84696
2 changed files with 48 additions and 60 deletions

View File

@ -1,8 +1,9 @@
// Copyright 1999, Be Incorporated. All Rights Reserved.
// Copyright 2000-2004, Jun Suzuki. All Rights Reserved.
// Copyright 2007, Stephan Aßmus. All Rights Reserved.
// Copyright 2007, 2010 Stephan Aßmus. All Rights Reserved.
// Copyright 2010, Haiku, Inc. All Rights Reserved.
// This file may be used under the terms of the Be Sample Code License.
#include "MediaConverterWindow.h"
#include <stdio.h>
@ -134,13 +135,18 @@ MediaConverterWindow::MediaConverterWindow(BRect frame)
fInfoBox = new BBox(B_FANCY_BORDER, fInfoView);
fInfoBox->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH,
B_ALIGN_USE_FULL_HEIGHT));
fInfoBox->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET));
float padding = be_control_look->DefaultItemSpacing();
// Output format box
fOutputBox = new BBox(B_FANCY_BORDER, NULL);
float padding = be_control_look->DefaultItemSpacing();
BGridLayout* outputGrid = new BGridLayout(padding, padding);
fOutputBox->SetLayout(outputGrid);
// fOutputBox's layout is also adjusted in _UpdateLabels
outputGrid->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH,
B_ALIGN_USE_FULL_HEIGHT));
fOutputBox->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
fFormatMenu = new BMenuField(NULL, FORMAT_LABEL, new BPopUpMenu(""));
fAudioMenu = new BMenuField(NULL, AUDIO_LABEL, new BPopUpMenu(""));
@ -195,7 +201,7 @@ MediaConverterWindow::MediaConverterWindow(BRect frame)
// Status views
fStatus = new BStringView(NULL, NULL);
fStatus->SetExplicitAlignment(labelAlignment);
fFileStatus= new BStringView(NULL, NULL);
fFileStatus = new BStringView(NULL, NULL);
fFileStatus->SetExplicitAlignment(labelAlignment);
SetStatusMessage("");
@ -204,17 +210,22 @@ MediaConverterWindow::MediaConverterWindow(BRect frame)
BLayoutBuilder::Group<>(this, B_VERTICAL, 0)
.SetInsets(0, 0, 0, 0)
.Add(fMenuBar)
.AddGrid(padding, padding)
.AddSplit(B_HORIZONTAL, padding / 2)
.SetInsets(padding, padding, padding, padding)
.Add(fSourcesBox, 0, 0, 1, 2)
.Add(fInfoBox, 1, 0, 1, 1)
.Add(fOutputBox, 1, 1, 1, 1)
.AddGrid(padding, padding, 0, 2, 2, 1)
.SetInsets(0, 0, 0, 0)
.Add(fSourcesBox, 0.4)
.AddGroup(B_VERTICAL, padding, 0.6)
.Add(fInfoBox)
.Add(fOutputBox)
.End()
.End()
.AddGrid(padding, padding)
.SetInsets(padding, 0, padding, padding)
.Add(fStatus, 0, 0)
.Add(fFileStatus, 0, 1)
.Add(fPreviewButton, 2, 0)
.Add(fConvertButton, 3, 0);
.Add(fConvertButton, 3, 0)
.End()
;
}
@ -228,24 +239,6 @@ MediaConverterWindow::~MediaConverterWindow()
// #pragma mark -
/*
void
MediaConverterWindow::DispatchMessage(BMessage *msg, BHandler *handler)
{
if (msg->WasDropped() && msg->what == B_SIMPLE_DATA) {
printf("Dispatch 1\n");
DetachCurrentMessage();
msg->what = B_REFS_RECEIVED;
BMessenger(be_app).SendMessage(msg);
delete msg;
} else {
BWindow::DispatchMessage(msg, handler);
}
}
*/
void
MediaConverterWindow::MessageReceived(BMessage* msg)
{
@ -497,18 +490,18 @@ MediaConverterWindow::LanguageChanged()
void
MediaConverterWindow::BuildAudioVideoMenus()
{
BMenu *menu = fAudioMenu->Menu();
BMenuItem *item;
BMenu* menu = fAudioMenu->Menu();
BMenuItem* item;
// clear out old audio codec menu items
while ((item = menu->RemoveItem((int32)0)) != NULL) {
while ((item = menu->RemoveItem(0L)) != NULL)
delete item;
}
bool separator = true;
// get selected file format
FileFormatMenuItem *ffmi = (FileFormatMenuItem*)fFormatMenu->Menu()->FindMarked();
media_file_format *mf_format = &(ffmi->fFileFormat);
FileFormatMenuItem* ffmi
= (FileFormatMenuItem*)fFormatMenu->Menu()->FindMarked();
media_file_format* mf_format = &(ffmi->fFileFormat);
media_format format, outfmt;
memset(&format, 0, sizeof(format));
@ -519,7 +512,8 @@ MediaConverterWindow::BuildAudioVideoMenus()
// add available audio encoders to menu
format.type = B_MEDIA_RAW_AUDIO;
format.u.raw_audio = media_raw_audio_format::wildcard;
while (get_next_encoder(&cookie, mf_format, &format, &outfmt, &codec_info) == B_OK) {
while (get_next_encoder(&cookie, mf_format, &format, &outfmt, &codec_info)
== B_OK) {
if (separator) {
menu->AddItem(new BMenuItem("No audio",
new BMessage(AUDIO_CODEC_SELECT_MESSAGE)));
@ -553,9 +547,8 @@ MediaConverterWindow::BuildAudioVideoMenus()
// clear out old video codec menu items
menu = fVideoMenu->Menu();
while ((item = menu->RemoveItem((int32)0)) != NULL) {
while ((item = menu->RemoveItem(0L)) != NULL)
delete item;
}
separator = true;
@ -727,13 +720,8 @@ MediaConverterWindow::SourceFileSelectionChanged()
{
int32 selected = fListView->CurrentSelection();
BMediaFile* file = NULL;
entry_ref* _ref = NULL;
entry_ref ref;
bool enabled = false;
if (GetSourceFileAt(selected, &file, &ref) == B_OK) {
_ref = &ref;
enabled = true;
}
bool enabled = GetSourceFileAt(selected, &file, &ref) == B_OK;
fPreviewButton->SetEnabled(enabled);
fVideoQualitySlider->SetEnabled(enabled);
@ -741,16 +729,17 @@ MediaConverterWindow::SourceFileSelectionChanged()
fStartDurationTC->SetEnabled(enabled);
fEndDurationTC->SetEnabled(enabled);
if (enabled)
fInfoView->Update(file, _ref);
BString duration;
if (enabled) {
fInfoView->Update(file, &ref);
// HACK: get the fInfoView to update the duration "synchronously"
UpdateIfNeeded();
duration << fInfoView->Duration() / 1000;
} else
duration = "0";
// update duration text controls
fStartDurationTC->SetText("0");
BString duration;
duration << fInfoView->Duration() / 1000;
fEndDurationTC->SetText(duration.String());
}
@ -888,7 +877,7 @@ MediaConverterWindow::_UpdateBBoxLayoutInsets(BBox* box)
{
BTwoDimensionalLayout* layout
= dynamic_cast<BTwoDimensionalLayout*>(box->GetLayout());
if (layout) {
if (layout != NULL) {
float padding = be_control_look->DefaultItemSpacing();
layout->SetInsets(padding, box->TopBorderOffset() + padding, padding,
padding);

View File

@ -25,17 +25,15 @@ class MediaFileListView;
class StatusView;
class MediaConverterWindow : public BWindow {
public:
public:
MediaConverterWindow(BRect frame);
virtual ~MediaConverterWindow();
protected:
// virtual void DispatchMessage(BMessage* message,
// BHandler* handler);
protected:
virtual void MessageReceived(BMessage* message);
virtual bool QuitRequested();
public:
public:
void LanguageChanged();
void BuildFormatMenu();
@ -73,13 +71,14 @@ class MediaConverterWindow : public BWindow {
BDirectory OutputDirectory() const;
private:
private:
void _UpdateLabels();
void _UpdateBBoxLayoutInsets(BBox* box);
void _CreateMenu();
void _DestroyMenu();
void _SetOutputFolder(BEntry entry);
private:
BButton* fConvertButton;
BButton* fDestButton;