| | 1412 | |
| | 1413 | case ICQ_CMDxSUB_AUTHxREQUEST: // Fall through |
| | 1414 | case ICQ_CMDxSUB_AUTHxGRANTED: |
| | 1415 | case ICQ_CMDxSUB_ADDEDxTOxLIST: |
| | 1416 | { |
| | 1417 | const char* id = NULL; |
| | 1418 | unsigned long ppid = 0; |
| | 1419 | #define GETINFO(sub, type) \ |
| | 1420 | if (m_xCurrentReadEvent->SubCommand() == sub) \ |
| | 1421 | { \ |
| | 1422 | type* p = dynamic_cast<type*>(m_xCurrentReadEvent); \ |
| | 1423 | id = p->IdString(); \ |
| | 1424 | ppid = p->PPID(); \ |
| | 1425 | } |
| | 1426 | |
| | 1427 | GETINFO(ICQ_CMDxSUB_AUTHxREQUEST, CEventAuthRequest); |
| | 1428 | GETINFO(ICQ_CMDxSUB_AUTHxGRANTED, CEventAuthGranted); |
| | 1429 | GETINFO(ICQ_CMDxSUB_ADDEDxTOxLIST, CEventAdded); |
| | 1430 | #undef GETINFO |
| | 1431 | |
| | 1432 | if (id == NULL || ppid == 0) |
| | 1433 | break; |
| | 1434 | |
| | 1435 | ICQUser* u = gUserManager.FetchUser(id, ppid, LOCK_R); |
| | 1436 | if (u == NULL) |
| | 1437 | gLicqDaemon->AddUserToList(id, ppid, false, true); |
| | 1438 | else |
| | 1439 | gUserManager.DropUser(u); |
| | 1440 | |
| | 1441 | mainwin->callInfoTab(mnuUserGeneral, id, ppid, false, true); |
| | 1442 | break; |
| | 1443 | } |