QStandardItem *EquipmentColumn::build_cell(Dwarf *d){ QStandardItem *item = init_cell(d); QColor rating_color = QColor(69,148,21); float rating = d->get_uniform_rating(); float coverage = d->get_coverage_rating(); if(coverage < 100){ //prioritize coverage rating = coverage; rating_color = Item::color_uncovered(); }else{ if(rating < 100) //missing uniform items rating_color = Item::color_missing(); } float sort_val = rating - d->get_inventory_wear(); item->setData(d->get_inventory_wear(),DwarfModel::DR_SPECIAL_FLAG); item->setBackground(QBrush(rating_color)); item->setData(CT_EQUIPMENT, DwarfModel::DR_COL_TYPE); item->setData(rating, DwarfModel::DR_RATING); //other drawing 0-100 item->setData(sort_val, DwarfModel::DR_SORT_VALUE); set_export_role(DwarfModel::DR_RATING); QString tooltip = QString("<center><h3>%1</h3></center>%2%3") .arg(m_title) .arg(build_tooltip_desc(d)) .arg(tooltip_name_footer(d)); item->setToolTip(tooltip); return item; }
QStandardItem *TraitColumn::build_cell(Dwarf *d) { QStandardItem *item = init_cell(d); item->setData(CT_TRAIT, DwarfModel::DR_COL_TYPE); item->setData(0, DwarfModel::DR_SPECIAL_FLAG); //default, special flag stores the alpha for the border short raw_value = d->trait(m_trait_id); short rating = raw_value; QStringList infos; if (m_trait){ infos << m_trait->level_message(raw_value).append(m_trait->belief_conficts_msgs(raw_value,d->trait_conflicts(m_trait_id))); }else{ infos << tr("Unknown trait"); } if(raw_value < 0){ infos << tr("This unit doesn't have this trait!"); } if (d->trait_is_active(m_trait_id)==false) infos << tr("Not an active trait for this dwarf."); int conflicting_belief_count = 0; if (m_trait){ infos << m_trait->skill_conflicts_msgs(raw_value); infos << m_trait->special_messages(raw_value); conflicting_belief_count = m_trait->get_conflicting_beliefs().count(); if(conflicting_belief_count > 0){ infos << tr("<br/>This trait can conflict with %1").arg(m_trait->belief_conflicts_names()); } if(m_trait->valued_inversely()){ infos << Trait::inverted_message; if(raw_value != -1) rating = 100 - raw_value; } } infos.removeAll(""); if(d->trait_is_conflicted(m_trait_id) && conflicting_belief_count > 0){ int alpha = 255 * ((float)d->trait_conflicts(m_trait_id).count() / (float)conflicting_belief_count); item->setData(alpha, DwarfModel::DR_SPECIAL_FLAG); } item->setText(QString::number(raw_value)); item->setData(rating, DwarfModel::DR_SORT_VALUE); item->setData(rating, DwarfModel::DR_RATING); item->setData(rating, DwarfModel::DR_DISPLAY_RATING); item->setData(raw_value, DwarfModel::DR_EXPORT); set_export_role(DwarfModel::DR_EXPORT); QString tooltip = QString("<center><h3>%1</h3> %2</center><br/>%3<br/>%4") .arg(m_title) .arg(tr("<b>Raw Value: %1</b>").arg(raw_value)) .arg(infos.join("<br/>")) .arg(tooltip_name_footer(d)); item->setToolTip(tooltip); return item; }
QStandardItem *TrainedColumn::build_cell(Dwarf *d){ QStandardItem *item = init_cell(d); QString desc = get_animal_trained_descriptor(d->trained_level()); float rating = (float)d->trained_level(); float sort_val = rating; QString draw_rating = QString::number(rating); QChar sym_master(0x263C); //masterwork symbol in df QChar sym_exceptional(0x2261); //3 horizontal lines QFontMetrics fm(DT->user_settings()->value("options/grid/font", QFont(DefaultFonts::getRowFontName(), DefaultFonts::getRowFontSize())).value<QFont>()); bool symbols_ok = false; if(fm.inFont(sym_master) && fm.inFont(sym_exceptional)){ symbols_ok = true; } if(rating == 7){ //tame rating = 50.0f; //don't draw tame animals, this has to be within the uberdelegate's ignore range sort_val = -1; draw_rating = tr(""); }else if(rating >= 1 && rating <= 6){ //trained levels if(symbols_ok){ if(rating == 1) draw_rating = tr("T"); else if(rating == 2) draw_rating = tr("-"); else if(rating == 3) draw_rating = tr("+"); else if(rating == 4) draw_rating = tr("*"); else if(rating == 5) draw_rating = sym_exceptional; else if(rating == 6) draw_rating = sym_master; } rating = (rating / 6.0f * 100.0f / 2.0f) + 50.0f; //scale from 50 to 100 }else if(rating == 0){ //semi-wild (medium red square) rating = 30.0f; draw_rating = tr("Sw"); }else{ //wild, unknown (large red square) rating = 5.0f; sort_val = -2; draw_rating = tr("W"); } // item->setBackground(QBrush(QColor(225,225,225))); item->setData(CT_TRAINED, DwarfModel::DR_COL_TYPE); item->setData(draw_rating, DwarfModel::DR_DISPLAY_RATING); //numeric drawing, single digits item->setData(rating, DwarfModel::DR_RATING); //other drawing 0-100 item->setData(sort_val, DwarfModel::DR_SORT_VALUE); set_export_role(DwarfModel::DR_RATING); QString tooltip = QString("<center><h3>%1</h3></center>%2") .arg(desc) .arg(tooltip_name_footer(d)); item->setToolTip(tooltip); return item; }