File indexing completed on 2024-05-12 05:35:59
0001 // SPDX-License-Identifier: GPL-2.0-or-later 0002 // SPDX-FileCopyrightText: 2011 Craig Drummond <craig.p.drummond@gmail.com> 0003 // SPDX-FileCopyrightText: 2018 Alexis Lopes Zubeta <contact@azubieta.net> 0004 // SPDX-FileCopyrightText: 2020 Tomaz Canabrava <tcanabrava@kde.org> 0005 /* 0006 * UFW KControl Module 0007 */ 0008 0009 #include "loglistmodel.h" 0010 0011 #include <QDateTime> 0012 #include <QRegularExpression> 0013 #include <klocalizedstring.h> 0014 0015 LogListModel::LogListModel(QObject *parent) 0016 : QAbstractTableModel(parent) 0017 { 0018 } 0019 0020 bool LogListModel::busy() const 0021 { 0022 return m_busy; 0023 } 0024 0025 void LogListModel::setBusy(bool busy) 0026 { 0027 if (m_busy != busy) { 0028 m_busy = busy; 0029 Q_EMIT busyChanged(); 0030 } 0031 } 0032 0033 int LogListModel::rowCount(const QModelIndex &parent) const 0034 { 0035 if (parent.isValid()) { 0036 return 0; 0037 } 0038 0039 return m_logsData.size(); 0040 } 0041 0042 int LogListModel::columnCount(const QModelIndex &parent) const 0043 { 0044 Q_UNUSED(parent) 0045 return 9; 0046 } 0047 0048 QVariant LogListModel::data(const QModelIndex &index, int role) const 0049 { 0050 Q_UNUSED(role) 0051 const auto checkIndexFlags = QAbstractItemModel::CheckIndexOption::IndexIsValid | QAbstractItemModel::CheckIndexOption::ParentIsInvalid; 0052 0053 if (!checkIndex(index, checkIndexFlags)) { 0054 return {}; 0055 } 0056 0057 LogData data = m_logsData.at(index.row()); 0058 0059 switch (index.column()) { 0060 case SourceAddressColumn: 0061 return data.sourceAddress; 0062 case SourcePortColumn: 0063 return data.sourcePort; 0064 case DestinationAddressColumn: 0065 return data.destinationAddress; 0066 case DestinationPortColumn: 0067 return data.destinationPort; 0068 case ProtocolColumn: 0069 return data.protocol; 0070 case InterfaceColumn: 0071 return data.interface; 0072 case ActionColumn: 0073 return data.action; 0074 case TimeColumn: 0075 return data.time; 0076 case DateColumn: 0077 return data.date; 0078 } 0079 return QVariant(); 0080 } 0081 0082 QVariant LogListModel::headerData(int section, Qt::Orientation orientation, int role) const 0083 { 0084 Q_UNUSED(orientation) 0085 Q_UNUSED(role) 0086 switch (section) { 0087 case SourceAddressColumn: 0088 return i18nc("@title:column", "From"); 0089 case SourcePortColumn: 0090 return i18nc("@title:column", "Source port"); 0091 case DestinationAddressColumn: 0092 return i18nc("@title:column", "To"); 0093 case DestinationPortColumn: 0094 return i18nc("@title:column", "Destination port"); 0095 case ProtocolColumn: 0096 return i18nc("@title:column", "Protocol"); 0097 case InterfaceColumn: 0098 return i18nc("@title:column", "Interface"); 0099 case ActionColumn: 0100 return i18nc("@title:column", "Action"); 0101 case TimeColumn: 0102 return i18nc("@title:column", "Time"); 0103 case DateColumn: 0104 return i18nc("@title:column", "Date"); 0105 } 0106 return QVariant(); 0107 } 0108 0109 void LogListModel::appendLogData(const QList<LogData> &newData) 0110 { 0111 if (newData.isEmpty()) { 0112 return; 0113 } 0114 beginResetModel(); 0115 m_logsData = newData; 0116 endResetModel(); 0117 Q_EMIT countChanged(); 0118 }