首次提交
This commit is contained in:
@@ -0,0 +1,310 @@
|
||||
#include "MainWidget.h"
|
||||
#include "../component/FrequentShower.h"
|
||||
#include "../component/TopMenuBar.h"
|
||||
#include "../menu/BaseWidgetMenu.h"
|
||||
#include "../subWidget/ServerSettingWidget.h"
|
||||
#include "IntermediateFrequencyWidget.h"
|
||||
#include "RadioWidget.h"
|
||||
#include "SweepFrequencyWidget.h"
|
||||
#include "YSGraphic_Core/base/export.h"
|
||||
#include <QScreen>
|
||||
#include <QTime>
|
||||
|
||||
#include "../FileDialog/FileExplorer.h"
|
||||
MainWidget::MainWidget(QWidget *parent) : QWidget(parent) {
|
||||
setFocusPolicy(Qt::FocusPolicy::NoFocus);
|
||||
setObjectName("主界面");
|
||||
audioRecorder = new QAudioRecorder(this);
|
||||
audioRecorder->setAudioInput(audioRecorder->defaultAudioInput());
|
||||
QAudioEncoderSettings audioSettings;
|
||||
audioSettings.setCodec("audio/pcm");
|
||||
audioSettings.setQuality(QMultimedia::HighQuality);
|
||||
audioSettings.setSampleRate(44100); // 设置采样率
|
||||
audioSettings.setChannelCount(2); // 设置立体声
|
||||
audioRecorder->setAudioSettings(audioSettings);
|
||||
|
||||
mediaPlayer = new QMediaPlayer(this);
|
||||
|
||||
|
||||
mMainLayout = new QVBoxLayout(this);
|
||||
mMainLayout->setMargin(8);
|
||||
mMainLayout->setSpacing(0);
|
||||
mTopMenuBar = new TopMenuBar();
|
||||
mMainLayout->addWidget(mTopMenuBar, 1);
|
||||
mRadioWidget = new RadioWidget;
|
||||
mSweepFrequencyWidget = new SweepFrequencyWidget;
|
||||
mIntermediateFrequencyWidget = new IntermediateFrequencyWidget;
|
||||
mMainLayout->addWidget(mRadioWidget, 31);
|
||||
mMainLayout->addWidget(mSweepFrequencyWidget, 31);
|
||||
mMainLayout->addWidget(mIntermediateFrequencyWidget, 31);
|
||||
mMainMenu = new BaseWidgetMenu(this);
|
||||
mMainMenu->setObjectName("主菜单");
|
||||
mTopMenu = new BaseWidgetMenu(this);
|
||||
mTopMenu->setObjectName("顶部菜单");
|
||||
mServerSettingWidget = new ServerSettingWidget(this);
|
||||
showRadioWidget();
|
||||
int fontSize = 30;
|
||||
auto btn11 = new MenuButton("电台模式", fontSize, [&]() {
|
||||
showRadioWidget();
|
||||
mMainMenu->hide();
|
||||
});
|
||||
|
||||
auto btn12 = new MenuButton("中频模式", fontSize, [&]() {
|
||||
showIntermediateFrequencyWidget();
|
||||
mMainMenu->hide();
|
||||
});
|
||||
|
||||
auto btn13 = new MenuButton("扫频模式", fontSize, [&]() {
|
||||
showSweepFrequencyWidget();
|
||||
mMainMenu->hide();
|
||||
});
|
||||
|
||||
auto btn14 = new MenuButton("服务端设置", fontSize, [&]() {
|
||||
mMainMenu->hide();
|
||||
showServerSettingWidget();
|
||||
});
|
||||
mSelectShotScreenDialog = new FileExplorer();
|
||||
// mSelectShotScreenDialog->setGeometry(QApplication::primaryScreen()->geometry());
|
||||
// mSelectShotScreenDialog->setAcceptMode(QFileDialog::AcceptSave);
|
||||
// mSelectShotScreenDialog->setOption(QFileDialog::DontUseNativeDialog, false);
|
||||
|
||||
auto btn15 = new MenuButton("截屏", fontSize, [&]() {
|
||||
QTimer::singleShot(500, [this]() {
|
||||
QPixmap pixmap = this->grab();
|
||||
auto be = BackEnd::instance();
|
||||
QString savePath = be->get_screenshot_save_dir_path() + be->get_screenshot_save_file_name();
|
||||
if(pixmap.save(savePath)) {
|
||||
qDebug() << "Screenshot saved successfully at" << savePath;
|
||||
}
|
||||
else {
|
||||
qDebug() << "Failed to save screenshot at" << savePath;
|
||||
}
|
||||
});
|
||||
// hideCurHoverWidget();
|
||||
// mCurrentHoverWidget = mSelectShotScreenDialog;
|
||||
// mMainMenu->hide();
|
||||
// QString defaultFileName = "截屏" + QDateTime::currentDateTime().toString("yyyy年MM月dd日_hh:mm:ss");
|
||||
// mSelectShotScreenDialog->selectFile(BackEnd::instance()->getScreenshotPath() + defaultFileName + ".png");
|
||||
// mSelectShotScreenDialog->setFocus();
|
||||
// mSelectShotScreenDialog->show();
|
||||
// if(mSelectShotScreenDialogFirst){
|
||||
// mSelectShotScreenDialogFirst = false;
|
||||
// auto that = mSelectShotScreenDialog->findChild<QLineEdit*>();
|
||||
// if(that){
|
||||
// Toolbox::VirtualKeyBoard::instance()->setEdit(that);
|
||||
// qDebug() << "设置成功!";
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// connect(mSelectShotScreenDialog, &QFileDialog::fileSelected, [&](const QString &filePath) {
|
||||
// QPixmap pixmap = this->grab();
|
||||
// if (pixmap.save(filePath)) {
|
||||
// qDebug() << "截屏保存到了" << filePath;
|
||||
// } else {
|
||||
// qDebug() << "截屏保存失败,路径不对" << filePath;
|
||||
// }
|
||||
// });
|
||||
});
|
||||
|
||||
auto be = BackEnd::instance();
|
||||
mSelectAudioFile = new FileExplorer();
|
||||
mSelectAudioFile->setParent(this);
|
||||
mSelectAudioFile->hide();
|
||||
mSelectAudioFile->setObjectName("选择音频文件播放");
|
||||
mSelectAudioFile->changeRoot(be->getAudioFileLocation());
|
||||
|
||||
connect(mSelectAudioFile->cancelButton, &QPushButton::clicked, [this]() {
|
||||
qDebug() << "播放音频已取消!";
|
||||
MainWidget::instance()->getCurrentBaseWidget()->setFocus();
|
||||
mSelectAudioFile->hide();
|
||||
});
|
||||
connect(mSelectAudioFile->confirmButton, &QPushButton::clicked, [this]() {
|
||||
QString path = mSelectAudioFile->focus.absoluteFilePath();
|
||||
if(!path.endsWith(".wav")){
|
||||
qWarning() << "选择的文件结尾不是wav 选择的文件为" + path;
|
||||
}
|
||||
mediaPlayer->setMedia(QUrl::fromLocalFile(path));
|
||||
mediaPlayer->play();
|
||||
MainWidget::instance()->getCurrentBaseWidget()->setFocus();
|
||||
mSelectAudioFile->hide();
|
||||
});
|
||||
auto btn21 = new MenuButton("播放音频", fontSize, [this]() {
|
||||
mSelectAudioFile->setGeometry(rect());
|
||||
mSelectAudioFile->show();
|
||||
mSelectAudioFile->setFocus();
|
||||
// qDebug() << "2222222222222222";
|
||||
setCurrentHoverWidget(mSelectAudioFile);
|
||||
// qDebug() << "2222222222222222";
|
||||
});
|
||||
|
||||
|
||||
auto btn22 = new MenuButton("打卡sdk卡", fontSize, [&](){
|
||||
|
||||
});
|
||||
auto btn23 = new DoubleTextMenuButton("开始录音", "停止录音", fontSize, [&](bool isFirst){
|
||||
if(isFirst) {
|
||||
QString wav_path = "file:///" + QString(be->getAudioFileLocation() + "%1.wav").arg(
|
||||
QDateTime::currentDateTime().toString("yyyy-MM-dd_HH-mm-ss"));
|
||||
audioRecorder->setOutputLocation(wav_path);
|
||||
if (audioRecorder->audioInput().isEmpty()) {
|
||||
qDebug() << "没有找到音频输入设备!";
|
||||
} else {
|
||||
qDebug() << "音频输入设备已设置。audioInput:" + audioRecorder->audioInput() +" path:" + wav_path;
|
||||
}
|
||||
audioRecorder->record();
|
||||
} else {
|
||||
qDebug() << "停止录音" << audioRecorder->error() << audioRecorder->errorString();
|
||||
audioRecorder->stop();
|
||||
}
|
||||
});
|
||||
|
||||
auto btn24 = new DoubleTextMenuButton("开始发射", "停止发射", fontSize, [&](bool isFirst){
|
||||
if(isFirst){
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
});
|
||||
mMainMenu->addMenuButtonOnLayout1({btn11, btn12, btn13, btn14, btn15});
|
||||
mMainMenu->addMenuButtonOnLayout2({btn21, btn22, btn23, btn24}, 1);
|
||||
|
||||
|
||||
|
||||
auto btnt21 = new MenuButton("PRE", fontSize, [&]() {
|
||||
qDebug() << "PRE 按下";
|
||||
});
|
||||
auto btnt22 = new MenuButton("ATT", fontSize, [&]() {
|
||||
qDebug() << "PRE 按下";
|
||||
});
|
||||
mTopMenu->addMenuButtonOnLayout1({btnt21, btnt22}, 3);
|
||||
|
||||
|
||||
#ifndef MockBackEnd
|
||||
showFullScreen();
|
||||
#else
|
||||
showMaximized();
|
||||
#endif
|
||||
}
|
||||
|
||||
void MainWidget::paintEvent(QPaintEvent *event) {
|
||||
QPainter painter(this);
|
||||
//qDebug() << "MainWidget::paintEvent" ;
|
||||
//painter.fillRect(rect(), Qt::red);
|
||||
painter.end();
|
||||
}
|
||||
|
||||
void MainWidget::showIntermediateFrequencyWidget() const {
|
||||
mSweepFrequencyWidget->hide();
|
||||
mRadioWidget->hide();
|
||||
mIntermediateFrequencyWidget->show();
|
||||
mIntermediateFrequencyWidget->setFocus();
|
||||
}
|
||||
|
||||
void MainWidget::showSweepFrequencyWidget() const {
|
||||
mIntermediateFrequencyWidget->hide();
|
||||
mRadioWidget->hide();
|
||||
mSweepFrequencyWidget->show();
|
||||
mSweepFrequencyWidget->setFocus();
|
||||
}
|
||||
|
||||
void MainWidget::showRadioWidget() const {
|
||||
mIntermediateFrequencyWidget->hide();
|
||||
mSweepFrequencyWidget->hide();
|
||||
mRadioWidget->show();
|
||||
mRadioWidget->setFocus();
|
||||
}
|
||||
|
||||
void MainWidget::showServerSettingWidget(){
|
||||
mServerSettingWidget->raise();
|
||||
mServerSettingWidget->show();
|
||||
mServerSettingWidget->setFocus();
|
||||
setCurrentHoverWidget(mServerSettingWidget);
|
||||
|
||||
}
|
||||
|
||||
BaseWidget *MainWidget::getCurrentBaseWidget() const {
|
||||
if (mRadioWidget->isVisible()) return mRadioWidget;
|
||||
else if (mSweepFrequencyWidget->isVisible()) return mSweepFrequencyWidget;
|
||||
else return mIntermediateFrequencyWidget;
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::setCurrentHoverWidget(QWidget* widget) {
|
||||
qDebug() << "setCurrentHoverWidget pre" << ( mCurrentHoverWidget ? mCurrentHoverWidget->objectName() : "nullptr");
|
||||
qDebug() << "setCurrentHoverWidget set" << ( widget ? widget->objectName() : "nullptr");
|
||||
if(mCurrentHoverWidget) {
|
||||
mCurrentHoverWidget->hide();
|
||||
}
|
||||
mCurrentHoverWidget = widget;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MainWidget::hideCurHoverWidget() {
|
||||
qDebug() << "hideCurHoverWidget() ";
|
||||
if(mCurrentHoverWidget){
|
||||
qDebug() << mCurrentHoverWidget->objectName();
|
||||
mCurrentHoverWidget->hide();
|
||||
mCurrentHoverWidget = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void MainWidget::resizeEvent(QResizeEvent *event) {
|
||||
mServerSettingWidget->resize(size());
|
||||
QWidget::resizeEvent(event);
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::keyPressEvent(QKeyEvent *event) {
|
||||
//qDebug()<<"MainWidget::keyPressEvent"<<event->text();
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
BackEnd* g = BackEnd::instance();
|
||||
if(g->match(event, "主菜单")){
|
||||
if(!mMainMenu->isVisible()){
|
||||
hideCurHoverWidget();
|
||||
int baseHeight = (int)((double)height() * 0.2);
|
||||
mMainMenu->setGeometry(0, height() - baseHeight, width(), baseHeight);
|
||||
mMainMenu->raise();
|
||||
mMainMenu->show();
|
||||
setCurrentHoverWidget(mMainMenu);
|
||||
mMainMenu->setFocus();
|
||||
} else {
|
||||
mMainMenu->hide();
|
||||
getCurrentBaseWidget()->setFocus();
|
||||
}
|
||||
}
|
||||
if(g->match(event, "属性菜单")){
|
||||
getCurrentBaseWidget()->reserverMenu();
|
||||
event->accept();
|
||||
return;
|
||||
}
|
||||
if(g->match(event, "顶部菜单")){
|
||||
if(!mTopMenu->isVisible()){
|
||||
hideCurHoverWidget();
|
||||
int baseHeight = (int)((double)height() * 0.2);
|
||||
mTopMenu->setGeometry(0, 0, width(), baseHeight);
|
||||
mTopMenu->raise();
|
||||
mTopMenu->show();
|
||||
setCurrentHoverWidget(mTopMenu);
|
||||
mTopMenu->setFocus();
|
||||
} else {
|
||||
mTopMenu->hide();
|
||||
getCurrentBaseWidget()->setFocus();
|
||||
}
|
||||
}
|
||||
if(g->match(event, "退出")){
|
||||
hideCurHoverWidget();
|
||||
getCurrentBaseWidget()->setFocus();
|
||||
}
|
||||
}
|
||||
event->accept();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void MainWidget::wheelEvent(QWheelEvent *event) {
|
||||
event->accept();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user