@ -16,8 +16,11 @@
@@ -16,8 +16,11 @@
# include "friendlistwidget.h"
# include <QDebug>
# include <QGridLayout>
# include "src/friend.h"
# include "src/friendlist.h"
# include "src/widget/friendwidget.h"
FriendListWidget : : FriendListWidget ( QWidget * parent ) :
FriendListWidget : : FriendListWidget ( QWidget * parent , bool groupchatPosition ) :
QWidget ( parent )
{
mainLayout = new QGridLayout ( ) ;
@ -30,7 +33,7 @@ FriendListWidget::FriendListWidget(QWidget *parent) :
@@ -30,7 +33,7 @@ FriendListWidget::FriendListWidget(QWidget *parent) :
groupLayout - > setSpacing ( 0 ) ;
groupLayout - > setMargin ( 0 ) ;
for ( Status s : { Status : : Online , Status : : Away , Status : : Busy , Status : : Offline } )
for ( Status s : { Status : : Online , Status : : Offline } )
{
QVBoxLayout * l = new QVBoxLayout ( ) ;
l - > setSpacing ( 0 ) ;
@ -39,11 +42,18 @@ FriendListWidget::FriendListWidget(QWidget *parent) :
@@ -39,11 +42,18 @@ FriendListWidget::FriendListWidget(QWidget *parent) :
layouts [ static_cast < int > ( s ) ] = l ;
}
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Away ) ] , 2 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Busy ) ] , 3 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 4 , 0 ) ;
if ( groupchatPosition )
{
mainLayout - > addLayout ( groupLayout , 0 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 2 , 0 ) ;
}
else
{
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Offline ) ] , 2 , 0 ) ;
}
}
QVBoxLayout * FriendListWidget : : getGroupLayout ( )
@ -57,15 +67,43 @@ QVBoxLayout* FriendListWidget::getFriendLayout(Status s)
@@ -57,15 +67,43 @@ QVBoxLayout* FriendListWidget::getFriendLayout(Status s)
if ( res ! = layouts . end ( ) )
return res . value ( ) ;
qDebug ( ) < < " Friend Status: " < < static_cast < int > ( s ) < < " not found! " ;
//qDebug() << "Friend Status: " << static_cast<int>(s) << " not found!";
return layouts [ static_cast < int > ( Status : : Online ) ] ;
}
void FriendListWidget : : moveWidget ( QWidget * w , Status s , int hasNewEvents )
void FriendListWidget : : onGroupchatPositionChanged ( bool top )
{
mainLayout - > removeWidget ( w ) ;
if ( hasNewEvents = = 0 )
getFriendLayout ( s ) - > addWidget ( w ) ;
mainLayout - > removeItem ( groupLayout ) ;
mainLayout - > removeItem ( getFriendLayout ( Status : : Online ) ) ;
if ( top )
{
mainLayout - > addLayout ( groupLayout , 0 , 0 ) ;
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 1 , 0 ) ;
}
else
getFriendLayout ( s ) - > insertWidget ( 0 , w ) ;
{
mainLayout - > addLayout ( layouts [ static_cast < int > ( Status : : Online ) ] , 0 , 0 ) ;
mainLayout - > addLayout ( groupLayout , 1 , 0 ) ;
}
}
void FriendListWidget : : moveWidget ( QWidget * w , Status s , int hasNewEvents )
{
QVBoxLayout * l = getFriendLayout ( s ) ;
l - > removeWidget ( w ) ;
Friend * g = FriendList : : findFriend ( dynamic_cast < FriendWidget * > ( w ) - > friendId ) ;
for ( int i = 0 ; i < l - > count ( ) ; i + + )
{
FriendWidget * w1 = dynamic_cast < FriendWidget * > ( l - > itemAt ( i ) - > widget ( ) ) ;
if ( w1 ! = NULL )
{
Friend * f = FriendList : : findFriend ( w1 - > friendId ) ;
if ( f - > getDisplayedName ( ) . localeAwareCompare ( g - > getDisplayedName ( ) ) > 0 )
{
l - > insertWidget ( i , w ) ;
return ;
}
}
}
l - > addWidget ( w ) ;
}