From 69d8038f9bc4e18dbeaa43be17095315eca029b0 Mon Sep 17 00:00:00 2001 From: shuibing811 Date: Tue, 11 Feb 2025 17:32:11 +0800 Subject: [PATCH] --- --- mainwindow.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++++- mainwindow.h | 7 +++++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 19fc6f3..8f4ed16 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -56,6 +56,27 @@ void MainWindow::keyPressEvent(QKeyEvent* event){ } } +void MainWindow::StartupTalkingTimer(){ + if(m_timer){ + m_timer->stop(); + }else{ + m_timer = std::make_shared(); + QObject::connect(&*m_timer, &QTimer::timeout, [this]() { + m_callDuration += 1; + QTime t(0,0,0); + t = t.addSecs(m_callDuration); + ui->lblCallDuration->setText(t.toString("hh:mm:ss")); + }); + } + m_callDuration = 0; + m_timer->start(1000); +} +void MainWindow::ShutdownTalkingTimer(){ + if(m_timer){ + m_timer->stop(); + } +} + void MainWindow::readPendingDatagrams(){ while (m_udpServerSocket->hasPendingDatagrams()) { QByteArray datagram; @@ -70,11 +91,37 @@ void MainWindow::readPendingDatagrams(){ //TODO:处理数据包 //qDebug() << "Received datagram from" << sender.toString() << ":" << senderPort; //qDebug() << "Data:" << datagram; + + //有来电 + ui->cmbCallNumber->setEnabled(false); + ui->btnCallAnswer->show(); + ui->btnCallReject->show(); + ui->lblCallStatus->setText("来电中..."); + ui->lblCallDuration->hide(); + //通话中 + ui->cmbCallNumber->setEnabled(false); + ui->btnCallAnswer->hide(); + ui->btnCallReject->show(); + ui->lblCallStatus->setText("通话中..."); + ui->lblCallDuration->show(); + StartupTalkingTimer(); + //挂断电话 + ui->cmbCallNumber->setEnabled(true); + ui->btnCallAnswer->show(); + ui->btnCallReject->hide(); + ui->lblCallStatus->setText("空闲中..."); + ui->lblCallDuration->hide(); + ShutdownTalkingTimer(); + //拨号中 + ui->cmbCallNumber->setEnabled(false); + ui->btnCallAnswer->hide(); + ui->btnCallReject->show(); + ui->lblCallStatus->setText("拨号中..."); + ui->lblCallDuration->hide(); } } void MainWindow::test() { - // 随机生成信号能量数据 setSignalStrengthValues( QStringList{"1号星", "2号星", "3号星", "4号星", "5号星", "6号星"}, @@ -127,6 +174,14 @@ void MainWindow::test() { m_logger->info("{}---{}---{}",1,"22",30); + + //通话中 + // ui->cmbCallNumber->setEnabled(false); + // ui->btnCallAnswer->hide(); + // ui->btnCallReject->show(); + // ui->lblCallStatus->setText("通话中..."); + // ui->lblCallDuration->show(); + // StartupTalkingTimer(); } //-------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------- diff --git a/mainwindow.h b/mainwindow.h index 6600f7a..df21e09 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "RecordQuery.h" #include "LoggerWidget.h" @@ -79,6 +80,8 @@ private: bool rejectCall(); bool sendShortMessage(const QString &number,const QString& message); + void StartupTalkingTimer(); + void ShutdownTalkingTimer(); void test(); private: Ui::MainWindow *ui; @@ -95,5 +98,9 @@ private: std::shared_ptr m_logger; std::vector m_msgList; + + std::shared_ptr m_timer; + int m_callDuration = 0; + }; #endif // MAINWINDOW_H