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 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 
     21 int EventListModel::rowCount(const QModelIndex &) const
     22 {
     23 	return msgList.count();
     24 }
     25 
     26 
     27 int EventListModel::columnCount(const QModelIndex &) const
     28 {
     29 	return 2;
     30 }
     31 
     32 
     33 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 
     53 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 
     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 
     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 
     96 EventHistory::~EventHistory()
     97 {
     98 	destroy();
     99 	delete elm;
    100 }
    101 
    102 
    103 void EventHistory::languageChange()
    104 {
    105 	retranslateUi(this);
    106 }
    107 
    108 
    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 
    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