1 /* 2 * wpa_gui - EventHistory class 3 * Copyright (c) 2005-2006, Jouni Malinen <j (at) 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 15 int EventListModel::rowCount(const QModelIndex &) const 16 { 17 return msgList.count(); 18 } 19 20 21 int EventListModel::columnCount(const QModelIndex &) const 22 { 23 return 2; 24 } 25 26 27 QVariant 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 47 QVariant 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 67 void 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 76 EventHistory::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 90 EventHistory::~EventHistory() 91 { 92 destroy(); 93 delete elm; 94 } 95 96 97 void EventHistory::languageChange() 98 { 99 retranslateUi(this); 100 } 101 102 103 void EventHistory::addEvents(WpaMsgList msgs) 104 { 105 WpaMsgList::iterator it; 106 for (it = msgs.begin(); it != msgs.end(); it++) 107 addEvent(*it); 108 } 109 110 111 void 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