AnimalMovesWindow::AnimalMovesWindow(const std::map<QString, std::shared_ptr<db::Database>> & map, db::Database & db, const Animal & animal, QWidget * parent) : QWidget(), ui(new Ui::AnimalMovesWindow), m_parent(parent), m_db(db), m_dbMap(map), m_animal(animal) { ui->setupUi(this); ui->label_Name->setText(m_animal.getName()); QStringList horizontalHeader; horizontalHeader.append("Level"); horizontalHeader.append("Move"); horizontalHeader.append("Type"); horizontalHeader.append("Category"); horizontalHeader.append("Dmg"); horizontalHeader.append("Acc"); horizontalHeader.append("Prio"); m_movesModel.setHorizontalHeaderLabels(horizontalHeader); ComboBoxDelegate * delegate = new ComboBoxDelegate(this); std::vector<QString> vec; for (const auto & move : m_db.getMovesByID()) { vec.emplace_back(move.second.getName()); } delegate->setItems(vec); ui->tableView_Moves->setItemDelegateForColumn(1, delegate); QSortFilterProxyModel * proxyModel = new QSortFilterProxyModel(this); proxyModel->setSourceModel(&m_movesModel); proxyModel->setSortRole(NumericModel::SortRole); ui->tableView_Moves->setModel(proxyModel); ui->tableView_Moves->resizeColumnsToContents(); ui->tableView_Moves->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); // calculate max move name size int size = 20; QFont font; QFontMetrics fm(font); for (const auto & move : m_db.getMoves()) { size = std::max(size, fm.width(move.first)); } ui->tableView_Moves->horizontalHeader()->resizeSection(1, size + 30); // calculate max type name size size = 20; for (const auto & type : m_db.getTypes()) { size = std::max(size, fm.width(type.first)); } ui->tableView_Moves->horizontalHeader()->resizeSection(2, size + 30); // fill moves for (const auto & p : m_animal.moves()) { assert(m_db.getMoves().count(p.second) != 0); const auto move = m_db.getMoves().at(p.second); QList<QStandardItem *> itemList; itemList.append(new QStandardItem(QString::number(p.first))); itemList.append(new QStandardItem(move.getName())); itemList.append(new QStandardItem(move.getType())); itemList.back()->setEditable(false); itemList.append(new QStandardItem(move.getCategory())); itemList.back()->setEditable(false); itemList.append(new QStandardItem(QString::number(move.getBaseDamage()))); itemList.back()->setEditable(false); itemList.append(new QStandardItem(QString::number(move.getAccuracy()))); itemList.back()->setEditable(false); itemList.append(new QStandardItem(QString::number(move.getPriority()))); itemList.back()->setEditable(false); m_movesModel.appendRow(itemList); } connect(&m_movesModel, &QStandardItemModel::itemChanged, [&](QStandardItem * item){ const auto col = item->column(); if (col == 0) { // lvl changed ui->tableView_Moves->sortByColumn(0, Qt::AscendingOrder); } else if (col == 1) { // move changed const auto move = m_db.getMoves().at(item->text()); m_movesModel.setItem(item->row(), 2, new QStandardItem(move.getType())); m_movesModel.setItem(item->row(), 3, new QStandardItem(move.getCategory())); m_movesModel.setItem(item->row(), 4, new QStandardItem(QString::number(move.getBaseDamage()))); m_movesModel.setItem(item->row(), 5, new QStandardItem(QString::number(move.getAccuracy()))); m_movesModel.setItem(item->row(), 6, new QStandardItem(QString::number(move.getPriority()))); } }); }
ShowFuelDeliveriesDialog::ShowFuelDeliveriesDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ShowFuelDeliveriesDialog) { ui->setupUi(this); connect(this, SIGNAL(settingsChanged()), this, SLOT(updateSums())); /* * Configure table 'Fuels' columns */ //A few columns shouldn't be shown ui->tableFuels->hideColumn(Column_Date); ui->tableFuels->hideColumn(Column_UUID); //Fuel ComboBoxDelegate *delegateFuel = new ComboBoxDelegate(this); QVector<QString> fuels; fuels.push_back("Bois déchiqueté"); fuels.push_back("Granulés"); fuels.push_back("Fioul"); fuels.push_back("Propane"); delegateFuel->setItems(fuels); ui->tableFuels->setItemDelegateForColumn(Column_Fuel, delegateFuel); ui->tableFuels->setColumnWidth(Column_Fuel, 150); //Qauntity ui->tableFuels->setColumnWidth(Column_Quantity, 110); //Unit ComboBoxDelegate *delegateUnit = new ComboBoxDelegate(this); QVector<QString> units; units.push_back("kg"); units.push_back("tonnes"); units.push_back("litres"); units.push_back("m³"); units.push_back("MAP"); units.push_back("kWh"); units.push_back("MWh"); delegateUnit->setItems(units); ui->tableFuels->setItemDelegateForColumn(Column_Unit, delegateUnit); ui->tableFuels->setColumnWidth(Column_Unit, 80); //LHV DoubleSpinBoxDelegate *delegateLHV = new DoubleSpinBoxDelegate(this); delegateLHV->setSuffix(" kWh / unité"); delegateLHV->setPrecision(4); ui->tableFuels->setItemDelegateForColumn(Column_LHV, delegateLHV); ui->tableFuels->setColumnWidth(Column_LHV, 140); //Moisture DoubleSpinBoxDelegate *delegateMoisture = new DoubleSpinBoxDelegate(this); delegateMoisture->setSuffix(" %"); delegateMoisture->setMaximum(100); ui->tableFuels->setItemDelegateForColumn(Column_Moisture, delegateMoisture); ui->tableFuels->setColumnWidth(Column_Moisture, 80); //Energy DoubleSpinBoxDelegate *delegateEnergy = new DoubleSpinBoxDelegate(this); delegateEnergy->setSuffix(" MWh"); delegateEnergy->setPrecision(4); ui->tableFuels->setItemDelegateForColumn(Column_Energy, delegateEnergy); ui->tableFuels->setColumnWidth(Column_Energy, 100); //Bill DoubleSpinBoxDelegate *delegateBill = new DoubleSpinBoxDelegate(this); delegateBill->setSuffix(" €"); delegateBill->setPrecision(6); ui->tableFuels->setItemDelegateForColumn(Column_Bill, delegateBill); ui->tableFuels->setColumnWidth(Column_Bill, 110); //Energy Price DoubleSpinBoxDelegate *delegateEnergyPrice = new DoubleSpinBoxDelegate(this); delegateEnergyPrice->setSuffix(" € / MWh"); delegateEnergyPrice->setPrecision(4); ui->tableFuels->setItemDelegateForColumn(Column_EnergyPrice, delegateEnergyPrice); ui->tableFuels->setColumnWidth(Column_EnergyPrice, 110); //Last column allows user to delete records ui->tableFuels->setColumnWidth(Column_Delete, 34); /* * Configure table 'Natural gas' columns */ //Date shouldn't be shown ui->tableWidget_NaturalGas->hideRow(0); //Gas index will be edited by a DoubleSpinBox with extra parameters DoubleSpinBoxDelegate *delegateIndex_NaturalGas = new DoubleSpinBoxDelegate(this); delegateIndex_NaturalGas->setSuffix(" m³"); delegateIndex_NaturalGas->setPrecision(5); ui->tableWidget_NaturalGas->setItemDelegateForRow(1, delegateIndex_NaturalGas); /* * Configure table 'Electricity' columns */ //Date shouldn't be shown ui->tableWidget_Electricity->hideRow(0); //Gas index will be edited by a DoubleSpinBox with extra parameters DoubleSpinBoxDelegate *delegateIndex_Electricity = new DoubleSpinBoxDelegate(this); delegateIndex_Electricity->setSuffix(" kWh"); delegateIndex_Electricity->setPrecision(5); ui->tableWidget_Electricity->setItemDelegateForRow(1, delegateIndex_Electricity); }