summaryrefslogtreecommitdiff
path: root/calculator.cpp
blob: c17fb50a8cc6bcc6bc59047cbebc4407a63d058a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <gui/ApplicationWindow.h>
#include <gui/Application.h>

#include "calculator.h"

CalculatorWindow::CalculatorWindow(	const Rect &rFrame,
						const String& szTitle,
						unsigned int nWindowLayoutFlags,
						unsigned int uiFlags
	): ApplicationWindow(rFrame, szTitle, nWindowLayoutFlags)
{
	Button	* pButton;

	pButton	= new Button(this, Rect(Point(15, 60), Point(40, 82)), "7", 0, new MessageCommand(BUTTON_SEVEN));	
	pButton	= new Button(this, Rect(Point(45, 60), Point(70, 82)), "8", 0, new MessageCommand(BUTTON_EIGHT));
	pButton	= new Button(this, Rect(Point(75, 60), Point(100, 82)), "9", 0, new MessageCommand(BUTTON_NINE));
	pButton = new Button(this, Rect(Point(105, 60), Point(160, 82)), "Clear", 0, new MessageCommand(BUTTON_CLEAR));

	pButton	= new Button(this, Rect(Point(15, 87), Point(40, 109)), "4", 0, new MessageCommand(BUTTON_FOUR));
	pButton	= new Button(this, Rect(Point(45, 87), Point(70, 109)), "5", 0, new MessageCommand(BUTTON_FIVE));
	pButton	= new Button(this, Rect(Point(75, 87), Point(100, 109)), "6", 0, new MessageCommand(BUTTON_SIX));
	pButton	= new Button(this, Rect(Point(105, 87), Point(130, 109)), "+", 0, new MessageCommand(BUTTON_PLUS));
	pButton	= new Button(this, Rect(Point(135, 87), Point(160, 109)), "-", 0, new MessageCommand(BUTTON_MINUS));

	pButton	= new Button(this, Rect(Point(15, 114), Point(40, 136)), "1", 0, new MessageCommand(BUTTON_ONE));
	pButton	= new Button(this, Rect(Point(45, 114), Point(70, 136)), "2", 0, new MessageCommand(BUTTON_TWO));
	pButton	= new Button(this, Rect(Point(75, 114), Point(100, 136)), "3", 0, new MessageCommand(BUTTON_THREE));
	pButton	= new Button(this, Rect(Point(105, 114), Point(130, 136)), "\u00D7", 0, new MessageCommand(BUTTON_TIMES));
	pButton	= new Button(this, Rect(Point(135, 114), Point(160, 136)), "\u00F7", 0, new MessageCommand(BUTTON_DIVIDE));

	pButton	= new Button(this, Rect(Point(15, 141), Point(40, 163)), "0", 0, new MessageCommand(BUTTON_ZERO));
	pButton	= new Button(this, Rect(Point(45, 141), Point(70, 163)), ".", 0, new MessageCommand(BUTTON_POINT));
	pButton	= new Button(this, Rect(Point(75, 141), Point(100, 164)), "\u00B1", 0, new MessageCommand(BUTTON_SIGN));
	pButton = new Button(this, Rect(Point(105, 141), Point(160, 164)), "=", 0, new MessageCommand(BUTTON_EQUALS));
/*
	pButton	= new Button(this, Point(10,10), "1", 0, new MessageCommand(BUTTON_ONE));
	pButton	= new Button(this, Point(10,10), "1", 0, new MessageCommand(BUTTON_ONE));
	pButton	= new Button(this, Point(10,10), "1", 0, new MessageCommand(BUTTON_ONE));
	pButton	= new Button(this, Point(10,10), "1", 0, new MessageCommand(BUTTON_ONE));*/
}

void CalculatorWindow::OnCommand(const MessageCommand *pMessage) {
	switch (pMessage->GetID()) {
		case BUTTON_ZERO:
		case BUTTON_ONE:
		case BUTTON_TWO:
		case BUTTON_THREE:
		case BUTTON_FOUR:
		case BUTTON_FIVE:
		case BUTTON_SIX:
		case BUTTON_SEVEN:
		case BUTTON_EIGHT:
		case BUTTON_NINE:
		case BUTTON_PLUS:
		case BUTTON_MINUS:
		case BUTTON_TIMES:
		case BUTTON_DIVIDE:
		case BUTTON_EQUALS:
		case BUTTON_POINT:
		case BUTTON_SIGN:
		case BUTTON_CLEAR:
			printf("Button %d clicked\n", pMessage->GetID());
		default:
			break;
	}
}

Calculator::Calculator(int argc, char* argv[]):
	Application("application/x-vnd.Calculator", argc, argv) {
	
	Rect r(Point(100, 100), Point(275, 275));

	CalculatorWindow * pCalculatorWindow =
		new CalculatorWindow(r, "Calculator", WINDOW_LAYOUT_NOTHING,
					APPLICATION_WINDOW_NO_VIEW);
	
	pCalculatorWindow->GetTitleWindow()->SetFlags(
		(TitleWindowFlags)(pCalculatorWindow->GetTitleWindow()->GetFlags()
	));

	pCalculatorWindow->Show();
}

int main(int argc, char *argv[]) {
	Calculator pCalculator(argc, argv);

	return pCalculator.Run();
}