FreeCalypso > hg > fc-magnetite
comparison src/ui3/mfw/mfw_lng.c @ 420:e8ddbb0837ed
src/ui3: initial import of TCS3/LoCosto BMI & MFW code
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 21 Jan 2018 03:09:00 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 419:59143cd42ec7 | 420:e8ddbb0837ed |
|---|---|
| 1 /* | |
| 2 +--------------------------------------------------------------------+ | |
| 3 | PROJECT: MMI-Framework (8417) $Workfile:: mfw_lng.c $| | |
| 4 | $Author:: Kk $ CONDAT GmbH $Revision:: 3 $| | |
| 5 | CREATED: 27.08.99 $Modtime:: 14.03.00 13:59 $| | |
| 6 | STATE : code | | |
| 7 +--------------------------------------------------------------------+ | |
| 8 | |
| 9 MODULE : MFW_LNG | |
| 10 | |
| 11 PURPOSE : language handling functions | |
| 12 | |
| 13 EXPORT : | |
| 14 | |
| 15 TO DO : | |
| 16 | |
| 17 $History:: mfw_lng.c $ | |
| 18 * | |
| 19 * ***************** Version 3 ***************** | |
| 20 * User: Kk Date: 14.03.00 Time: 15:48 | |
| 21 * Updated in $/GSM/Condat/MS/SRC/MFW | |
| 22 * added handling of various texts | |
| 23 * | |
| 24 * ***************** Version 2 ***************** | |
| 25 * User: Kk Date: 10.01.00 Time: 14:03 | |
| 26 * Updated in $/GSM/Condat/MS/SRC/MFW | |
| 27 * | |
| 28 * ***************** Version 3 ***************** | |
| 29 * User: Rm Date: 12/22/99 Time: 4:34p | |
| 30 * Updated in $/GSM/Condat/SND-MMI/MFW | |
| 31 * | |
| 32 * ***************** Version 2 ***************** | |
| 33 * User: Es Date: 22.11.99 Time: 10:29 | |
| 34 * Updated in $/GSM/Condat/SND-MMI/MFW | |
| 35 * | |
| 36 * ***************** Version 1 ***************** | |
| 37 * User: Es Date: 18.11.99 Time: 16:35 | |
| 38 * Created in $/GSM/Condat/SND-MMI/MFW | |
| 39 * Initial | |
| 40 */ | |
| 41 | |
| 42 #if defined (NEW_FRAME) | |
| 43 | |
| 44 #include "typedefs.h" | |
| 45 #include "vsi.h" | |
| 46 #include "pei.h" | |
| 47 #include "custom.h" | |
| 48 #include "gsm.h" | |
| 49 | |
| 50 #else | |
| 51 | |
| 52 #include "STDDEFS.H" | |
| 53 #include "custom.h" | |
| 54 #include "gsm.h" | |
| 55 #include "vsi.h" | |
| 56 | |
| 57 #endif | |
| 58 | |
| 59 #include <stdio.h> | |
| 60 | |
| 61 #include "mfw_mfw.h" | |
| 62 #include "mfw_sys.h" | |
| 63 #include "drv_key.h" | |
| 64 #include "mfw_kbd.h" | |
| 65 #include "mfw_lng.h" | |
| 66 | |
| 67 | |
| 68 static int lngCommand (U32 cmd, void *h); | |
| 69 | |
| 70 EXTERN MfwHdr * current_mfw_elem; | |
| 71 | |
| 72 | |
| 73 /* | |
| 74 +--------------------------------------------------------------------+ | |
| 75 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 76 | STATE : code ROUTINE : lngInit | | |
| 77 +--------------------------------------------------------------------+ | |
| 78 | |
| 79 PURPOSE : initialize language handler | |
| 80 | |
| 81 */ | |
| 82 | |
| 83 MfwRes lngInit (void) | |
| 84 { | |
| 85 mfwCommand[MfwTypLng] = (MfwCb) lngCommand; | |
| 86 | |
| 87 return MfwResOk; | |
| 88 } | |
| 89 | |
| 90 | |
| 91 /* | |
| 92 +--------------------------------------------------------------------+ | |
| 93 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 94 | STATE : code ROUTINE : lngExit | | |
| 95 +--------------------------------------------------------------------+ | |
| 96 | |
| 97 PURPOSE : finalize language handler | |
| 98 | |
| 99 */ | |
| 100 | |
| 101 MfwRes lngExit (void) | |
| 102 { | |
| 103 mfwCommand[MfwTypLng] = 0; | |
| 104 | |
| 105 return MfwResOk; | |
| 106 } | |
| 107 | |
| 108 | |
| 109 /* | |
| 110 +--------------------------------------------------------------------+ | |
| 111 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 112 | STATE : code ROUTINE : lngCreate | | |
| 113 +--------------------------------------------------------------------+ | |
| 114 | |
| 115 PURPOSE : create language control | |
| 116 | |
| 117 */ | |
| 118 | |
| 119 MfwHnd lngCreate (MfwHnd w, MfwEvt e, LngInfo *l, MfwCb f) | |
| 120 { | |
| 121 MfwHdr *hdr = (MfwHdr *) mfwAlloc(sizeof(MfwHdr)); | |
| 122 MfwLng *lng = (MfwLng *) mfwAlloc(sizeof(MfwLng)); | |
| 123 MfwHdr *insert_status =0; | |
| 124 | |
| 125 if (!hdr || !lng) | |
| 126 { | |
| 127 TRACE_ERROR("ERROR: lngCreate() Mem Alloc Failed."); | |
| 128 | |
| 129 if(hdr) | |
| 130 mfwFree((U8*)hdr,sizeof(MfwHdr)); | |
| 131 if(lng) | |
| 132 mfwFree((U8*)lng,sizeof(MfwLng)); | |
| 133 | |
| 134 return 0; | |
| 135 } | |
| 136 | |
| 137 lng->map = e; | |
| 138 lng->evt = 0; | |
| 139 lng->handler = f; | |
| 140 lng->lng = l; | |
| 141 | |
| 142 hdr->data = lng; | |
| 143 hdr->type = MfwTypLng; | |
| 144 | |
| 145 insert_status = mfwInsert(w,hdr); | |
| 146 if(!insert_status) | |
| 147 { | |
| 148 TRACE_ERROR("ERROR: lngCreate() Failed to Install Handler. "); | |
| 149 mfwFree((U8*)hdr,sizeof(MfwHdr)); | |
| 150 mfwFree((U8*)lng ,sizeof(MfwLng)); | |
| 151 return 0; | |
| 152 } | |
| 153 return insert_status; | |
| 154 } | |
| 155 | |
| 156 | |
| 157 /* | |
| 158 +--------------------------------------------------------------------+ | |
| 159 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 160 | STATE : code ROUTINE : lngDelete | | |
| 161 +--------------------------------------------------------------------+ | |
| 162 | |
| 163 PURPOSE : delete language control | |
| 164 | |
| 165 */ | |
| 166 | |
| 167 MfwRes lngDelete (MfwHnd h) | |
| 168 { | |
| 169 MfwRes res; | |
| 170 | |
| 171 if (!h) | |
| 172 return MfwResIllHnd; | |
| 173 | |
| 174 res = (mfwRemove(h)) ? MfwResOk : MfwResIllHnd; | |
| 175 | |
| 176 mfwFree(((MfwHdr *) h)->data,sizeof(MfwLng)); | |
| 177 mfwFree(h,sizeof(MfwHdr)); | |
| 178 | |
| 179 return res; | |
| 180 } | |
| 181 | |
| 182 | |
| 183 /* | |
| 184 +--------------------------------------------------------------------+ | |
| 185 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 186 | STATE : code ROUTINE : lngText | | |
| 187 +--------------------------------------------------------------------+ | |
| 188 | |
| 189 PURPOSE : get prmpt text in current language | |
| 190 | |
| 191 */ | |
| 192 | |
| 193 char* lngText (MfwHnd h, unsigned int t) | |
| 194 { | |
| 195 char *err = "lngText: Fatal"; | |
| 196 MfwHdr *hp = h; | |
| 197 LngInfo *lc; | |
| 198 const char* const* lt; | |
| 199 | |
| 200 if (!hp || hp->type != MfwTypLng) | |
| 201 return err; | |
| 202 | |
| 203 lc = ((MfwLng *) (hp->data))->lng; | |
| 204 | |
| 205 if (!lc || !lc->prompts) | |
| 206 return err; | |
| 207 | |
| 208 if (t >= lc->nPrompts) | |
| 209 return ((char *) t); | |
| 210 | |
| 211 lt = lc->prompts[lc->language]; | |
| 212 | |
| 213 return ((char *) (lt[t])); | |
| 214 } | |
| 215 | |
| 216 | |
| 217 /* | |
| 218 +--------------------------------------------------------------------+ | |
| 219 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 220 | STATE : code ROUTINE : sigExec | | |
| 221 +--------------------------------------------------------------------+ | |
| 222 | |
| 223 PURPOSE : execute language control related signal | |
| 224 | |
| 225 */ | |
| 226 | |
| 227 static int sigExec (MfwHdr *curElem, U32 event/*, U8 key*/) | |
| 228 { | |
| 229 MfwLng *lc; | |
| 230 | |
| 231 while (curElem) | |
| 232 { | |
| 233 if (curElem->type == MfwTypLng) | |
| 234 { | |
| 235 lc = curElem->data; | |
| 236 if (lc->map & event) | |
| 237 { | |
| 238 if (lc->handler) /* handler valid */ | |
| 239 { | |
| 240 // PATCH LE 06.06.00 | |
| 241 // store current mfw elem | |
| 242 current_mfw_elem = curElem; | |
| 243 // END PATCH LE 06.06.00 | |
| 244 if ((*(lc->handler))(event,lc)) | |
| 245 return 1; /* event consumed */ | |
| 246 } | |
| 247 } | |
| 248 } | |
| 249 curElem = curElem->next; | |
| 250 } | |
| 251 | |
| 252 return 0; | |
| 253 } | |
| 254 | |
| 255 | |
| 256 /* | |
| 257 +--------------------------------------------------------------------+ | |
| 258 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 259 | STATE : code ROUTINE : lngSignal | | |
| 260 +--------------------------------------------------------------------+ | |
| 261 | |
| 262 PURPOSE : language control related event | |
| 263 | |
| 264 */ | |
| 265 | |
| 266 void lngSignal (void /*char make, char key*/) | |
| 267 {/*MC, SPR 1389, we have to enable the display whenever | |
| 268 we send an event up to the MMI*/ | |
| 269 UBYTE temp = dspl_Enable(0); | |
| 270 U32 event = 0; // RAVI | |
| 271 | |
| 272 if (mfwFocus) | |
| 273 if (sigExec(mfwFocus,event/*,(U8) key)*/)) | |
| 274 { dspl_Enable(temp);/*MC, SPR 1389*/ | |
| 275 return; | |
| 276 } | |
| 277 if (mfwRoot) | |
| 278 sigExec(mfwRoot,event/*,(U8) key*/); | |
| 279 | |
| 280 dspl_Enable(temp);/*MC, SPR 1389*/ | |
| 281 return; | |
| 282 } | |
| 283 | |
| 284 | |
| 285 /* | |
| 286 +--------------------------------------------------------------------+ | |
| 287 | PROJECT : MMI-Framework (8417) MODULE : MFW_LNG | | |
| 288 | STATE : code ROUTINE : lngCommand | | |
| 289 +--------------------------------------------------------------------+ | |
| 290 | |
| 291 PURPOSE : handle mfw windows command | |
| 292 | |
| 293 */ | |
| 294 | |
| 295 static int lngCommand (U32 cmd, void *h) | |
| 296 { | |
| 297 switch (cmd) | |
| 298 { | |
| 299 case MfwCmdDelete: /* delete me */ | |
| 300 if (!h) | |
| 301 return 0; | |
| 302 lngDelete(h); | |
| 303 return 1; | |
| 304 default: | |
| 305 break; | |
| 306 } | |
| 307 | |
| 308 return 0; | |
| 309 } | |
| 310 |
