@ -42,12 +42,14 @@ FriendListWidget::FriendListWidget(QWidget *parent, bool groupchatPosition) :
layouts [ static_cast < int > ( s ) ] = l ;
layouts [ static_cast < int > ( s ) ] = l ;
}
}
if ( groupchatPosition ) {
if ( groupchatPosition )
{
mainLayout - > addLayout ( groupLayout , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 0 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 2 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 2 , 0 ) ;
}
}
else {
else
{
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 2 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 2 , 0 ) ;
@ -73,11 +75,13 @@ void FriendListWidget::onGroupchatPositionChanged(bool top)
{
{
mainLayout - > removeItem ( groupLayout ) ;
mainLayout - > removeItem ( groupLayout ) ;
mainLayout - > removeItem ( getFriendLayout ( Status : : Online ) ) ;
mainLayout - > removeItem ( getFriendLayout ( Status : : Online ) ) ;
if ( top ) {
if ( top )
{
mainLayout - > addLayout ( groupLayout , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 0 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 1 , 0 ) ;
}
}
else {
else
{
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
}
}
@ -85,14 +89,17 @@ void FriendListWidget::onGroupchatPositionChanged(bool top)
void FriendListWidget : : moveWidget ( QWidget * w , Status s , int hasNewEvents )
void FriendListWidget : : moveWidget ( QWidget * w , Status s , int hasNewEvents )
{
{
getFriendLayout ( s ) - > removeWidget ( w ) ;
QVBoxLayout * l = getFriendLayout ( s ) ;
QVBoxLayout * l = getFriendLayout ( s ) ;
l - > removeWidget ( w ) ;
Friend * g = FriendList : : findFriend ( dynamic_cast < FriendWidget * > ( w ) - > friendId ) ;
Friend * g = FriendList : : findFriend ( dynamic_cast < FriendWidget * > ( w ) - > friendId ) ;
for ( int i = 0 ; i < l - > count ( ) ; i + + ) {
for ( int i = 0 ; i < l - > count ( ) ; i + + )
{
FriendWidget * w1 = dynamic_cast < FriendWidget * > ( l - > itemAt ( i ) - > widget ( ) ) ;
FriendWidget * w1 = dynamic_cast < FriendWidget * > ( l - > itemAt ( i ) - > widget ( ) ) ;
if ( w1 ! = NULL ) {
if ( w1 ! = NULL )
{
Friend * f = FriendList : : findFriend ( w1 - > friendId ) ;
Friend * f = FriendList : : findFriend ( w1 - > friendId ) ;
if ( f - > getDisplayedName ( ) . localeAwareCompare ( g - > getDisplayedName ( ) ) > 0 ) {
if ( f - > getDisplayedName ( ) . localeAwareCompare ( g - > getDisplayedName ( ) ) > 0 )
{
l - > insertWidget ( i , w ) ;
l - > insertWidget ( i , w ) ;
return ;
return ;
}
}