| 738 | | return false; |
| 739 | | } |
| 740 | | |
| 741 | | bool LicqGui::removeUserFromGroup(GroupType gtype, unsigned long group, |
| 742 | | QString id, unsigned long ppid, QWidget* parent) |
| 743 | | { |
| 744 | | if (parent == NULL) |
| 745 | | parent = myMainWindow; |
| 746 | | |
| 747 | | if (gtype == GROUPS_USER) |
| 748 | | { |
| 749 | | if (group == 0) |
| 750 | | return true; |
| 751 | | else |
| 752 | | { |
| 753 | | ICQUser* u = gUserManager.FetchUser(id.toLatin1(), ppid, LOCK_R); |
| 754 | | if (u == NULL) |
| 755 | | return true; |
| 756 | | LicqGroup* g = gUserManager.FetchGroup(group, LOCK_R); |
| 757 | | if (g == NULL) |
| 758 | | { |
| 759 | | gUserManager.DropUser(u); |
| 760 | | return true; |
| 761 | | } |
| 762 | | QString warning(tr("Are you sure you want to remove\n%1 (%2)\nfrom the '%3' group?") |
| 763 | | .arg(QString::fromUtf8(u->GetAlias())) |
| 764 | | .arg(u->IdString()).arg(QString::fromLocal8Bit(g->name().c_str()))); |
| 765 | | gUserManager.DropGroup(g); |
| 766 | | gUserManager.DropUser(u); |
| 767 | | if (QueryYesNo(parent, warning)) |
| 768 | | { |
| 769 | | gUserManager.RemoveUserFromGroup(id.toLatin1(), ppid, group); |
| 770 | | return true; |
| 771 | | } |
| 772 | | } |
| 773 | | } |
| 774 | | else if (gtype == GROUPS_SYSTEM) |
| 775 | | { |
| 776 | | if (group == 0) |
| 777 | | return removeUserFromList(id, ppid, parent); |
| 778 | | ICQUser* u = gUserManager.FetchUser(id.toLatin1(), ppid, LOCK_W); |
| 779 | | if (u == NULL) |
| 780 | | return true; |
| 781 | | u->RemoveFromGroup(GROUPS_SYSTEM, group); |
| 782 | | gUserManager.DropUser(u); |
| 783 | | |
| 784 | | // The daemon does not send an update when group membership changes |
| 785 | | // so tell the contactList it needs to update |
| 786 | | myContactList->updateUser(id, ppid); |
| 787 | | return true; |
| 788 | | } |
| 789 | | |