#include "qmTableWidgetItem.h" #include /*---------------------------------------------------------------------------- ** 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(&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(&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() << "horizontalHeader()->sortIndicatorOrder(); //} if (sort) { Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder(); return sortOrder == Qt::DescendingOrder; } const qmTwiNumber *other_widget = dynamic_cast(&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(&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(&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(&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(&other); if (other_widget) { return (other_widget->checkState() < checkState()); } else { return false; } }