138 lines
4.4 KiB
C++
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);
|
|
|
|
}
|