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