152a38012Sejakowatz //------------------------------------------------------------------------------ 252a38012Sejakowatz // Copyright (c) 2001-2002, OpenBeOS 352a38012Sejakowatz // 452a38012Sejakowatz // Permission is hereby granted, free of charge, to any person obtaining a 552a38012Sejakowatz // copy of this software and associated documentation files (the "Software"), 652a38012Sejakowatz // to deal in the Software without restriction, including without limitation 752a38012Sejakowatz // the rights to use, copy, modify, merge, publish, distribute, sublicense, 852a38012Sejakowatz // and/or sell copies of the Software, and to permit persons to whom the 952a38012Sejakowatz // Software is furnished to do so, subject to the following conditions: 1052a38012Sejakowatz // 1152a38012Sejakowatz // The above copyright notice and this permission notice shall be included in 1252a38012Sejakowatz // all copies or substantial portions of the Software. 1352a38012Sejakowatz // 1452a38012Sejakowatz // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1552a38012Sejakowatz // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1652a38012Sejakowatz // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1752a38012Sejakowatz // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1852a38012Sejakowatz // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1952a38012Sejakowatz // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 2052a38012Sejakowatz // DEALINGS IN THE SOFTWARE. 2152a38012Sejakowatz // 2252a38012Sejakowatz // File Name: StatusBar.cpp 2352a38012Sejakowatz // Author: Marc Flerackers (mflerackers@androme.be) 2452a38012Sejakowatz // Description: BStatusBar displays a "percentage-of-completion" gauge. 2552a38012Sejakowatz //------------------------------------------------------------------------------ 2652a38012Sejakowatz 2752a38012Sejakowatz // Standard Includes ----------------------------------------------------------- 2852a38012Sejakowatz #include <string.h> 29*eb997429SMarc Flerackers #include <malloc.h> 3052a38012Sejakowatz 3152a38012Sejakowatz // System Includes ------------------------------------------------------------- 3252a38012Sejakowatz #include <StatusBar.h> 3352a38012Sejakowatz #include <Message.h> 3452a38012Sejakowatz #include <Errors.h> 3552a38012Sejakowatz 3652a38012Sejakowatz // Project Includes ------------------------------------------------------------ 3752a38012Sejakowatz 3852a38012Sejakowatz // Local Includes -------------------------------------------------------------- 3952a38012Sejakowatz 4052a38012Sejakowatz // Local Defines --------------------------------------------------------------- 4152a38012Sejakowatz 4252a38012Sejakowatz // Globals --------------------------------------------------------------------- 4352a38012Sejakowatz 4452a38012Sejakowatz //------------------------------------------------------------------------------ 4552a38012Sejakowatz BStatusBar::BStatusBar(BRect frame, const char *name, const char *label, 4652a38012Sejakowatz const char *trailingLabel) 47*eb997429SMarc Flerackers : BView(frame, name, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW), 4852a38012Sejakowatz fText(NULL), 4952a38012Sejakowatz fTrailingText(NULL), 5052a38012Sejakowatz fMax(100.0f), 5152a38012Sejakowatz fCurrent(0.0f), 5252a38012Sejakowatz fBarHeight(-1.0f), 5352a38012Sejakowatz fTrailingWidth(-1.0f), 5452a38012Sejakowatz fEraseText(-1.0f), 5552a38012Sejakowatz fEraseTrailingText(-1.0f), 5652a38012Sejakowatz fCustomBarHeight(false) 5752a38012Sejakowatz 5852a38012Sejakowatz { 5952a38012Sejakowatz fLabel = strdup(label); 6052a38012Sejakowatz fTrailingLabel = strdup(trailingLabel); 6152a38012Sejakowatz 6252a38012Sejakowatz fBarColor.red = 50; 6352a38012Sejakowatz fBarColor.green = 150; 6452a38012Sejakowatz fBarColor.blue = 255; 6552a38012Sejakowatz fBarColor.alpha = 255; 6652a38012Sejakowatz } 6752a38012Sejakowatz //------------------------------------------------------------------------------ 6852a38012Sejakowatz BStatusBar::BStatusBar(BMessage *archive) 6952a38012Sejakowatz : BView(archive), 7052a38012Sejakowatz fTrailingWidth(-1.0f), 7152a38012Sejakowatz fEraseText(-1.0f), 7252a38012Sejakowatz fEraseTrailingText(-1.0f), 7352a38012Sejakowatz fCustomBarHeight(false) 7452a38012Sejakowatz { 7552a38012Sejakowatz if (archive->FindFloat("_high", &fBarHeight) != B_OK) 7652a38012Sejakowatz fBarHeight = -1.0f; 7752a38012Sejakowatz 7852a38012Sejakowatz const void *ptr; 7952a38012Sejakowatz 8052a38012Sejakowatz if (archive->FindData("_bcolor", B_INT32_TYPE, &ptr, NULL ) != B_OK) 8152a38012Sejakowatz { 8252a38012Sejakowatz fBarColor.red = 50; 8352a38012Sejakowatz fBarColor.green = 150; 8452a38012Sejakowatz fBarColor.blue = 255; 8552a38012Sejakowatz fBarColor.alpha = 255; 8652a38012Sejakowatz } 8752a38012Sejakowatz else 8852a38012Sejakowatz memcpy(&fBarColor, ptr, sizeof(rgb_color)); 8952a38012Sejakowatz 9052a38012Sejakowatz if (archive->FindFloat("_val", &fCurrent) != B_OK) 9152a38012Sejakowatz fCurrent = 0.0f; 9252a38012Sejakowatz 9352a38012Sejakowatz if (archive->FindFloat("_max", &fMax) != B_OK) 9452a38012Sejakowatz fMax = 100.0f; 9552a38012Sejakowatz 9652a38012Sejakowatz const char *string; 9752a38012Sejakowatz 9852a38012Sejakowatz if (archive->FindString("_text", &string) != B_OK) 9952a38012Sejakowatz fText = NULL; 10052a38012Sejakowatz else 10152a38012Sejakowatz fText = strdup(string); 10252a38012Sejakowatz 10352a38012Sejakowatz if (archive->FindString("_ttext", &string) != B_OK) 10452a38012Sejakowatz fTrailingText = NULL; 10552a38012Sejakowatz else 10652a38012Sejakowatz fTrailingText = strdup(string); 10752a38012Sejakowatz 10852a38012Sejakowatz if (archive->FindString("_label", &string) != B_OK) 10952a38012Sejakowatz fLabel = NULL; 11052a38012Sejakowatz else 11152a38012Sejakowatz fLabel = strdup(string); 11252a38012Sejakowatz 11352a38012Sejakowatz if ( archive->FindString("_tlabel", &string) != B_OK) 11452a38012Sejakowatz fTrailingLabel = NULL; 11552a38012Sejakowatz else 11652a38012Sejakowatz fTrailingLabel = strdup(string); 11752a38012Sejakowatz } 11852a38012Sejakowatz //------------------------------------------------------------------------------ 11952a38012Sejakowatz BStatusBar::~BStatusBar() 12052a38012Sejakowatz { 12152a38012Sejakowatz if (fLabel) 122*eb997429SMarc Flerackers free(fLabel); 12352a38012Sejakowatz 12452a38012Sejakowatz if (fTrailingLabel) 125*eb997429SMarc Flerackers free(fTrailingLabel); 12652a38012Sejakowatz 12752a38012Sejakowatz if (fText) 128*eb997429SMarc Flerackers free(fText); 12952a38012Sejakowatz 13052a38012Sejakowatz if (fTrailingText) 131*eb997429SMarc Flerackers free(fTrailingText); 13252a38012Sejakowatz } 13352a38012Sejakowatz //------------------------------------------------------------------------------ 13452a38012Sejakowatz BArchivable *BStatusBar::Instantiate(BMessage *archive) 13552a38012Sejakowatz { 13652a38012Sejakowatz if (validate_instantiation(archive, "BStatusBar")) 13752a38012Sejakowatz return new BStatusBar(archive); 13852a38012Sejakowatz 13952a38012Sejakowatz return NULL; 14052a38012Sejakowatz } 14152a38012Sejakowatz //------------------------------------------------------------------------------ 14252a38012Sejakowatz status_t BStatusBar::Archive(BMessage *archive, bool deep) const 14352a38012Sejakowatz { 144*eb997429SMarc Flerackers BView::Archive(archive, deep); 14552a38012Sejakowatz 14652a38012Sejakowatz if (fBarHeight != 16.0f) 147*eb997429SMarc Flerackers archive->AddFloat("_high", fBarHeight); 14852a38012Sejakowatz 14952a38012Sejakowatz // TODO: Should we compare the color with (50, 150, 255) ? 150*eb997429SMarc Flerackers archive->AddData("_bcolor", B_INT32_TYPE, &fBarColor, sizeof( int32 )); 15152a38012Sejakowatz 15252a38012Sejakowatz if (fCurrent != 0.0f) 153*eb997429SMarc Flerackers archive->AddFloat("_val", fCurrent); 15452a38012Sejakowatz 15552a38012Sejakowatz if (fMax != 100.0f ) 156*eb997429SMarc Flerackers archive->AddFloat("_max", fMax); 15752a38012Sejakowatz 15852a38012Sejakowatz if (fText ) 159*eb997429SMarc Flerackers archive->AddString("_text", fText); 16052a38012Sejakowatz 16152a38012Sejakowatz if (fTrailingText) 162*eb997429SMarc Flerackers archive->AddString("_ttext", fTrailingText); 16352a38012Sejakowatz 16452a38012Sejakowatz if (fLabel) 165*eb997429SMarc Flerackers archive->AddString("_label", fLabel); 16652a38012Sejakowatz 16752a38012Sejakowatz if (fTrailingLabel) 168*eb997429SMarc Flerackers archive->AddString ("_tlabel", fTrailingLabel); 16952a38012Sejakowatz 170*eb997429SMarc Flerackers return B_OK; 17152a38012Sejakowatz } 17252a38012Sejakowatz //------------------------------------------------------------------------------ 17352a38012Sejakowatz void BStatusBar::AttachedToWindow() 17452a38012Sejakowatz { 17552a38012Sejakowatz float width, height; 17652a38012Sejakowatz GetPreferredSize(&width, &height); 17752a38012Sejakowatz ResizeTo(Frame().Width(), height); 17852a38012Sejakowatz 17952a38012Sejakowatz if (Parent()) 18052a38012Sejakowatz SetViewColor(Parent ()->ViewColor()); 18152a38012Sejakowatz } 18252a38012Sejakowatz //------------------------------------------------------------------------------ 18352a38012Sejakowatz void BStatusBar::MessageReceived(BMessage *message) 18452a38012Sejakowatz { 18552a38012Sejakowatz switch(message->what) 18652a38012Sejakowatz { 18752a38012Sejakowatz case B_UPDATE_STATUS_BAR: 18852a38012Sejakowatz { 18952a38012Sejakowatz float delta; 19052a38012Sejakowatz const char *text = NULL, *trailing_text = NULL; 19152a38012Sejakowatz 19252a38012Sejakowatz message->FindFloat("delta", &delta); 19352a38012Sejakowatz message->FindString("text", &text); 194*eb997429SMarc Flerackers message->FindString("trailing text", &trailing_text); 19552a38012Sejakowatz 19652a38012Sejakowatz Update(delta, text, trailing_text); 19752a38012Sejakowatz 19852a38012Sejakowatz break; 19952a38012Sejakowatz } 20052a38012Sejakowatz case B_RESET_STATUS_BAR: 20152a38012Sejakowatz { 20252a38012Sejakowatz const char *label = NULL, *trailing_label = NULL; 20352a38012Sejakowatz 20452a38012Sejakowatz message->FindString("label", &label); 205*eb997429SMarc Flerackers message->FindString("trailing label", &trailing_label); 20652a38012Sejakowatz 20752a38012Sejakowatz Reset(label, trailing_label); 20852a38012Sejakowatz 20952a38012Sejakowatz break; 21052a38012Sejakowatz } 21152a38012Sejakowatz default: 21252a38012Sejakowatz BView::MessageReceived ( message ); 21352a38012Sejakowatz } 21452a38012Sejakowatz } 21552a38012Sejakowatz //------------------------------------------------------------------------------ 21652a38012Sejakowatz void BStatusBar::Draw(BRect updateRect) 21752a38012Sejakowatz { 21852a38012Sejakowatz float width = Frame().Width(); 21952a38012Sejakowatz 22052a38012Sejakowatz if (fLabel) 22152a38012Sejakowatz { 22252a38012Sejakowatz font_height fh; 22352a38012Sejakowatz 22452a38012Sejakowatz GetFontHeight(&fh); 22552a38012Sejakowatz 22652a38012Sejakowatz SetHighColor(0, 0, 0); 227*eb997429SMarc Flerackers DrawString(fLabel, BPoint(0.0f, (float)ceil(fh.ascent + fh.leading))); 22852a38012Sejakowatz } 22952a38012Sejakowatz 230*eb997429SMarc Flerackers BRect rect(0.0f, 16.0f, width, 16.0f + fBarHeight); 23152a38012Sejakowatz 23252a38012Sejakowatz // First bevel 23352a38012Sejakowatz SetHighColor(tint_color(ui_color ( B_PANEL_BACKGROUND_COLOR ), B_DARKEN_1_TINT)); 23452a38012Sejakowatz StrokeLine(BPoint(rect.left, rect.bottom), BPoint(rect.left, rect.top)); 23552a38012Sejakowatz StrokeLine(BPoint(rect.right, rect.top)); 23652a38012Sejakowatz 23752a38012Sejakowatz SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), B_LIGHTEN_2_TINT)); 23852a38012Sejakowatz StrokeLine(BPoint(rect.left + 1.0f, rect.bottom), BPoint(rect.right, rect.bottom)); 23952a38012Sejakowatz StrokeLine(BPoint(rect.right, rect.top + 1.0f)); 24052a38012Sejakowatz 24152a38012Sejakowatz rect.InsetBy(1.0f, 1.0f); 24252a38012Sejakowatz 24352a38012Sejakowatz // Second bevel 24452a38012Sejakowatz SetHighColor(tint_color(ui_color ( B_PANEL_BACKGROUND_COLOR ), B_DARKEN_4_TINT)); 24552a38012Sejakowatz StrokeLine(BPoint(rect.left, rect.bottom), BPoint(rect.left, rect.top)); 24652a38012Sejakowatz StrokeLine(BPoint(rect.right, rect.top)); 24752a38012Sejakowatz 24852a38012Sejakowatz SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR)); 24952a38012Sejakowatz StrokeLine(BPoint(rect.left + 1.0f, rect.bottom), BPoint(rect.right, rect.bottom)); 25052a38012Sejakowatz StrokeLine(BPoint(rect.right, rect.top + 1.0f)); 25152a38012Sejakowatz 25252a38012Sejakowatz rect.InsetBy(1.0f, 1.0f); 25352a38012Sejakowatz 25452a38012Sejakowatz // Filling 25552a38012Sejakowatz SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), B_LIGHTEN_MAX_TINT)); 25652a38012Sejakowatz FillRect(rect); 25752a38012Sejakowatz 25852a38012Sejakowatz if (fCurrent != 0.0f) 25952a38012Sejakowatz { 26052a38012Sejakowatz rect.right = rect.left + (float)ceil(fCurrent * (width - 4) / fMax), 26152a38012Sejakowatz 26252a38012Sejakowatz // Bevel 26352a38012Sejakowatz SetHighColor(tint_color(fBarColor, B_LIGHTEN_2_TINT)); 26452a38012Sejakowatz StrokeLine(BPoint(rect.left, rect.bottom), BPoint(rect.left, rect.top)); 26552a38012Sejakowatz StrokeLine(BPoint(rect.right, rect.top)); 26652a38012Sejakowatz 26752a38012Sejakowatz SetHighColor(tint_color(fBarColor, B_DARKEN_2_TINT)); 26852a38012Sejakowatz StrokeLine(BPoint(rect.left, rect.bottom), BPoint(rect.right, rect.bottom)); 26952a38012Sejakowatz StrokeLine(BPoint(rect.right, rect.top)); 27052a38012Sejakowatz 27152a38012Sejakowatz rect.InsetBy(1.0f, 1.0f); 27252a38012Sejakowatz 27352a38012Sejakowatz // Filling 27452a38012Sejakowatz SetHighColor(fBarColor); 27552a38012Sejakowatz FillRect(rect); 27652a38012Sejakowatz } 27752a38012Sejakowatz } 27852a38012Sejakowatz //------------------------------------------------------------------------------ 27952a38012Sejakowatz void BStatusBar::SetBarColor(rgb_color color) 28052a38012Sejakowatz { 28152a38012Sejakowatz memcpy(&fBarColor, &color, sizeof(rgb_color)); 28252a38012Sejakowatz 28352a38012Sejakowatz Invalidate(); 28452a38012Sejakowatz } 28552a38012Sejakowatz //------------------------------------------------------------------------------ 28652a38012Sejakowatz void BStatusBar::SetBarHeight(float height) 28752a38012Sejakowatz { 28852a38012Sejakowatz BRect frame = Frame(); 28952a38012Sejakowatz 29052a38012Sejakowatz fBarHeight = height; 29152a38012Sejakowatz fCustomBarHeight = true; 29252a38012Sejakowatz ResizeTo(frame.Width(), fBarHeight + 16); 29352a38012Sejakowatz } 29452a38012Sejakowatz //------------------------------------------------------------------------------ 29552a38012Sejakowatz void BStatusBar::SetText ( const char *string ) 29652a38012Sejakowatz { 29752a38012Sejakowatz if (fText) 298*eb997429SMarc Flerackers free(fText); 29952a38012Sejakowatz 30052a38012Sejakowatz fText = strdup(string); 30152a38012Sejakowatz 30252a38012Sejakowatz Invalidate(); 30352a38012Sejakowatz } 30452a38012Sejakowatz //------------------------------------------------------------------------------ 30552a38012Sejakowatz void BStatusBar::SetTrailingText(const char *string) 30652a38012Sejakowatz { 30752a38012Sejakowatz if (fTrailingText) 308*eb997429SMarc Flerackers free(fTrailingText); 30952a38012Sejakowatz 31052a38012Sejakowatz fTrailingText = strdup(string); 31152a38012Sejakowatz 31252a38012Sejakowatz Invalidate(); 31352a38012Sejakowatz } 31452a38012Sejakowatz //------------------------------------------------------------------------------ 31552a38012Sejakowatz void BStatusBar::SetMaxValue(float max) 31652a38012Sejakowatz { 31752a38012Sejakowatz fMax = max; 31852a38012Sejakowatz 31952a38012Sejakowatz Invalidate(); 32052a38012Sejakowatz } 32152a38012Sejakowatz //------------------------------------------------------------------------------ 32252a38012Sejakowatz void BStatusBar::Update(float delta, const char *text, const char *trailingText) 32352a38012Sejakowatz { 32452a38012Sejakowatz fCurrent += delta; 32552a38012Sejakowatz 32652a38012Sejakowatz if (fText) 327*eb997429SMarc Flerackers free(fText); 32852a38012Sejakowatz 32952a38012Sejakowatz fText = strdup(text); 33052a38012Sejakowatz 33152a38012Sejakowatz if (fTrailingText) 332*eb997429SMarc Flerackers free(fTrailingText); 33352a38012Sejakowatz 33452a38012Sejakowatz fTrailingText = strdup(trailingText); 33552a38012Sejakowatz 33652a38012Sejakowatz Invalidate(); 33752a38012Sejakowatz } 33852a38012Sejakowatz //------------------------------------------------------------------------------ 33952a38012Sejakowatz void BStatusBar::Reset(const char *label, const char *trailingLabel) 34052a38012Sejakowatz { 34152a38012Sejakowatz if (fLabel) 342*eb997429SMarc Flerackers free(fLabel); 34352a38012Sejakowatz 34452a38012Sejakowatz fLabel = strdup(label); 34552a38012Sejakowatz 34652a38012Sejakowatz if (fTrailingLabel) 347*eb997429SMarc Flerackers free(fTrailingLabel); 34852a38012Sejakowatz 34952a38012Sejakowatz fTrailingLabel = strdup(trailingLabel); 35052a38012Sejakowatz 35152a38012Sejakowatz fCurrent = 0.0f; 35252a38012Sejakowatz 35352a38012Sejakowatz Invalidate(); 35452a38012Sejakowatz } 35552a38012Sejakowatz float BStatusBar::CurrentValue() const 35652a38012Sejakowatz { 35752a38012Sejakowatz return fCurrent; 35852a38012Sejakowatz } 35952a38012Sejakowatz //------------------------------------------------------------------------------ 36052a38012Sejakowatz float BStatusBar::MaxValue() const 36152a38012Sejakowatz { 36252a38012Sejakowatz return fMax; 36352a38012Sejakowatz } 36452a38012Sejakowatz //------------------------------------------------------------------------------ 36552a38012Sejakowatz rgb_color BStatusBar::BarColor() const 36652a38012Sejakowatz { 36752a38012Sejakowatz return fBarColor; 36852a38012Sejakowatz } 36952a38012Sejakowatz //------------------------------------------------------------------------------ 37052a38012Sejakowatz float BStatusBar::BarHeight() const 37152a38012Sejakowatz { 37252a38012Sejakowatz if (!fCustomBarHeight && fBarHeight == -1.0f) 37352a38012Sejakowatz { 37452a38012Sejakowatz font_height fh; 37552a38012Sejakowatz GetFontHeight(&fh); 37652a38012Sejakowatz ((BStatusBar*)this)->fBarHeight = fh.ascent + fh.descent + 6.0f; 37752a38012Sejakowatz } 37852a38012Sejakowatz 37952a38012Sejakowatz return fBarHeight; 38052a38012Sejakowatz } 38152a38012Sejakowatz //------------------------------------------------------------------------------ 38252a38012Sejakowatz const char *BStatusBar::Text() const 38352a38012Sejakowatz { 38452a38012Sejakowatz return fText; 38552a38012Sejakowatz } 38652a38012Sejakowatz //------------------------------------------------------------------------------ 38752a38012Sejakowatz const char *BStatusBar::TrailingText() const 38852a38012Sejakowatz { 38952a38012Sejakowatz return fTrailingText; 39052a38012Sejakowatz } 39152a38012Sejakowatz //------------------------------------------------------------------------------ 39252a38012Sejakowatz const char *BStatusBar::Label() const 39352a38012Sejakowatz { 39452a38012Sejakowatz return fLabel; 39552a38012Sejakowatz } 39652a38012Sejakowatz //------------------------------------------------------------------------------ 39752a38012Sejakowatz const char *BStatusBar::TrailingLabel() const 39852a38012Sejakowatz { 39952a38012Sejakowatz return fTrailingLabel; 40052a38012Sejakowatz } 40152a38012Sejakowatz //------------------------------------------------------------------------------ 40252a38012Sejakowatz void BStatusBar::MouseDown(BPoint point) 40352a38012Sejakowatz { 40452a38012Sejakowatz BView::MouseDown(point); 40552a38012Sejakowatz } 40652a38012Sejakowatz //------------------------------------------------------------------------------ 40752a38012Sejakowatz void BStatusBar::MouseUp(BPoint point) 40852a38012Sejakowatz { 40952a38012Sejakowatz BView::MouseUp(point); 41052a38012Sejakowatz } 41152a38012Sejakowatz //------------------------------------------------------------------------------ 41252a38012Sejakowatz void BStatusBar::WindowActivated(bool state) 41352a38012Sejakowatz { 41452a38012Sejakowatz BView::WindowActivated(state); 41552a38012Sejakowatz } 41652a38012Sejakowatz //------------------------------------------------------------------------------ 41752a38012Sejakowatz void BStatusBar::MouseMoved(BPoint point, uint32 transit, 41852a38012Sejakowatz const BMessage *message) 41952a38012Sejakowatz { 42052a38012Sejakowatz BView::MouseMoved(point, transit, message); 42152a38012Sejakowatz } 42252a38012Sejakowatz //------------------------------------------------------------------------------ 42352a38012Sejakowatz void BStatusBar::DetachedFromWindow() 42452a38012Sejakowatz { 42552a38012Sejakowatz BView::DetachedFromWindow(); 42652a38012Sejakowatz } 42752a38012Sejakowatz //------------------------------------------------------------------------------ 42852a38012Sejakowatz void BStatusBar::FrameMoved(BPoint new_position) 42952a38012Sejakowatz { 43052a38012Sejakowatz BView::FrameMoved(new_position); 43152a38012Sejakowatz } 43252a38012Sejakowatz //------------------------------------------------------------------------------ 43352a38012Sejakowatz void BStatusBar::FrameResized(float new_width, float new_height) 43452a38012Sejakowatz { 43552a38012Sejakowatz BView::FrameResized(new_width, new_height); 43652a38012Sejakowatz } 43752a38012Sejakowatz //------------------------------------------------------------------------------ 43852a38012Sejakowatz BHandler *BStatusBar::ResolveSpecifier(BMessage *message, int32 index, 43952a38012Sejakowatz BMessage *specifier, 44052a38012Sejakowatz int32 what, const char *property) 44152a38012Sejakowatz { 44252a38012Sejakowatz return BView::ResolveSpecifier(message, index, specifier, what, property); 44352a38012Sejakowatz } 44452a38012Sejakowatz //------------------------------------------------------------------------------ 44552a38012Sejakowatz void BStatusBar::ResizeToPreferred() 44652a38012Sejakowatz { 44752a38012Sejakowatz BView::ResizeToPreferred(); 44852a38012Sejakowatz } 44952a38012Sejakowatz //------------------------------------------------------------------------------ 45052a38012Sejakowatz void BStatusBar::GetPreferredSize(float *width, float *height) 45152a38012Sejakowatz { 45252a38012Sejakowatz font_height fh; 45352a38012Sejakowatz GetFontHeight(&fh); 45452a38012Sejakowatz 455*eb997429SMarc Flerackers *width = (fLabel ? (float)ceil(StringWidth(fLabel)) : 0.0f) + 456*eb997429SMarc Flerackers (fTrailingLabel ? (float)ceil(StringWidth(fTrailingLabel)) : 0.0f) + 457*eb997429SMarc Flerackers 7.0f; 45852a38012Sejakowatz *height = fh.ascent + fh.descent + 5.0f + BarHeight(); 45952a38012Sejakowatz } 46052a38012Sejakowatz //------------------------------------------------------------------------------ 46152a38012Sejakowatz void BStatusBar::MakeFocus(bool state) 46252a38012Sejakowatz { 46352a38012Sejakowatz BView::MakeFocus(state); 46452a38012Sejakowatz } 46552a38012Sejakowatz //------------------------------------------------------------------------------ 46652a38012Sejakowatz void BStatusBar::AllAttached() 46752a38012Sejakowatz { 46852a38012Sejakowatz BView::AllAttached(); 46952a38012Sejakowatz } 47052a38012Sejakowatz //------------------------------------------------------------------------------ 47152a38012Sejakowatz void BStatusBar::AllDetached() 47252a38012Sejakowatz { 47352a38012Sejakowatz BView::AllDetached(); 47452a38012Sejakowatz } 47552a38012Sejakowatz //------------------------------------------------------------------------------ 47652a38012Sejakowatz status_t BStatusBar::GetSupportedSuites(BMessage *data) 47752a38012Sejakowatz { 47852a38012Sejakowatz return BView::GetSupportedSuites(data); 47952a38012Sejakowatz } 48052a38012Sejakowatz //------------------------------------------------------------------------------ 48152a38012Sejakowatz status_t BStatusBar::Perform(perform_code d, void *arg) 48252a38012Sejakowatz { 48352a38012Sejakowatz return B_ERROR; 48452a38012Sejakowatz } 48552a38012Sejakowatz //------------------------------------------------------------------------------ 48652a38012Sejakowatz void BStatusBar::_ReservedStatusBar1() {} 48752a38012Sejakowatz void BStatusBar::_ReservedStatusBar2() {} 48852a38012Sejakowatz void BStatusBar::_ReservedStatusBar3() {} 48952a38012Sejakowatz void BStatusBar::_ReservedStatusBar4() {} 49052a38012Sejakowatz 49152a38012Sejakowatz //------------------------------------------------------------------------------ 49252a38012Sejakowatz BStatusBar &BStatusBar::operator=(const BStatusBar &) 49352a38012Sejakowatz { 49452a38012Sejakowatz return *this; 49552a38012Sejakowatz } 49652a38012Sejakowatz //------------------------------------------------------------------------------ 49752a38012Sejakowatz void BStatusBar::InitObject(const char *l, const char *aux_l) 49852a38012Sejakowatz { 49952a38012Sejakowatz // TODO: 50052a38012Sejakowatz } 50152a38012Sejakowatz //------------------------------------------------------------------------------ 50252a38012Sejakowatz void BStatusBar::SetTextData(char **pp, const char *str) 50352a38012Sejakowatz { 50452a38012Sejakowatz // TODO: 50552a38012Sejakowatz } 50652a38012Sejakowatz //------------------------------------------------------------------------------ 50752a38012Sejakowatz void BStatusBar::FillBar(BRect r) 50852a38012Sejakowatz { 50952a38012Sejakowatz // TODO: 51052a38012Sejakowatz } 51152a38012Sejakowatz //------------------------------------------------------------------------------ 51252a38012Sejakowatz void BStatusBar::Resize() 51352a38012Sejakowatz { 51452a38012Sejakowatz // TODO: 51552a38012Sejakowatz } 51652a38012Sejakowatz //------------------------------------------------------------------------------ 51752a38012Sejakowatz void BStatusBar::_Draw(BRect updateRect, bool bar_only) 51852a38012Sejakowatz { 51952a38012Sejakowatz // TODO: 52052a38012Sejakowatz } 52152a38012Sejakowatz //------------------------------------------------------------------------------ 52252a38012Sejakowatz 52352a38012Sejakowatz /* 52452a38012Sejakowatz * $Log $ 52552a38012Sejakowatz * 52652a38012Sejakowatz * $Id $ 52752a38012Sejakowatz * 52852a38012Sejakowatz */ 529