Simple program to demo using the SimpleGUI with TouchScreen. Widgets demonstrate handling of single- and double-tap events, as well as touchMover
Dependencies: SimpleGUI SimpleGUITouchScreen TouchScreen UniGraphic mbed-rtos mbed
Revision 3:ca2285e07824, committed 2016-05-08
- Comitter:
- duncanFrance
- Date:
- Sun May 08 14:43:42 2016 +0000
- Parent:
- 2:fe93c85e8f0b
- Commit message:
- Work with new event-handling mechanism and Window->attach()
Changed in this revision
--- a/SimpleGUI.lib Mon Apr 11 16:54:57 2016 +0000 +++ b/SimpleGUI.lib Sun May 08 14:43:42 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/duncanFrance/code/SimpleGUI/#a460cabc85ac +https://developer.mbed.org/users/duncanFrance/code/SimpleGUI/#63db16fea709
--- a/SimpleGUITouchScreen.lib Mon Apr 11 16:54:57 2016 +0000 +++ b/SimpleGUITouchScreen.lib Sun May 08 14:43:42 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/duncanFrance/code/SimpleGUITouchScreen/#0c8196ec23e4 +https://developer.mbed.org/users/duncanFrance/code/SimpleGUITouchScreen/#45777fe81448
--- a/TouchScreen.lib Mon Apr 11 16:54:57 2016 +0000 +++ b/TouchScreen.lib Sun May 08 14:43:42 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/duncanFrance/code/TouchScreen/#9bd85d0331a8 +http://mbed.org/users/duncanFrance/code/TouchScreen/#e5ea47fb1ede
--- a/main.cpp Mon Apr 11 16:54:57 2016 +0000 +++ b/main.cpp Sun May 08 14:43:42 2016 +0000 @@ -18,9 +18,12 @@ BitmapWidget* bm1; ContainerWidget* cw1; GUI* gui; +GraphicsContext* context; FastFontRenderer* fontRenderer; FastFont* defaultFont; +Window* rootWindow; +Window* win1; ILI932x* tft; Serial *pc; @@ -45,32 +48,32 @@ eventSource->touchEndHandler(p); } -void tapHandler1(Event e, EventListener* target) { - TextWidget* w = (TextWidget*) target; +void tapHandler1(Event e) { + TextWidget* w = (TextWidget*) e.target; if(done) { w->setBackground(Green); } else { w->setBackground(Blue); } done = !done; - w->draw(); + // w->draw(); } -void tapHandler2(Event e, EventListener* target) { - TextWidget* w = (TextWidget*) target; +void tapHandler2(Event e) { + TextWidget* w = (TextWidget*) e.target; if(done) { w->setBackground(Green); } else { w->setBackground(Red); } done = !done; - w->draw(); + // w->draw(); } -void dragHandler(Event e, EventListener* target) { - Widget* w = (Widget*) target; +void dragHandler(Event e) { + Widget* w = (Widget*) e.target; w->clear(); w->setLocation(w->x(), e.screenY - w->height()/2); - w->draw(); + // w->draw(); } void initSerial() { @@ -91,7 +94,9 @@ eventDispatcher = new EventDispatcher(); fontRenderer = new FastFontRenderer(); defaultFont = new FastFont((uint8_t*)FFArial24x23); - gui = new GUI(tft, eventDispatcher, fontRenderer, defaultFont); + context = new GraphicsContext(tft, eventDispatcher, fontRenderer, defaultFont); + gui = new GUI(context); + rootWindow = gui->rootWindow(); } void initTouchScreen() { @@ -101,7 +106,7 @@ touchScreen->setTouchEndHandler(&touchEnd); touchScreen->setLCDGeometry(LCD_X_RES, LCD_Y_RES, TOUCHSCREEN_ORIENTATION_PORTRAIT | TOUCHSCREEN_ORIENTATION_ROTATED); touchScreen->setCalibration(TOUCH_X_MIN, TOUCH_X_MAX, TOUCH_Y_MIN, TOUCH_Y_MAX); - eventSource = new TouchScreenEventSource(touchScreen, eventDispatcher); + eventSource = new TouchScreenEventSource(touchScreen, gui); } int main() @@ -110,45 +115,64 @@ initSerial(); initGui(); initTouchScreen(); - - - - widget1 = new TextWidget(gui); - widget1->setLocation(10,10); - widget1->setSize(100,60); - widget1->setText("This widget will change\ncolour when tapped"); - widget1->draw(); - widget1->setEventHandler(touchTapEvent, &tapHandler1); + - widget2 = new TextWidget(gui); - widget2->setLocation(10,100); - widget2->setSize(200,60); - widget2->setText("A double-tap will make this\nwidget change colour"); - widget2->draw(); - widget2->setEventHandler(touchDoubleTapEvent, &tapHandler2); - - widget3 = new TextWidget(gui); - widget3->setLocation(10,10); - widget3->setSize(200,60); - widget3->setText("ABCDEF\nGHIJKL\nMNOPQRS\nTUVWXYZ"); - widget3->draw(); - widget3->setEventHandler(touchMoveEvent, &dragHandler); - - bm1 = new BitmapWidget(gui); - bm1->setLocation(10,200); - bm1->setSize(64,64); - bm1->setBitmap(radiator_64x64_on_bmp); - - cw1 = new ContainerWidget(gui); + cw1 = new ContainerWidget(context); cw1->setLocation(50,150); cw1->setSize(20,20); cw1->setBorder(4, Green); - cw1->append(widget1); - cw1->append(bm1); - cw1->draw(); - - + rootWindow->attach(cw1); + { + + widget1 = new TextWidget(context); + widget1->setSize(100,60); + widget1->setText("This widget will change\ncolour when tapped"); + widget1->setBorder(1,White); + cw1->attach(widget1); + widget1->setEventHandler(new EventHandler(TOUCH_TAP, &tapHandler1)); + + + bm1 = new BitmapWidget(context); + bm1->setBitmap(radiator_64x64_on_bmp, 64, 64); + cw1->attach(bm1); + } + + Widget *w = new Widget(context); + w->setSize(60,60); + w->setLocation(100,100); + w->setBorder(2, Red); + rootWindow->attach(w); + + widget2 = new TextWidget(context); + widget2->setLocation(10,80); + widget2->setSize(200,60); + widget2->setText("A double-tap will make this\nwidget change colour"); + rootWindow->attach(widget2); + widget2->setEventHandler(new EventHandler(TOUCH_DOUBLE_TAP, &tapHandler2)); + + char *moveme = "ABCDEF\nGHIJKL\nMNOPQRS\nTUVWXYZ"; + widget3 = new TextWidget(context); + widget3->setLocation(10,10); + widget3->setSize(200,60); + widget3->setText(moveme); + rootWindow->attach(widget3); + widget3->setEventHandler(new EventHandler(TOUCH_MOVE, &dragHandler)); + + + SpinnerWidget *sw = new SpinnerWidget(context); + sw->setLocation(50,250); + sw->setSize(128,96); + sw->setIncrement(0.5); + sw->setMax(20); + sw->setMin(10); + char *format = "%2.1f C"; + sw->setFormat(format); + sw->setValue(9.5); + rootWindow->attach(sw); + while (1) { - Thread::wait(1000); + gui->updateWindow(); + gui->pumpEvents(); + Thread::wait(1); } }
--- a/mbed.bld Mon Apr 11 16:54:57 2016 +0000 +++ b/mbed.bld Sun May 08 14:43:42 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/c0f6e94411f5 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/aae6fcc7d9bb \ No newline at end of file