Changeset 6482 for trunk/qt4-gui/src

Show
Ignore:
Timestamp:
08/10/08 18:22:00 (4 months ago)
Author:
flynd
Message:

Added option to move users when dragging in contact list.

Location:
trunk/qt4-gui/src
Files:
5 modified

Legend:

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

    r6345 r6482  
    6464  iniFile.ReadBool("ScrollBar", myAllowScrollBar, true); 
    6565  iniFile.ReadBool("SystemBackground", myUseSystemBackground, false); 
     66  iniFile.ReadBool("DragMovesUser", myDragMovesUser, false); 
    6667 
    6768  unsigned short flash; 
     
    138139  iniFile.WriteBool("ScrollBar", myAllowScrollBar); 
    139140  iniFile.WriteBool("SystemBackground", myUseSystemBackground); 
     141  iniFile.WriteBool("DragMovesUser", myDragMovesUser); 
    140142  iniFile.WriteNum("StartUpGroupId", myGroupId); 
    141143  iniFile.WriteNum("StartUpGroupType", static_cast<unsigned short>(myGroupType)); 
     
    323325} 
    324326 
     327void Config::ContactList::setDragMovesUser(bool dragMovesUser) 
     328{ 
     329  if (dragMovesUser == myDragMovesUser) 
     330    return; 
     331 
     332  myDragMovesUser = dragMovesUser; 
     333} 
     334 
    325335void Config::ContactList::setShowDividers(bool showDividers) 
    326336{ 
  • trunk/qt4-gui/src/config/contactlist.h

    r6193 r6482  
    110110  bool allowScrollBar() const { return myAllowScrollBar; } 
    111111  bool useSystemBackground() const { return myUseSystemBackground; } 
     112  bool dragMovesUser() const { return myDragMovesUser; } 
    112113 
    113114  bool popupPicture() const { return myPopupPicture; } 
     
    160161  void setAllowScrollBar(bool allowScrollBar); 
    161162  void setUseSystemBackground(bool useSystemBackground); 
     163  void setDragMovesUser(bool dragMovesUser); 
    162164 
    163165  void setPopupPicture(bool popupPicture); 
     
    240242  bool myAllowScrollBar; 
    241243  bool myUseSystemBackground; 
     244 
     245  // Contact list behaviour 
     246  bool myDragMovesUser; 
    242247 
    243248  // Contact list sorting 
  • trunk/qt4-gui/src/settings/contactlist.cpp

    r6193 r6482  
    161161  myBehaviourLayout->addWidget(myMainWinStickyCheck, 0, 1); 
    162162 
     163  myDragMovesUserCheck = new QCheckBox(tr("Move users when dragging to groups")); 
     164  myDragMovesUserCheck->setToolTip(tr("If checked a user will be moved when dragged to another group.\n" 
     165      "If not checked user will only be added to the new group.")); 
     166  myBehaviourLayout->addWidget(myDragMovesUserCheck, 1, 1); 
     167 
    163168  QHBoxLayout* mySortByLayout = new QHBoxLayout(); 
    164169  mySortByLabel = new QLabel(tr("Additional sorting:")); 
     
    176181  mySortByLabel->setBuddy(mySortByCombo); 
    177182  mySortByLayout->addWidget(mySortByCombo); 
    178   myBehaviourLayout->addLayout(mySortByLayout, 1, 1); 
     183  myBehaviourLayout->addLayout(mySortByLayout, 2, 1); 
    179184 
    180185 
     
    347352  myScrollBarCheck->setChecked(contactListConfig->allowScrollBar()); 
    348353  mySysBackCheck->setChecked(contactListConfig->useSystemBackground()); 
     354  myDragMovesUserCheck->setChecked(contactListConfig->dragMovesUser()); 
    349355 
    350356  int numColumns = contactListConfig->columnCount(); 
     
    419425  contactListConfig->setAllowScrollBar(myScrollBarCheck->isChecked()); 
    420426  contactListConfig->setUseSystemBackground(mySysBackCheck->isChecked()); 
     427  contactListConfig->setDragMovesUser(myDragMovesUserCheck->isChecked()); 
    421428 
    422429  for (unsigned short i = 0; i < MAX_COLUMNCOUNT; ++i) 
  • trunk/qt4-gui/src/settings/contactlist.h

    r6193 r6482  
    106106  QCheckBox* myMainWinStickyCheck; 
    107107  QCheckBox* myTransparentCheck; 
     108  QCheckBox* myDragMovesUserCheck; 
    108109 
    109110  // Widgets for contact list column settings 
  • trunk/qt4-gui/src/views/userviewbase.cpp

    r6346 r6482  
    284284 
    285285        if (!dropId.isEmpty()) 
    286           gUserManager.SetUserInGroup(dropId.toLatin1(), dropPpid, GROUPS_USER, gid, true); 
     286        { 
     287          bool moveUser = Config::ContactList::instance()->dragMovesUser(); 
     288          gUserManager.SetUserInGroup(dropId.toLatin1(), dropPpid, GROUPS_USER, gid, true, moveUser); 
     289 
     290          // If we are moving user we now need to remove it from the old group. 
     291          // However, since the drop event doesn't contain the originating 
     292          // group, we don't know which group that is so we'll just have to 
     293          // remove the user from all other groups. 
     294          if (moveUser) 
     295          { 
     296            const ICQUser* u = gUserManager.FetchUser(dropId.toLatin1(), dropPpid, LOCK_R); 
     297            if (u != NULL) 
     298            { 
     299              UserGroupList userGroups = u->GetGroups(); 
     300              gUserManager.DropUser(u); 
     301 
     302              UserGroupList::const_iterator i; 
     303              for (i = userGroups.begin(); i != userGroups.end(); ++i) 
     304                if (*i != gid) 
     305                  gUserManager.SetUserInGroup(dropId.toLatin1(), dropPpid, GROUPS_USER, *i, false, false); 
     306            } 
     307          } 
     308        } 
    287309      } 
    288310      else