68 lines
1.8 KiB
C++
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);
|
|
});
|
|
|
|
}
|