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
rowCount(const QModelIndex &) const15 int EventListModel::rowCount(const QModelIndex &) const
16 {
17 return msgList.count();
18 }
19
20
columnCount(const QModelIndex &) const21 int EventListModel::columnCount(const QModelIndex &) const
22 {
23 return 2;
24 }
25
26
data(const QModelIndex & index,int role) const27 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
headerData(int section,Qt::Orientation orientation,int role) const47 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
addEvent(QString time,QString msg)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
EventHistory(QWidget * parent,const char *,bool,Qt::WFlags)76 EventHistory::EventHistory(QWidget *parent, const char *, bool, Qt::WFlags)
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
~EventHistory()90 EventHistory::~EventHistory()
91 {
92 destroy();
93 delete elm;
94 }
95
96
languageChange()97 void EventHistory::languageChange()
98 {
99 retranslateUi(this);
100 }
101
102
addEvents(WpaMsgList msgs)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
addEvent(WpaMsg msg)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