#include "presentationhelpers.h" #include #include #include #include #include #include "application/applicationconstants.h" void PresentationHelpers::retainSizeWhenHidden(QWidget *widget) { QSizePolicy policy = widget->sizePolicy(); policy.setRetainSizeWhenHidden(true); widget->setSizePolicy(policy); } void PresentationHelpers::showAboutDialog(QWidget *parent) { QMessageBox messageBox(parent); messageBox.setWindowTitle("关于"); messageBox.setTextFormat(Qt::RichText); const QString repository = ApplicationConstants::RepositoryName; messageBox.setText( QApplication::applicationDisplayName() + " " + QApplication::applicationVersion() + "
改进的 ZJU-Connect 图形界面" + "
作者:Chenx Dust" + "
项目主页:https://github.com/" + repository + "" + "

致谢:" + "

ZJU-Connect-for-Windows" + "
基于 Qt 编写的 ZJU 网络客户端" + "
作者:Myth" + "
项目主页:" "https://github.com/Mythologyli/ZJU-Connect-for-Windows" + "

zju-connect" + "
ZJU RVPN 客户端的 Go 语言实现" + "
作者:Myth" + "
项目主页:" "https://github.com/Mythologyli/zju-connect" + "

EasierConnect" + "
EasyConnect 客户端的开源实现" + "
作者:lyc8503" + "
项目主页:" "https://github.com/lyc8503/EasierConnect" ); messageBox.setIconPixmap(QPixmap(":/resource/icon.png").scaled( 100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation )); messageBox.exec(); } bool PresentationHelpers::confirmCredentials( const QString &username, const QString &password ) { if (username.isEmpty() || password.isEmpty()) { return QMessageBox::warning( nullptr, "警告", "账号或密码为空!\n\n是否继续?", QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Ok; } const auto containsNonAscii = [](const QString &value) { for (const QChar character : value) { if (character.unicode() > 127) { return true; } } return false; }; if (containsNonAscii(username) || containsNonAscii(password)) { return QMessageBox::warning( nullptr, "警告", "账号或密码存在非 ASCII 字符!\n建议检查输入法设置。\n\n是否继续?", QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Ok; } return true; }