Public Member Functions
EventListModel Class Reference

Brief description of class still missing. More...

#include <EventListModel.h>

List of all members.

Public Member Functions

virtual int columnCount (const QModelIndex &parent=QModelIndex()) const
virtual QVariant data (const QModelIndex &index, int role) const
Eventevent (int index) const
Eventevent (const QString &name) const
 EventListModel (QObject *parent)
virtual QVariant headerData (int section, Qt::Orientation orientation, int role) const
bool load ()
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const
bool save ()
void setBaseDirectory (const QString &d)
virtual void sort (int column, Qt::SortOrder order=Qt::AscendingOrder)
void update (QModelIndex index)
 ~EventListModel ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

EventListModel::EventListModel ( QObject *  parent)

Description of constructor still missing

References TRACE.

  : QAbstractTableModel(parent)
{
  TRACE;
}

Description of destructor still missing

References TRACE.

{
  TRACE;
  qDeleteAll(_events);

}

Member Function Documentation

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

References TRACE.

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

References Event::id(), Event::magnitude(), Event::status(), Station::statusToString(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  switch (role) {
  case Qt::DisplayRole: {
      const Event * e=_events.at(index.row());
      switch(index.column()) {
      default:
        return e->id();
      case 1: {
          bool ok;
          double m=e->magnitude(ok);
          if(ok) {
            return QString::number(m, 'f', 1);
          } else {
            return tr("---");
          }
        }
      case 2:
        return Station::statusToString(e->status());
      }
    }
    break;
  default:
    return QVariant();
  }
}
Event* EventListModel::event ( int  index) const [inline]

Referenced by load().

{return _events.at(index);}
Event * EventListModel::event ( const QString &  name) const

References Event::id().

{
  for(QList<Event *>::const_iterator it=_events.begin(); it!=_events.end(); it++) {
    Event * e=*it;
    if(e->id()==name) {
      return e;
    }
  }
  return 0;
}
QVariant EventListModel::headerData ( int  section,
Qt::Orientation  orientation,
int  role 
) const [virtual]

References QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  switch(orientation) {
  case Qt::Horizontal:
    switch(role) {
    case Qt::DisplayRole:
      switch(section) {
      default:
        return tr("Event ID");
      case 1:
        return tr("Magnitude");
      case 2:
        return tr("Status");
      }
    default:
      return QVariant();
    }
  case Qt::Vertical:
    break;
  }
  switch(role) {
  case Qt::DisplayRole:
    return section+1;
  default:
    return QVariant();
  }
}

References QGpCoreTools::endl(), event(), fileName, Event::id(), QGpCoreTools::LineParser::setDelimiters(), Station::setStatus(), QGpCoreTools::LineParser::setString(), Event::station(), QGpCoreTools::LineParser::toString(), QGpCoreTools::tr(), and TRACE.

Referenced by MainWidget::setBaseDirectory().

{
  TRACE;
  QString fileName=_baseDir.absoluteFilePath("sort.txt");
  QFile f(fileName);
  if(!f.open(QIODevice::ReadOnly)) {
    App::stream() << tr("Cannot open file %1 for reading").arg(fileName) << endl;
    return false;
  }
  QTextStream s(&f);
  LineParser lp;
  lp.setDelimiters("\t");
  bool ok=true;
  while(!s.atEnd()) {
    lp.setString(s.readLine());
    Event * e=event(lp.toString(0, ok));
    if(e) {
      Station * stat=e->station(lp.toString(1, ok));
      if(stat) {
        stat->setStatus(lp.toString(2, ok));
      } else {
        App::stream() << tr("Event %1 does not contain station %2").arg(e->id()).arg(lp.toString(1, ok)) << endl;
      }
    } else {
      App::stream() << tr("Event %1 does not exist in database").arg(lp.toString(0, ok)) << endl;
    }
  }
  if(!ok) {
    App::stream() << tr("Error while parsing file %1").arg(fileName) << endl;
  }
  App::stream() << tr("Current status loaded from %1").arg(fileName) << endl;
  return true;
}
int EventListModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const [virtual]

References TRACE.

{
  TRACE;
  return _events.count();
}

References QGpCoreTools::endl(), fileName, Event::id(), Event::save(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  QString fileName=_baseDir.absoluteFilePath("sort.txt");
  QFile f(fileName);
  if(!f.open(QIODevice::WriteOnly)) {
    App::stream() << tr("Cannot open file %1 for writing").arg(fileName) << endl;
    return false;
  }
  QTextStream s(&f);
  for(QList<Event *>::const_iterator it=_events.begin(); it!=_events.end(); it++) {
    Event * e=*it;
    e->save(s, e->id());
  }
  App::stream() << tr("Current status saved to %1").arg(fileName) << endl;
  return true;
}
void EventListModel::setBaseDirectory ( const QString &  d)

References Event::setId(), and TRACE.

Referenced by MainWidget::setBaseDirectory().

{
  TRACE;
  qDeleteAll(_events);
  _baseDir.setPath(d);
  QStringList filters;
  filters << "[0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9]";
  QStringList events=_baseDir.entryList(filters, QDir::Dirs);
  foreach(QString id, events) {
    Event * e=new Event;
    e->setId(_baseDir, id);
    _events.append(e);
  }
  reset();
}
void EventListModel::sort ( int  column,
Qt::SortOrder  order = Qt::AscendingOrder 
) [virtual]

References Event::lessThan(), Event::setSortIndex(), and TRACE.

{
  TRACE;
  Event::setSortIndex(order==Qt::AscendingOrder ? column+1 : -column-1);
  qStableSort(_events.begin(), _events.end(), Event::lessThan);
  reset();
}
void EventListModel::update ( QModelIndex  index)

References TRACE.

{
  TRACE;
  emit dataChanged(EventListModel::index(index.row(), 2),
                   EventListModel::index(index.row(), 2));
}

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