Home | History | Annotate | Download | only in wpa_gui-qt4
      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