Signals | Public Member Functions
DistanceItem Class Reference

Brief description of class still missing. More...

#include <DistanceItem.h>

List of all members.

Signals

void distanceChanged ()
void pointNameChanged ()

Public Member Functions

void add ()
void addPointName (const QString &n)
virtual int columnCount (const QModelIndex &parent) const
virtual QVariant data (const QModelIndex &index, int role) const
 DistanceItem (QObject *parent=0)
const QList< Distance > & distances () const
Qt::ItemFlags flags (const QModelIndex &index) const
virtual QVariant headerData (int section, Qt::Orientation orientation, int role) const
bool load (const QString &fileName)
const QStringList & pointNames () const
void remove (int index)
virtual int rowCount (const QModelIndex &parent) const
bool save (const QString &fileName) const
virtual bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 ~DistanceItem ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

DistanceItem::DistanceItem ( QObject *  parent = 0)

Description of constructor still missing

References TRACE.

  : QAbstractTableModel(parent)
{
  TRACE;
}

Description of destructor still missing

References TRACE.

{
  TRACE;
}

Member Function Documentation

References Distance::node1(), Distance::node2(), TRACE, and Distance::value().

{
  TRACE;
  int n=_distances.count();
  beginInsertRows(QModelIndex(), n, n);
  if(n==0) {
    if(_pointNames.count()>=2) {
      _distances.append(Distance(_pointNames.at(0), _pointNames.at(1), 0.0));
    } else {
      _distances.append(Distance());
    }
  } else if(n==1 || _distances.at(n-1).node1()==_distances.at(n-2).node1()) {
    const Distance& d=_distances.last();
    _distances.append(Distance(d.node1(), nextPointName(d.node2()), d.value()));
  } else if(_distances.at(n-1).node1()==_distances.at(n-2).node2()) {
    const Distance& d=_distances.last();
    _distances.append(Distance(d.node2(), nextPointName(d.node2()), d.value()));
  } else if(n>=_pointNames.count()-1 && _distances.at(n-1).node2()==nextPointName(_distances.at(n-1).node1())) {
    const Distance& d=_distances.last();
    _distances.append(Distance(d.node2(), nextPointName(d.node2()), d.value()));
  } else {
    const Distance& d=_distances.last();
    _distances.append(Distance(d));
  }
  endInsertRows();
}
void DistanceItem::addPointName ( const QString &  n) [inline]

Referenced by DistanceWidget::setStations().

{_pointNames.append(n);}
int DistanceItem::columnCount ( const QModelIndex &  parent) const [virtual]

References TRACE.

{
  TRACE;
  return 3;
}
QVariant DistanceItem::data ( const QModelIndex &  index,
int  role 
) const [virtual]

References Distance::node1(), Distance::node2(), TRACE, and Distance::value().

{
  TRACE;
  const Distance& d=_distances.at(index.row());
  switch(role) {
  case Qt::EditRole:
  case Qt::DisplayRole:
    switch(index.column()) {
    case 0:
      return d.node1();
    case 1:
      return d.node2();
    case 2:
      return d.value();
    default:
      break;
    }
    break;
  default:
    break;
  }
  return QVariant();
}
void DistanceItem::distanceChanged ( ) [signal]

Referenced by setData().

const QList<Distance>& DistanceItem::distances ( ) const [inline]
{return _distances;}
Qt::ItemFlags DistanceItem::flags ( const QModelIndex &  index) const

References TRACE.

{
  TRACE;
  return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable;
}
QVariant DistanceItem::headerData ( int  section,
Qt::Orientation  orientation,
int  role 
) const [virtual]

References QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if(orientation==Qt::Horizontal && role==Qt::DisplayRole) {
    switch(section) {
    case 0: return tr("Point 1");
    case 1: return tr("Point 2");
    case 2: return tr("Distance (m)");
    default:
      break;
    }
  }
  return QVariant();
}
bool DistanceItem::load ( const QString &  fileName)

References Distance::fromString(), MSG_ID, and QGpCoreTools::tr().

{
  QFile f(fileName);
  if(!f.open(QIODevice::ReadOnly)) {
    Message::warning(MSG_ID, tr("Loading distances"), tr("Cannot open file %1 for reading").arg(fileName));
    return false;
  }
  QTextStream s(&f);
  while(!s.atEnd()) {
    QString line=s.readLine();
    Distance d;
    if(d.fromString(StringSection(line))) {
      int n=_distances.count();
      beginInsertRows(QModelIndex(), n, n);
      _distances.append(d);
      endInsertRows();
    }
  }
  return true;
}
void DistanceItem::pointNameChanged ( ) [signal]

Referenced by setData().

const QStringList& DistanceItem::pointNames ( ) const [inline]

Referenced by DistanceWidget::setStations().

{return _pointNames;}
void DistanceItem::remove ( int  index)

References TRACE.

{
  TRACE;
  beginRemoveRows(QModelIndex(), index, index);
  _distances.removeAt(index);
  endRemoveRows();
}
int DistanceItem::rowCount ( const QModelIndex &  parent) const [virtual]

References TRACE.

{
  TRACE;
  return _distances.count();
}
bool DistanceItem::save ( const QString &  fileName) const

References QGpCoreTools::endl(), MSG_ID, and QGpCoreTools::tr().

{
  QFile f(fileName);
  if(!f.open(QIODevice::WriteOnly)) {
    Message::warning(MSG_ID, tr("Saving distances"), tr("Cannot open file %1 for writing").arg(fileName));
    return false;
  }
  QTextStream s(&f);
  for(QList<Distance>::const_iterator it=_distances.begin(); it!=_distances.end(); it++) {
    s << it->toString(20, 'f') << endl;
  }
  return true;
}
bool DistanceItem::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
) [virtual]

References distanceChanged(), pointNameChanged(), Distance::setNode1(), Distance::setNode2(), Distance::setValue(), and TRACE.

{
  TRACE;
  if(role!=Qt::EditRole) {
    return false;
  }
  Distance& d=_distances[index.row()];
  switch(index.column()) {
  case 0:
    d.setNode1(value.toString());
    emit pointNameChanged();
    return true;
  case 1:
    d.setNode2(value.toString());
    emit pointNameChanged();
    return true;
  case 2:
    d.setValue(value.toDouble());
    emit distanceChanged();
    return true;
  default:
    break;
  }
  return false;
}

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