Show
Ignore:
Timestamp:
06/13/08 05:03:07 (7 months ago)
Author:
flynd
Message:

Use new user group handling function so we need less code here in the plugin.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/qt-gui/src/mainwin.cpp

    r6235 r6280  
    32803280void CMainWindow::UserGroupToggled(int id) 
    32813281{ 
    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(); 
    33453308  } 
    33463309} 
    33473310 
    33483311bool CMainWindow::RemoveUserFromGroup(GroupType gtype, unsigned long group, 
    3349   const char *szId, unsigned long nPPID, QWidget *p) 
    3350 { 
     3312  const char* id, unsigned long ppid, QWidget* parent) 
     3313{ 
     3314  if (gtype == GROUPS_USER && group == 0) 
     3315    return RemoveUserFromList(id, ppid, parent); 
     3316 
     3317  if (gtype == GROUPS_SYSTEM && group == 0) 
     3318    return true; 
     3319 
    33513320  if (gtype == GROUPS_USER) 
    33523321  { 
    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()); 
    33793326    gUserManager.DropUser(u); 
    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; 
    33853344} 
    33863345 
     
    34203379  gUserManager.DropUser(u); 
    34213380 
    3422   gUserManager.AddUserToGroup(m_szUserMenuId, m_nUserMenuPPID, n); 
     3381  gUserManager.SetUserInGroup(m_szUserMenuId, m_nUserMenuPPID, GROUPS_USER, 
     3382      n, true, true); 
    34233383  updateUserWin(); 
    34243384}