xref: /haiku/src/libs/print/libprint/AboutBox.cpp (revision 13581b3d2a71545960b98fefebc5225b5bf29072)
1 /*
2  * AboutBox.cpp
3  * Copyright 1999-2000 Y.Takagi. All Rights Reserved.
4  */
5 
6 #include <cstdio>
7 #include <string>
8 
9 #include <Window.h>
10 #include <View.h>
11 #include <Button.h>
12 
13 #include "AboutBox.h"
14 
15 
16 using namespace std;
17 
18 
19 enum {
20 	kMsgOK = 'AbOK'
21 };
22 
23 
24 class AboutBoxView : public BView {
25 public:
26 	AboutBoxView(BRect frame, const char *driver_name, const char *version, const char *copyright);
27 	virtual void Draw(BRect);
28 	virtual void AttachedToWindow();
29 
30 private:
31 	string fDriverName;
32 	string fVersion;
33 	string fCopyright;
34 };
35 
36 AboutBoxView::AboutBoxView(BRect rect, const char *driver_name, const char *version, const char *copyright)
37 	: BView(rect, "", B_FOLLOW_ALL, B_WILL_DRAW)
38 {
39 	fDriverName = driver_name;
40 	fVersion     = version;
41 	fCopyright   = copyright;
42 	SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
43 	SetDrawingMode(B_OP_SELECT);
44 }
45 
46 void AboutBoxView::Draw(BRect)
47 {
48 	SetHighColor(0, 0, 0);
49 	DrawString(fDriverName.c_str(), BPoint(10.0f, 16.0f));
50 	DrawString(" Driver for ");
51 	SetHighColor(0, 0, 0xff);
52 	DrawString("B");
53 	SetHighColor(0xff, 0, 0);
54 	DrawString("e");
55 	SetHighColor(0, 0, 0);
56 	DrawString("OS  Version ");
57 	DrawString(fVersion.c_str());
58 	DrawString(fCopyright.c_str(), BPoint(10.0f, 30.0f));
59 }
60 
61 void AboutBoxView::AttachedToWindow()
62 {
63 	BRect rect;
64 	rect.Set(110, 50, 175, 55);
65 	BButton *button = new BButton(rect, "", "OK", new BMessage(kMsgOK));
66 	AddChild(button);
67 	button->MakeDefault(true);
68 }
69 
70 class AboutBoxWindow : public BWindow {
71 public:
72 	AboutBoxWindow(BRect frame, const char *driver_name, const char *version, const char *copyright);
73 	virtual void MessageReceived(BMessage *msg);
74 	virtual	bool QuitRequested();
75 };
76 
77 AboutBoxWindow::AboutBoxWindow(BRect frame, const char *driver_name, const char *version, const char *copyright)
78 	: BWindow(frame, "", B_TITLED_WINDOW,
79 		B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_CLOSE_ON_ESCAPE)
80 {
81 	char title[256];
82 	sprintf(title, "About %s Driver", driver_name);
83 	SetTitle(title);
84 	AddChild(new AboutBoxView(Bounds(), driver_name, version, copyright));
85 }
86 
87 void AboutBoxWindow::MessageReceived(BMessage *msg)
88 {
89 	switch (msg->what) {
90 	case kMsgOK:
91 		be_app->PostMessage(B_QUIT_REQUESTED);
92 		break;
93 	}
94 }
95 
96 bool AboutBoxWindow::QuitRequested()
97 {
98 	be_app->PostMessage(B_QUIT_REQUESTED);
99 	return true;
100 }
101 
102 AboutBox::AboutBox(const char *signature, const char *driver_name, const char *version, const char *copyright)
103 	: BApplication(signature)
104 {
105 	BRect rect;
106 	rect.Set(100, 80, 400, 170);
107 	AboutBoxWindow *window = new AboutBoxWindow(rect, driver_name, version, copyright);
108 	window->Show();
109 }
110