コード例 #1
0
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())));

        }

    });

}
コード例 #2
0
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);
}