Show
Ignore:
Timestamp:
05/25/08 06:25:18 (8 months ago)
Author:
flynd
Message:

Use new group subsignals from daemon. Removed some workarounds no longer needed.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/qt4-gui/src/contactlist/contactlist.cpp

    r6198 r6200  
    5656} 
    5757 
    58 ContactListModel::~ContactListModel() 
    59 { 
    60   // Delete all users and groups 
    61   clear(); 
    62  
    63   // Delete the system groups 
    64   for (unsigned long i = 0; i < NUM_GROUPS_SYSTEM_ALL; ++i) 
    65     delete mySystemGroups[i]; 
    66 } 
    67  
    6858ContactGroup* ContactListModel::createGroup(unsigned short id, QString name) 
    6959{ 
     
    7666} 
    7767 
     68ContactListModel::~ContactListModel() 
     69{ 
     70  // Delete all users and groups 
     71  clear(); 
     72 
     73  // Delete the system groups 
     74  for (unsigned long i = 0; i < NUM_GROUPS_SYSTEM_ALL; ++i) 
     75    delete mySystemGroups[i]; 
     76} 
     77 
    7878void ContactListModel::listUpdated(CICQSignal* sig) 
    7979{ 
    8080  switch(sig->SubSignal()) 
    8181  { 
    82     case LIST_ALL: 
     82    case LIST_INVALIDATE: 
    8383      reloadAll(); 
    8484      break; 
    8585 
    86     case LIST_ADD: 
     86    case LIST_CONTACT_ADDED: 
    8787    { 
    8888      ICQUser* u = gUserManager.FetchUser(sig->Id(), sig->PPID(), LOCK_R); 
     
    9696      break; 
    9797    } 
    98     case LIST_REMOVE: 
     98    case LIST_CONTACT_REMOVED: 
    9999      removeUser(sig->Id(), sig->PPID()); 
    100100      break; 
     101 
     102    case LIST_GROUP_ADDED: 
     103    { 
     104      unsigned short gid = sig->Argument(); 
     105 
     106      GroupList* g = gUserManager.LockGroupList(LOCK_R); 
     107      ContactGroup* newGroup = createGroup(gid, QString::fromLocal8Bit((*g)[gid-1])); 
     108      gUserManager.UnlockGroupList(); 
     109 
     110      beginInsertRows(QModelIndex(), myUserGroups.size(), myUserGroups.size()); 
     111      myUserGroups.append(newGroup); 
     112      endInsertRows(); 
     113      break; 
     114    } 
     115 
     116    case LIST_GROUP_REMOVED: 
     117    { 
     118      unsigned short gid = sig->Argument(); 
     119 
     120      for (int i = 0; i < myUserGroups.size(); ++i) 
     121      { 
     122        ContactGroup* group = myUserGroups.at(i); 
     123        if (group->groupId() == gid) 
     124        { 
     125          beginRemoveRows(QModelIndex(), i, i); 
     126          myUserGroups.removeAll(group); 
     127          endRemoveRows(); 
     128          delete group; 
     129        } 
     130      } 
     131      break; 
     132    } 
     133 
     134    case LIST_GROUP_CHANGED: 
     135    { 
     136      unsigned short gid = sig->Argument(); 
     137 
     138      for (int i = 0; i < myUserGroups.size(); ++i) 
     139      { 
     140        ContactGroup* group = myUserGroups.at(i); 
     141        if (group->groupId() == gid) 
     142          group->update(); 
     143      } 
     144      break; 
     145    } 
    101146  } 
    102147}