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.

Location:
trunk/qt4-gui/src/core
Files:
6 modified

Legend:

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

    r6279 r6283  
    8989    delete a; 
    9090 
    91   GroupList* g = gUserManager.LockGroupList(LOCK_R); 
    92   for (unsigned int i = 0; i < g->size(); ++i) 
     91  FOR_EACH_GROUP_START_SORTED(LOCK_R) 
    9392  { 
    94     QString name = QString::fromLocal8Bit((*g)[i]); 
     93    QString name = QString::fromLocal8Bit(pGroup->name().c_str()); 
    9594 
    9695    a = myUserGroupActions->addAction(name); 
    97     a->setData(i + 1); 
     96    a->setData(pGroup->id()); 
    9897 
    9998    myGroupsMenu->insertAction(myGroupSeparator, a); 
    10099  } 
    101   gUserManager.UnlockGroupList(); 
     100  FOR_EACH_GROUP_END 
    102101 
    103102  // Add groups to menu 
     
    118117  myMoveDownAction->setEnabled(!special && myGroupId < gUserManager.NumGroups()); 
    119118  myRemoveGroupAction->setEnabled(!special); 
     119 
     120  mySortIndex = 0; 
     121  if (!special) 
     122  { 
     123    LicqGroup* group = gUserManager.FetchGroup(myGroupId, LOCK_R); 
     124    if (group != NULL) 
     125    { 
     126      mySortIndex = group->sortIndex(); 
     127      myGroupName = QString::fromLocal8Bit(group->name().c_str()); 
     128      gUserManager.DropGroup(group); 
     129    } 
     130  } 
    120131} 
    121132 
     
    133144void GroupMenu::moveGroupUp() 
    134145{ 
    135   // Model uses group+1 so substract one before sending to daemon 
    136   gUserManager.SwapGroups(myGroupId, myGroupId - 1); 
     146  if (mySortIndex == 0) 
     147    return; 
     148 
     149  gUserManager.ModifyGroupSorting(myGroupId, mySortIndex - 1); 
    137150} 
    138151 
    139152void GroupMenu::moveGroupDown() 
    140153{ 
    141   // Model uses group+1 so substract one before sending to daemon 
    142   gUserManager.SwapGroups(myGroupId, myGroupId + 1); 
     154  gUserManager.ModifyGroupSorting(myGroupId, mySortIndex + 1); 
    143155} 
    144156 
    145157void GroupMenu::removeGroup() 
    146158{ 
    147   GroupList* g = gUserManager.LockGroupList(LOCK_R); 
    148159  QString warning(tr("Are you sure you want to remove the group '%1'?") 
    149       .arg(QString::fromLocal8Bit((*g)[myGroupId-1]))); 
    150   gUserManager.UnlockGroupList(); 
     160      .arg(myGroupName)); 
    151161  if (!QueryYesNo(this, warning)) 
    152162    return; 
     
    177187    gUserManager.SetUserInGroup(id.toLatin1(), ppid, gtype, gid, true, 
    178188        gtype == GROUPS_SYSTEM); 
    179  
    180     // Daemon doesn't notify us when group memberships change so notify model from here 
    181     LicqGui::instance()->contactList()->updateUser(id, ppid); 
    182189  } 
    183190} 
  • trunk/qt4-gui/src/core/groupmenu.h

    r6153 r6283  
    102102  // Current group 
    103103  unsigned int myGroupId; 
     104  unsigned short mySortIndex; 
     105  QString myGroupName; 
    104106 
    105107  // Actions not in any sub menu 
  • trunk/qt4-gui/src/core/licqgui.cpp

    r6249 r6283  
    754754      if (u == NULL) 
    755755        return true; 
    756       GroupList* g = gUserManager.LockGroupList(LOCK_R); 
     756      LicqGroup* g = gUserManager.FetchGroup(group, LOCK_R); 
     757      if (g == NULL) 
     758      { 
     759        gUserManager.DropUser(u); 
     760        return true; 
     761      } 
    757762      QString warning(tr("Are you sure you want to remove\n%1 (%2)\nfrom the '%3' group?") 
    758763          .arg(QString::fromUtf8(u->GetAlias())) 
    759           .arg(u->IdString()).arg(QString::fromLocal8Bit((*g)[group - 1]))); 
    760       gUserManager.UnlockGroupList(); 
     764          .arg(u->IdString()).arg(QString::fromLocal8Bit(g->name().c_str()))); 
     765      gUserManager.DropGroup(g); 
    761766      gUserManager.DropUser(u); 
    762767      if (QueryYesNo(parent, warning)) 
    763768      { 
    764769        gUserManager.RemoveUserFromGroup(id.toLatin1(), ppid, group); 
    765  
    766         // The daemon does not send an update when group membership changes 
    767         // so tell the contactList it needs to update 
    768         myContactList->updateUser(id, ppid); 
    769770        return true; 
    770771      } 
  • trunk/qt4-gui/src/core/mainwin.cpp

    r6200 r6283  
    773773  myUserGroupsBox->addItem(LicqStrings::getSystemGroupName(GROUP_ALL_USERS)); 
    774774 
    775   GroupList* g = gUserManager.LockGroupList(LOCK_R); 
    776   for (unsigned short i = 0; i < g->size(); i++) 
    777   { 
    778     myUserGroupsBox->addItem(QString::fromLocal8Bit((*g)[i])); 
    779   } 
    780   gUserManager.UnlockGroupList(); 
     775  FOR_EACH_GROUP_START_SORTED(LOCK_R) 
     776  { 
     777    myUserGroupsBox->addItem(QString::fromLocal8Bit(pGroup->name().c_str())); 
     778  } 
     779  FOR_EACH_GROUP_END 
    781780 
    782781  for (unsigned short i = 1; i < NUM_GROUPS_SYSTEM_ALL; i++) 
  • trunk/qt4-gui/src/core/systemmenu.cpp

    r6152 r6283  
    302302      delete a; 
    303303 
    304   GroupList* g = gUserManager.LockGroupList(LOCK_R); 
    305   for (unsigned int i = 0; i < g->size(); ++i) 
     304  FOR_EACH_GROUP_START_SORTED(LOCK_R) 
    306305  { 
    307     QString name = QString::fromLocal8Bit((*g)[i]); 
     306    QString name = QString::fromLocal8Bit(pGroup->name().c_str()); 
    308307 
    309308    a = myUserGroupActions->addAction(name); 
    310     a->setData(i + 1); 
     309    a->setData(pGroup->id()); 
    311310    a->setCheckable(true); 
    312311 
    313312    myGroupMenu->insertAction(myGroupSeparator, a); 
    314313  } 
    315   gUserManager.UnlockGroupList(); 
     314  FOR_EACH_GROUP_END 
    316315} 
    317316 
  • trunk/qt4-gui/src/core/usermenu.cpp

    r6281 r6283  
    206206    delete a; 
    207207 
    208   GroupList* g = gUserManager.LockGroupList(LOCK_R); 
    209   for (unsigned int i = 0; i < g->size(); ++i) 
    210   { 
    211     QString name = QString::fromLocal8Bit((*g)[i]); 
     208  FOR_EACH_GROUP_START_SORTED(LOCK_R) 
     209  { 
     210    QString name = QString::fromLocal8Bit(pGroup->name().c_str()); 
    212211 
    213212    a = myUserGroupActions->addAction(name); 
    214     a->setData(i + 1); 
     213    a->setData(pGroup->id()); 
    215214    a->setCheckable(true); 
    216215 
    217216    a = myServerGroupActions->addAction(name); 
    218     a->setData(i + 1); 
     217    a->setData(pGroup->id()); 
    219218    a->setCheckable(true); 
    220219  } 
    221   gUserManager.UnlockGroupList(); 
     220  FOR_EACH_GROUP_END 
    222221 
    223222  // Add groups to menu 
     
    552551  gUserManager.SetUserInGroup(myId.toLatin1(), myPpid, GROUPS_USER, gid, 
    553552      action->isChecked(), false); 
    554  
    555   // The daemon does not send an update when group membership changes 
    556   // so tell the contactList it needs to update 
    557   LicqGui::instance()->contactList()->updateUser(myId, myPpid); 
    558553} 
    559554 
     
    578573  gUserManager.SetUserInGroup(myId.toLatin1(), myPpid, GROUPS_SYSTEM, gid, 
    579574      action->isChecked(), true); 
    580  
    581   // The daemon does not send an update when group membership changes 
    582   // so tell the contactList it needs to update 
    583   LicqGui::instance()->contactList()->updateUser(myId, myPpid); 
    584575} 
    585576 
     
    588579  unsigned int gid = action->data().toUInt(); 
    589580  gUserManager.SetUserInGroup(myId.toLatin1(), myPpid, GROUPS_USER, gid, true, true); 
    590  
    591   // The daemon does not send an update when group membership changes 
    592   // so tell the contactList it needs to update 
    593   LicqGui::instance()->contactList()->updateUser(myId, myPpid); 
    594 } 
     581}