blob: ea45f47d4db851820b1193b02b87aa603884e343 [file] [log] [blame]
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2013, Regents of the University of California
* Yingdi Yu
*
* BSD license, See the LICENSE file for more information
*
* Author: Yingdi Yu <yingdi@cs.ucla.edu>
*/
#include "endorse-sql-table-model.h"
#ifndef Q_MOC_RUN
#include "logging.h"
#endif
INIT_LOGGER("EndorseSqlTableModel");
EndorseSqlTableModel::EndorseSqlTableModel(QObject * parent, QSqlDatabase db)
: QSqlTableModel(parent, db)
{}
EndorseSqlTableModel::~EndorseSqlTableModel()
{}
Qt::ItemFlags
EndorseSqlTableModel::flags ( const QModelIndex & index )
{
if(index.column() == 3)
{
_LOG_DEBUG("index: row: " << index.row() << " " << index.column() << " check!");
return Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsUserCheckable;
}
else
{
_LOG_DEBUG("index: row: " << index.row() << " " << index.column() << " no-check!");
return QSqlTableModel::flags(index);
}
}
bool
EndorseSqlTableModel::setData ( const QModelIndex & index, const QVariant & value, int role)
{
bool success = true;
if (index.column() == 3)
{
_LOG_DEBUG("setData: " << role);
if(role == Qt::CheckStateRole)
{
QString val = (value==Qt::Checked)?"1":"0";
return QSqlTableModel::setData(index, val, role);
}
return true;
}
else
{
return QSqlTableModel::setData(index, value, role);
}
}
QVariant
EndorseSqlTableModel::data ( const QModelIndex & index, int role) const
{
QVariant value = QSqlTableModel::data(index, role);
// if (index.column() == 3 && role == Qt::CheckStateRole)
if (index.column() == 3)
{
if(role == Qt::CheckStateRole)
{
bool aBool = ((value.toInt() != 0) ? 1 : 0);
if (aBool)
return Qt::Checked;
else
return Qt::Unchecked;
}
if(role == Qt::DisplayRole)
return QVariant();
return value;
}
else
{
return value;
}
}