7#include <QLoggingCategory>
8#include "FrmViewServer.h"
10static Q_LOGGING_CATEGORY(log,
"ViewServer")
14 , m_ptvClients(
nullptr)
15 , m_plbConnectCount(
nullptr)
18 qDebug(log) << Q_FUNC_INFO;
19 QVBoxLayout* pLayout =
new QVBoxLayout(
this);
21 m_pToolBar =
new QToolBar(
this);
22 if(pLayout && m_pToolBar)
23 pLayout->addWidget(m_pToolBar);
24 m_ptvClients =
new QTableView(
this);
25 if(pLayout && m_ptvClients) {
26 pLayout->addWidget(m_ptvClients);
28 m_ptvClients->installEventFilter(
this);
29 m_ptvClients->setModel(&m_ModelConnect);
31 m_ptvClients->setSelectionMode(QAbstractItemView::SingleSelection);
32 m_ptvClients->setSelectionBehavior(QAbstractItemView::SelectRows);
33 m_ptvClients->setEditTriggers(QAbstractItemView::NoEditTriggers);
34 m_ModelConnect.setHorizontalHeaderItem(0,
new QStandardItem(tr(
"IP")));
35 m_ModelConnect.setHorizontalHeaderItem(1,
new QStandardItem(tr(
"Port")));
36 m_ModelConnect.setHorizontalHeaderItem(2,
new QStandardItem(tr(
"Time")));
44 m_ptvClients->horizontalHeader()->setSectionResizeMode(
45#
if defined(DEBUG) && !defined(Q_OS_ANDROID)
48 QHeaderView::Interactive);
50 m_ptvClients->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu);
51 check = connect(m_ptvClients, SIGNAL(customContextMenuRequested(
const QPoint &)),
52 this, SLOT(slotContextMenuRequested(
const QPoint&)));
56 m_plbConnectCount =
new QLabel(
this);
57 if(pLayout && m_plbConnectCount)
58 pLayout->addWidget(m_plbConnectCount);
61CFrmViewServer::~CFrmViewServer()
63 qDebug(log) << Q_FUNC_INFO;
66void CFrmViewServer::AddActionInToolBar(QAction *pAction)
69 m_pToolBar->addAction(pAction);
72void CFrmViewServer::slotConnected(
const QString& szIp,
const quint16 port)
74 QList<QStandardItem*> lstItem;
75 QStandardItem* pIP =
new QStandardItem(szIp);
77 QStandardItem* pPort =
new QStandardItem(QString::number(port));
79 QStandardItem* pTime =
new QStandardItem(QDateTime::currentDateTime().toString(
80 QLocale::system().dateTimeFormat()));
82 m_ModelConnect.appendRow(lstItem);
83 m_ptvClients->resizeColumnToContents(0);
84 m_ptvClients->resizeColumnToContents(1);
85 m_ptvClients->resizeColumnToContents(2);
87 m_Stats.AddConnects();
88 m_plbConnectCount->setText(m_Stats.ToString());
91void CFrmViewServer::slotDisconnected(
const QString& szIp,
const quint16 port)
93 for (
int row = 0; row < m_ModelConnect.rowCount(); row++) {
94 QModelIndex index = m_ModelConnect.index(row, 0);
95 QString ip = m_ModelConnect.data(index).toString();
96 QModelIndex indexPort = m_ModelConnect.index(row, 1);
97 QString szPort = m_ModelConnect.data(indexPort).toString();
98 if (szIp == ip && szPort == QString::number(port)) {
99 m_ModelConnect.removeRows(row, 1);
100 m_Stats.Disconnects();
101 m_plbConnectCount->setText(m_Stats.ToString());
107void CFrmViewServer::slotContextMenuRequested(
const QPoint& pos)
109 if(m_ModelConnect.rowCount() == 0)
112 m.addAction(tr(
"Disconnect"),
this, [
this](){
113 QItemSelectionModel* pSelect = m_ptvClients->selectionModel();
114 QModelIndexList lstIndex = pSelect->selectedRows();
115 foreach(
auto index, lstIndex) {
116 QString szIp = m_ModelConnect.item(index.row(), 0)->text();
117 quint16 port = m_ModelConnect.item(index.row(), 1)->text().toUInt();
118 emit sigDisconnect(szIp, port);
121 QPoint p = m_ptvClients->mapToGlobal(pos);
The CFrmViewServer class.