From 1f1606e7455be02152a72b5f505213096937e1c4 Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Tue, 17 Aug 2010 16:39:02 +0000 Subject: [PATCH] Update DataTranslations to use BGroupLayout and BGridLayout instead of BALMLayout. This works around a regression with some changes I'll be committing soon, although I'd still like to find the source of it... Also do some style cleanup and remove fTranslatorNameView var which was never actually displayed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38198 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../DataTranslationsWindow.cpp | 119 ++++++------------ .../datatranslations/DataTranslationsWindow.h | 1 - src/preferences/datatranslations/Jamfile | 2 +- .../datatranslations/TranslatorListView.cpp | 16 ++- .../datatranslations/TranslatorListView.h | 4 +- 5 files changed, 51 insertions(+), 91 deletions(-) diff --git a/src/preferences/datatranslations/DataTranslationsWindow.cpp b/src/preferences/datatranslations/DataTranslationsWindow.cpp index bd2ca12c24..1de763c2d3 100644 --- a/src/preferences/datatranslations/DataTranslationsWindow.cpp +++ b/src/preferences/datatranslations/DataTranslationsWindow.cpp @@ -16,13 +16,16 @@ #include "TranslatorListView.h" #include -#include +#include #include #include #include #include +#include +#include #include #include +#include #include #include #include @@ -30,23 +33,18 @@ #include #include -#include "Area.h" -#include "BALMLayout.h" -#include "OperatorType.h" -#include "XTab.h" -#include "YTab.h" - const uint32 kMsgTranslatorInfo = 'trin'; const uint32 kMsgSelectedTranslator = 'trsl'; DataTranslationsWindow::DataTranslationsWindow() - : BWindow(BRect(0, 0, 550, 350), "DataTranslations", B_TITLED_WINDOW, + : + BWindow(BRect(0, 0, 550, 350), "DataTranslations", B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_AUTO_UPDATE_SIZE_LIMITS) { - MoveTo(dynamic_cast(be_app)->WindowCorner()); + MoveTo(static_cast(be_app)->WindowCorner()); _SetupViews(); @@ -137,32 +135,12 @@ DataTranslationsWindow::_ShowConfigView(int32 id) BMessage emptyMsg; BRect rect(0, 0, 200, 233); - status_t ret = roster->MakeConfigurationView(id, &emptyMsg, &fConfigView, &rect); - if (ret != B_OK) { - fRightBox->RemoveChild(fConfigView); - return ret; - } + status_t ret = roster->MakeConfigurationView(id, &emptyMsg, + &fConfigView, &rect); + + if (ret != B_OK) + return ret; - BRect configRect(fRightBox->Bounds()); - configRect.InsetBy(3, 3); - configRect.bottom -= 45; - float width = 0, height = 0; - if ((fConfigView->Flags() & B_SUPPORTS_LAYOUT) != 0) { - BSize configSize = fConfigView->ExplicitPreferredSize(); - width = configSize.Width(); - height = configSize.Height(); - } else { - fConfigView->GetPreferredSize(&width, &height); - } - float widen = max_c(0, width - configRect.Width()); - float heighten = max_c(0, height - configRect.Height()); - if (widen > 0 || heighten > 0) { - ResizeBy(widen, heighten); - configRect.right += widen; - configRect.bottom += heighten; - } - fConfigView->MoveTo(configRect.left, configRect.top); - fConfigView->ResizeTo(configRect.Width(), configRect.Height()); fConfigView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); // force config views to all have the same color fRightBox->AddChild(fConfigView); @@ -178,22 +156,19 @@ DataTranslationsWindow::_SetupViews() // This is NULL until a translator is // selected from the listview - // Window box - BView* mainView = new BView(Bounds(), "", B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS); - mainView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - AddChild(mainView); - // Add the translators list view - fTranslatorListView = new TranslatorListView(BRect(0, 0, 1, 1), "TransList", - B_SINGLE_SELECTION_LIST); - fTranslatorListView->SetSelectionMessage(new BMessage(kMsgSelectedTranslator)); + fTranslatorListView = new TranslatorListView("TransList"); + fTranslatorListView->SetSelectionMessage( + new BMessage(kMsgSelectedTranslator)); - BScrollView *scrollView = new BScrollView("scroll_trans", fTranslatorListView, - B_FOLLOW_LEFT | B_FOLLOW_TOP_BOTTOM, B_WILL_DRAW | B_FRAME_EVENTS, - false, true, B_FANCY_BORDER); + BScrollView *scrollView = new BScrollView("scroll_trans", + fTranslatorListView, B_WILL_DRAW | B_FRAME_EVENTS, false, + true, B_FANCY_BORDER); // Box around the config and info panels fRightBox = new BBox("Right_Side"); + fRightBox->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, + B_ALIGN_USE_FULL_HEIGHT)); // Add the translator icon view fIconView = new IconView(BRect(0, 0, 31, 31), "Icon", @@ -203,42 +178,19 @@ DataTranslationsWindow::_SetupViews() BButton *button = new BButton("STD", "Info" B_UTF8_ELLIPSIS, new BMessage(kMsgTranslatorInfo), B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE); - // Add the translator name view - fTranslatorNameView = new BStringView("TranName", "None"); - // Populate the translators list view _PopulateListView(); // Build the layout - BALMLayout *layout = new BALMLayout(); - mainView->SetLayout(layout); - - XTab *x1 = layout->AddXTab(); - XTab *x2 = layout->AddXTab(); - XTab *x3 = layout->AddXTab(); - YTab *y1 = layout->AddYTab(); - - Area *leftArea = layout->AddArea(layout->Left(), layout->Top(), - x1, layout->Bottom(), scrollView); - leftArea->SetLeftInset(10); - leftArea->SetTopInset(10); - leftArea->SetBottomInset(10); - - Area *rightArea = layout->AddArea(x1, layout->Top(), layout->Right(), y1, fRightBox); - rightArea->SetLeftInset(10); - rightArea->SetTopInset(10); - rightArea->SetRightInset(10); - rightArea->SetBottomInset(10); - - Area *iconArea = layout->AddArea(x1, y1, x2, layout->Bottom(), fIconView); - iconArea->SetLeftInset(10); - iconArea->SetBottomInset(10); - - Area *infoButtonArea = layout->AddArea(x3, y1, layout->Right(), layout->Bottom(), button); - infoButtonArea->SetRightInset(10); - infoButtonArea->SetBottomInset(10); - - layout->AddConstraint(3.0, x1, -1.0, layout->Right(), OperatorType(EQ), 0.0); + float padding = be_control_look->DefaultItemSpacing(); + BLayoutBuilder::Group<>(this, B_HORIZONTAL, padding) + .SetInsets(padding, padding, padding, padding) + .Add(scrollView, 3) + .AddGrid(padding, padding, 6) + .SetInsets(0, 0, 0, 0) + .Add(fRightBox, 0, 0, 3, 1) + .Add(fIconView, 0, 1) + .Add(button, 2, 1); fTranslatorListView->MakeFocus(); fTranslatorListView->Select(0); @@ -248,7 +200,7 @@ DataTranslationsWindow::_SetupViews() bool DataTranslationsWindow::QuitRequested() { - BPoint pt(Frame().left, Frame().top); + BPoint pt(Frame().LeftTop()); dynamic_cast(be_app)->SetWindowCorner(pt); be_app->PostMessage(B_QUIT_REQUESTED); @@ -275,7 +227,7 @@ DataTranslationsWindow::_ShowInfoAlert(int32 id) message << "\nInfo: " << info << "\n\nPath:\n" << path.Path() << "\n"; - BAlert *alert = new BAlert("info", message.String(), "OK"); + BAlert* alert = new BAlert("info", message.String(), "OK"); BTextView *view = alert->TextView(); BFont font; @@ -313,7 +265,7 @@ DataTranslationsWindow::MessageReceived(BMessage *message) break; } - TranslatorItem* item = dynamic_cast(fTranslatorListView->ItemAt(selected)); + TranslatorItem* item = fTranslatorListView->TranslatorAt(selected); if (item != NULL) _ShowInfoAlert(item->ID()); break; @@ -328,12 +280,11 @@ DataTranslationsWindow::MessageReceived(BMessage *message) if (selected < 0) { // If none selected, clear the old one fIconView->DrawIcon(false); - fTranslatorNameView->SetText(""); fRightBox->RemoveChild(fConfigView); break; } - TranslatorItem* item = dynamic_cast(fTranslatorListView->ItemAt(selected)); + TranslatorItem* item = fTranslatorListView->TranslatorAt(selected); if (item == NULL) break; @@ -344,7 +295,6 @@ DataTranslationsWindow::MessageReceived(BMessage *message) int32 version = 0; BPath path; _GetTranslatorInfo(item->ID(), name, info, version, path); - fTranslatorNameView->SetText(path.Leaf()); fIconView->SetIcon(path); break; } @@ -370,7 +320,8 @@ DataTranslationsWindow::MessageReceived(BMessage *message) int32 index = 0, id; while (message->FindInt32("translator_id", index++, &id) == B_OK) { for (int32 i = 0; i < fTranslatorListView->CountItems(); i++) { - TranslatorItem* item = dynamic_cast(fTranslatorListView->ItemAt(i)); + TranslatorItem* item = fTranslatorListView->TranslatorAt(i); + if (item == NULL) continue; diff --git a/src/preferences/datatranslations/DataTranslationsWindow.h b/src/preferences/datatranslations/DataTranslationsWindow.h index 8668c61a03..f064cb4b5a 100644 --- a/src/preferences/datatranslations/DataTranslationsWindow.h +++ b/src/preferences/datatranslations/DataTranslationsWindow.h @@ -49,7 +49,6 @@ class DataTranslationsWindow : public BWindow { // the translator config view IconView *fIconView; - BStringView *fTranslatorNameView; }; #endif // DATA_TRANSLATIONS_WINDOW_H diff --git a/src/preferences/datatranslations/Jamfile b/src/preferences/datatranslations/Jamfile index ef229d93ea..624ce1ffcd 100644 --- a/src/preferences/datatranslations/Jamfile +++ b/src/preferences/datatranslations/Jamfile @@ -9,6 +9,6 @@ Preference DataTranslations : IconView.cpp TranslatorListView.cpp - : be translation $(TARGET_LIBSUPC++) liblpsolve55.so liblinprog.so libalm.so + : be translation $(TARGET_LIBSUPC++) : DataTranslations.rdef ; diff --git a/src/preferences/datatranslations/TranslatorListView.cpp b/src/preferences/datatranslations/TranslatorListView.cpp index 36ed655980..7e4da4d674 100644 --- a/src/preferences/datatranslations/TranslatorListView.cpp +++ b/src/preferences/datatranslations/TranslatorListView.cpp @@ -30,7 +30,8 @@ compare_items(const void* a, const void* b) TranslatorItem::TranslatorItem(translator_id id, const char* name) - : BStringItem(name), + : + BStringItem(name), fID(id) { } @@ -44,9 +45,9 @@ TranslatorItem::~TranslatorItem() // #pragma mark - -TranslatorListView::TranslatorListView(BRect rect, const char *name, - list_view_type type) - : BListView(rect, name, B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES) +TranslatorListView::TranslatorListView(const char *name, list_view_type type) + : + BListView(name, B_SINGLE_SELECTION_LIST) { } @@ -56,6 +57,13 @@ TranslatorListView::~TranslatorListView() } +TranslatorItem* +TranslatorListView::TranslatorAt(int32 index) const +{ + return dynamic_cast(ItemAt(index)); +} + + void TranslatorListView::MessageReceived(BMessage *message) { diff --git a/src/preferences/datatranslations/TranslatorListView.h b/src/preferences/datatranslations/TranslatorListView.h index 709381b811..a5686f67f5 100644 --- a/src/preferences/datatranslations/TranslatorListView.h +++ b/src/preferences/datatranslations/TranslatorListView.h @@ -28,10 +28,12 @@ class TranslatorItem : public BStringItem { class TranslatorListView : public BListView { public: - TranslatorListView(BRect rect, const char *name, + TranslatorListView(const char *name, list_view_type type = B_SINGLE_SELECTION_LIST); virtual ~TranslatorListView(); + TranslatorItem* TranslatorAt(int32 index) const; + virtual void MessageReceived(BMessage *message); virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *msg);