1/* 2 * wpa_gui - EventHistory class 3 * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi> 4 * 5 * This software may be distributed under the terms of the BSD license. 6 * See README for more details. 7 */ 8 9#include <QHeaderView> 10#include <QScrollBar> 11 12#include "eventhistory.h" 13 14 15int EventListModel::rowCount(const QModelIndex &) const 16{ 17 return msgList.count(); 18} 19 20 21int EventListModel::columnCount(const QModelIndex &) const 22{ 23 return 2; 24} 25 26 27QVariant EventListModel::data(const QModelIndex &index, int role) const 28{ 29 if (!index.isValid()) 30 return QVariant(); 31 32 if (role == Qt::DisplayRole) 33 if (index.column() == 0) { 34 if (index.row() >= timeList.size()) 35 return QVariant(); 36 return timeList.at(index.row()); 37 } else { 38 if (index.row() >= msgList.size()) 39 return QVariant(); 40 return msgList.at(index.row()); 41 } 42 else 43 return QVariant(); 44} 45 46 47QVariant EventListModel::headerData(int section, Qt::Orientation orientation, 48 int role) const 49{ 50 if (role != Qt::DisplayRole) 51 return QVariant(); 52 53 if (orientation == Qt::Horizontal) { 54 switch (section) { 55 case 0: 56 return QString(tr("Timestamp")); 57 case 1: 58 return QString(tr("Message")); 59 default: 60 return QVariant(); 61 } 62 } else 63 return QString("%1").arg(section); 64} 65 66 67void EventListModel::addEvent(QString time, QString msg) 68{ 69 beginInsertRows(QModelIndex(), msgList.size(), msgList.size() + 1); 70 timeList << time; 71 msgList << msg; 72 endInsertRows(); 73} 74 75 76EventHistory::EventHistory(QWidget *parent, const char *, bool, Qt::WindowFlags) 77 : QDialog(parent) 78{ 79 setupUi(this); 80 81 connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); 82 83 eventListView->setItemsExpandable(false); 84 eventListView->setRootIsDecorated(false); 85 elm = new EventListModel(parent); 86 eventListView->setModel(elm); 87} 88 89 90EventHistory::~EventHistory() 91{ 92 destroy(); 93 delete elm; 94} 95 96 97void EventHistory::languageChange() 98{ 99 retranslateUi(this); 100} 101 102 103void EventHistory::addEvents(WpaMsgList msgs) 104{ 105 WpaMsgList::iterator it; 106 for (it = msgs.begin(); it != msgs.end(); it++) 107 addEvent(*it); 108} 109 110 111void EventHistory::addEvent(WpaMsg msg) 112{ 113 bool scroll = true; 114 115 if (eventListView->verticalScrollBar()->value() < 116 eventListView->verticalScrollBar()->maximum()) 117 scroll = false; 118 119 elm->addEvent(msg.getTimestamp().toString("yyyy-MM-dd hh:mm:ss.zzz"), 120 msg.getMsg()); 121 122 if (scroll) 123 eventListView->scrollToBottom(); 124} 125