#include "combinationitemsortproxymodel.h"
#include "combinationitem.h"
#include "SystemDefine.h"

CombinationItemSortProxyModel::CombinationItemSortProxyModel(QObject *parent)
	: QSortFilterProxyModel(parent)
{
	setDynamicSortFilter(true);
	setFilterRole(Qt::DisplayRole);
	setFilterCaseSensitivity(Qt::CaseInsensitive);
}

CombinationItemSortProxyModel::~CombinationItemSortProxyModel()
{

}

bool CombinationItemSortProxyModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const
{
    bool desc = false;

    QList<QString> sortids;
    sortids << Util::WorkPlaceId;
	sortids << Util::StarPersonId;
    sortids << Util::GroupsId;
    sortids << Util::OrganizationId;
    sortids << Util::FriendsId;
    sortids << Util::SUBSCRIPTIONNUM_ID;
    sortids << Util::BlackFriendsId;
    
    QString leftId = left.data(CombinationItem::Combinationid).toString ();
    QString rightId = right.data(CombinationItem::Combinationid).toString ();

    if (!leftId.isEmpty() && !rightId.isEmpty())
    {
        if (sortids.contains (leftId) && !sortids.contains (rightId))
            return !desc;
        else if (!sortids.contains (leftId) && sortids.contains (rightId))
            return desc;
        else
            return sortids.indexOf (leftId) < sortids.indexOf (rightId)?!desc:desc;
    }

	return desc;
}

bool CombinationItemSortProxyModel::filterAcceptsRow( int, const QModelIndex& ) const
{
	return true;
}