Public Slots | Signals | Public Member Functions
SignalTableItem Class Reference

#include <SignalTableItem.h>

List of all members.

Public Slots

void subPoolChanged ()

Signals

void dataChanged (Signal *sig)

Public Member Functions

virtual int columnCount (const QModelIndex &parent=QModelIndex()) const
virtual QVariant data (const QModelIndex &index, int role) const
MetaDataFieldListdataFields ()
const MetaDataIndexdataIndex (int column) const
virtual Qt::ItemFlags flags (const QModelIndex &) const
virtual QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
virtual QModelIndex index (int, int column, const QModelIndex &parent=QModelIndex()) const
virtual QModelIndex parent (const QModelIndex &index) const
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const
virtual bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 SignalTableItem (const SubSignalPool *subPool, QObject *parent=0)
const SubSignalPoolsubPool () const
 ~SignalTableItem ()

Constructor & Destructor Documentation

SignalTableItem::SignalTableItem ( const SubSignalPool subPool,
QObject *  parent = 0 
)

References TRACE.

{
  TRACE;}

Member Function Documentation

int SignalTableItem::columnCount ( const QModelIndex &  parent = QModelIndex()) const [virtual]

References GeopsyCore::MetaDataFieldList::count(), and TRACE.

Referenced by SignalTableView::refresh().

{
  TRACE;
  return _dataFields.count();
}
QVariant SignalTableItem::data ( const QModelIndex &  index,
int  role 
) const [virtual]

References GeopsyCore::MetaDataFieldList::at(), GeopsyCore::SubSignalPool::at(), GeopsyCore::Signal::comments(), GeopsyCore::Signal::header(), GeopsyCore::MetaDataIndex::id(), and TRACE.

{
  TRACE;
  if( !index.isValid()) return QVariant();
  Signal * sig=_subPool->at(index.row());
  switch (role) {
  case Qt::DisplayRole: {
      const MetaDataField& field=_dataFields.at(index.column());
      switch (field.id()) {
      case MetaDataFactory::T0:
      case MetaDataFactory::EndTime:
      case MetaDataFactory::Duration:
        return Number::secondsToTime(sig->header(field).toDouble());
      default:
        return sig->header(field);
      }
    }
  case Qt::ToolTipRole: {
      QString cmt=sig->comments();
      if(cmt.isEmpty()) {
        return QVariant();
      } else {
        return cmt;
      }
    }
    break;
  default:
    return QVariant();
  }
}
void SignalTableItem::dataChanged ( Signal sig) [signal]

Referenced by setData().

Referenced by SignalTableView::dataFields().

{return _dataFields;}
const MetaDataIndex& SignalTableItem::dataIndex ( int  column) const [inline]
virtual Qt::ItemFlags SignalTableItem::flags ( const QModelIndex &  ) const [inline, virtual]
{return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;}
QVariant SignalTableItem::headerData ( int  section,
Qt::Orientation  orientation,
int  role = Qt::DisplayRole 
) const [virtual]

References GeopsyCore::MetaDataFieldList::at(), GeopsyCore::MetaDataFieldList::count(), GeopsyCore::MetaDataField::title(), and TRACE.

{
  TRACE;
  if(role!=Qt::DisplayRole) return QVariant();
  if(orientation==Qt::Horizontal) {
    if(section<_dataFields.count())
      return _dataFields.at(section).title();
    else
      return QVariant();
  } else {
    return section + 1;
  }
}
QModelIndex SignalTableItem::index ( int  row,
int  column,
const QModelIndex &  parent = QModelIndex() 
) const [virtual]

References GeopsyCore::MetaDataFieldList::count(), GeopsyCore::SubSignalPool::count(), and TRACE.

Referenced by SignalTableView::refresh().

{
  TRACE;
  if(column < 0 || column >=_dataFields.count() ||
       row < 0 || row >= _subPool->count()) return QModelIndex();
  return createIndex(row, column);
}
QModelIndex SignalTableItem::parent ( const QModelIndex &  index) const [virtual]

References TRACE.

{
  TRACE;
  return QModelIndex();
}
int SignalTableItem::rowCount ( const QModelIndex &  parent = QModelIndex()) const [virtual]

References GeopsyCore::SubSignalPool::count(), and TRACE.

{
  TRACE;
  if( !parent.isValid())
    return _subPool->count();
  return 0;
}
bool SignalTableItem::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
) [virtual]

References GeopsyCore::MetaDataFieldList::at(), GeopsyCore::SubSignalPool::at(), GeopsyCore::MetaDataFieldList::count(), GeopsyCore::SubSignalPool::count(), dataChanged(), GeopsyCore::geopsyCore, GeopsyCore::Signal::header(), GeopsyCore::MetaDataIndex::id(), GeopsyCore::Signal::setHeader(), GeopsyCore::Signal::setHeaderModified(), GeopsyCore::GeopsyCoreEngine::showMessage(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if( !index.isValid() ||
       index.row() >= _subPool->count() ||
       index.column() >=_dataFields.count()) return false;
  Signal * sig=_subPool->at(index.row());
  switch (role) {
  case Qt::EditRole: {
      const MetaDataField& field=_dataFields.at(index.column());
      QVariant originalContent=sig->header(field);
      QVariant filteredValue;
      switch (field.id()) {
      case MetaDataFactory::T0:
        filteredValue=Number::timeToSeconds(value.toString());
        break;
      default:
        filteredValue=value;
        break;
      }
      if(filteredValue!=originalContent) {
        if(sig->setHeader(field, filteredValue) ) {
          sig->setHeaderModified(true);
          emit dataChanged(sig);
        } else {
          geopsyCore->showMessage(tr( "Modifying headers of signals: %1 is a read only field.")
                                  .arg(MetaDataFactory::instance()->name(field)));
        }
      }
    }
  default:
    return false;
  }
}
const SubSignalPool* SignalTableItem::subPool ( ) const [inline]

References TRACE.

Referenced by SignalTableView::refreshAll().

{
  TRACE;
  reset();
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines