From e93500869a99ddc6cf0cfe00fe00ac9783b51578 Mon Sep 17 00:00:00 2001 From: steffen Date: Wed, 12 Feb 2014 21:21:07 +0000 Subject: [PATCH] gui_list fixed, quit during routign fixed. --- ChangeLog | 5 +++ Makefile | 2 +- android/jni/Android.mk | 3 +- draw/draw_gui.c | 11 ++--- gui/gui.h | 2 + gui/gui_list.c | 14 +++--- main/Makefile | 8 ++-- main/gui_selectfile.c | 2 +- main/routing.c | 4 ++ main/wnd_mapcontext.c | 100 +++++++++++++++++++++++++++++++++++++++++ sdlgl/sdl_main.c | 4 +- 11 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 main/wnd_mapcontext.c diff --git a/ChangeLog b/ChangeLog index 94b0b9a..35f678e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ Version 0.0.2: name changed to spOSMroute, since on there had been another OSMroute already. ============================================================================= +(2014-02-12): +- fixed: quiting while in routing did not work. +- fixed: gui_list elements where almost unable use. + + (2014-02-05): - fixed: windowsCE version is running again. - fixed: pressing the button long time did not work. diff --git a/Makefile b/Makefile index 6a8fb44..674df66 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ sposmroutegl: do if ! make -C $$i; then \ exit -2; \ fi done - $(CC) -o sposmroute -lsdlgl -lm -lmain -lgui -lmain -lmapsys -ldraw -lsdlgl -lbase -Lbase -Lmain -Lsdlgl -Ldraw -Lgui -Lmapsys -lbz2 $(DEBUG) `sdl-config --libs` `pkg-config --libs freetype2 libpng` -lGL -lGLU -L/usr/X11R6/lib -L/usr/lib + $(CC) -o sposmroute -lsdlgl -lm -lmain -lgui -lmain -lmapsys -ldraw -lsdlgl -lbase -lmain -Lbase -Lmain -Lsdlgl -Ldraw -Lgui -Lmapsys -lbz2 $(DEBUG) `sdl-config --libs` `pkg-config --libs freetype2 libpng` -lGL -lGLU -L/usr/X11R6/lib -L/usr/lib cleanapp: rm -rf sposmroutegl endif diff --git a/android/jni/Android.mk b/android/jni/Android.mk index f7d15b7..9cac5dc 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -82,7 +82,8 @@ LOCAL_SRC_FILES := \ main/favorites.c main/gui_buttons.c main/gui_mainmenu.c main/guiw_gpsfile.c \ main/main.c main/routing.c main/gps.c main/gui_favorites.c \ main/gui_search.c main/gui_config.c main/gui_selectdir.c main/gui_selectfile.c \ - main/linux_gps.c main/wnd_routing.c + main/linux_gps.c main/wnd_routing.c main/wnd_mapcontext.c + # LOCAL_LDLIBS := -shared -llog -landroid -lEGL -lGLESv1_CM -lz LOCAL_LDLIBS := -shared -llog -landroid -lEGL -lGLESv2 -lz LOCAL_STATIC_LIBRARIES := android_native_app_glue zlib png freetype2-static diff --git a/draw/draw_gui.c b/draw/draw_gui.c index e8f9539..2c070b7 100644 --- a/draw/draw_gui.c +++ b/draw/draw_gui.c @@ -90,6 +90,7 @@ void draw_mousebtnup (int x, int y, int btn) { time_t t = time(NULL); float lon, lat; + int dx, dy; if (!mousebtn) return; /* button is no longer pressed */ mousebtn = 0; @@ -105,14 +106,13 @@ void draw_mousebtnup (int x, int y, int btn) { lat = -map_km2lat(((float)(y-gfx_screensize.y/2)) * view_scale); lon = map_km2lon(((float)(x-gfx_screensize.x/2)) * view_scale, view_lat + lat); + + dx = abs (mousebtnpresspos.x-x)*100/gfx_screensize.x; + dy = abs (mousebtnpresspos.y-y)*100/gfx_screensize.y; /* short time button pressing */ if (t - mousebtnpresstime <= 1) { - /* check for movement? */ - int dx = abs (mousebtnpresspos.x-x)*100/gfx_screensize.x; - int dy = abs (mousebtnpresspos.y-y)*100/gfx_screensize.y; - if (dx < 10 && dy < 10) { if (select_enabled) @@ -127,9 +127,10 @@ void draw_mousebtnup (int x, int y, int btn) } } } - else + else if (mousebtnpresslongtime && dx < 10 && dy < 10) { /* long time button pressed */ + wnd_mapcontext_show (); } } diff --git a/gui/gui.h b/gui/gui.h index 0236ac5..30b8064 100644 --- a/gui/gui.h +++ b/gui/gui.h @@ -231,4 +231,6 @@ extern char *gui_sfile_show (char *startpath); extern void gui_config_show (); extern void gpswin_show (); extern void wnd_routing_show (); +extern void wnd_mapcontext_show (); + #endif diff --git a/gui/gui_list.c b/gui/gui_list.c index e83a338..45c1bfc 100644 --- a/gui/gui_list.c +++ b/gui/gui_list.c @@ -1,4 +1,4 @@ -/* $Id: gui_list.c,v 1.12 2013/06/14 23:03:05 steffen Exp $ */ +/* $Id: gui_list.c,v 1.13 2014/02/12 21:21:07 steffen Exp $ */ /*************************************************************************** * gui_list.c * @@ -28,6 +28,8 @@ #include "gui.h" #include "system.h" +#define GUI_ARROW_WIDTH 16 +#define GUI_ARROW_HEIGHT 16 /**************************************************************************** * list @@ -70,9 +72,9 @@ void gui_list_draw (GUIItem *item) { if (i < 0) y = item->y + item->h; else y = item->y; x = item->x + item->w; - for (j = 0; j <= 10; j++) { - gfx_draw_line (currentwin->screen, x - 10, y, x-j, y + i*10, ls); - gfx_draw_line (currentwin->screen, x - 10 -j, y+ i*10, x-10, y, ls); + for (j = 0; j <= GUI_ARROW_WIDTH/2; j++) { + gfx_draw_line (currentwin->screen, x - GUI_ARROW_WIDTH/2, y, x-j, y + i*GUI_ARROW_HEIGHT, ls); + gfx_draw_line (currentwin->screen, x - GUI_ARROW_WIDTH/2 -j, y+ i*GUI_ARROW_HEIGHT, x-GUI_ARROW_WIDTH/2, y, ls); } } }; @@ -100,8 +102,8 @@ int gui_list_event (GUIItem *item, GUIEvent *event) { gui_set_focus (item); - if (y <= 10 && x >= item->w - 10) list->vs--; - else if (y >= item->h - 10 && x >= item->w - 10) list->vs++; + if (y <= GUI_ARROW_HEIGHT && x >= item->w - GUI_ARROW_WIDTH) list->vs--; + else if (y >= item->h - GUI_ARROW_HEIGHT && x >= item->w - GUI_ARROW_WIDTH) list->vs++; else { /* select entry */ i = (y-5)/16 + list->vs; list->selected = i; diff --git a/main/Makefile b/main/Makefile index f33b73b..8466c52 100644 --- a/main/Makefile +++ b/main/Makefile @@ -3,7 +3,7 @@ include ../Makefile.rules OBJBASE = favorites.o main.o ifeq "$(GTKVERSION)" "1" -GTK = linux_gps.o gps.o routing.o gui_selectdir.o gui_selectfile.o gui_config.o gui_buttons.o gui_favorites.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o +GTK = linux_gps.o gps.o routing.o gui_selectdir.o gui_selectfile.o gui_config.o gui_buttons.o gui_favorites.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o wnd_mapcontext.o endif ifeq "$(NCURSESVERSION)" "1" @@ -11,15 +11,15 @@ CURSES = ncurses_main.o endif ifeq "$(WINVERSION)" "1" -WIN = gps.o routing.o gui_buttons.o gui_config.o gui_selectdir.o gui_selectfile.o gui_favorites.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o +WIN = gps.o routing.o gui_buttons.o gui_config.o gui_selectdir.o gui_selectfile.o gui_favorites.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o wnd_mapcontext.o endif ifeq "$(WINCEVERSION)" "1" -WIN = gps.o routing.o gui_buttons.o gui_config.o gui_favorites.o gui_selectdir.o gui_selectfile.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o +WIN = gps.o routing.o gui_buttons.o gui_config.o gui_favorites.o gui_selectdir.o gui_selectfile.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o wnd_mapcontext.o endif ifeq "$(SDLGLVERSION)" "1" -SDLGL = linux_gps.o gps.o routing.o gui_config.o gui_buttons.o gui_favorites.o gui_selectdir.o gui_selectfile.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o +SDLGL = linux_gps.o gps.o routing.o gui_config.o gui_buttons.o gui_favorites.o gui_selectdir.o gui_selectfile.o gui_mainmenu.o gui_search.o guiw_gpsfile.o wnd_routing.o wnd_mapcontext.o endif diff --git a/main/gui_selectfile.c b/main/gui_selectfile.c index 0c4042d..b1ddcf9 100644 --- a/main/gui_selectfile.c +++ b/main/gui_selectfile.c @@ -1,4 +1,4 @@ -/* %Id: Exp $ */ +/* $Id: gui_selectfile.c,v 1.3 2014/02/12 21:23:06 steffen Exp $ */ /*************************************************************************** * gui_selectdir.c * diff --git a/main/routing.c b/main/routing.c index 9110b77..b383ec6 100644 --- a/main/routing.c +++ b/main/routing.c @@ -1,3 +1,5 @@ +/* $Id: routing.c,v 1.4 2014/02/12 21:23:06 steffen Exp $ */ + /*************************************************************************** * routing.c * @@ -968,6 +970,8 @@ void route_start (struct map_pos dest) { } } + if (app.status == APPSTATUS_quit) route_stop (); + if (route->state == ROUTING_CALC) { if ((++calcto) % 200 == 0) main_wnd_update (); } diff --git a/main/wnd_mapcontext.c b/main/wnd_mapcontext.c new file mode 100644 index 0000000..e14bd00 --- /dev/null +++ b/main/wnd_mapcontext.c @@ -0,0 +1,100 @@ +/* $Id: wnd_mapcontext.c,v 1.1 2014/02/12 21:21:08 steffen Exp $ */ +/*************************************************************************** + * wnd_mapcontext.c + * + * 2014-02-12 + * Copyright (C) 2014 Steffen Pohle + * steffen@gulpe.de + ****************************************************************************/ + +/* + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * sposmroute is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "osmroute.h" +#include "draw.h" +#include "gui.h" +#include "system.h" +#include "routing.h" + +void wnd_mapcontext_close (); +void wnd_mapcontext_addfav (); +void wnd_mapcontext_setdest (); + +GUIItem *mcbtn_close = NULL; +GUIItem *mcbtn_addfav = NULL; +GUIItem *mcbtn_setdest = NULL; + +static GUIWindow wmmapc = {0}; + +void wnd_mapcontext_show () { + if (wmmapc.screen == NULL) gui_window_new (&wmmapc, 200, 200, _("Map Menu")); + wmmapc.screen_changed = 1; + wmmapc.style = WGUI_S_VCENTER | WGUI_S_HCENTER; + + /* add buttons */ + if (mcbtn_addfav == NULL) mcbtn_addfav = gui_button_new (_("Add Favorites"), 5, 30, 110, 20); + if (mcbtn_setdest == NULL) mcbtn_setdest = gui_button_new (_("Set Destination"), 5, 60, 110, 20); + + if (select_enabled) { + GUI_BUTTON_T(mcbtn_setdest)->col = GUI_BUTTON_T(mcbtn_addfav)->col = &color[COLOR_white][1]; + GUI_BUTTON_T(mcbtn_setdest)->textcol = GUI_BUTTON_T(mcbtn_addfav)->textcol = &color[COLOR_white][3]; + + GUI_BUTTON_T(mcbtn_addfav)->callback_clicked = (void*)wnd_mapcontext_addfav; + GUI_BUTTON_T(mcbtn_setdest)->callback_clicked = (void*)wnd_mapcontext_setdest; + } + else { + GUI_BUTTON_T(mcbtn_setdest)->col = GUI_BUTTON_T(mcbtn_addfav)->col = &color[COLOR_white][1]; + GUI_BUTTON_T(mcbtn_setdest)->textcol = GUI_BUTTON_T(mcbtn_addfav)->textcol = &color[COLOR_white][2]; + + GUI_BUTTON_T(mcbtn_addfav)->callback_clicked = NULL; + GUI_BUTTON_T(mcbtn_setdest)->callback_clicked = NULL; + } + gui_window_item_add (&wmmapc, mcbtn_addfav); + gui_window_item_add (&wmmapc, mcbtn_setdest); + + if (mcbtn_close == NULL) { + mcbtn_close = gui_button_new (_("Close"), 5, 90, 110, 20); + GUI_BUTTON_T(mcbtn_close)->callback_clicked = (void*)wnd_mapcontext_close; + } + gui_window_item_add (&wmmapc, mcbtn_close); + + gui_show (&wmmapc); +}; + +void wnd_mapcontext_close () { + d_printf ("gui_mapcontext_close"); + gui_close (); +}; + +void wnd_mapcontext_setdest () { + static int _setdest = 0; + + d_printf ("gui_mapcontext_setdest"); + d_printf ("set destination routing start"); + + gui_close (); + if (select_enabled == 0) d_printf ("no destination selected."); + if (_setdest == 1) d_printf ("routing already active"); + else { + _setdest = 1; + route_start (select_pos); + _setdest = 0; + } +}; + +void wnd_mapcontext_addfav () { + d_printf ("gui_mapcontext_addfav"); + gui_close (); +}; diff --git a/sdlgl/sdl_main.c b/sdlgl/sdl_main.c index 8b878ff..f4e86a6 100644 --- a/sdlgl/sdl_main.c +++ b/sdlgl/sdl_main.c @@ -1,4 +1,4 @@ - +/* $Id: sdl_main.c,v 1.15 2014/02/12 21:23:06 steffen Exp $ */ #include #include "osmroute.h" #include "system.h" @@ -295,7 +295,7 @@ int main (int argc, char **argv) { void main_wnd_update () { - d_printf ("main_wnd_update"); + d_printf ("main_wnd_update : %d", app.status); while (msdl_eventloop ()); }