Subversion Repositories svn1-original

Rev

Rev 381 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include "qmTableWidgetItem.h"
#include <QHeaderView>

/*----------------------------------------------------------------------------
** FUNCTION           : qmTwi...
**
** DESCRIPTION        : A collection of helper classes to help display team
**                      information in a table.
** 
**                      All derive from QTableWidgetItem and display read-only
**                      data
** 
**                      Some of them have associated sorting functions to
**                      order data in a pleasing manner.
**
**
** INPUTS             :
**
** RETURNS            :
**
----------------------------------------------------------------------------*/

qmTwiString::qmTwiString ( QString value, int usort  ) :  QTableWidgetItem(0)
{
    setData(Qt::DisplayRole,value);
    setFlags(flags() & ~Qt::ItemIsEditable);
    sort = usort;
}

bool qmTwiString::operator< ( const QTableWidgetItem & other ) const
{
    if (sort) {
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
        return sortOrder == Qt::DescendingOrder;
    }

    const qmTwiString *other_widget = dynamic_cast<const qmTwiString *>(&other); 
    if (other_widget)
    {
        return data(Qt::DisplayRole).toString().toLower() < other_widget->data(Qt::DisplayRole).toString().toLower(); 
    }
    return false;
}

/*----------------------------------------------------------------------------
** FUNCTION           :
**
** DESCRIPTION        :
----------------------------------------------------------------------------*/

qmTwiEditString::qmTwiEditString ( QString value, int usort  ) :  QTableWidgetItem(0)
{
    setData(Qt::DisplayRole,value);
    setFlags(flags() | Qt::ItemIsEditable);
    sort = usort;
}

bool qmTwiEditString::operator< ( const QTableWidgetItem & other ) const
{
    if (sort) {
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
        return sortOrder == Qt::DescendingOrder;
    }


    const qmTwiEditString *other_widget = dynamic_cast<const qmTwiEditString *>(&other);
    if (other_widget)
    {
        return data(Qt::DisplayRole).toString().toLower() < other_widget->data(Qt::DisplayRole).toString().toLower();
    }
    return false;
}

/*----------------------------------------------------------------------------
** FUNCTION           : 
**
** DESCRIPTION        :
----------------------------------------------------------------------------*/

qmTwiNumber::qmTwiNumber ( int value, int usort  ) :  QTableWidgetItem(0)
{
    sort = usort;
    number = value;
    setData(0,value);
    setFlags(flags() & ~Qt::ItemIsEditable);
}


bool qmTwiNumber::operator< ( const QTableWidgetItem& other ) const
{
    //if (sort == 2) {
    //    qDebug() << "<N:" << number << " S:" << sort << " O:" << tableWidget()->horizontalHeader()->sortIndicatorOrder();
    //}

    if (sort) {
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
        return sortOrder == Qt::DescendingOrder;
    }


    const qmTwiNumber *other_widget = dynamic_cast<const qmTwiNumber *>(&other);
    if (other_widget)
    {
        return number < other_widget->number;
    }
    return false;
}

/*----------------------------------------------------------------------------
** FUNCTION           : 
**
** DESCRIPTION        :
----------------------------------------------------------------------------*/

qmTwiEditNumber::qmTwiEditNumber ( int value, int usort  ) :  QTableWidgetItem(0)
{
    setData(Qt::EditRole,value );
    sort = usort;
}

bool qmTwiEditNumber::operator< ( const QTableWidgetItem & other ) const
{
    if (sort) {
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
        return sortOrder == Qt::DescendingOrder;
    }


    const qmTwiEditNumber * other_widget = dynamic_cast<const qmTwiEditNumber*>(&other);
    if (other_widget)
    {
        return data(Qt::EditRole).toInt() < other_widget->data(Qt::EditRole).toInt(); 
    }
    return false;
}

/*----------------------------------------------------------------------------
** FUNCTION           : 
**
** DESCRIPTION        :
----------------------------------------------------------------------------*/

qmTwiTime::qmTwiTime ( int value  ) :  QTableWidgetItem(0)
{
    number = value;
    setData(0,time_a(value));
    setFlags(flags() & ~Qt::ItemIsEditable);
}

bool qmTwiTime::operator< ( const QTableWidgetItem & other ) const
{
    const qmTwiTime * other_widget = dynamic_cast<const qmTwiTime*>(&other);
    if (number >= 0 && other_widget->number >= 0)
    {
        return number < other_widget->number;
    }
    else if (number >= 0 && other_widget->number < 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

/*----------------------------------------------------------------------------
** FUNCTION           : 
**
** DESCRIPTION        :
----------------------------------------------------------------------------*/

qmTwiFlag::qmTwiFlag ( const QString txt, bool checked, int usort  ) :  QTableWidgetItem(txt)
{
    sort = usort;
    setCheckState(checked ? Qt::Checked : Qt::Unchecked);
    setFlags(flags() & ~(Qt::ItemIsEditable | Qt::ItemIsUserCheckable));
}

bool qmTwiFlag::operator< ( const QTableWidgetItem & other ) const
{
    if (sort) {
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
        return sortOrder == Qt::DescendingOrder;
    }


    const qmTwiFlag * other_widget = dynamic_cast<const qmTwiFlag*>(&other);
    if (other_widget)
    {
        return (other_widget->checkState() < checkState()); 
    }
    else
    {
        return false;
    }
}

/*----------------------------------------------------------------------------
** FUNCTION           : 
**
** DESCRIPTION        :
----------------------------------------------------------------------------*/

qmTwiEditFlag::qmTwiEditFlag ( const QString txt, bool checked, int usort  ) :  QTableWidgetItem(txt)
{
    sort = usort;
    setCheckState(checked ? Qt::Checked : Qt::Unchecked);
    setFlags(flags() | (Qt::ItemIsEditable | Qt::ItemIsUserCheckable));
}

bool qmTwiEditFlag::operator< ( const QTableWidgetItem & other ) const
{
    if (sort) {
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
        return sortOrder == Qt::DescendingOrder;
    }


    const qmTwiEditFlag * other_widget = dynamic_cast<const qmTwiEditFlag*>(&other);
    if (other_widget)
    {
        return (other_widget->checkState() < checkState()); 
    }
    else
    {
        return false;
    }
}