Files
Radio/module/radio/subWidget/ServerSettingWidget.cpp
T
2026-07-29 12:30:40 +08:00

125 lines
4.3 KiB
C++

#include "ServerSettingWidget.h"
#include <QPainter>
#include <QLabel>
#include <QLineEdit>
#include <QStyleOption>
#include "../component/ExpandInput.h"
#include "../component/ShowHelpInfo.h"
#include "../BackEnd/MainWidget.h"
#include "../BaseWidget.h"
Server_Setting_Widget::Server_Setting_Widget(QWidget *parent) : QWidget(parent) {
setObjectName("服务端设置界面");
hide();
auto main_layout = new QVBoxLayout(this);
main_layout->setAlignment(Qt::AlignTop);
rig_name_label = create_label("Rig Name");
user_name_label = create_label("User Name");
password_label = create_label("Password");
ctrl_port_label = create_label("Ctrl Port");
civ_port_label = create_label("Civ Port");
audio_port_label = create_label("Audio Port");
rig_name_edit = new Expand_Input();
user_name_edit = new Expand_Input();
password_edit = new Expand_Input();
ctrl_port_edit = new Expand_Input();
civ_port_edit = new Expand_Input();
audio_port_edit = new Expand_Input();
main_layout->addLayout(create_hbox_layout({rig_name_label, rig_name_edit}), 1);
main_layout->addLayout(create_hbox_layout({user_name_label, user_name_edit}), 1);
main_layout->addLayout(create_hbox_layout({password_label, password_edit}), 1);
main_layout->addLayout(create_hbox_layout({ctrl_port_label, ctrl_port_edit}), 1);
main_layout->addLayout(create_hbox_layout({civ_port_label, civ_port_edit}), 1);
main_layout->addLayout(create_hbox_layout({audio_port_label, audio_port_edit}), 1);
show_help_info = new Show_Help_Info;
show_help_info->font.setPixelSize(40);
main_layout->addWidget(show_help_info, 3);
int font_size = 40;
start_button = create_click_button("Start", font_size, [&]() {
show_help_info->setText("Start 帮助信息");
show_help_info->update();
}, &roll_object);
default_button = create_click_button("Default", font_size, [&]() {
show_help_info->setText("Default 帮助信息");
show_help_info->update();
}, &roll_object);
clear_button = create_click_button("Clear", font_size, [&]() {
show_help_info->setText("Clear 帮助信息");
show_help_info->update();
}, &roll_object);
save_button = create_click_button("Save", font_size, [&]() {
show_help_info->setText("Save 帮助信息");
show_help_info->update();
}, &roll_object);
exit_button = create_click_button("Exit", font_size, [&]() {
Main_Widget::instance()->hide_cur_hover_widget();
Main_Widget::instance()->get_current_base_widget()->setFocus();
}, &roll_object);
roll_object.widgets = {start_button, default_button, clear_button, save_button, exit_button};
roll_object.enter_func = [](QPushButton* btn){
btn->setChecked(true);
};
roll_object.leave_func = [](QPushButton* btn){
btn->setChecked(false);
};
main_layout->addLayout(roll_object.hbox_layout(8), 2);
}
void Server_Setting_Widget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.setPen(Qt::NoPen);
QPalette palette = QApplication::style()->standardPalette();
const QBrush& base1_brush = palette.brush(QPalette::Window);
painter.setBrush(base1_brush);
painter.drawRect(rect());
painter.end();
}
QLabel *Server_Setting_Widget::create_label(const QString& text) {
auto ret = new QLabel(text);
QFont font;
font.setBold(true);
font.setPixelSize(Global::instance()->adapt_height(50));
ret->setFont(font);
QPalette pe;
pe.setColor(QPalette::WindowText, Qt::black);
ret->setPalette(pe);
return ret;
}
void Server_Setting_Widget::keyPressEvent(QKeyEvent *event) {
if (event->type() == QEvent::KeyPress) {
Back_End* g = Back_End::instance();
auto *key_event = dynamic_cast<QKeyEvent *>(event);
if(g->match(key_event, "左移")){
roll_object.roll_left();
event->accept();
return;
}
if(g->match(key_event, "右移")){
roll_object.roll_right();
event->accept();
return;
}
if(g->match(key_event, "确定")){
roll_object.cur()->emit clicked();
event->accept();
return;
}
}
event->ignore();
}
void Server_Setting_Widget::showEvent(QShowEvent *event) {
roll_object.enter_func(roll_object.cur());
event->accept();
}