| 3282 | | if(id >= 0 && id < 1000) |
| 3283 | | { |
| 3284 | | // User groups |
| 3285 | | if(mnuGroup->isItemChecked(id)) |
| 3286 | | RemoveUserFromGroup(GROUPS_USER, id, m_szUserMenuId, m_nUserMenuPPID, this); |
| 3287 | | else { |
| 3288 | | gUserManager.AddUserToGroup(m_szUserMenuId, m_nUserMenuPPID, id); |
| 3289 | | updateUserWin(); |
| 3290 | | } |
| 3291 | | } |
| 3292 | | else if(id >= 1000) |
| 3293 | | { |
| 3294 | | switch(id-1000) { |
| 3295 | | case GROUP_NEW_USERS: |
| 3296 | | { |
| 3297 | | ICQUser *u = gUserManager.FetchUser(m_szUserMenuId, m_nUserMenuPPID, LOCK_W); |
| 3298 | | if (!u) return; |
| 3299 | | u->SetNewUser(!u->NewUser()); |
| 3300 | | gUserManager.DropUser(u); |
| 3301 | | updateUserWin(); |
| 3302 | | break; |
| 3303 | | } |
| 3304 | | case GROUP_ONLINE_NOTIFY: |
| 3305 | | { |
| 3306 | | ICQUser *u = gUserManager.FetchUser(m_szUserMenuId, m_nUserMenuPPID, LOCK_W); |
| 3307 | | if (!u) return; |
| 3308 | | u->SetOnlineNotify(!u->OnlineNotify()); |
| 3309 | | gUserManager.DropUser(u); |
| 3310 | | if (m_bFontStyles) updateUserWin(); |
| 3311 | | break; |
| 3312 | | } |
| 3313 | | case GROUP_VISIBLE_LIST: |
| 3314 | | { |
| 3315 | | licqDaemon->ProtoToggleVisibleList(m_szUserMenuId, m_nUserMenuPPID); |
| 3316 | | if (m_bFontStyles) |
| 3317 | | updateUserWin(); |
| 3318 | | break; |
| 3319 | | } |
| 3320 | | case GROUP_INVISIBLE_LIST: |
| 3321 | | { |
| 3322 | | licqDaemon->ProtoToggleInvisibleList(m_szUserMenuId, m_nUserMenuPPID); |
| 3323 | | if (m_bFontStyles) |
| 3324 | | updateUserWin(); |
| 3325 | | break; |
| 3326 | | } |
| 3327 | | case GROUP_IGNORE_LIST: |
| 3328 | | { |
| 3329 | | ICQUser *u = gUserManager.FetchUser(m_szUserMenuId, m_nUserMenuPPID, LOCK_W); |
| 3330 | | if (!u) return; |
| 3331 | | if(!u->IgnoreList() && !QueryUser(this, |
| 3332 | | tr("Do you really want to add\n%1 (%2)\nto your ignore list?") |
| 3333 | | .arg(QString::fromUtf8(u->GetAlias())).arg(m_szUserMenuId), tr("&Yes"), tr("&No"))) |
| 3334 | | { |
| 3335 | | gUserManager.DropUser(u); |
| 3336 | | break; |
| 3337 | | } |
| 3338 | | u->SetIgnoreList(!u->IgnoreList()); |
| 3339 | | gUserManager.DropUser(u); |
| 3340 | | licqDaemon->icqToggleIgnoreList(m_szUserMenuId, m_nUserMenuPPID); // network only |
| 3341 | | updateUserWin(); |
| 3342 | | break; |
| 3343 | | } |
| 3344 | | } |
| | 3282 | bool add = mnuGroup->isItemChecked(id); |
| | 3283 | GroupType gtype = (id < 1000 ? GROUPS_USER : GROUPS_SYSTEM); |
| | 3284 | unsigned short groupId = (id < 1000 ? id : id - 1000); |
| | 3285 | |
| | 3286 | if (gtype == GROUPS_SYSTEM && groupId == GROUP_IGNORE_LIST && add) |
| | 3287 | { |
| | 3288 | ICQUser* u = gUserManager.FetchUser(m_szUserMenuId, m_nUserMenuPPID, LOCK_R); |
| | 3289 | if (u == NULL) |
| | 3290 | return; |
| | 3291 | QString alias = QString::fromUtf8(u->GetAlias()); |
| | 3292 | bool inIgnoreList = u->IgnoreList(); |
| | 3293 | gUserManager.DropUser(u); |
| | 3294 | |
| | 3295 | if(!inIgnoreList && !QueryUser(this, |
| | 3296 | tr("Do you really want to add\n%1 (%2)\nto your ignore list?") |
| | 3297 | .arg(alias).arg(m_szUserMenuId), tr("&Yes"), tr("&No"))) |
| | 3298 | return; |
| | 3299 | } |
| | 3300 | |
| | 3301 | if (add) |
| | 3302 | RemoveUserFromGroup(gtype, groupId, m_szUserMenuId, m_nUserMenuPPID, this); |
| | 3303 | else |
| | 3304 | { |
| | 3305 | gUserManager.SetUserInGroup(m_szUserMenuId, m_nUserMenuPPID, |
| | 3306 | gtype, groupId, true, false); |
| | 3307 | updateUserWin(); |
| 3353 | | if (group == 0) |
| 3354 | | return RemoveUserFromList(szId, nPPID, p); |
| 3355 | | else |
| 3356 | | { |
| 3357 | | ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_R); |
| 3358 | | if (u == NULL) return true; |
| 3359 | | GroupList *g = gUserManager.LockGroupList(LOCK_R); |
| 3360 | | QString warning(tr("Are you sure you want to remove\n%1 (%2)\nfrom the '%3' group?") |
| 3361 | | .arg(QString::fromUtf8(u->GetAlias())) |
| 3362 | | .arg(u->IdString()).arg(QString::fromLocal8Bit( (*g)[group - 1] )) ); |
| 3363 | | gUserManager.UnlockGroupList(); |
| 3364 | | gUserManager.DropUser(u); |
| 3365 | | if (QueryUser(p, warning, tr("Ok"), tr("Cancel"))) |
| 3366 | | { |
| 3367 | | gUserManager.RemoveUserFromGroup(szId, nPPID, group); |
| 3368 | | updateUserWin(); |
| 3369 | | return true; |
| 3370 | | } |
| 3371 | | } |
| 3372 | | } |
| 3373 | | else if (gtype == GROUPS_SYSTEM) |
| 3374 | | { |
| 3375 | | if (group == 0) return true; |
| 3376 | | ICQUser *u = gUserManager.FetchUser(szId, nPPID, LOCK_W); |
| 3377 | | if (u == NULL) return true; |
| 3378 | | u->RemoveFromGroup(GROUPS_SYSTEM, group); |
| | 3322 | ICQUser* u = gUserManager.FetchUser(id, ppid, LOCK_R); |
| | 3323 | if (u == NULL) |
| | 3324 | return true; |
| | 3325 | QString alias = QString::fromUtf8(u->GetAlias()); |
| 3380 | | updateUserWin(); |
| 3381 | | return true; |
| 3382 | | } |
| 3383 | | |
| 3384 | | return false; |
| | 3327 | |
| | 3328 | GroupList* g = gUserManager.LockGroupList(LOCK_R); |
| | 3329 | if (g == NULL) |
| | 3330 | return true; |
| | 3331 | QString groupName = QString::fromLocal8Bit((*g)[group - 1]); |
| | 3332 | gUserManager.UnlockGroupList(); |
| | 3333 | |
| | 3334 | QString warning(tr("Are you sure you want to remove\n%1 (%2)\nfrom the '%3' group?") |
| | 3335 | .arg(alias).arg(id).arg(groupName)); |
| | 3336 | |
| | 3337 | if (!QueryUser(parent, warning, tr("Ok"), tr("Cancel"))) |
| | 3338 | return false; |
| | 3339 | } |
| | 3340 | |
| | 3341 | gUserManager.SetUserInGroup(id, ppid, gtype, group, false); |
| | 3342 | updateUserWin(); |
| | 3343 | return true; |