* It includes/updates a new picto to the user collection: download the image from remote or local storage, add the picto to the current vocabulary and update the database
packagecom.yottacode.pictogram.grammar;importandroid.util.Log;importcom.github.nkzawa.emitter.Emitter;importorg.json.JSONException;importorg.json.JSONObject;importcom.yottacode.pictogram.dao.Picto;importcom.yottacode.pictogram.action.Room;/**
* Websocket Vocabulary Room based on Room
* @author Fernando Martinez Santiago
* @version 1.0
*/publicclassVocabularyTalkimplementsEmitter.Listener{privatestaticfinalStringURL="vocabulary";privateRoomroom;iVocabularyListenerlisteners[];publicVocabularyTalk(Roomroom,iVocabularyListenerlisteners[]){this.room=room;this.room.listen(URL,this);this.listeners=listeners;}@Overridepublicvoidcall(Object...args){finalStringparam_action="action";finalStringparam_attributes="attributes";finalStringparam_picto="picto";finalStringparam_stu_picto="stu_picto";finalStringparam_picto_id="id";finalStringparam_picto_cat="id_cat";finalStringaction_update="update";finalStringaction_add="add";finalStringaction_delete="delete";JSONObjectmsg=(JSONObject)args[0];try{Log.i(this.getClass().getName(),"raw Received message "+msg.toString());Stringaction=msg.getString(param_action).toLowerCase();JSONObjectstu_picto=msg.getJSONObject(param_attributes).getJSONObject(param_stu_picto);JSONObjectattrs_stu_picto=stu_picto.optJSONObject(param_attributes);JSONObjectattrs_picto=stu_picto.optJSONObject(param_picto);intpicto_id=attrs_picto.getInt(param_picto_id);intpicto_cat=attrs_stu_picto!=null?attrs_stu_picto.optInt(param_picto_cat,Picto.NO_CATEGORY):0;Log.i(this.getClass().getName(),"Received message '"+action+"' for picto "+picto_id+" (cat "+picto_cat+", attrs: "+attrs_picto);for(iVocabularyListenerlistener:this.listeners)listener.change(action.equals(action_update)?iVocabularyListener.action.update:action.equals(action_add)?iVocabularyListener.action.add:iVocabularyListener.action.delete,picto_cat,picto_id,stu_picto);}catch(JSONExceptione){Log.e(this.getClass().getCanonicalName(),e.getClass().getCanonicalName()+"--"+e);}}}
"cannot_delete_method":"No se pudo eliminar el método, tal vez porque existen sesiones asociadas.",
"cannot_delete_instruction":"No se pudo eliminar la instrucción, tal vez porque existen sesiones asociadas.",
"categories":"Categorías",
"category_pictograms":"Pictogramas de la categoría",
"change_password":"Cambiar contraseña",
...
...
@@ -201,6 +202,7 @@
"register_button":"Registrar",
"remember":"No cerrar sesión",
"reports":"Informes",
"room_changed":"Un participante abandonó la sesión. Sesión en pausa.",
"save":"Guardar",
"save_as_template":"Guardar como plantilla",
"search":"Buscar",
...
...
@@ -217,6 +219,7 @@
"serial_list":"Números de serie libres",
"serial_not_created":"No se ha podido crear el número de serie",
"session":"Sesión",
"sessions":"Sesiones",
"session_mean_length":"Duración media de sesión: {{hours}} horas",
"session_notes":"Notas de sesión",
"sessions":"Sesiones",
...
...
@@ -259,6 +262,7 @@
"surname":"Apellidos",
"tag_deleted":"Etiqueta borrada",
"tape_background":"Fondo de la cinta",
"template_deleted":"Plantilla eliminada",
"time_hours":"Tiempo: {{hours}} horas",
"time_instruction_method":"Tiempo instrucciones del método",
"time_sessions_per_days":"Tiempo de sesiones por días en",
...
...
@@ -299,7 +303,8 @@
"vibration":"Vibración",
"view":"Vista",
"voice":"Voz",
"warning_last_session_bad":" La última sesión no se cerró correctamente. <p/> Por favor, evalúe los ensayos correspondientes antes de iniciar una nueva sesión ",
"warning_last_session_bad":" La última sesión no se cerró correctamente. <p/> Por favor, evalúe los ensayos y pulse 'cerrar sesión' ",
"warning_no_tablet_online":"No se detectó ningún usuario de Pictogram Tablet online",
<selectclass="form-control"name="met_select"id="met_select"ng-model="selectedMethod"ng-options="m.name for m in methods"ng-change="load_instructions(selectedMethod)">