Show
Ignore:
Timestamp:
06/14/08 03:47:03 (6 months ago)
Author:
flynd
Message:

Updated to work with and take advantage of new group handling. Contact list model is now properly updated from signals when groups change.

Files:
1 modified

Legend:

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

    r6270 r6283  
    103103    { 
    104104      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(); 
     105      ContactGroup* newGroup = createGroup(gid); 
    109106 
    110107      beginInsertRows(QModelIndex(), myUserGroups.size(), myUserGroups.size()); 
     
    144141      break; 
    145142    } 
     143 
     144    case LIST_GROUP_REORDERED: 
     145    { 
     146      // Get new sort keys for all groups 
     147      for (int i = 0; i < myUserGroups.size(); ++i) 
     148        myUserGroups.at(i)->updateSortKey(); 
     149 
     150      // Send one changed signal for all groups 
     151      emit dataChanged(createIndex(0, 0, myUserGroups.at(0)), 
     152          createIndex(myUserGroups.size() + NUM_GROUPS_SYSTEM_ALL - 1, myColumnCount - 1, 
     153          mySystemGroups[NUM_GROUPS_SYSTEM_ALL-1])); 
     154 
     155      break; 
     156    } 
    146157  } 
    147158} 
     
    250261 
    251262  // Add all groups 
    252   GroupList* g = gUserManager.LockGroupList(LOCK_R); 
    253   beginInsertRows(QModelIndex(), 0, g->size()); 
     263  beginInsertRows(QModelIndex(), 0, gUserManager.NumGroups() + 1); 
    254264 
    255265  ContactGroup* newGroup = createGroup(0, tr("Other Users")); 
    256266  myUserGroups.append(newGroup); 
    257267 
    258   for (unsigned short i = 0; i < g->size(); ++i) 
    259   { 
    260     newGroup = createGroup(i+1, QString::fromLocal8Bit((*g)[i])); 
    261     myUserGroups.append(newGroup); 
    262   } 
     268  FOR_EACH_GROUP_START(LOCK_R) 
     269  { 
     270    ContactGroup* group = new ContactGroup(pGroup); 
     271    connect(group, SIGNAL(dataChanged(ContactGroup*)), 
     272        SLOT(groupDataChanged(ContactGroup*))); 
     273    connect(group, SIGNAL(barDataChanged(ContactBar*, int)), 
     274        SLOT(barDataChanged(ContactBar*, int))); 
     275    myUserGroups.append(group); 
     276  } 
     277  FOR_EACH_GROUP_END 
    263278 
    264279  endInsertRows(); 
    265   gUserManager.UnlockGroupList(); 
    266280 
    267281  // Add all users 
     
    307321    unsigned short gid = group->groupId(); 
    308322    bool shouldBeMember = (gid != 0 && licqUser->GetInGroup(GROUPS_USER, gid)) || 
    309         (gid == 0 && licqUser->GetGroups(GROUPS_USER) == 0 && !licqUser->IgnoreList()); 
     323        (gid == 0 && licqUser->GetGroups().empty() && !licqUser->IgnoreList()); 
    310324    updateUserGroup(user, group, i, shouldBeMember); 
    311325  }