TableDemoWindow(BRect frame) : BWindow(frame, "ALM Table Demo", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE) { // create a new BALMLayout and use it for this window BALMLayout* layout = new BALMLayout(); SetLayout(layout); Column* c1 = layout->AddColumn(layout->Left(), layout->Right()); Row* r1 = layout->AddRow(layout->Top(), NULL); Row* r2 = layout->AddRow(r1->Bottom(), NULL); Row* r3 = layout->AddRow(r2->Bottom(), layout->Bottom()); BButton* b1 = new BButton("A1"); layout->AddView(b1, r1, c1); b1->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_TOP)); BButton* b2 = new BButton("A2"); layout->AddView(b2, r2, c1); b2->SetExplicitAlignment(BAlignment( B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER)); BButton* b3 = new BButton("A3"); layout->AddView(b3, r3, c1); b3->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, B_ALIGN_BOTTOM)); // test size limits BSize min = layout->MinSize(); BSize max = layout->MaxSize(); SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height()); }
PinwheelWindow(BRect frame) : BWindow(frame, "ALM Pinwheel", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE) { button1 = new BButton("1"); button2 = new BButton("2"); button3 = new BButton("3"); button4 = new BButton("4"); textView1 = new BTextView("textView1"); textView1->SetText("5"); button1->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); button2->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); button3->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); button4->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); // create a new BALMLayout and use it for this window BALMLayout* layout = new BALMLayout(10, 10); BReference<XTab> xTabs[2]; BReference<YTab> yTabs[2]; layout->AddXTabs(xTabs, 2); layout->AddYTabs(yTabs, 2); BALM::BALMLayoutBuilder(this, layout) .SetInsets(5) .Add(textView1, xTabs[0], yTabs[0], xTabs[1], yTabs[1]) .StartingAt(textView1) .AddAbove(button1, layout->Top(), layout->Left()) .AddToRight(button2, layout->Right(), NULL, yTabs[1]) .AddBelow(button3, layout->Bottom(), xTabs[0]) .AddToLeft(button4, layout->Left(), yTabs[0]); // alternative setup /* SetLayout(layout); layout->SetInsets(5.); // create extra tabs BReference<XTab> x1 = layout->AddXTab(); BReference<XTab> x2 = layout->AddXTab(); BReference<YTab> y1 = layout->AddYTab(); BReference<YTab> y2 = layout->AddYTab(); layout->AddView(button1, layout->Left(), layout->Top(), x2, y1); layout->AddView(button2, x2, layout->Top(), layout->Right(), y2); layout->AddView(button3, x1, y2, layout->Right(), layout->Bottom()); layout->AddView(button4, layout->Left(), y1, x1, layout->Bottom()); layout->AddView(textView1, x1, y1, x2, y2); */ // test size limits BSize min = layout->MinSize(); BSize max = layout->MaxSize(); SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height()); }
MusicCollectionWindow::MusicCollectionWindow(BRect frame, const char* title) : BWindow(frame, title, B_DOCUMENT_WINDOW, B_AVOID_FRONT) { BView* rootView = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW); AddChild(rootView); rootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); fQueryField = new BTextControl("Search: ", "", NULL); fQueryField->SetExplicitAlignment(BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_USE_FULL_HEIGHT)); fQueryField->SetModificationMessage(new BMessage(kMsgQueryInput)); fCountView = new BStringView("Count View", "Count:"); fFileListView = new MusicFileListView("File List View"); fFileListView->SetInvocationMessage(new BMessage(kMsgItemInvoked)); BScrollView* scrollView = new BScrollView("list scroll", fFileListView, 0, true, true, B_PLAIN_BORDER); float spacing = be_control_look->DefaultItemSpacing() / 2; BALMLayout* layout = new BALMLayout(spacing); layout->SetInset(spacing); rootView->SetLayout(layout); layout->AddView(fQueryField, layout->Left(), layout->Top()); layout->AddViewToRight(fCountView, layout->Right()); layout->AddView(scrollView, layout->Left(), layout->AreaFor(fQueryField)->Bottom(), layout->Right(), layout->Bottom()); Area* area = layout->AreaFor(scrollView); area->SetLeftInset(0); area->SetRightInset(0); area->SetBottomInset(0); BSize min = layout->MinSize(); BSize max = layout->MaxSize(); SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height()); fEntryViewInterface = new ListViewListener<FileListItem>(fFileListView, fCountView); fQueryHandler = new QueryHandler(fEntryViewInterface); AddHandler(fQueryHandler); fQueryReader = new QueryReader(fQueryHandler); fQueryHandler->SetReadThread(fQueryReader); // start initial query PostMessage(kMsgQueryInput); }
FolderConfigWindow::FolderConfigWindow(BRect parent, const BMessage& settings) : BWindow(BRect(0, 0, 300, 300), B_TRANSLATE("IMAP Folders"), B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE | B_AVOID_FRONT), fSettings(settings) { BView* rootView = new BView(Bounds(), "root", B_FOLLOW_ALL, B_WILL_DRAW); AddChild(rootView); rootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); float spacing = be_control_look->DefaultItemSpacing(); BALMLayout* layout = new BALMLayout(spacing); rootView->SetLayout(layout); layout->SetInset(spacing); fFolderListView = new EditListView(B_TRANSLATE("IMAP Folders")); fFolderListView->SetExplicitPreferredSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); fApplyButton = new BButton("Apply", B_TRANSLATE("Apply"), new BMessage(kMsgApplyButton)); fQuotaView = new BStringView("quota view", B_TRANSLATE("Failed to fetch available storage.")); fQuotaView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_CENTER)); layout->AddView(fFolderListView, layout->Left(), layout->Top(), layout->Right(), layout->Bottom()); GroupItem item = GroupItem(fQuotaView) / GroupItem(fFolderListView) / (GroupItem(BSpaceLayoutItem::CreateGlue()) | GroupItem(fApplyButton)); layout->BuildLayout(item); PostMessage(kMsgInit); BSize min = layout->MinSize(); BSize max = layout->MaxSize(); SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height()); CenterIn(parent); }
StatusWindow(const char* text) : BWindow(BRect(0, 0, 10, 10), B_TRANSLATE("status"), B_MODAL_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, B_NO_WORKSPACE_ACTIVATION | B_NOT_ZOOMABLE | B_AVOID_FRONT | B_NOT_RESIZABLE) { BView* rootView = new BView(Bounds(), "root", B_FOLLOW_ALL, B_WILL_DRAW); AddChild(rootView); rootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); float spacing = be_control_look->DefaultItemSpacing(); BALMLayout* layout = new BALMLayout(spacing); rootView->SetLayout(layout); layout->SetInset(spacing); BStringView* string = new BStringView("text", text); layout->AddView(string, layout->Left(), layout->Top(), layout->Right(), layout->Bottom()); BSize min = layout->MinSize(); ResizeTo(min.Width(), min.Height()); CenterOnScreen(); }