resizing behavior improvements, code cleanup

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6135 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty
2004-01-18 06:04:22 +00:00
parent 3b3284c27f
commit 1e389a3a80
3 changed files with 63 additions and 60 deletions
@@ -12,11 +12,10 @@
DataTranslationsView::DataTranslationsView(BRect rect, const char *name, list_view_type type = B_SINGLE_SELECTION_LIST) : DataTranslationsView::DataTranslationsView(BRect rect, const char *name, list_view_type type = B_SINGLE_SELECTION_LIST) :
BListView(rect, name, B_SINGLE_SELECTION_LIST) BListView(rect, name, B_SINGLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES)
{ {
messagerunner = NULL; messagerunner = NULL;
SetViewColor(217,217,217);
} }
void DataTranslationsView::MessageReceived(BMessage *message) void DataTranslationsView::MessageReceived(BMessage *message)
@@ -16,7 +16,7 @@
#define DATA_TRANSLATIONS_WINDOW_BOTTOM 300 #define DATA_TRANSLATIONS_WINDOW_BOTTOM 300
DataTranslationsWindow::DataTranslationsWindow() DataTranslationsWindow::DataTranslationsWindow()
: BWindow(BRect(0,0,DATA_TRANSLATIONS_WINDOW_RIGHT,DATA_TRANSLATIONS_WINDOW_BOTTOM), "DataTranslations", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) : BWindow(BRect(0,0,DATA_TRANSLATIONS_WINDOW_RIGHT,DATA_TRANSLATIONS_WINDOW_BOTTOM), "DataTranslations", B_TITLED_WINDOW, B_NOT_ZOOMABLE)
{ {
BScreen screen; BScreen screen;
@@ -86,8 +86,20 @@ void DataTranslationsWindow::Trans_by_ID(int32 id)
// Konf->SetViewColor(ui_color(B_BACKGROUND_COLOR)); // Konf->SetViewColor(ui_color(B_BACKGROUND_COLOR));
if (has_view) if (has_view)
{ {
Konf->ResizeTo(230, 233); BRect konfRect(rBox->Bounds());
Konf->SetFlags(B_WILL_DRAW | B_NAVIGABLE); konfRect.InsetBy(3,3);
konfRect.bottom -= 45;
float width = 0, height = 0;
Konf->GetPreferredSize(&width,&height);
float widen = max_c(0,width-konfRect.Width());
float heighten = max_c(0,height-konfRect.Height());
if ((widen > 0) || (heighten > 0)) {
ResizeBy(widen,heighten);
konfRect.right += widen;
konfRect.bottom += heighten;
}
Konf->MoveTo(konfRect.left,konfRect.top);
Konf->ResizeTo(konfRect.Width(), konfRect.Height());
rBox->AddChild(Konf); rBox->AddChild(Konf);
} }
@@ -101,68 +113,62 @@ void DataTranslationsWindow::BuildView()
newIcon = false; newIcon = false;
Install_Done = false; Install_Done = false;
BRect r( 300, 250, 380, 270 ); // Pos: Info-Button BRect all(0, 0, 400, 300); // Fenster-Groesse
BRect all( 0, 0, 400, 300); // Fenster-Groesse
BRect cv( 150, 13, 387, 245); // ConfigView & hosting Box
BRect mau( 146, 8, 390, 290); // Grenz-Box around ConfView
BRect DTN_pos( 195 , 245, 298 , 265); // Pos: Dateiname
BRect ic ( 156 , 245, 188 , 277); // Pos: TrackerIcon
Konf = new BView(cv, "KONF", B_NOT_RESIZABLE, B_WILL_DRAW );
// Konf->SetViewColor(ui_color(B_BACKGROUND_COLOR));
rBox = new BBox(cv, "Right_Side");
gBox = new BBox(mau, "Grau");
Icon = new BView(ic, "Ikon", B_NOT_RESIZABLE, B_WILL_DRAW | B_PULSE_NEEDED);
Icon->SetDrawingMode(B_OP_OVER);
// Icon->SetViewColor(ui_color(B_BACKGROUND_COLOR));
Icon->SetHighColor(217,217,217);
Icon_bit = new BBitmap(BRect(0, 0, 31, 31), B_CMAP8, true, false);
dButton = new BButton(r, "STD", "Info. . .", new BMessage(BUTTON_MSG));
fBox = new BBox(all, "All_Window", B_FOLLOW_ALL_SIDES, fBox = new BBox(all, "All_Window", B_FOLLOW_ALL_SIDES,
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP, B_WILL_DRAW | B_FRAME_EVENTS,
B_PLAIN_BORDER); B_PLAIN_BORDER);
AddChild(fBox);
BRect configView( 150, 10, 390, 290);
rBox = new BBox(configView, "Right_Side", B_FOLLOW_ALL_SIDES);
fBox->AddChild(rBox);
r.Set( 10, 10, 120, 288); // List View BRect innerRect(rBox->Bounds());
innerRect.InsetBy(8,8);
liste = new DataTranslationsView(r, "Transen", B_SINGLE_SELECTION_LIST);
liste->SetSelectionMessage(new BMessage(SEL_CHANGE)); BRect iconRect(0,0,31,31);
iconRect.OffsetTo(innerRect.left,innerRect.bottom-iconRect.Height());
Icon = new BView(iconRect, "Ikon", B_FOLLOW_LEFT | B_FOLLOW_BOTTOM,
B_WILL_DRAW | B_FRAME_EVENTS);
Icon->SetDrawingMode(B_OP_OVER);
//Icon->SetViewColor(ui_color(B_BACKGROUND_COLOR));
Icon->SetHighColor(217,217,217);
rBox->AddChild(Icon);
Icon_bit = new BBitmap(BRect(0, 0, 31, 31), B_CMAP8, true);
BRect infoRect(0,0,80,20);
infoRect.OffsetTo(innerRect.right-infoRect.Width(),innerRect.bottom-10-infoRect.Height());
dButton = new BButton(infoRect, "STD", "Info...", new BMessage(BUTTON_MSG),
B_FOLLOW_BOTTOM | B_FOLLOW_RIGHT,
B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE);
rBox->AddChild(dButton);
DTN = new BStringView(DTN_pos, "DataName", "Test", B_NOT_RESIZABLE); BRect dataNameRect( iconRect.right+5 , iconRect.top,
infoRect.left-5 , iconRect.bottom);
DTN = new BStringView(dataNameRect, "DataName", "Test", B_FOLLOW_LEFT | B_FOLLOW_BOTTOM);
// DTN->SetViewColor(ui_color(B_BACKGROUND_COLOR)); // DTN->SetViewColor(ui_color(B_BACKGROUND_COLOR));
rBox->AddChild(DTN);
BRect konfRect(innerRect);
konfRect.bottom = iconRect.top;
Konf = new BView(konfRect, "KONF", B_FOLLOW_ALL_SIDES,
B_WILL_DRAW | B_FRAME_EVENTS );
// Konf->SetViewColor(ui_color(B_BACKGROUND_COLOR));
rBox->AddChild(Konf);
BRect listRect(10, 10, 120, 288); // List View
liste = new DataTranslationsView(listRect, "Transen", B_SINGLE_SELECTION_LIST);
liste->SetSelectionMessage(new BMessage(SEL_CHANGE));
// Put list into a BScrollView, to get that nice srcollbar
tListe = new BScrollView("scroll_trans", liste, B_FOLLOW_LEFT | B_FOLLOW_TOP_BOTTOM,
B_WILL_DRAW | B_FRAME_EVENTS, false, true, B_FANCY_BORDER);
fBox->AddChild(tListe);
// Here we add the names of all installed translators // Here we add the names of all installed translators
WriteTrans(); WriteTrans();
// Setting up the Box around my LView
r.Set( 8, 8, 123, 288); // Box around the List
lBox = new BBox(r, "List-Box");
lBox->SetBorder(B_NO_BORDER);
lBox->SetViewColor(255,255,255);
// Put list into a BScrollView, to get that nice srcollbar
tListe = new BScrollView("scroll_trans", liste, B_FOLLOW_LEFT | B_FOLLOW_TOP, 0, false, true, B_FANCY_BORDER);
rBox->SetBorder(B_NO_BORDER);
rBox->AddChild(Konf);
rBox->SetFlags(B_NAVIGABLE_JUMP);
// Attach Views to my Window
AddChild(dButton);
AddChild(tListe);
AddChild(rBox);
AddChild(fBox);
AddChild(Icon);
AddChild(DTN);
AddChild(lBox);
AddChild(gBox);
// Set the focus // Set the focus
liste->MakeFocus(); liste->MakeFocus();
@@ -52,9 +52,7 @@ private:
BButton* dButton; // Default-Button BButton* dButton; // Default-Button
BBox* fBox; // Full-Window Box BBox* fBox; // Full-Window Box
BScrollView* tListe; // To get that fancy scrollbar BScrollView* tListe; // To get that fancy scrollbar
BBox* lBox; // Box around list
BBox* rBox; // Box hosting Config View BBox* rBox; // Box hosting Config View
BBox* gBox; // Box around Config View, funny border
DataTranslationsView* liste; // Improved list of Translators DataTranslationsView* liste; // Improved list of Translators