2#include <QLoggingCategory>
6#include "OperateFtpServer.h"
8static Q_LOGGING_CATEGORY(log,
"FtpServer.FrmMain")
12 , m_ModelConnect(this)
17 ui->tvConnect->installEventFilter(
this);
18 ui->tvConnect->setModel(&m_ModelConnect);
20 ui->tvConnect->setSelectionMode(QAbstractItemView::MultiSelection);
21 ui->tvConnect->setSelectionBehavior(QAbstractItemView::SelectRows);
22 ui->tvConnect->setEditTriggers(QAbstractItemView::NoEditTriggers);
23 m_ModelConnect.setHorizontalHeaderItem(0,
new QStandardItem(tr(
"IP")));
24 m_ModelConnect.setHorizontalHeaderItem(1,
new QStandardItem(tr(
"Port")));
25 m_ModelConnect.setHorizontalHeaderItem(2,
new QStandardItem(tr(
"Time")));
33 ui->tvConnect->horizontalHeader()->setSectionResizeMode(
34#
if defined(DEBUG) && !defined(Q_OS_ANDROID)
37 QHeaderView::Interactive);
40 check = connect(ui->tvConnect, SIGNAL(customContextMenuRequested(
const QPoint &)),
41 this, SLOT(slotContextMenuRequested(
const QPoint&)));
43 ui->pbSettings->setText(pOperate->m_pActionSettings->text());
44 ui->pbSettings->setIcon(pOperate->m_pActionSettings->icon());
45 check = connect(ui->pbSettings, &QPushButton::clicked,
46 pOperate->m_pActionSettings, &QAction::trigger);
48 ui->pbStart->setText(pOperate->m_pStart->text());
49 ui->pbStart->setIcon(pOperate->m_pStart->icon());
50 check = connect(ui->pbStart, &QPushButton::clicked,
51 pOperate->m_pStart, &QAction::trigger);
53 check = connect(pOperate->m_pStart, &QAction::toggled,
54 this, [
this, pOperate](
bool checked) {
55 ui->pbStart->setText(pOperate->m_pStart->text());
56 ui->pbStart->setIcon(pOperate->m_pStart->icon());
57 ui->pbStart->setChecked(checked);
60 slotConnectCount(0, 0, 0);
72void CFrmMain::slotConnectCount(
int nTotal,
int nConnect,
int nDisconnect)
74 QString szCount = tr(
"Connect count: Current: %1; Disconnect: %2; Total: %3")
75 .arg(nConnect).arg(nDisconnect).arg(nTotal);
76 ui->lbConnectCount->setText(szCount);
79void CFrmMain::slotConnected(
const QString& szIp,
const quint16 port)
81 QList<QStandardItem*> lstItem;
82 QStandardItem* pIP =
new QStandardItem(szIp);
84 QStandardItem* pPort =
new QStandardItem(QString::number(port));
86 QStandardItem* pTime =
new QStandardItem(QTime::currentTime().toString(
87 QLocale::system().timeFormat()));
89 m_ModelConnect.appendRow(lstItem);
90 ui->tvConnect->resizeColumnToContents(0);
91 ui->tvConnect->resizeColumnToContents(1);
92 ui->tvConnect->resizeColumnToContents(2);
95void CFrmMain::slotDisconnected(
const QString& szIp,
const quint16 port)
97 for (
int row = 0; row < m_ModelConnect.rowCount(); row++) {
98 QModelIndex index = m_ModelConnect.index(row, 0);
99 QString ip = m_ModelConnect.data(index).toString();
100 QModelIndex indexPort = m_ModelConnect.index(row, 1);
101 QString szPort = m_ModelConnect.data(indexPort).toString();
102 if (szIp == ip && szPort == QString::number(port)) {
103 m_ModelConnect.removeRows(row, 1);
109void CFrmMain::slotContextMenuRequested(
const QPoint& pos)
112 m.addAction(tr(
"Disconnect"), [
this](){
113 QItemSelectionModel* pSelect = ui->tvConnect->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 = ui->tvConnect->mapToGlobal(pos);
125void CFrmMain::focusInEvent(QFocusEvent *event)
130bool CFrmMain::eventFilter(QObject *watched, QEvent *event)
132 switch(event->type()){
133 case QEvent::FocusIn: {
142 return QWidget::eventFilter(watched, event);
void sigViewerFocusIn(QWidget *pView)
The view is focus.
void sigViewerFocusIn(QWidget *pView)
The view is focus.