Versión sin post-procesado del software del VmRideR
Dependencies: mbed
ScreenManager/ListaSelec.cpp@1:a3c9b672b8e2, 2015-06-15 (annotated)
- Committer:
- jjmedina
- Date:
- Mon Jun 15 15:44:11 2015 +0000
- Revision:
- 1:a3c9b672b8e2
- Parent:
- 0:3d456b8ce449
Prueba_deutsch
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JuanManuelAmador | 0:3d456b8ce449 | 1 | #include "mbed.h" |
JuanManuelAmador | 0:3d456b8ce449 | 2 | #include "ListaSelec.h" |
JuanManuelAmador | 0:3d456b8ce449 | 3 | |
JuanManuelAmador | 0:3d456b8ce449 | 4 | extern ScreenManager SC; |
JuanManuelAmador | 0:3d456b8ce449 | 5 | |
JuanManuelAmador | 0:3d456b8ce449 | 6 | extern DigitalIn boton1; |
JuanManuelAmador | 0:3d456b8ce449 | 7 | extern DigitalIn boton4; |
JuanManuelAmador | 0:3d456b8ce449 | 8 | extern DigitalIn boton5; |
JuanManuelAmador | 0:3d456b8ce449 | 9 | |
JuanManuelAmador | 0:3d456b8ce449 | 10 | void ListaSelec::DrawElements(DogMLCD* lcd){ |
JuanManuelAmador | 0:3d456b8ce449 | 11 | for(int i = 0; i < SCREENLINES; i++){ |
JuanManuelAmador | 0:3d456b8ce449 | 12 | if((i + topElement) < nElementos){ |
JuanManuelAmador | 0:3d456b8ce449 | 13 | lcd->XString(OFFSETX, HEIGHTCARACTER8*i + 1 + OFFSETY, list[i + topElement]); |
JuanManuelAmador | 0:3d456b8ce449 | 14 | } |
JuanManuelAmador | 0:3d456b8ce449 | 15 | } |
JuanManuelAmador | 0:3d456b8ce449 | 16 | drawSelection(OFFSETX-1, HEIGHTCARACTER8*posMark + OFFSETY, WIDTH-OFFSETX, HEIGHTCARACTER8, lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 17 | } |
JuanManuelAmador | 0:3d456b8ce449 | 18 | |
JuanManuelAmador | 0:3d456b8ce449 | 19 | void ListaSelec::initialize(DogMLCD* lcd){ |
JuanManuelAmador | 0:3d456b8ce449 | 20 | // Se inicializa la selección |
JuanManuelAmador | 0:3d456b8ce449 | 21 | setSelect(0); |
JuanManuelAmador | 0:3d456b8ce449 | 22 | topElement = 0; |
JuanManuelAmador | 0:3d456b8ce449 | 23 | posMark = 0; |
JuanManuelAmador | 0:3d456b8ce449 | 24 | lastPosMark = 0; |
JuanManuelAmador | 0:3d456b8ce449 | 25 | |
JuanManuelAmador | 0:3d456b8ce449 | 26 | // select font to use: |
JuanManuelAmador | 0:3d456b8ce449 | 27 | lcd->XFont = xfont_8; |
JuanManuelAmador | 0:3d456b8ce449 | 28 | |
JuanManuelAmador | 0:3d456b8ce449 | 29 | // Se pintan los elementos de la lista |
JuanManuelAmador | 0:3d456b8ce449 | 30 | DrawElements(lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 31 | |
JuanManuelAmador | 0:3d456b8ce449 | 32 | // transmit work screen to physical screen: |
JuanManuelAmador | 0:3d456b8ce449 | 33 | lcd->Flush(); |
JuanManuelAmador | 0:3d456b8ce449 | 34 | } |
JuanManuelAmador | 0:3d456b8ce449 | 35 | |
JuanManuelAmador | 0:3d456b8ce449 | 36 | // El botón 1 sube la selección al elemento superior al actual |
JuanManuelAmador | 0:3d456b8ce449 | 37 | void ListaSelec::button1pressed(DogMLCD* lcd){ |
JuanManuelAmador | 0:3d456b8ce449 | 38 | // Si sales de los elementos seleccionables no se cambia de selección |
JuanManuelAmador | 0:3d456b8ce449 | 39 | if((getSelect()-1) >= 0){ |
JuanManuelAmador | 0:3d456b8ce449 | 40 | // Se selecciona el elemento |
JuanManuelAmador | 0:3d456b8ce449 | 41 | setSelect(getSelect()-1); |
JuanManuelAmador | 0:3d456b8ce449 | 42 | // Si se ha seleccionado un elemento superior que no está siendo mostrado en la pantalla |
JuanManuelAmador | 0:3d456b8ce449 | 43 | if(getSelect() < topElement){ |
JuanManuelAmador | 0:3d456b8ce449 | 44 | // Se sube hacia arriba el top element (se le resta 1) y se pintan de nuevo los elementos de pantalla |
JuanManuelAmador | 0:3d456b8ce449 | 45 | topElement--; |
JuanManuelAmador | 0:3d456b8ce449 | 46 | lcd->Clear(); |
JuanManuelAmador | 0:3d456b8ce449 | 47 | DrawElements(lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 48 | }else{ |
JuanManuelAmador | 0:3d456b8ce449 | 49 | // Sino se mueve el marcador de selección |
JuanManuelAmador | 0:3d456b8ce449 | 50 | lastPosMark = posMark; |
JuanManuelAmador | 0:3d456b8ce449 | 51 | posMark--; |
JuanManuelAmador | 0:3d456b8ce449 | 52 | drawDeselection(OFFSETX-1, HEIGHTCARACTER8*lastPosMark + OFFSETY, WIDTH-OFFSETX , HEIGHTCARACTER8, lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 53 | drawSelection(OFFSETX-1, HEIGHTCARACTER8*posMark + OFFSETY, WIDTH-OFFSETX, HEIGHTCARACTER8, lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 54 | } |
JuanManuelAmador | 0:3d456b8ce449 | 55 | // transmit work screen to physical screen: |
JuanManuelAmador | 0:3d456b8ce449 | 56 | lcd->Flush(); |
JuanManuelAmador | 0:3d456b8ce449 | 57 | } |
JuanManuelAmador | 0:3d456b8ce449 | 58 | } |
JuanManuelAmador | 0:3d456b8ce449 | 59 | |
JuanManuelAmador | 0:3d456b8ce449 | 60 | // El botón 4 baja la selección al elemento superior al actual |
JuanManuelAmador | 0:3d456b8ce449 | 61 | void ListaSelec::button4pressed(DogMLCD* lcd){ |
JuanManuelAmador | 0:3d456b8ce449 | 62 | // Si sales de los elementos seleccionables no se cambia de selección |
JuanManuelAmador | 0:3d456b8ce449 | 63 | if((getSelect()+1) <= (nElementos - 1)){ |
JuanManuelAmador | 0:3d456b8ce449 | 64 | // Se selecciona el elemento |
JuanManuelAmador | 0:3d456b8ce449 | 65 | setSelect(getSelect()+1); |
JuanManuelAmador | 0:3d456b8ce449 | 66 | // Si se ha seleccionado un elemento inferior que no está siendo mostrado en la pantalla |
JuanManuelAmador | 0:3d456b8ce449 | 67 | if(getSelect() > (topElement + SCREENLINES - 1)){ |
JuanManuelAmador | 0:3d456b8ce449 | 68 | lcd->Clear(); |
JuanManuelAmador | 0:3d456b8ce449 | 69 | topElement++; |
JuanManuelAmador | 0:3d456b8ce449 | 70 | DrawElements(lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 71 | }else{ |
JuanManuelAmador | 0:3d456b8ce449 | 72 | // Sino se mueve el marcador de selección |
JuanManuelAmador | 0:3d456b8ce449 | 73 | lastPosMark = posMark; |
JuanManuelAmador | 0:3d456b8ce449 | 74 | posMark++; |
JuanManuelAmador | 0:3d456b8ce449 | 75 | drawDeselection(OFFSETX-1, HEIGHTCARACTER8*lastPosMark + OFFSETY, WIDTH-OFFSETX, HEIGHTCARACTER8, lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 76 | drawSelection(OFFSETX-1, HEIGHTCARACTER8*posMark + OFFSETY, WIDTH-OFFSETX, HEIGHTCARACTER8, lcd); |
JuanManuelAmador | 0:3d456b8ce449 | 77 | } |
JuanManuelAmador | 0:3d456b8ce449 | 78 | // transmit work screen to physical screen: |
JuanManuelAmador | 0:3d456b8ce449 | 79 | lcd->Flush(); |
JuanManuelAmador | 0:3d456b8ce449 | 80 | } |
JuanManuelAmador | 0:3d456b8ce449 | 81 | } |
JuanManuelAmador | 0:3d456b8ce449 | 82 | |
JuanManuelAmador | 0:3d456b8ce449 | 83 | // El botón 5 envía a la pantalla correspondiente según el elemento seleccionado |
JuanManuelAmador | 0:3d456b8ce449 | 84 | void ListaSelec::button5pressed(DogMLCD* lcd){ |
JuanManuelAmador | 0:3d456b8ce449 | 85 | SC.changeScreen(nextScreenID[getSelect()]); |
JuanManuelAmador | 0:3d456b8ce449 | 86 | } |
JuanManuelAmador | 0:3d456b8ce449 | 87 | |
JuanManuelAmador | 0:3d456b8ce449 | 88 | // Añade un elemento al menu con el texto especificado en el primer argumento |
JuanManuelAmador | 0:3d456b8ce449 | 89 | // cada elemento nos enviará a la pantalla con el identificador del segundo argumento |
JuanManuelAmador | 0:3d456b8ce449 | 90 | // Devuelve el identificador del elemento añadido |
JuanManuelAmador | 0:3d456b8ce449 | 91 | int ListaSelec::addElement(char text[], char nameNextScreen[NCARSCREEN]){ |
JuanManuelAmador | 0:3d456b8ce449 | 92 | //strcpy(list[nElementos], text); |
JuanManuelAmador | 0:3d456b8ce449 | 93 | list[nElementos] = text; |
JuanManuelAmador | 0:3d456b8ce449 | 94 | //strcpy(nextScreenID[nElementos], nameNextScreen); |
JuanManuelAmador | 0:3d456b8ce449 | 95 | nextScreenID[nElementos] = nameNextScreen; |
JuanManuelAmador | 0:3d456b8ce449 | 96 | nElementos++; |
JuanManuelAmador | 0:3d456b8ce449 | 97 | return nElementos - 1; |
JuanManuelAmador | 0:3d456b8ce449 | 98 | } |
JuanManuelAmador | 0:3d456b8ce449 | 99 | |
JuanManuelAmador | 0:3d456b8ce449 | 100 | char *ListaSelec::getElement(int index){ |
JuanManuelAmador | 0:3d456b8ce449 | 101 | return list[index]; |
JuanManuelAmador | 0:3d456b8ce449 | 102 | } |