############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.41A/W32 EVALUATION 26/Feb/2008 15:04:07 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\mod_src\naticq_2nd_mod to # # all(17.02.08)\mainmenu.c # # Command line = "D:\Pasha\elf\mod_src\naticq_2nd_mod to # # all(17.02.08)\mainmenu.c" -D NEWSGOLD -D ELKA # # --preprocess "D:\Pasha\elf\mod_src\naticq_2nd_mod # # to all(17.02.08)\Release_ELKA\List\" -lC # # "D:\Pasha\elf\mod_src\naticq_2nd_mod to # # all(17.02.08)\Release_ELKA\List\" -o # # "D:\Pasha\elf\mod_src\naticq_2nd_mod to # # all(17.02.08)\Release_ELKA\Obj\" -s9 --no_unroll # # --cpu_mode arm --endian little --cpu ARM926EJ-S # # --stack_align 4 --interwork -e --fpu None # # --dlib_config "D:\Pasha\ARM_Embedded_Workbench\Embed # # ded Workbench 4.0 Evaluation\ARM\LIB\dl5tpainl8n.h" # # -I "D:\Pasha\ARM_Embedded_Workbench\Embedded # # Workbench 4.0 Evaluation\ARM\INC\" # # --inline_threshold=2 # # List file = D:\Pasha\elf\mod_src\naticq_2nd_mod to # # all(17.02.08)\Release_ELKA\List\mainmenu.lst # # Object file = D:\Pasha\elf\mod_src\naticq_2nd_mod to # # all(17.02.08)\Release_ELKA\Obj\mainmenu.r79 # # # # # ############################################################################## D:\Pasha\elf\mod_src\naticq_2nd_mod to all(17.02.08)\mainmenu.c 1 #include "../inc/swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "../inc/pnglist.h" 4 #include "NatICQ.h" 5 #include "history.h" 6 #include "mainmenu.h" 7 #include "main.h" 8 #include "conf_loader.h" 9 #include "status_change.h" 10 #include "language.h" 11 #include "revision.h" 12 #include "manage_cl.h" 13 #include "rect_patcher.h" 14 #include "cl_work.h" 15 16 //============================================================================== 17 int MainMenu_ID; 18 19 extern int CurrentStatus; 20 extern int CurrentXStatus; 21 extern DYNPNGICONLIST *XStatusesImgList; 22 extern int *XStatusesIconArray; 23 extern int S_ICONS[]; 24 extern const SOFTKEYSTAB menu_skt; 25 26 #ifdef EVILFOX 27 #ifdef ELKA 28 extern int Is_SLI_On; 29 #endif 30 extern int Is_ILU_On; 31 extern int Is_INC_On; 32 extern int in_count; 33 extern int out_count; 34 #ifdef ELKA 35 static void ChangeSLIMode(void) 36 { 37 Is_SLI_On=!(Is_SLI_On); 38 SUBPROC((void*)WriteDefSettings); 39 RefreshGUI(); 40 } 41 #endif 42 static void ChangeILUMode(void) 43 { 44 Is_ILU_On=!(Is_ILU_On); 45 SUBPROC((void*)WriteDefSettings); 46 RefreshGUI(); 47 } 48 49 static void ChangeINCMode(void) 50 { 51 Is_INC_On=!(Is_INC_On); 52 SUBPROC((void*)WriteDefSettings); 53 RefreshGUI(); 54 } 55 56 static void ShowMSGCount(void) 57 { 58 char *msg_c=malloc(64); 59 sprintf(msg_c, "Recv: %d \n" 60 "Sent: %d", in_count, out_count); 61 ShowMSG(1,(int)msg_c); 62 mfree(msg_c); 63 } 64 65 static void InitSnd(void) 66 { 67 Init_Ext_Sounds(); 68 } 69 #endif 70 71 72 73 extern int Is_Vibra_Enabled; 74 extern unsigned int Is_Sounds_Enabled; 75 extern int Is_Show_Offline; 76 extern int Is_Show_Groups; 77 #ifdef EVILFOX 78 extern int show_ping; 79 #endif 80 81 82 static void ChangeVibraMode(void) 83 { 84 Is_Vibra_Enabled=!(Is_Vibra_Enabled); 85 SUBPROC((void*)WriteDefSettings); 86 RefreshGUI(); 87 } 88 89 static void ChangeSoundMode(void) 90 { 91 Is_Sounds_Enabled=!(Is_Sounds_Enabled); 92 SUBPROC((void*)WriteDefSettings); 93 RefreshGUI(); 94 } 95 96 static void ChangeShowOfflineMode(void) 97 { 98 void RecountMenu(CLIST *req, int needfocus); 99 Is_Show_Offline=!(Is_Show_Offline); 100 SUBPROC((void*)WriteDefSettings); 101 RecountMenu(NULL, 1); 102 RefreshGUI(); 103 } 104 105 static void ChangeShowGroupsMode(void) 106 { 107 void RecountMenu(CLIST *req, int needfocus); 108 Is_Show_Groups=!(Is_Show_Groups); 109 SUBPROC((void*)WriteDefSettings); 110 ResortCL(); 111 RecountMenu(NULL, 1); 112 RefreshGUI(); 113 } 114 115 static void EditConfig(void) 116 { 117 extern const char *successed_config_filename; 118 WSHDR *ws; 119 ws=AllocWS(150); 120 str_2ws(ws,successed_config_filename,128); 121 ExecuteFile(ws,0,0); 122 FreeWS(ws); 123 GeneralFuncF1(1); 124 } 125 126 static void Disconnect(void) 127 { 128 extern volatile int disautorecconect; 129 disautorecconect=1; 130 extern void end_socket(void); 131 SUBPROC((void*)end_socket); 132 GeneralFuncF1(1); 133 } 134 135 static void PingToServer(void) 136 { 137 #ifdef EVILFOX 138 show_ping=1; 139 #endif 140 TPKT *p; 141 p=malloc(sizeof(PKT)+sizeof(TTime)); 142 GetDateTime(NULL,(TTime *)p->data); 143 p->pkt.uin=0; 144 p->pkt.type=T_ECHO; 145 p->pkt.data_len=sizeof(TTime); 146 SUBPROC((void *)SendAnswer,0,p); 147 } 148 149 static void AboutDlg() 150 { 151 char s[256]; 152 snprintf(s,255,LG_COPYRIGHT,__SVN_REVISION__); 153 ShowMSG(2, (int)s); 154 } 155 156 extern char LG_MENU2[32]; 157 static const HEADER_DESC menuhdr={0,0,0,0,NULL,(int)LG_MENU2,LGP_NULL}; 158 159 static const int mmenusoftkeys[]={0,1,2}; 160 161 #ifdef EVILFOX 162 #ifdef ELKA 163 static const char * const menutexts[16]= 164 #else 165 static const char * const menutexts[15]= 166 #endif 167 #else 168 static const char * const menutexts[11]= 169 #endif 170 { 171 LG_MNUSTATUS, 172 LG_MNUXSTATUS, 173 LG_MANAGELIST, 174 LG_MNUVIBRA, 175 LG_MNUSOUND, 176 #ifdef EVILFOX 177 #ifdef ELKA 178 LG_SLION, 179 #endif 180 LG_ILUON, 181 LG_INCON, 182 #endif 183 LG_MNUSHOWOFF, 184 LG_MNUSHOWGROUP, 185 LG_MNUEDCFG, 186 #ifdef EVILFOX 187 LG_INITSND, 188 #endif 189 LG_MNUDISCONNECT, 190 LG_MSGINFO, 191 LG_MNUPING, 192 LG_MNUABOUT ^ Error[Pe146]: too many initializer values 193 }; 194 195 /*MENUITEM_DESC menuitems[7]= 196 { 197 {S_ICONS, (int)LG_MNUSTATUS, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 198 {NULL, (int)LG_MNUADDCONT, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 199 {icon_array, (int)LG_MNUVIBRA, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 200 {icon_array, (int)LG_MNUSOUND, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 201 {NULL, (int)LG_MNUEDCFG, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 202 {NULL, (int)LG_MNUPING , LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 203 {S_ICONS, (int)LG_MNUABOUT, LGP_NULL,0,NULL,MENU_FLAG3,MENU_FLAG2}, 204 };*/ 205 206 #ifdef EVILFOX 207 #ifdef ELKA 208 static const void *menuprocs[16]= 209 #else 210 static const void *menuprocs[15]= 211 #endif 212 #else 213 static const void *menuprocs[11]= 214 #endif 215 { 216 (void *)DispStatusChangeMenu, 217 (void *)DispXStatusChangeMenu, 218 (void *)CreateManageCLMenu, 219 (void *)ChangeVibraMode, 220 (void *)ChangeSoundMode, 221 #ifdef EVILFOX 222 #ifdef ELKA 223 (void *)ChangeSLIMode, 224 #endif 225 (void *)ChangeILUMode, 226 (void *)ChangeINCMode, 227 #endif 228 (void *)ChangeShowOfflineMode, 229 (void *)ChangeShowGroupsMode, 230 (void *)EditConfig, 231 #ifdef EVILFOX 232 (void *)InitSnd, 233 #endif 234 (void *)Disconnect, 235 (void *)ShowMSGCount, ^ Error[Pe020]: identifier "ShowMSGCount" is undefined (void *)ShowMSGCount, ^ "D:\Pasha\elf\mod_src\naticq_2nd_mod to all(17.02.08)\mainmenu.c",235 Error[Pe041]: expression must have arithmetic or pointer type 236 (void *)PingToServer, 237 (void *)AboutDlg, ^ Error[Pe146]: too many initializer values 238 }; 239 240 static const SOFTKEY_DESC mmenu_sk[]= 241 { 242 {0x0018,0x0000,(int)LG_SELECT}, 243 {0x0001,0x0000,(int)LG_BACK}, 244 {0x003D,0x0000,(int)LGP_DOIT_PIC} 245 }; 246 247 static const SOFTKEYSTAB mmenu_skt= 248 { 249 mmenu_sk,0 250 }; 251 252 void tmenu_ghook(void *data, int cmd) 253 { 254 PNGTOP_DESC *pltop=PNG_TOP(); 255 if (cmd==9) 256 { 257 pltop->dyn_pltop=NULL; 258 } 259 if (cmd==0x0A) 260 { 261 pltop->dyn_pltop=XStatusesImgList; 262 DisableIDLETMR(); 263 } 264 } 265 266 static int icon_array[2]; 267 268 static void menuitemhandler(void *data, int curitem, void *unk) 269 { 270 WSHDR *ws; 271 void *item=AllocMenuItem(data); 272 extern const char percent_t[]; 273 ws=AllocMenuWS(data,strlen(menutexts[curitem])); 274 wsprintf(ws,percent_t,menutexts[curitem]); 275 switch(curitem) 276 { 277 case 0: 278 SetMenuItemIconArray(data,item,S_ICONS+CurrentStatus); 279 break; 280 case 1: 281 SetMenuItemIconArray(data,item,XStatusesIconArray+CurrentXStatus); 282 break; 283 case 2: 284 SetMenuItemIconArray(data,item,S_ICONS+ICON_ADDCONTACT); 285 break; 286 case 3: 287 SetMenuItemIconArray(data,item,icon_array+(Is_Vibra_Enabled?0:1)); 288 break; 289 case 4: 290 SetMenuItemIconArray(data,item,icon_array+(Is_Sounds_Enabled?0:1)); 291 break; 292 #ifdef ELKA 293 case 5: 294 SetMenuItemIconArray(data,item,icon_array+(Is_SLI_On?0:1)); ^ Error[Pe020]: identifier "Is_SLI_On" is undefined 295 break; 296 case 6: 297 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); ^ Error[Pe020]: identifier "Is_ILU_On" is undefined 298 break; 299 case 7: 300 SetMenuItemIconArray(data,item,icon_array+(Is_INC_On?0:1)); ^ Error[Pe020]: identifier "Is_INC_On" is undefined 301 break; 302 case 8: 303 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); 304 break; 305 case 9: 306 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); 307 break; 308 case 10: 309 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 310 break; 311 case 11: 312 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 313 break; 314 case 12: 315 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 316 break; 317 case 13: 318 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 319 break; 320 case 14: 321 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); 322 break; 323 case 15: 324 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 325 break; 326 #else 327 case 5: 328 SetMenuItemIconArray(data,item,icon_array+(Is_ILU_On?0:1)); 329 break; 330 case 6: 331 SetMenuItemIconArray(data,item,icon_array+(Is_INC_On?0:1)); 332 break; 333 case 7: 334 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Offline?0:1)); 335 break; 336 case 8: 337 SetMenuItemIconArray(data,item,icon_array+(Is_Show_Groups?0:1)); 338 break; 339 case 9: 340 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 341 break; 342 case 10: 343 SetMenuItemIconArray(data,item,S_ICONS+ICON_SETTINGS); 344 break; 345 case 11: 346 SetMenuItemIconArray(data,item,S_ICONS+IS_OFFLINE); 347 break; 348 case 12: 349 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 350 break; 351 case 13: 352 SetMenuItemIconArray(data,item,S_ICONS+ICON_PING); 353 break; 354 case 14: 355 SetMenuItemIconArray(data,item,S_ICONS+IS_UNKNOWN); 356 break; 357 #endif 358 } 359 SetMenuItemText(data, item, ws, curitem); 360 } 361 362 static int tmenu_keyhook(void *data, GUI_MSG *msg) 363 { 364 if ((msg->keys==0x18)||(msg->keys==0x3D)) 365 { 366 ((void (*)(void))(menuprocs[GetCurMenuItem(data)]))(); 367 } 368 return(0); 369 } 370 371 372 static const MENU_DESC tmenu= 373 { 374 8,tmenu_keyhook,tmenu_ghook,NULL, 375 mmenusoftkeys, 376 &mmenu_skt, 377 0x11,//MENU_FLAG, 378 menuitemhandler, 379 NULL,//menuitems, 380 NULL,//menuprocs, 381 #ifdef EVILFOX 382 #ifdef ELKA 383 16 384 #else 385 15 386 #endif 387 #else 388 11 389 #endif 390 }; 391 392 void ShowMainMenu() 393 { 394 icon_array[0]=GetPicNByUnicodeSymbol(CBOX_CHECKED); 395 icon_array[1]=GetPicNByUnicodeSymbol(CBOX_UNCHECKED); 396 *((int **)(&menuhdr.icon))=S_ICONS+IS_ONLINE; 397 patch_header(&menuhdr); 398 #ifdef EVILFOX 399 #ifdef ELKA 400 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,16,0,0); 401 #else 402 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,15,0,0); 403 #endif 404 #else 405 MainMenu_ID=CreateMenu(0,0,&tmenu,&menuhdr,0,11,0,0); 406 #endif 407 } Errors: 7 Warnings: none