/** * @RDE_HEADER@ * CustomView for AES NContamination * $Id$ * $HeadURL$ * $Author$ * Created by Mike Wille, SLSE, 2016-04-08 */ #include "aes_ncontamination.h" #include "ui_aes_ncontamination.h" #include "aes_ncontaminations_model.h" #include namespace AreaEffectSimulation { CustomViewNContamination::CustomViewNContamination(QWidget *parent) : AbstractDisplayWidget(parent) , m_ui(new Ui::CustomViewNContamination) { m_ui->setupUi(this); } CustomViewNContamination::~CustomViewNContamination() { delete m_ui; } bool CustomViewNContamination::init(const QModelIndex &idx) { if (!idx.isValid()) return false; m_ui->lblIdentifier->setText(rowData(idx, AreaEffectSimulation::NContaminationsModel::BcName).toString()); m_ui->lblEffectState->setText(rowData(idx, AreaEffectSimulation::NContaminationsModel::BcEffectState).toString()); m_ui->lblEffectStart->setText(rowData(idx, AreaEffectSimulation::NContaminationsModel::BcEffectStart).toString()); m_ui->lblChargeType->setText(rowData(idx, AreaEffectSimulation::NContaminationsModel::BcChargeType).toString()); m_ui->lblIcon->clear(); m_ui->lblIcon->setAutoFillBackground(true); const AesItemSortFilterProxyModel *sfpm = qobject_cast(idx.model()); if (!sfpm) return false; const NContaminationsModel *aesModel = qobject_cast(sfpm->sourceModel()); if (!aesModel) return false; const auto srcIdx = sfpm->mapToSource(idx); NContamination nContamin = aesModel->getRowData(srcIdx.row()); calculateIcon(nContamin, sfpm->partyColor(idx.row())); QString durationString = rowData(idx, AreaEffectSimulation::NContaminationsModel::BcEffectDuration).toString(); if (!durationString.isEmpty() && durationString != QLatin1String("0")) { m_ui->lblEffectDuration->setText(durationString); } else { m_ui->label_4->hide(); m_ui->lblEffectDuration->hide(); m_ui->label_6->hide(); } return true; } bool CustomViewNContamination::calculateIcon(const NContamination &nContamination, const QColor &color) { Database::AesNContamination nContaOut; nContaOut.borderLengthInner = nContamination.borderLengthInner(); nContaOut.borderLengthOuter = nContamination.borderLengthOuter(); nContaOut.impactPosition = QPointF(nContamination.impactPosition().lon(), nContamination.impactPosition().lat()); nContaOut.impactRadius = nContamination.impactRadius(); nContaOut.rotationAngle = nContamination.rotationAngle(); nContaOut.spanAngle = nContamination.spanAngle(); QPolygonF poly = AreaEffectSimulation::Polygons::nContamination(nContaOut); Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(nContamination.effectStateId()); const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle); m_ui->lblIcon->setPixmap(pix); return true; } } // namespace AreaEffectSimulation