From d0c7529cb9833ede3595051df5599a11fe03be48 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Thu, 5 Apr 2007 15:25:19 +0200 Subject: import new upstream --- widget_icon.c | 146 ++++++---------------------------------------------------- 1 file changed, 13 insertions(+), 133 deletions(-) (limited to 'widget_icon.c') diff --git a/widget_icon.c b/widget_icon.c index 38af359..bfeec22 100644 --- a/widget_icon.c +++ b/widget_icon.c @@ -1,4 +1,5 @@ -/* $Id: widget_icon.c,v 1.23 2006/02/25 13:36:33 geronet Exp $ +/* $Id: widget_icon.c 744 2007-01-18 05:20:07Z michael $ + * $URL: https://ssl.bulix.org/svn/lcd4linux/branches/0.10.1/widget_icon.c $ * * icon widget handling * @@ -19,99 +20,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * - * $Log: widget_icon.c,v $ - * Revision 1.23 2006/02/25 13:36:33 geronet - * updated indent.sh, applied coding style - * - * Revision 1.22 2006/01/23 06:17:18 reinelt - * timer widget added - * - * Revision 1.21 2006/01/22 10:01:09 reinelt - * allow 'static' icons with speed=0 - * - * Revision 1.20 2005/12/18 16:18:36 reinelt - * GPO's added again - * - * Revision 1.19 2005/11/06 09:54:43 reinelt - * fixed icon size removed, uses XRES & YRES (I hope this doesn't lead to problemes...) - * - * Revision 1.18 2005/11/06 09:17:20 reinelt - * re-use icons (thanks to Jesus de Santos Garcia) - * - * Revision 1.17 2005/05/08 04:32:45 reinelt - * CodingStyle added and applied - * - * Revision 1.16 2005/01/18 06:30:24 reinelt - * added (C) to all copyright statements - * - * Revision 1.15 2004/11/28 15:50:24 reinelt - * Cwlinux fixes (invalidation of user-defined chars) - * - * Revision 1.14 2004/06/26 12:05:00 reinelt - * - * uh-oh... the last CVS log message messed up things a lot... - * - * Revision 1.13 2004/06/26 09:27:21 reinelt - * - * added '-W' to CFLAGS - * changed all C++ comments to C ones - * cleaned up a lot of signed/unsigned mistakes - * - * Revision 1.12 2004/06/20 10:09:56 reinelt - * - * 'const'ified the whole source - * - * Revision 1.11 2004/03/11 06:39:59 reinelt - * big patch from Martin: - * - reuse filehandles - * - memory leaks fixed - * - earlier busy-flag checking with HD44780 - * - reuse memory for strings in RESULT and hash - * - netdev_fast to wavid time-consuming regex - * - * Revision 1.10 2004/03/06 20:31:16 reinelt - * Complete rewrite of the evaluator to get rid of the code - * from mark Morley (because of license issues). - * The new Evaluator does a pre-compile of expressions, and - * stores them in trees. Therefore it should be reasonable faster... - * - * Revision 1.9 2004/03/03 04:44:16 reinelt - * changes (cosmetics?) to the big patch from Martin - * hash patch un-applied - * - * Revision 1.8 2004/03/03 03:47:04 reinelt - * big patch from Martin Hejl: - * - use qprintf() where appropriate - * - save CPU cycles on gettimeofday() - * - add quit() functions to free allocated memory - * - fixed lots of memory leaks - * - * Revision 1.7 2004/02/15 21:43:43 reinelt - * T6963 driver nearly finished - * framework for graphic displays done - * i2c_sensors patch from Xavier - * some more old generation files removed - * - * Revision 1.6 2004/02/07 13:45:23 reinelt - * icon visibility patch #2 from Xavier - * - * Revision 1.5 2004/02/04 19:11:44 reinelt - * icon visibility patch from Xavier - * - * Revision 1.4 2004/01/30 20:57:56 reinelt - * HD44780 patch from Martin Hejl - * dmalloc integrated - * - * Revision 1.3 2004/01/29 04:40:03 reinelt - * every .c file includes "config.h" now - * - * Revision 1.2 2004/01/23 07:04:39 reinelt - * icons finished! - * - * Revision 1.1 2004/01/23 04:54:03 reinelt - * icon widget added (not finished yet!) - * */ /* @@ -133,7 +41,7 @@ #include "debug.h" #include "cfg.h" #include "qprintf.h" -#include "evaluator.h" +#include "property.h" #include "timer.h" #include "widget.h" #include "widget_icon.h" @@ -186,31 +94,13 @@ void widget_icon_update(void *Self) { WIDGET *W = (WIDGET *) Self; WIDGET_ICON *Icon = W->data; - RESULT result = { 0, 0, 0, NULL }; /* process the parent only */ if (W->parent == NULL) { - /* evaluate expressions */ - Icon->speed = 100; - if (Icon->speed_tree != NULL) { - Eval(Icon->speed_tree, &result); - Icon->speed = R2N(&result); - if (Icon->speed <= 0) - Icon->speed = 0; - else if (Icon->speed < 10) - Icon->speed = 10; - DelResult(&result); - } - - Icon->visible = 1; - if (Icon->visible_tree != NULL) { - Eval(Icon->visible_tree, &result); - Icon->visible = R2N(&result); - if (Icon->visible < 0) - Icon->visible = 0; - DelResult(&result); - } + /* evaluate properties */ + property_eval(&Icon->speed); + property_eval(&Icon->visible); /* rotate icon bitmap */ Icon->curmap++; @@ -223,8 +113,8 @@ void widget_icon_update(void *Self) W->class->draw(W); /* add a new one-shot timer */ - if (Icon->speed > 0) { - timer_add(widget_icon_update, Self, Icon->speed, 1); + if (P2N(&Icon->speed) > 0) { + timer_add(widget_icon_update, Self, P2N(&Icon->speed), 1); } } @@ -247,19 +137,9 @@ int widget_icon_init(WIDGET * Self) Icon = malloc(sizeof(WIDGET_ICON)); memset(Icon, 0, sizeof(WIDGET_ICON)); - /* get raw expressions (we evaluate them ourselves) */ - Icon->speed_expr = cfg_get_raw(section, "speed", NULL); - Icon->visible_expr = cfg_get_raw(section, "visible", NULL); - - /* sanity check */ - if (Icon->speed_expr == NULL || *Icon->speed_expr == '\0') { - error("Icon %s has no speed, using '100'", Self->name); - Icon->speed_expr = "100"; - } - - /* compile'em */ - Compile(Icon->speed_expr, &Icon->speed_tree); - Compile(Icon->visible_expr, &Icon->visible_tree); + /* load properties */ + property_load(section, "speed", "100", &Icon->speed); + property_load(section, "visible", "1", &Icon->visible); /* read bitmap */ widget_icon_read_bitmap(section, Icon); @@ -296,8 +176,8 @@ int widget_icon_quit(WIDGET * Self) if (Self->parent == NULL) { if (Self->data) { WIDGET_ICON *Icon = Self->data; - DelTree(Icon->speed_tree); - DelTree(Icon->visible_tree); + property_free(&Icon->speed); + property_free(&Icon->visible); if (Icon->bitmap) free(Icon->bitmap); free(Self->data); -- cgit v1.2.3