2#include <QLoggingCategory>
6#include "OperateFtpServer.h"
8static Q_LOGGING_CATEGORY(log,
"FtpServer.FrmMain")
12 , m_ModelConnect(this)
17 ui->tvConnect->setModel(&m_ModelConnect);
19 ui->tvConnect->setSelectionMode(QAbstractItemView::MultiSelection);
20 ui->tvConnect->setSelectionBehavior(QAbstractItemView::SelectRows);
21 ui->tvConnect->setEditTriggers(QAbstractItemView::NoEditTriggers);
22 m_ModelConnect.setHorizontalHeaderItem(0,
new QStandardItem(tr(
"IP")));
23 m_ModelConnect.setHorizontalHeaderItem(1,
new QStandardItem(tr(
"Port")));
24 m_ModelConnect.setHorizontalHeaderItem(2,
new QStandardItem(tr(
"Time")));
32 ui->tvConnect->horizontalHeader()->setSectionResizeMode(
33#
if defined(DEBUG) && !defined(Q_OS_ANDROID)
36 QHeaderView::Interactive);
38 check = connect(ui->tvConnect, SIGNAL(customContextMenuRequested(
const QPoint &)),
39 this, SLOT(slotContextMenuRequested(
const QPoint&)));
41 ui->pbSettings->setText(pOperate->m_pActionSettings->text());
42 ui->pbSettings->setIcon(pOperate->m_pActionSettings->icon());
43 check = connect(ui->pbSettings, &QPushButton::clicked,
44 pOperate->m_pActionSettings, &QAction::trigger);
46 ui->pbStart->setText(pOperate->m_pStart->text());
47 ui->pbStart->setIcon(pOperate->m_pStart->icon());
48 check = connect(ui->pbStart, &QPushButton::clicked,
49 pOperate->m_pStart, &QAction::trigger);
51 check = connect(pOperate->m_pStart, &QAction::toggled,
52 this, [
this, pOperate](
bool checked) {
53 ui->pbStart->setText(pOperate->m_pStart->text());
54 ui->pbStart->setIcon(pOperate->m_pStart->icon());
55 ui->pbStart->setChecked(checked);
58 slotConnectCount(0, 0, 0);
66void CFrmMain::slotConnectCount(
int nTotal,
int nConnect,
int nDisconnect)
68 QString szCount = tr(
"Connect count: Current: %1; Disconnect: %2; Total: %3")
69 .arg(nConnect).arg(nDisconnect).arg(nTotal);
70 ui->lbConnectCount->setText(szCount);
73void CFrmMain::slotConnected(
const QString& szIp,
const quint16 port)
75 QList<QStandardItem*> lstItem;
76 QStandardItem* pIP =
new QStandardItem(szIp);
78 QStandardItem* pPort =
new QStandardItem(QString::number(port));
80 QStandardItem* pTime =
new QStandardItem(QTime::currentTime().toString(
81 QLocale::system().timeFormat()));
83 m_ModelConnect.appendRow(lstItem);
84 ui->tvConnect->resizeColumnToContents(0);
85 ui->tvConnect->resizeColumnToContents(1);
86 ui->tvConnect->resizeColumnToContents(2);
89void CFrmMain::slotDisconnected(
const QString& szIp,
const quint16 port)
91 for (
int row = 0; row < m_ModelConnect.rowCount(); row++) {
92 QModelIndex index = m_ModelConnect.index(row, 0);
93 QString ip = m_ModelConnect.data(index).toString();
94 QModelIndex indexPort = m_ModelConnect.index(row, 1);
95 QString szPort = m_ModelConnect.data(indexPort).toString();
96 if (szIp == ip && szPort == QString::number(port)) {
97 m_ModelConnect.removeRows(row, 1);
103void CFrmMain::slotContextMenuRequested(
const QPoint& pos)
106 m.addAction(tr(
"Disconnect"), [
this](){
107 QItemSelectionModel* pSelect = ui->tvConnect->selectionModel();
108 QModelIndexList lstIndex = pSelect->selectedRows();
109 foreach(
auto index, lstIndex) {
110 QString szIp = m_ModelConnect.item(index.row(), 0)->text();
111 quint16 port = m_ModelConnect.item(index.row(), 1)->text().toUInt();
112 emit sigDisconnect(szIp, port);
115 QPoint p = ui->tvConnect->mapToGlobal(pos);