#include #include "calculator.h" CalculatorWindow::CalculatorWindow( const Rect &rFrame, const String& szTitle, unsigned int nWindowLayoutFlags, unsigned int uiFlags ): ApplicationWindow(rFrame, szTitle, nWindowLayoutFlags) { pText = new TextView(this, Rect(15, 30, 160, 50), WINDOW_LAYOUT_FOLLOW_RIGHT , TEXTVIEW_FLAG_SINGLE_LINE); pText->Enable(false); pText->Set("0.0"); 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)); } 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: break; case BUTTON_CLEAR: pText->Set("0.0"); 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(); }