culturered_client/TouchScreen/HomeWidget.cpp
2024-09-07 11:34:44 +08:00

138 lines
4.4 KiB
C++

#include "HomeWidget.h"
#include <QMessageBox>
#include <QApplication>
#include <QDebug>
#include <QApplication>
#include <QDir>
#include <QFileInfoList>
#include <QFileInfo>
#include <QStringList>
#include "MainWindow.h"
#include "ui_HomeWidget.h"
enum class TownType : uint8_t {
TT_Matian
};
HomeWidget::HomeWidget(MainWindow *parent) :
PageBaseWidget(parent),
ui(new Ui::HomeWidget)
{
ui->setupUi(this);
connect(ui->btn_exit_system, &QPushButton::clicked, this, &HomeWidget::OnExitSystem);
connect(ui->btn_matian, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_matian, ":/res/matian-b.png", DetailedType::DT_Matian);
connect(ui->btn_yangjiao, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_yangjiao, ":/res/yangjiao-b.png", DetailedType::DT_Yangjiao);
connect(ui->btn_hanwang, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_hanwang, ":/res/hanwang-a.png", DetailedType::DT_Hanwang);
connect(ui->btn_qinquan, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_qinquan, ":/res/qinquan-a.png", DetailedType::DT_Qinquan);
connect(ui->btn_guaier, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_guaier, ":/res/guaier-a.png", DetailedType::DT_Guaier);
connect(ui->btn_shixia, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_shixia, ":/res/shixia-a.png", DetailedType::DT_Shixia);
connect(ui->btn_liaoyang, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_liaoyang, ":/res/liaoyang-a.png", DetailedType::DT_Liaoyang);
connect(ui->btn_tongyu, &QPushButton::clicked, this, &HomeWidget::OnEnterDetailed);
InitIrreButton(ui->btn_tongyu, ":/res/tongyu-a.png", DetailedType::DT_Tongyu);
ui->btn_exit_system->hide();
//InitSequenceFrame();
}
HomeWidget::~HomeWidget()
{
delete ui;
}
void HomeWidget::Use() {
PageBaseWidget::Use();
if (nullptr != sequenceFrame_) {
sequenceFrame_->hide();
}
}
void HomeWidget::OnExitSystem() {
//QMessageBox::StandardButton reply;
QMessageBox messaBox(QMessageBox::Question, "询问", "确定关闭系统?", QMessageBox::Yes | QMessageBox::No, this);
// messaBox.setStyleSheet(QString(messageBoxQss));
messaBox.setButtonText(QMessageBox::Yes, "确定");
messaBox.setButtonText(QMessageBox::No, "取消");
//messaBox.setWindowFlags(Qt::FramelessWindowHint | Qt::WindowTitleHint);
int reply = messaBox.exec();// question(this, "询问", "确定关闭系统?", QMessageBox::Yes | QMessageBox::No);
//reply = QMessageBox::question(this, "info", tr(" are you sure to exit system? "),
// QMessageBox::Yes | QMessageBox::No);
if (reply == QMessageBox::Yes) {
QApplication::quit();
}
}
void HomeWidget::OnEnterDetailed() {
MainWindow::Get().PlayAudio();
MainWindow* mainWindow = GetParentWidget();
if (nullptr == mainWindow) {
qDebug() << __FUNCTION__ << "widget is nullptr";
return;
}
QPushButton* pbt = reinterpret_cast<QPushButton*>(sender());
int index = pbt->property("index").toInt();
const QRect& rect = pbt->geometry();
const QPoint center = rect.center() ;
if (nullptr != sequenceFrame_) {
QSize size = sequenceFrame_->geometry().size() / 2;
sequenceFrame_->move(center - QPoint(size.width(), size.height()));
sequenceFrame_->show();
}
QTimer::singleShot(600, [=] {
mainWindow->ShowDetailedTown(static_cast<DetailedType>(index));
}
);
}
void HomeWidget::InitIrreButton(QPushButton* pbt, const QString& url, DetailedType dt) {
QPixmap pix;
pix.load(url);
pbt->setFixedSize(pix.size());
pbt->setMask(pix.mask());
pbt->setProperty("index", static_cast<int>(dt));
}
void HomeWidget::InitSequenceFrame() {
const QString landmarkPath = QApplication::applicationDirPath() + "/sequence/circle";
QStringList pngFileList;
QDir directory(landmarkPath);
if (!directory.exists()) {
qDebug() << "Directory does not exist: " << landmarkPath;
return;
}
QFileInfoList entries = directory.entryInfoList(QStringList() << "*.png", QDir::Files | QDir::NoDotAndDotDot);
for (const QFileInfo& entry : entries) {
QString filePath = entry.absoluteFilePath();
pngFileList.append(filePath);
}
sequenceFrame_ = new SequenceFrame(pngFileList, this);
sequenceFrame_->raise();
sequenceFrame_->setGeometry(0, 0, 460, 460);
sequenceFrame_->hide();
//sequenceFrame_->move(752, 501);
}