diff options
author | Joel Bodenmann <joel@unormal.org> | 2014-04-23 23:58:38 +0200 |
---|---|---|
committer | Joel Bodenmann <joel@unormal.org> | 2014-04-23 23:58:38 +0200 |
commit | 43a143588c8c62ab1474b896d5afd6c2bf11a8f3 (patch) | |
tree | d59054811f896ba6c9e9d34bd08c16bfa685ea21 /src | |
parent | c88e25b84fa8d18942df56592cec68f8371a8d41 (diff) | |
parent | a34c0ded1873121431eed41210b7f44c8271ac0a (diff) | |
download | uGFX-43a143588c8c62ab1474b896d5afd6c2bf11a8f3.tar.gz uGFX-43a143588c8c62ab1474b896d5afd6c2bf11a8f3.tar.bz2 uGFX-43a143588c8c62ab1474b896d5afd6c2bf11a8f3.zip |
Merge branch 'master' into gwin
Diffstat (limited to 'src')
-rw-r--r-- | src/gwin/progressbar.c | 22 | ||||
-rw-r--r-- | src/gwin/progressbar.h | 18 |
2 files changed, 39 insertions, 1 deletions
diff --git a/src/gwin/progressbar.c b/src/gwin/progressbar.c index 37bad3c8..a7acc0ed 100644 --- a/src/gwin/progressbar.c +++ b/src/gwin/progressbar.c @@ -29,12 +29,21 @@ static void ResetDisplayPos(GProgressbarObject *gsw) { gsw->dpos = ((gsw->w.g.width-1)*(gsw->pos-gsw->min))/(gsw->max-gsw->min); } +// We have to deinitialize the timer which auto updates the progressbar if any +static void _destroy(GHandle gh) { + #if GFX_USE_GTIMER + gtimerDeinit( &((GProgressbarObject *)gh)->gt ); + #endif + + _gwidgetDestroy(gh); +} + // The progressbar VMT table static const gwidgetVMT progressbarVMT = { { "Progressbar", // The classname sizeof(GProgressbarObject), // The object size - _gwidgetDestroy, // The destroy routine + _destroy, // The destroy routine _gwidgetRedraw, // The redraw routine 0, // The after-clear routine }, @@ -200,6 +209,17 @@ void gwinProgressbarStart(GHandle gh, delaytime_t delay) { #undef gsw } +void gwinProgressbarStop(GHandle gh) { + #define gsw ((GProgressbarObject *)gh) + + if (gh->vmt != (gwinVMT *)&progressbarVMT) + return; + + gtimerStop(&(gsw->gt)); + + #undef gsw +} + /*---------------------------------------------------------- * Custom Draw Routines *----------------------------------------------------------*/ diff --git a/src/gwin/progressbar.h b/src/gwin/progressbar.h index de10783f..fcf76b12 100644 --- a/src/gwin/progressbar.h +++ b/src/gwin/progressbar.h @@ -138,6 +138,15 @@ void gwinProgressbarDecrement(GHandle gh); */ #define gwinProgressbarGetPosition(gh) (((GProgressbarObject *)(gh))->pos) + /** + * @brief Reset the progressbar to the minimum position + * + * @param[in] gh The window handle (must be a progressbar window) + * + * @api + */ +#define gwinProgressbarReset(gh) gwinProgressbarSetPosition(gh, ((GProgressbarObject *)(gh))->min) + /** * @brief Automatically increments the progress bar * @@ -156,6 +165,15 @@ void gwinProgressbarDecrement(GHandle gh); void gwinProgressbarStart(GHandle gh, delaytime_t delay); /** + * @brief Stop the timer which is started by @p gwinProgressbarStart() + * + * @param[in] gh The window handle (must be a progressbar window) + * + * @api + */ +void gwinProgressbarStop(GHandle gh); + +/** * @brief Some custom progressbar drawing routines * @details These function may be passed to @p gwinSetCustomDraw() to get different progressbar drawing styles * |