本文整理汇总了C++中BLayoutItem::SetExplicitAlignment方法的典型用法代码示例。如果您正苦于以下问题:C++ BLayoutItem::SetExplicitAlignment方法的具体用法?C++ BLayoutItem::SetExplicitAlignment怎么用?C++ BLayoutItem::SetExplicitAlignment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BLayoutItem
的用法示例。
在下文中一共展示了BLayoutItem::SetExplicitAlignment方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BRect
/*!
* \brief Default constructor
* \param[in] frame The rectangle enclosing the view
* \param[in] name Name of the view. Will be passed to BView's constructor.
*
*/
CalendarModulePreferencesView::CalendarModulePreferencesView( BRect frame )
:
BView( BRect( frame.left, frame.top, frame.right, frame.bottom-10 ),
"Calendar Module Preferences",
B_FOLLOW_LEFT | B_FOLLOW_TOP,
B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS )
{
BRect tempFrame = this->Bounds(); // Got the boundaries
this->SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
tempFrame.InsetBySelf( 5, 5 );
tempFrame.bottom -= 10;
/* Add the chooser for the calendar modules */
BGroupLayout* groupLayout = new BGroupLayout( B_VERTICAL );
if ( !groupLayout ) {
/* Panic! */
exit( 1 );
}
groupLayout->SetSpacing( 2 );
this->SetLayout( groupLayout );
// Create the menu with all supported calendar modules
calendarModules = PopulateModulesMenu();
if ( ! calendarModules ) {
/* Panic! */
exit ( 1 );
}
calendarModuleSelector = new BMenuField( BRect( 0, 0, this->Bounds().Width() - 10, 1 ),
"Calendar Modules selector",
"Calendar module:",
calendarModules,
B_FOLLOW_H_CENTER | B_FOLLOW_TOP );
if ( !calendarModuleSelector ) {
/* Panic! */
exit ( 1 );
}
calendarModuleSelector->ResizeToPreferred();
// Add the menu with all calendar modules to the layout
BLayoutItem* layoutItem = groupLayout->AddView( 0, calendarModuleSelector, 1 );
if ( layoutItem ) {
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_CENTER, B_ALIGN_TOP ) );
}
// Relayout
groupLayout->Relayout();
} // <-- end of constructor for CalendarModulePreferencesView
示例2: BMessage
/*! \brief Init user interface regardless of the parameter of constructor.
*/
void EventEditorMainWindow::InitUI()
{
ClearUI();
MainView = new BView( BWindow::Bounds(),
"Event Editor Main View",
B_FOLLOW_ALL,
B_WILL_DRAW | B_FRAME_EVENTS );
if ( MainView != NULL )
{
MainView->SetViewColor( ui_color(B_PANEL_BACKGROUND_COLOR ) );
BWindow::AddChild( MainView );
}
else
{
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
BGridLayout* layout = new BGridLayout( B_VERTICAL );
if ( !layout ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
MainView->SetLayout( layout );
layout->SetInsets( 0, 0, 0, 5 );
layout->SetSpacing( 0, 2 );
menuBar = CreateMenuBar();
layout->AddView( menuBar, 0, 0 );
BTabView* tabView = new BTabView( Bounds().InsetBySelf( 5, 30 ),
"Tab view" );
if ( !tabView ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
BLayoutItem* layoutItem = layout->AddView( tabView, 0, 1 );
if ( layoutItem ) {
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT ) );
}
BRect individualTab = tabView->Bounds();
individualTab.bottom -= ( tabView->TabHeight() + 20 + menuBar->Bounds().Height() );
// Enable firing the activity in any case
fData.SetEventActivityFired( false );
// General view
genView = new EventEditor_GeneralView( individualTab, &fData );
if ( !genView || genView->InitCheck() != B_OK ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
BTab* tab = new BTab();
tabView->AddTab( genView, tab );
tab->SetLabel( "General" );
// Reminder view
remView = new EventEditor_ReminderView( individualTab, &fData );
if ( !remView || remView->InitCheck() != B_OK ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
tab = new BTab();
tabView->AddTab( remView, tab );
tab->SetLabel( "Reminder" );
// Event activity
actView = new ActivityView( individualTab.InsetByCopy( 5, 5 ), "Event activity", fData.GetEventActivity() );
if ( !actView || actView->InitCheck() != B_OK ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
tab = new BTab();
tabView->AddTab( actView, tab );
tab->SetLabel( "Activity" );
// Note view
noteView = new EventEditor_NoteView( individualTab.InsetByCopy( 5, 5 ), &fData );
if ( !noteView || noteView->InitCheck() != B_OK ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
}
tab = new BTab();
tabView->AddTab( noteView, tab );
tab->SetLabel( "Note" );
menuBar->SetTargetForItems( this );
// Save button
saveAndClose = new BButton( BRect( 0, 0, 1, 1 ),
"Save",
"Save",
new BMessage( kFileSave ) );
if ( !saveAndClose ) {
global_toReturn = B_NO_MEMORY;
be_app->PostMessage( B_QUIT_REQUESTED );
//.........这里部分代码省略.........
示例3: BRect
/*! \function ColorUpdateWindow::ColorUpdateWindow
* \brief Constructor.
* \param[in] corner One of the corners of the window IN SCREEN COORDINATES!
* \param[in] label Label of the color. (Usually name of the category).
* \param[in] enableEditingLabel If "true", label can be edited. If "false", it's constant.
* \param[in] title Title of the window
* \param[in] defaultColor Original color. Defaults to black.
* \param[in] targetLooper The target which receives message with the results.
* \param[in] currentScreen Defines the screen the program runs in. Usually it's
* B_MAIN_SCREEN_ID.
* \param[in] message The template message to be used. If this parameter is NULL,
* a new message is constructed.
*/
ColorUpdateWindow::ColorUpdateWindow( BPoint corner,
BString& label,
rgb_color &defaultColor,
bool enableEditingLabel,
BString title,
BHandler *targetHandler,
screen_id currentScreen,
BMessage* message )
:
BWindow( BRect( 100, 100, 300, 500 ),
title.String(),
B_MODAL_WINDOW,
B_NOT_CLOSABLE | B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_NOT_MINIMIZABLE | B_ASYNCHRONOUS_CONTROLS | B_WILL_ACCEPT_FIRST_CLICK ),
originalString( label ),
originalColor( defaultColor),
labelView( NULL ),
okButton( NULL ),
revertButton( NULL ),
messageToSend( NULL ),
target( targetHandler ),
dirty( false )
{
BSize layoutSize;
BLayoutItem* item = NULL;
float width, height, dontCare;
BView* background = new BView( this->Bounds(),
"Background",
B_FOLLOW_LEFT | B_FOLLOW_TOP,
B_FRAME_EVENTS | B_WILL_DRAW );
if ( !background )
{
/* Panic! */
exit(1);
}
background->SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
this->enableEditingLabel = enableEditingLabel;
/* There are three parts in the interface of the control.
* Upmost is the label, which, according to the user's settings,
* can be editable or not.
* Next is the color control.
* Last is the row of two buttons, Revert and Ok.
*/
// Debugging
printf( "Color Selected = %u, Color Reverted = %u.\n",
kColorSelected,
kColorReverted );
// Construct background view and layout
BGridLayout* layout = new BGridLayout( B_VERTICAL );
if ( !layout ) { /* Panic! */ exit(1); }
layout->SetInsets( 5, 5, 5, 5 );
background->SetLayout( layout );
this->AddChild( background );
// Constructing the name label, editable or not.
if ( enableEditingLabel )
{
labelView = new BTextControl( BRect(0, 0, 1, 1),
"Label",
NULL,
label.String(),
NULL );
} else {
labelView = new BStringView( BRect (0, 0, 1, 1),
"Label",
label.String() );
}
if ( !labelView )
{
/* Panic! */
exit(1);
}
labelView->ResizeToPreferred();
item = layout->AddView( labelView, 0, 0, 3, 1 );
if ( !item ) { /* Panic! */ exit(1); }
item->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_VERTICAL_CENTER ) );
// item->SetExplicitMinSize( BSize( width, height ) );
// Construct color control
BMessage* toSend = new BMessage( kColorChanged );
if ( !toSend ) { /* Panic! */ exit(1); }
colorControl = new BColorControl( BPoint( 0, 0 ),
B_CELLS_32x8,
//.........这里部分代码省略.........
示例4: font
void
PackageView::_InitView()
{
SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
float fontHeight = be_plain_font->Size();
rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR);
BTextView* packageDescriptionView = new DescriptionTextView(
"package description", fontHeight * 13);
packageDescriptionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
packageDescriptionView->SetText(fInfo.GetDescription());
packageDescriptionView->MakeEditable(false);
packageDescriptionView->MakeSelectable(false);
packageDescriptionView->SetFontAndColor(be_plain_font, B_FONT_ALL,
&textColor);
BScrollView* descriptionScrollView = new BScrollView(
"package description scroll view", packageDescriptionView,
0, false, true, B_NO_BORDER);
// Install type menu field
fInstallTypes = new BPopUpMenu(B_TRANSLATE("none"));
BMenuField* installType = new BMenuField("install_type",
B_TRANSLATE("Installation type:"), fInstallTypes);
// Install type description text view
fInstallTypeDescriptionView = new DescriptionTextView(
"install type description", fontHeight * 4);
fInstallTypeDescriptionView->MakeEditable(false);
fInstallTypeDescriptionView->MakeSelectable(false);
fInstallTypeDescriptionView->SetInsets(8, 0, 0, 0);
// Left inset needs to match BMenuField text offset
fInstallTypeDescriptionView->SetText(
B_TRANSLATE("No installation type selected"));
fInstallTypeDescriptionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
BFont font(be_plain_font);
font.SetSize(ceilf(font.Size() * 0.85));
fInstallTypeDescriptionView->SetFontAndColor(&font, B_FONT_ALL,
&textColor);
BScrollView* installTypeScrollView = new BScrollView(
"install type description scroll view", fInstallTypeDescriptionView,
0, false, true, B_NO_BORDER);
// Destination menu field
fDestination = new BPopUpMenu(B_TRANSLATE("none"));
fDestField = new BMenuField("install_to", B_TRANSLATE("Install to:"),
fDestination);
fBeginButton = new BButton("begin_button", B_TRANSLATE("Begin"),
new BMessage(P_MSG_INSTALL));
BLayoutItem* typeLabelItem = installType->CreateLabelLayoutItem();
BLayoutItem* typeMenuItem = installType->CreateMenuBarLayoutItem();
BLayoutItem* destFieldLabelItem = fDestField->CreateLabelLayoutItem();
BLayoutItem* destFieldMenuItem = fDestField->CreateMenuBarLayoutItem();
float forcedMinWidth = be_plain_font->StringWidth("XXX") * 5;
destFieldMenuItem->SetExplicitMinSize(BSize(forcedMinWidth, B_SIZE_UNSET));
typeMenuItem->SetExplicitMinSize(BSize(forcedMinWidth, B_SIZE_UNSET));
BAlignment labelAlignment(B_ALIGN_RIGHT, B_ALIGN_VERTICAL_UNSET);
typeLabelItem->SetExplicitAlignment(labelAlignment);
destFieldLabelItem->SetExplicitAlignment(labelAlignment);
// Build the layout
BLayoutBuilder::Group<>(this, B_VERTICAL)
.Add(descriptionScrollView)
.AddGrid(B_USE_SMALL_SPACING, B_USE_DEFAULT_SPACING)
.Add(typeLabelItem, 0, 0)
.Add(typeMenuItem, 1, 0)
.Add(installTypeScrollView, 1, 1)
.Add(destFieldLabelItem, 0, 2)
.Add(destFieldMenuItem, 1, 2)
.End()
.AddGroup(B_HORIZONTAL)
.AddGlue()
.Add(fBeginButton)
.End()
.SetInsets(B_USE_DEFAULT_SPACING)
;
fBeginButton->MakeDefault(true);
}
示例5: BGroupLayout
/*! \brief Constructor.
* \param[in] frame The rectangle of the View. Passed unmodified to
* constructor of BView.
* \param[in] data Data of the Event.
* \details The user must check \c InitCheck() value. If it's not B_OK,
* the class did not initialize properly.
*/
EventEditor_ReminderView::EventEditor_ReminderView( BRect rect, EventData* data )
:
BView( rect,
"Reminder Activity",
B_FOLLOW_ALL,
B_WILL_DRAW | B_FRAME_EVENTS | B_PULSE_NEEDED ),
fData( data ),
fLastError( B_OK ),
fReminderEnabler( NULL ),
fExplanation( NULL ),
fExplanation2( NULL ),
fHourMinControl( NULL ),
fActivityView( NULL )
{
// Sanity check
if ( !data ) {
/* Panic! */
fLastError = B_BAD_VALUE;
return;
}
// Create the layout
BGroupLayout* layout = new BGroupLayout( B_VERTICAL );
if ( !layout ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
this->SetLayout( layout );
layout->SetInsets( 5, 5, 5, 5 );
// Get the preferences
TimePreferences* pref = pref_GetTimePreferences();
// Construct the checkbox
BMessage* toSend = new BMessage( kReminderEnabled );
if ( !toSend ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fReminderEnabler = new BCheckBox( BRect( 0, 0, 1, 1 ),
"Enable or disable the reminder",
"Remind me about this Event",
toSend );
if( !fReminderEnabler ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fReminderEnabler->ResizeToPreferred();
BLayoutItem* layoutItem = layout->AddView( fReminderEnabler );
// Construct the explanation string
fExplanation = new BStringView( BRect( 0, 0, 1, 1 ),
"Explanation",
"Reminder will not work if it's set up to start at" );
fExplanation2 = new BStringView( BRect( 0, 0, 1, 1 ),
"Explanation2",
"the time of the Event itself. (Don't choose 00:00)!" );
if ( !fExplanation || !fExplanation2 ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fExplanation->ResizeToPreferred();
fExplanation2->ResizeToPreferred();
fExplanation->SetFont( be_bold_font );
fExplanation2->SetFont( be_bold_font );
layoutItem = layout->AddView( fExplanation );
if ( layoutItem ) {
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_CENTER, B_ALIGN_BOTTOM ) );
}
layoutItem = layout->AddView( fExplanation2 );
if ( layoutItem ) {
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_CENTER, B_ALIGN_TOP ) );
}
// Construct the time control
toSend = new BMessage( kReminderTimeUpdated );
if ( !toSend ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fHourMinControl = new GeneralHourMinControl( BRect ( 0, 0, 1, 1 ),
"Reminder time",
BString( "Reminder is set" ),
BString( "before the Event" ),
toSend );
if ( !fHourMinControl ) {
/* Panic! */
//.........这里部分代码省略.........
示例6: boldFont
//.........这里部分代码省略.........
if ( !background ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
this->AddChild( background );
BGridLayout* gridLayout = new BGridLayout();
if ( !gridLayout ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
background->SetLayout( gridLayout );
background->SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
gridLayout->SetInsets( 5, 5, 5, 5 );
/*-------------------------------------------------
* First line - explaining what's happening here
*------------------------------------------------*/
BStringView* exp = new BStringView( BRect( 0, 0, 1, 1 ),
"Explanation 1",
( bIsReminder ?
"A Reminder has occured!" :
"An Event has occured!" ) );
if ( ! exp ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
exp->SetFont( &boldFont );
exp->ResizeToPreferred();
BLayoutItem* layoutItem = gridLayout->AddView( exp, 0, 0, numberOfColumnsInLayout, 1 );
if ( layoutItem ) {
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_CENTER, B_ALIGN_TOP ) );
}
/*-----------------------------------------------------------------
* Second line - event's name on category's color as background
*----------------------------------------------------------------*/
// Create background
// Note: the pulse is requested for this Window to receive Pulse notifications.
fBackground = new BView( BRect( 0, 0, 1, 1 ),
"Background",
B_FOLLOW_LEFT_RIGHT | B_FOLLOW_V_CENTER | B_PULSE_NEEDED,
B_WILL_DRAW );
if ( !fBackground ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fBackground->SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
layoutItem = gridLayout->AddView( fBackground, 0, 1, numberOfColumnsInLayout, 1 );
if ( layoutItem ) {
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT ) );
}
BGroupLayout* bgLayout = new BGroupLayout( B_VERTICAL );
if ( !bgLayout ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fBackground->SetLayout( bgLayout );
bgLayout->SetInsets( 15, 10, 15, 10 );
fBackground->SetViewColor( fCategory.categoryColor );
示例7: BPopUpMenu
MediaConverterWindow::MediaConverterWindow(BRect frame)
:
BWindow(frame, B_TRANSLATE_SYSTEM_NAME("MediaConverter"),
B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, B_NOT_ZOOMABLE
| B_NOT_V_RESIZABLE | B_ASYNCHRONOUS_CONTROLS
| B_AUTO_UPDATE_SIZE_LIMITS),
fVideoQuality(75),
fAudioQuality(75),
fSaveFilePanel(NULL),
fOpenFilePanel(NULL),
fOutputDirSpecified(false),
fEnabled(true),
fConverting(false),
fCancelling(false)
{
BPath outputDir;
if (find_directory(B_USER_DIRECTORY, &outputDir) != B_OK)
outputDir.SetTo("/boot/home");
fOutputDir.SetTo(outputDir.Path());
fMenuBar = new BMenuBar("menubar");
_CreateMenu();
float padding = be_control_look->DefaultItemSpacing();
fListView = new MediaFileListView();
fListView->SetExplicitMinSize(BSize(padding * kMinSourceWidth, B_SIZE_UNSET));
BScrollView* scroller = new BScrollView(NULL, fListView, 0, false, true);
// file list view box
fSourcesBox = new BBox(B_FANCY_BORDER, scroller);
fSourcesBox->SetLayout(new BGroupLayout(B_HORIZONTAL, 0));
// fSourcesBox's layout adjusted in _UpdateLabels
// info box
fInfoView = new MediaFileInfoView();
fInfoView->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH,
B_ALIGN_VERTICAL_UNSET));
fInfoBox = new BBox(B_FANCY_BORDER, fInfoView);
// output menu fields
fFormatMenu = new BMenuField(NULL, B_TRANSLATE("File format:"),
new BPopUpMenu(""));
fAudioMenu = new BMenuField(NULL, B_TRANSLATE("Audio encoding:"),
new BPopUpMenu(""));
fVideoMenu = new BMenuField(NULL, B_TRANSLATE("Video encoding:"),
new BPopUpMenu(""));
// output folder
fDestButton = new BButton(B_TRANSLATE("Output folder"),
new BMessage(OUTPUT_FOLDER_MESSAGE));
BAlignment labelAlignment(be_control_look->DefaultLabelAlignment());
fOutputFolder = new BStringView(NULL, outputDir.Path());
fOutputFolder->SetExplicitAlignment(labelAlignment);
// start/end duration
fStartDurationTC = new BTextControl(NULL, "0", NULL);
BLayoutItem* startDuration = fStartDurationTC->CreateTextViewLayoutItem();
startDuration->SetExplicitSize(BSize(padding * kDurationWidth, B_SIZE_UNSET));
startDuration->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
B_ALIGN_VERTICAL_CENTER));
fEndDurationTC = new BTextControl(NULL, "0", NULL);
BLayoutItem* endDuration = fEndDurationTC->CreateTextViewLayoutItem();
endDuration->SetExplicitSize(BSize(padding * kDurationWidth, B_SIZE_UNSET));
endDuration->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
B_ALIGN_VERTICAL_CENTER));
// video quality
fVideoQualitySlider = new BSlider("VSlider", "" ,
new BMessage(VIDEO_QUALITY_CHANGED_MESSAGE), 1, 100, B_HORIZONTAL);
fVideoQualitySlider->SetModificationMessage(
new BMessage(VIDEO_QUALITY_CHANGED_MESSAGE));
fVideoQualitySlider->SetValue(fVideoQuality);
fVideoQualitySlider->SetEnabled(false);
fVideoQualitySlider->SetExplicitSize(BSize(padding * kQualitySliderWidth,
B_SIZE_UNSET));
// audio quality
fAudioQualitySlider = new BSlider("ASlider", "" ,
new BMessage(AUDIO_QUALITY_CHANGED_MESSAGE), 1, 100, B_HORIZONTAL);
fAudioQualitySlider->SetModificationMessage(
new BMessage(AUDIO_QUALITY_CHANGED_MESSAGE));
fAudioQualitySlider->SetValue(fAudioQuality);
fAudioQualitySlider->SetEnabled(false);
fAudioQualitySlider->SetExplicitSize(BSize(padding * kQualitySliderWidth,
B_SIZE_UNSET));
// output format box
BView* outputGrid = BLayoutBuilder::Grid<>()
.Add(fFormatMenu->CreateLabelLayoutItem(), 0, 0)
.Add(fFormatMenu->CreateMenuBarLayoutItem(), 1, 0)
.Add(fAudioMenu->CreateLabelLayoutItem(), 0, 1)
.Add(fAudioMenu->CreateMenuBarLayoutItem(), 1, 1)
.Add(fVideoMenu->CreateLabelLayoutItem(), 0, 2)
.Add(fVideoMenu->CreateMenuBarLayoutItem(), 1, 2)
.Add(fDestButton, 0, 3)
.Add(fOutputFolder, 1, 3)
.Add(fStartDurationTC->CreateLabelLayoutItem(), 0, 4)
.Add(startDuration, 1, 4)
.Add(fEndDurationTC->CreateLabelLayoutItem(), 0, 5)
//.........这里部分代码省略.........
示例8: r
/*! \brief Constructor of CategoryPreferencesView
* \details It's a descendant of BView.
* \param[in] frame The frame rectangle of the view.
*/
CategoryPreferencesView::CategoryPreferencesView( BRect frame )
:
BView( frame,
"Category Preferences",
B_FOLLOW_ALL_SIDES,
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE )
{
BLayoutItem* layoutItem = NULL;
BMessage* toSend = NULL;
menuField = NULL;
this->SetViewColor( ui_color( B_PANEL_BACKGROUND_COLOR ) );
/*! \note Layout of the view
* The view has a grid layout. It's arranged in the following way:
* 1) Left column - list of Categories (CategoryList) that
* contains all categories currently available.
* 2) Right column - three buttons, from top to bottom:
* 2a) Edit currently selected category - guess what it's doing
* 2b) Add a new category
* 2c) Merge a current directory into another one + menu with
* all categories. The category selected in the list is disabled.
* \note Restrictions:
* a) The list of categories is scrolled.
* b) If no category is selected, then
* i) "Edit" button is disabled
* ii) "Merge to" field is disabled
*
*/
BGridLayout* gridLayout = new BGridLayout();
if ( !gridLayout )
{
/* Panic! */
exit( 1 );
}
// Margins from the sides of the view and spacing between the elements
gridLayout->SetInsets( 5, 5, 5, 5 );
gridLayout->SetHorizontalSpacing( 10 );
gridLayout->SetVerticalSpacing( 10 );
this->SetLayout( gridLayout );
gridLayout->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT ) );
gridLayout->SetExplicitMinSize( BSize( (this->Bounds()).Width(), (this->Bounds()).Height() ) );
BRect rect = gridLayout->Frame();
printf ( "The frame is %d pixels wide and %d pixels high.\n",
(int )rect.Width(),
(int )rect.Height() );
/* Creating the CategoryListView with its scroller */
BRect r( this->Bounds() );
r.InsetBySelf( 5, 10 ); // Margins near the border of the view
r.right = (int)(r.right / 2) - B_V_SCROLL_BAR_WIDTH;
r.bottom -= 0;
listView = new CategoryListView( r, "List View" );
if ( ! listView ) {
/* Panic! */
exit( 1 );
}
BLooper* looper = this->Looper();
if ( looper && looper->LockLooper() )
{
looper->AddHandler( ( BHandler* )this );
looper->UnlockLooper();
}
scroller = new BScrollView( "Scroller",
listView,
B_FOLLOW_LEFT | B_FOLLOW_TOP,
0, // Flags
true,
true );
if ( !scroller )
{
/* Panic! */
exit( 1 );
}
layoutItem = gridLayout->AddView( scroller, 0, 0, 1, 3 );
if ( !layoutItem ) {
/* Panic! */
exit( 1 );
}
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_LEFT,
B_ALIGN_USE_FULL_HEIGHT ) );
toSend = new BMessage( kCategoryInvoked );
if ( !toSend )
{
/* Panic! */
exit( 1 );
}
listView->SetInvocationMessage( toSend );
toSend = new BMessage( kCategorySelected );
if ( !toSend )
{
//.........这里部分代码省略.........
示例9: size
//.........这里部分代码省略.........
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fCalendarModuleLabel = new BStringView( BRect( 0, 0, 1, 1 ),
"label for the calendar module selector",
"Calendar:" );
if ( !fCalendarModuleLabel ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fCalendarModuleLabel->ResizeToPreferred();
fCalendarsMenu = CreateMenuOfCalendarModules();
if ( !fCalendarsMenu ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fCalendarModuleSelector = new BMenuField( BRect( 0, 0, 1, 1 ),
"calendar module selector",
NULL, // Label is created separately
fCalendarsMenu );
if ( !fCalendarModuleSelector ) {
/* Panic! */
fLastError = B_NO_MEMORY;
return;
}
fCalendarModuleSelector->ResizeToPreferred();
// Create the menu
CreateMenu();
BRect stringViewFrame = fLabel->Frame();
BPoint topLeftCorner = stringViewFrame.RightTop();
BSize size( BUTTON_WIDTH, stringViewFrame.Height() + SPACING );
fMenuBar = new BMenuBar( BRect(topLeftCorner, size),
"menuBar",
B_FOLLOW_RIGHT | B_FOLLOW_TOP,
B_ITEMS_IN_ROW,
false);
if (! fMenuBar) {
// Panic!
fLastError = B_NO_MEMORY;
return;
}
fMenuBar->SetBorder( B_BORDER_EACH_ITEM );
fMenuBar->AddItem( fDateSelector );
// Update the selected date label to currently selected moment of time
UpdateText();
// Initializing the layout
BGridLayout* lay = new BGridLayout( );
if (!lay) {
// Panic!
fLastError = B_NO_MEMORY;
return;
}
lay->SetInsets(0, 5, 0, 0);
lay->SetSpacing( 10, 5 );
lay->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_MIDDLE ) );
this->SetLayout(lay);
BLayoutItem* layoutItem;
layoutItem = lay->AddView( fLabel, 0, 0 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_LEFT, B_ALIGN_TOP ) );
layoutItem = lay->AddView( fDateLabel, 1, 0 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_TOP ) );
layoutItem = lay->AddView( fMenuBar, 2, 0 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_RIGHT, B_ALIGN_TOP ) );
layoutItem->SetExplicitMaxSize( size );
layoutItem = lay->AddView( fCalendarModuleLabel, 0, 1 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_LEFT, B_ALIGN_MIDDLE ) );
layoutItem = lay->AddView( fCalendarModuleSelector, 1, 1 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_TOP ) );
lay->SetColumnWeight( 0, 0 );
lay->SetColumnWeight( 1, 1000 );
lay->SetColumnWeight( 2, 0 );
lay->SetMaxColumnWidth( 2, BUTTON_WIDTH );
this->InvalidateLayout();
this->Relayout();
this->Invalidate();
fLastError = B_OK;
}
示例10: setSize
/*! \brief Add the interface for configuring colors.
* \param[in] frame The frame of the view.
* \param[in] id The ID of the interface to configure the colors for.
*/
BBox* CalendarModulePreferencesView::BuildColorSelectors( BRect frame,
const BString& id )
{
BBox* toReturn = NULL;
BLayoutItem* layoutItem = NULL;
BString sb;
BRect tempRect = frame;
// tempRect.InsetBySelf( 10, 10 );
BMessage* toSend = NULL;
// Access the preferences
CalendarModulePreferences* prefs = pref_GetPreferencesForCalendarModule( id );
if ( !prefs ) {
return NULL;
}
// Prepare the overall BBox
toReturn = new BBox( frame, "Color selector" );
if ( ! toReturn )
return NULL;
toReturn->SetLabel( "Set up colors" );
// Set up the layout for this BBox
BGroupLayout* groupLayout = new BGroupLayout( B_VERTICAL );
if ( !groupLayout ) {
delete toReturn;
return NULL;
}
groupLayout->SetInsets( 10, 15, 10, 5 );
groupLayout->SetSpacing( 2 );
toReturn->SetLayout( groupLayout );
// Label over the CategoryListView for the viewer
BStringView* viewerString = new BStringView( BRect( 0, 0, 1, 1 ),
"Colors Changer Explanation",
"Double-click the color to edit it." );
if ( !viewerString )
{
delete toReturn;
return NULL;
}
viewerString->ResizeToPreferred();
layoutItem = groupLayout->AddView( 0, viewerString, 0 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_USE_FULL_WIDTH, B_ALIGN_TOP ) );
toSend = new BMessage( kCategoryInvoked );
if ( !toSend )
{
/* Panic! */
exit( 1 );
}
toSend->AddString( "Calendar module", id );
CategoryListView* menuColors = new CategoryListView( BRect( 0,
0,
tempRect.Width() + B_V_SCROLL_BAR_WIDTH,
tempRect.Height() + B_H_SCROLL_BAR_HEIGHT ),
"Colors list view" );
if ( !menuColors ) {
// menuString->RemoveSelf(); delete menuString;
// viewerString->RemoveSelf(); delete viewerString;
delete toReturn; return NULL;
}
menuColors->SetInvocationMessage( toSend );
// Fill the CategoryListView for the menu colors
sb.SetTo( "Color for displaying weekdays in the controls" );
CategoryListItem* toAdd = new CategoryListItem( prefs->GetWeekdaysColor( false ),
sb );
if ( toAdd ) {
menuColors->AddItem( toAdd );
}
sb.SetTo( "Color for displaying weekends in the controls" );
toAdd = new CategoryListItem( prefs->GetWeekendsColor( false ),
sb );
if ( toAdd ) {
menuColors->AddItem( toAdd );
}
sb.SetTo( "Color for displaying weekdays in Viewer" );
toAdd = new CategoryListItem( prefs->GetWeekdaysColor( true ),
sb );
if ( toAdd ) {
menuColors->AddItem( toAdd );
}
sb.SetTo( "Color for displaying weekends in Viewer" );
toAdd = new CategoryListItem( prefs->GetWeekendsColor( true ),
sb );
if ( toAdd ) {
menuColors->AddItem( toAdd );
}
sb.SetTo( "Color for displaying service items in the controls" );
toAdd = new CategoryListItem( prefs->GetServiceItemsColor( false ),
sb );
if ( toAdd ) {
menuColors->AddItem( toAdd );
//.........这里部分代码省略.........
示例11: CreateWeekendSelectionBox
/*! \brief Builds the interface for a selected calendar module.
* \param[in] id Name of the calendar module to build the interface for.
* \details If the interface for a module already exists, this function
* deletes it without affecting the already set preferences.
*/
void CalendarModulePreferencesView::BuildInterfaceForModule( const BString& id )
{
BGroupLayout* layout = ( BGroupLayout* )( BView::GetLayout() );
BLayoutItem* layoutItem = NULL;
BBox* tempBBox = NULL;
if ( !this->Window() || this->Window()->Lock() )
{
// First, clean up old interface items if they existed
this->ClearOldInterface();
// Prepare the frame for the BBox for weekends selection
BRect r = this->Bounds();
r.InsetBySelf( 5, 5 );
r.right -= 10;
r.bottom -= 10;
if ( calendarModuleSelector )
r.top += ( calendarModuleSelector->Bounds().Height() + 10 );
// Build weekend selection
tempBBox = CreateWeekendSelectionBox( r, id );
if ( tempBBox )
{
// After the call, the BBox is resized to minimal required size.
layoutItem = layout->AddView( 1, tempBBox, 0 );
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_CENTER, B_ALIGN_TOP ) );
}
else
{
utl_Deb = new DebuggerPrintout( "Error - Weekend selection box is NULL." );
}
// Start day chooser
BMenuField* startDayChooser = CreateWeekStartDayChooser( r, id );
if ( startDayChooser )
{
layoutItem = layout->AddView( 2, startDayChooser, 0 );
if ( layoutItem )
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_LEFT, B_ALIGN_TOP ) );
}
// Day-month-year order
BMenuField* dmyChooser = CreateDayMonthYearOrderChooser( r, id );
if ( dmyChooser )
{
layoutItem = layout->AddView( 3, dmyChooser, 0 );
if ( layoutItem )
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_LEFT, B_ALIGN_TOP ) );
}
// Colors selection
tempBBox = BuildColorSelectors( r, id );
if ( tempBBox ) {
layoutItem = layout->AddView( 4, tempBBox, 0 );
}
/* At the end, all children are targetted at current window */
UpdateTargetting();
if ( this->Window() ) { this->Window()->Unlock(); }
} // <-- end of lock-only section
} // <-- end of function CalendarModulePreferencesView::BuildInterfaceForModule
示例12: DebuggerPrintout
//.........这里部分代码省略.........
BBox* enclosingBox = new BBox( frame, "Weekend selector" );
if ( !enclosingBox )
{
/* Panic! */
exit(1);
}
enclosingBox->SetLabel( "Select the non-working days (weekends)" );
// Prepare the layout to be used
BGridLayout* layout = new BGridLayout();
if ( !layout)
{
/* Panic! */
exit(1);
}
enclosingBox->SetLayout( layout );
layout->SetInsets( 10, 15, 10, 5 );
layout->SetVerticalSpacing( 1 );
/* indexX is 0 for left column or 1 for right column.
* indexY is 0 for topmost row, 1 for second from top row, etc.
* Max value for indexY = (ceiling of (N/2)).
*/
int indexX = 0, indexY = 0;
for (uint32 day = prefs->GetFirstDayOfWeek(), i = 0; i < ( uint32 )daysInWeek; ++i )
{
/* Creating the message to be sent */
toSend = new BMessage( kCalendarModuleWeekendDaySelected );
if ( !toSend )
{
/* Panic! */
exit(1);
}
toSend->AddInt32( "Weekday const", day );
toSend->AddString( "Calendar module", id );
/* Set the name of the checkbox.
* This is used to identify if the checkbox was checked or unchecked.
*/
tempString.SetTo( "Weekday" );
tempString << day;
/* Creating the checkbox */
dayCheckBox = new BCheckBox( BRect(0, 0, 1, 1),
tempString.String(),
weekdayNames[ day ].longName.String(),
toSend );
if (!dayCheckBox)
{
// Panic!
exit(1);
}
dayCheckBox->ResizeToPreferred();
// Check if the checkbox should be checked
if ( weekends->HasItem( ( void* )day ) ) {
dayCheckBox->SetValue( 1 );
} else {
dayCheckBox->SetValue( 0 );
}
/* Adding the item to the BBox */
layoutItem = layout->AddView( dayCheckBox, indexX, indexY );
if ( layoutItem )
{
layoutItem->SetExplicitAlignment( BAlignment( B_ALIGN_LEFT, B_ALIGN_TOP ) );
// layoutItem->SetExplicitMaxSize( BSize( (int )dayCheckBox->Bounds().Width(), (int )dayCheckBox->Bounds().Height() ) );
layout->SetMaxRowHeight( indexY, (int )dayCheckBox->Bounds().Height() + 10 );
layout->SetRowWeight( indexY, 0 );
}
/* Advancing to the next cell in grid */
// If arrived to the last item in the first column, advancing to second
// The +1 is needed because i starts from 0, but days are starting from 1
if ( ( i + 1 ) == ( unsigned int )( ( daysInWeek + 1 ) / 2 ) )
{
indexX = 1;
indexY = 0;
}
else // Staying in the same column, but advancing down
{
++indexY;
}
/* Advancing to the next day */
( day == daysInWeek ) ? day = kSunday : ++day;
} // <-- end of "for (all days in week)"
// Resizing the BBox to the correct size.
// Note: dayCheckBox is surely not NULL; if it were, we would exit earlier.
height =(int )( ( dayCheckBox->Bounds().Height() + 5 ) * ( int )( ( daysInWeek + 1 ) / 2 ) - 5 );
// Formula: ( ^height of one checkbox^ + ^separator^ ) * ( ^number of days in column^ ) - ^one unneeded extra separator^
enclosingBox->ResizeTo( enclosingBox->Bounds().Width() - 10, ( int )height );
// layout->SetExplicitMaxSize( BSize( enclosingBox->Bounds().Width() - 5, ( int )height + 25 ) );
return enclosingBox;
}