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

68 lines
1.8 KiB
C++

#include "DetailedBaseWidget.h"
#include <QVariant>
#include <QDebug>
#include <QPainter>
#include <QTimer>
#include "IrregularButton.h"
#include "TownImageWidget.h"
#include "DetailedTown.h"
#include "MainWindow.h"
DetailedBaseWidget::DetailedBaseWidget(DetailedType detailedType, QWidget* parent /*= nullptr*/)
: QWidget(parent)
, m_detailedType(detailedType) {
setAttribute(Qt::WA_StyledBackground, true);
detailedTown_ = dynamic_cast<DetailedTown*>(parent);
}
void DetailedBaseWidget::initButton(QPushButton* btn, bool left) {
const QString text = btn->text();
IrregularButton* irregularBtn = dynamic_cast<IrregularButton*>(btn);
if (nullptr == irregularBtn) {
qDebug() << __FUNCTION__ << "irregularBtn is nullptr";
return;
}
irregularBtn->SetDetailedType(m_detailedType);
irregularBtn->SetBtnName(text.trimmed());
connect(btn, &QPushButton::clicked, this, &DetailedBaseWidget::OnEnterDetailed);
btn->setText("");
QPixmap pix;
if (left) { pix.load(":/res/bg-btn.png"); }
else { pix.load(":/res/bg-btn-1.png"); }
btn->setFixedSize(btn->size());
btn->setMask(pix.mask());
}
void DetailedBaseWidget::OnEnterDetailed() {
IrregularButton* irregularBtn = dynamic_cast<IrregularButton*>(sender());
if (nullptr == irregularBtn) {
qDebug() << __FUNCTION__ << "btn is nullptr";
return;
}
irregularBtn->OnEmitEnter();
if (nullptr != detailedTown_) {
const QString& btnName = irregularBtn->GetBtnName();
MediaInfo* mediaInfo = MainWindow::Get().GetMediaInfo(static_cast<int32_t>(m_detailedType), btnName);
detailedTown_->SetSequencePos(mediaInfo->landmark);
detailedTown_->SetMediaInfo(mediaInfo);
}
QTimer::singleShot(200, [=]() {
const QString& btnName = irregularBtn->GetBtnName();
emit irregularBtn->Leave();
MainWindow::Get().ShowContentWidget(static_cast<int32_t>(m_detailedType), btnName);
});
}