Author: yourpalal Date: 2011-01-11 19:09:19 +0100 (Tue, 11 Jan 2011) New Revision: 40204 Changeset: http://dev.haiku-os.org/changeset/40204 Modified: haiku/trunk/src/servers/bluetooth/Output.cpp haiku/trunk/src/servers/bluetooth/Output.h Log: Patch by Hamish Morrison as part of GCI. Refactor Bluetooth server output window gui code to use the Layout API. One small change by me as well. Modified: haiku/trunk/src/servers/bluetooth/Output.cpp =================================================================== --- haiku/trunk/src/servers/bluetooth/Output.cpp 2011-01-11 17:44:46 UTC (rev 40203) +++ haiku/trunk/src/servers/bluetooth/Output.cpp 2011-01-11 18:09:19 UTC (rev 40204) @@ -1,7 +1,8 @@ /* - * Copyright BeNet Team (Original Project) + * Copyright 2011 Hamish Morrison, hamish@xxxxxxxxxxx * Copyright 2010 Oliver Ruiz Dorantes, oliver.ruiz.dorantes_at_gmail.com * Copyright 2010 Dan-Matei Epure, mateiepure@xxxxxxxxx + * Copyright BeNet Team (Original Project) * All rights reserved. Distributed under the terms of the MIT License. */ #ifndef _Output_h @@ -10,6 +11,7 @@ #include <Looper.h> #include <String.h> + #include <stdio.h> /* @@ -19,68 +21,51 @@ */ -OutputView::OutputView(BRect frame) +OutputView::OutputView() : - BView(frame, "OutputView", B_FOLLOW_ALL, B_WILL_DRAW) + BGroupView("OutputView", B_VERTICAL, B_WILL_DRAW) { - SetViewColor(216, 216, 216); - rgb_color color = {255, 255, 255}; - - BRect b = Bounds(); - AddChild(fTextView = new BTextView(BRect(b.left + 5, b.top + 5, b.right - - B_V_SCROLL_BAR_WIDTH - 6, b.bottom - 5), "Output", BRect(b.left + 5, - b.top + 5, b.right - B_V_SCROLL_BAR_WIDTH - 6, b.bottom - 5), NULL, - &color, B_FOLLOW_ALL_SIDES, B_WILL_DRAW)); + rgb_color textColor = {255, 255, 255}; + fTextView = new BTextView("Output", NULL, &textColor, B_WILL_DRAW); fTextView->SetViewColor(0, 0, 100); fTextView->MakeEditable(false); - - AddChild(fScrollBar = new BScrollBar(BRect(b.right - B_V_SCROLL_BAR_WIDTH - 5, - b.top + 5, b.right - 5, b.bottom - 5), - "outputScroll", fTextView, 0, 0, B_VERTICAL)); + BScrollView* scrollView = new BScrollView("ScrollView", fTextView, 0, false, true); + + BLayoutBuilder::Group<>(this).Add(scrollView); } -void -OutputView::FrameResized(float width, float height) -{ - BView::FrameResized(width, height); - fTextView->SetTextRect(BRect(0, 0, width, height)); -} - - // Singleton implementation Output* Output::sInstance = 0; + Output::Output() : BWindow(BRect(200, 200, 800, 800), "Output", B_TITLED_WINDOW, B_NOT_ZOOMABLE) { - BRect b = Bounds(); - fTabsList = new BList(20); fOutputViewsList = new BList(20); - BView* resetView = new BView(BRect(b.left, b.bottom - 25, b.right, b.bottom), - "resetView", B_FOLLOW_BOTTOM | B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW); - resetView->SetViewColor(216, 216, 216); - resetView->AddChild(fReset = new BButton(BRect(1, 1, 61, 20), "reset all", - "Clear", new BMessage(kMsgOutputReset), B_FOLLOW_BOTTOM)); - resetView->AddChild(fResetAll = new BButton(BRect(70, 1, 130, 20), "reset", - "Clear all", new BMessage(kMsgOutputResetAll), B_FOLLOW_BOTTOM)); - AddChild(resetView); + fReset = new BButton("reset all", "Clear", + new BMessage(kMsgOutputReset), B_WILL_DRAW); + fResetAll = new BButton("reset", "Clear all", + new BMessage(kMsgOutputResetAll), B_WILL_DRAW); + + fTabView = new BTabView("tab_view", B_WIDTH_FROM_LABEL, + B_FULL_UPDATE_ON_RESIZE | B_WILL_DRAW | B_NAVIGABLE_JUMP); - fTabView = new BTabView(BRect(b.left, b.top, b.right, b.bottom - 25), "tab_view", - B_WIDTH_FROM_LABEL ,B_FOLLOW_ALL, B_FULL_UPDATE_ON_RESIZE | B_WILL_DRAW - | B_NAVIGABLE_JUMP ); - fTabView->SetViewColor(216, 216, 216); - - fBounds = fTabView->Bounds(); - fBounds.bottom -= fTabView->TabHeight(); - - fTabView->AddTab(fAll = new OutputView(fBounds), fAllTab = new BTab()); - fAllTab->SetLabel("All"); - - AddChild(fTabView); + fTabView->AddTab(fAll = new OutputView(), fAllTab = new BTab()); + fAllTab->SetLabel("All"); + + BLayoutBuilder::Group<>(this, B_VERTICAL, 5) + .Add(fTabView) + .AddGroup(B_HORIZONTAL, 0) + .Add(fReset) + .AddGlue() + .Add(fResetAll) + .End() + .SetInsets(5, 5, 5, 5); + /* MoveTo( Preferences::Instance()->OutputX(), Preferences::Instance()->OutputY()); @@ -95,8 +80,7 @@ BTab* customTab; Lock(); - fTabView->AddTab(customOutput = new OutputView(fBounds), customTab = - new BTab()); + fTabView->AddTab(customOutput = new OutputView(), customTab = new BTab()); customTab->SetLabel(text); fTabView->Invalidate(); Unlock(); @@ -176,7 +160,7 @@ int done; va_start (arg, format); - done = vsprintf (string, format, arg); + done = vsnprintf(string, 200, format, arg); va_end (arg); Post(string, index); Modified: haiku/trunk/src/servers/bluetooth/Output.h =================================================================== --- haiku/trunk/src/servers/bluetooth/Output.h 2011-01-11 17:44:46 UTC (rev 40203) +++ haiku/trunk/src/servers/bluetooth/Output.h 2011-01-11 18:09:19 UTC (rev 40204) @@ -1,4 +1,5 @@ /* + * Copyright 2011 Hamish Morrison, hamish@xxxxxxxxxxx * Copyright 2010 Oliver Ruiz Dorantes * Copyright 2010 Dan-Matei Epure, mateiepure@xxxxxxxxx * Copyright BeNet Team (Original Project) @@ -7,28 +8,27 @@ #ifndef _Output_h #define _Output_h -#include <Window.h> -#include <TextView.h> -#include <ScrollBar.h> #include <Button.h> +#include <LayoutBuilder.h> +#include <ScrollView.h> #include <TabView.h> +#include <TextView.h> +#include <Window.h> const uint32 kMsgOutputReset = 'outr'; const uint32 kMsgOutputResetAll = 'opra'; -class OutputView : public BView +class OutputView : public BGroupView { public: - OutputView(BRect frame); - virtual void FrameResized(float width, float height); + OutputView(); void Add(const char* text) {fTextView->Insert(text);} void Clear() {fTextView->Delete(0, fTextView->TextLength());} private: BTextView* fTextView; - BScrollBar* fScrollBar; }; @@ -67,8 +67,6 @@ BList* fTabsList; BList* fOutputViewsList; - BRect fBounds; - // Bounds for tabs };