Versión sin post-procesado del software del VmRideR

Dependencies:   mbed

Committer:
JuanManuelAmador
Date:
Mon Jun 15 15:34:27 2015 +0000
Revision:
0:3d456b8ce449
prueba

Who changed what in which revision?

UserRevisionLine numberNew 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 }