Device Emulation (contd.): Display IPv4/IPv6 (base) address in DeviceGroupListView

This commit is contained in:
Srivats P 2016-03-08 18:49:28 +05:30
parent 065698369f
commit 10e1c5211d

View File

@ -22,12 +22,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
#include "port.h" #include "port.h"
#include "emulproto.pb.h" #include "emulproto.pb.h"
#include "uint128.h"
#include <QHostAddress>
enum { enum {
kName, kName,
kVlanCount, kVlanCount,
kDeviceCount, // Across all vlans kDeviceCount, // Across all vlans
kIp, kIp,
kIp4Address,
kIp6Address,
kFieldCount kFieldCount
}; };
@ -35,7 +40,9 @@ static QStringList columns_ = QStringList()
<< "Name" << "Name"
<< "Vlans" << "Vlans"
<< "Devices" << "Devices"
<< "IP Stack"; << "IP Stack"
<< "IPv4 Address"
<< "IPv6 Address";
DeviceGroupModel::DeviceGroupModel(QObject *parent) DeviceGroupModel::DeviceGroupModel(QObject *parent)
: QAbstractTableModel(parent) : QAbstractTableModel(parent)
@ -145,7 +152,39 @@ QVariant DeviceGroupModel::data(const QModelIndex &index, int role) const
} }
return QVariant(); return QVariant();
case kIp4Address:
switch (role) {
case Qt::DisplayRole:
if (devGrp->HasExtension(OstEmul::ip4))
return QHostAddress(
devGrp->MutableExtension(OstEmul::ip4)
->address()).toString();
else
return QString("--");
default:
break;
}
return QVariant();
case kIp6Address:
switch (role) {
case Qt::DisplayRole:
if (devGrp->HasExtension(OstEmul::ip6)) {
OstEmul::Ip6Address ip = devGrp->MutableExtension(
OstEmul::ip6)->address();
return QHostAddress(
UInt128(ip.hi(), ip.lo()).toArray())
.toString();
}
else
return QString("--");
default:
break;
}
return QVariant();
default: default:
Q_ASSERT(false); // unreachable!
break; break;
} }