112fd6cc2SKarsten Heimrich /* 212fd6cc2SKarsten Heimrich * AboutBox.cpp 312fd6cc2SKarsten Heimrich * Copyright 1999-2000 Y.Takagi. All Rights Reserved. 412fd6cc2SKarsten Heimrich */ 512fd6cc2SKarsten Heimrich 612fd6cc2SKarsten Heimrich #include <cstdio> 712fd6cc2SKarsten Heimrich #include <string> 812fd6cc2SKarsten Heimrich 912fd6cc2SKarsten Heimrich #include <Window.h> 1012fd6cc2SKarsten Heimrich #include <View.h> 1112fd6cc2SKarsten Heimrich #include <Button.h> 1212fd6cc2SKarsten Heimrich 1312fd6cc2SKarsten Heimrich #include "AboutBox.h" 1412fd6cc2SKarsten Heimrich 1508d759feSMichael Pfeiffer 1612fd6cc2SKarsten Heimrich using namespace std; 1708d759feSMichael Pfeiffer 1812fd6cc2SKarsten Heimrich 1912fd6cc2SKarsten Heimrich enum { 2012fd6cc2SKarsten Heimrich kMsgOK = 'AbOK' 2112fd6cc2SKarsten Heimrich }; 2212fd6cc2SKarsten Heimrich 2312fd6cc2SKarsten Heimrich 2412fd6cc2SKarsten Heimrich class AboutBoxView : public BView { 2512fd6cc2SKarsten Heimrich public: 2612fd6cc2SKarsten Heimrich AboutBoxView(BRect frame, const char *driver_name, const char *version, const char *copyright); 2712fd6cc2SKarsten Heimrich virtual void Draw(BRect); 2812fd6cc2SKarsten Heimrich virtual void AttachedToWindow(); 2912fd6cc2SKarsten Heimrich 3012fd6cc2SKarsten Heimrich private: 3112fd6cc2SKarsten Heimrich string fDriverName; 3212fd6cc2SKarsten Heimrich string fVersion; 3312fd6cc2SKarsten Heimrich string fCopyright; 3412fd6cc2SKarsten Heimrich }; 3512fd6cc2SKarsten Heimrich 3612fd6cc2SKarsten Heimrich AboutBoxView::AboutBoxView(BRect rect, const char *driver_name, const char *version, const char *copyright) 3712fd6cc2SKarsten Heimrich : BView(rect, "", B_FOLLOW_ALL, B_WILL_DRAW) 3812fd6cc2SKarsten Heimrich { 3912fd6cc2SKarsten Heimrich fDriverName = driver_name; 4012fd6cc2SKarsten Heimrich fVersion = version; 4112fd6cc2SKarsten Heimrich fCopyright = copyright; 4212fd6cc2SKarsten Heimrich SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); 4312fd6cc2SKarsten Heimrich SetDrawingMode(B_OP_SELECT); 4412fd6cc2SKarsten Heimrich } 4512fd6cc2SKarsten Heimrich 4612fd6cc2SKarsten Heimrich void AboutBoxView::Draw(BRect) 4712fd6cc2SKarsten Heimrich { 4812fd6cc2SKarsten Heimrich SetHighColor(0, 0, 0); 4912fd6cc2SKarsten Heimrich DrawString(fDriverName.c_str(), BPoint(10.0f, 16.0f)); 5012fd6cc2SKarsten Heimrich DrawString(" Driver for "); 5112fd6cc2SKarsten Heimrich SetHighColor(0, 0, 0xff); 5212fd6cc2SKarsten Heimrich DrawString("B"); 5312fd6cc2SKarsten Heimrich SetHighColor(0xff, 0, 0); 5412fd6cc2SKarsten Heimrich DrawString("e"); 5512fd6cc2SKarsten Heimrich SetHighColor(0, 0, 0); 5612fd6cc2SKarsten Heimrich DrawString("OS Version "); 5712fd6cc2SKarsten Heimrich DrawString(fVersion.c_str()); 5812fd6cc2SKarsten Heimrich DrawString(fCopyright.c_str(), BPoint(10.0f, 30.0f)); 5912fd6cc2SKarsten Heimrich } 6012fd6cc2SKarsten Heimrich 6112fd6cc2SKarsten Heimrich void AboutBoxView::AttachedToWindow() 6212fd6cc2SKarsten Heimrich { 6312fd6cc2SKarsten Heimrich BRect rect; 6412fd6cc2SKarsten Heimrich rect.Set(110, 50, 175, 55); 6512fd6cc2SKarsten Heimrich BButton *button = new BButton(rect, "", "OK", new BMessage(kMsgOK)); 6612fd6cc2SKarsten Heimrich AddChild(button); 6712fd6cc2SKarsten Heimrich button->MakeDefault(true); 6812fd6cc2SKarsten Heimrich } 6912fd6cc2SKarsten Heimrich 7012fd6cc2SKarsten Heimrich class AboutBoxWindow : public BWindow { 7112fd6cc2SKarsten Heimrich public: 7212fd6cc2SKarsten Heimrich AboutBoxWindow(BRect frame, const char *driver_name, const char *version, const char *copyright); 7312fd6cc2SKarsten Heimrich virtual void MessageReceived(BMessage *msg); 7412fd6cc2SKarsten Heimrich virtual bool QuitRequested(); 7512fd6cc2SKarsten Heimrich }; 7612fd6cc2SKarsten Heimrich 7712fd6cc2SKarsten Heimrich AboutBoxWindow::AboutBoxWindow(BRect frame, const char *driver_name, const char *version, const char *copyright) 78*0e216008SMichael Pfeiffer : BWindow(frame, "", B_TITLED_WINDOW, 79*0e216008SMichael Pfeiffer B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_CLOSE_ON_ESCAPE) 8012fd6cc2SKarsten Heimrich { 8112fd6cc2SKarsten Heimrich char title[256]; 8212fd6cc2SKarsten Heimrich sprintf(title, "About %s Driver", driver_name); 8312fd6cc2SKarsten Heimrich SetTitle(title); 8412fd6cc2SKarsten Heimrich AddChild(new AboutBoxView(Bounds(), driver_name, version, copyright)); 8512fd6cc2SKarsten Heimrich } 8612fd6cc2SKarsten Heimrich 8712fd6cc2SKarsten Heimrich void AboutBoxWindow::MessageReceived(BMessage *msg) 8812fd6cc2SKarsten Heimrich { 8912fd6cc2SKarsten Heimrich switch (msg->what) { 9012fd6cc2SKarsten Heimrich case kMsgOK: 9112fd6cc2SKarsten Heimrich be_app->PostMessage(B_QUIT_REQUESTED); 9212fd6cc2SKarsten Heimrich break; 9312fd6cc2SKarsten Heimrich } 9412fd6cc2SKarsten Heimrich } 9512fd6cc2SKarsten Heimrich 9612fd6cc2SKarsten Heimrich bool AboutBoxWindow::QuitRequested() 9712fd6cc2SKarsten Heimrich { 9812fd6cc2SKarsten Heimrich be_app->PostMessage(B_QUIT_REQUESTED); 9912fd6cc2SKarsten Heimrich return true; 10012fd6cc2SKarsten Heimrich } 10112fd6cc2SKarsten Heimrich 10212fd6cc2SKarsten Heimrich AboutBox::AboutBox(const char *signature, const char *driver_name, const char *version, const char *copyright) 10312fd6cc2SKarsten Heimrich : BApplication(signature) 10412fd6cc2SKarsten Heimrich { 10512fd6cc2SKarsten Heimrich BRect rect; 10612fd6cc2SKarsten Heimrich rect.Set(100, 80, 400, 170); 10712fd6cc2SKarsten Heimrich AboutBoxWindow *window = new AboutBoxWindow(rect, driver_name, version, copyright); 10812fd6cc2SKarsten Heimrich window->Show(); 10912fd6cc2SKarsten Heimrich } 110