Subversion Repositories svn1-original

Rev

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

#include "qmTableWidgetItem.h"

/*----------------------------------------------------------------------------
** 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)
        return true;

    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        :
----------------------------------------------------------------------------*/

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)
        return true;

    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)
        return true;

    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)
        return true;

    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)
        return true;

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