| /* |
| * wpa_gui - EventHistory class |
| * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi> |
| * |
| * This software may be distributed under the terms of the BSD license. |
| * See README for more details. |
| */ |
| |
| #include <QHeaderView> |
| #include <QScrollBar> |
| |
| #include "eventhistory.h" |
| |
| |
| int EventListModel::rowCount(const QModelIndex &) const |
| { |
| return msgList.count(); |
| } |
| |
| |
| int EventListModel::columnCount(const QModelIndex &) const |
| { |
| return 2; |
| } |
| |
| |
| QVariant EventListModel::data(const QModelIndex &index, int role) const |
| { |
| if (!index.isValid()) |
| return QVariant(); |
| |
| if (role == Qt::DisplayRole) |
| if (index.column() == 0) { |
| if (index.row() >= timeList.size()) |
| return QVariant(); |
| return timeList.at(index.row()); |
| } else { |
| if (index.row() >= msgList.size()) |
| return QVariant(); |
| return msgList.at(index.row()); |
| } |
| else |
| return QVariant(); |
| } |
| |
| |
| QVariant EventListModel::headerData(int section, Qt::Orientation orientation, |
| int role) const |
| { |
| if (role != Qt::DisplayRole) |
| return QVariant(); |
| |
| if (orientation == Qt::Horizontal) { |
| switch (section) { |
| case 0: |
| return QString(tr("Timestamp")); |
| case 1: |
| return QString(tr("Message")); |
| default: |
| return QVariant(); |
| } |
| } else |
| return QString("%1").arg(section); |
| } |
| |
| |
| void EventListModel::addEvent(QString time, QString msg) |
| { |
| beginInsertRows(QModelIndex(), msgList.size(), msgList.size() + 1); |
| timeList << time; |
| msgList << msg; |
| endInsertRows(); |
| } |
| |
| |
| EventHistory::EventHistory(QWidget *parent, const char *, bool, Qt::WFlags) |
| : QDialog(parent) |
| { |
| setupUi(this); |
| |
| connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); |
| |
| eventListView->setItemsExpandable(FALSE); |
| eventListView->setRootIsDecorated(FALSE); |
| elm = new EventListModel(parent); |
| eventListView->setModel(elm); |
| } |
| |
| |
| EventHistory::~EventHistory() |
| { |
| destroy(); |
| delete elm; |
| } |
| |
| |
| void EventHistory::languageChange() |
| { |
| retranslateUi(this); |
| } |
| |
| |
| void EventHistory::addEvents(WpaMsgList msgs) |
| { |
| WpaMsgList::iterator it; |
| for (it = msgs.begin(); it != msgs.end(); it++) |
| addEvent(*it); |
| } |
| |
| |
| void EventHistory::addEvent(WpaMsg msg) |
| { |
| bool scroll = true; |
| |
| if (eventListView->verticalScrollBar()->value() < |
| eventListView->verticalScrollBar()->maximum()) |
| scroll = false; |
| |
| elm->addEvent(msg.getTimestamp().toString("yyyy-MM-dd hh:mm:ss.zzz"), |
| msg.getMsg()); |
| |
| if (scroll) |
| eventListView->scrollToBottom(); |
| } |