! * When a spreadsheet is being modified, show the first valid value * in the first selected column as the value to add/subtract. */
| 291 | * in the first selected column as the value to add/subtract. |
| 292 | */ |
| 293 | void AddSubtractValueDialog::initValuesSpreadsheet() { |
| 294 | const auto* column = m_columns.first(); |
| 295 | |
| 296 | switch (column->columnMode()) { |
| 297 | case AbstractColumn::ColumnMode::Integer: { |
| 298 | m_numeric = true; |
| 299 | const auto str = QLocale().toString(column->integerAt(0)); |
| 300 | ui.leValue->setValidator(new QIntValidator(ui.leValue)); |
| 301 | ui.leValue->setText(str); |
| 302 | ui.leValueStart->setValidator(new QIntValidator(ui.leValueStart)); |
| 303 | ui.leValueStart->setText(str); |
| 304 | ui.leValueEnd->setValidator(new QIntValidator(ui.leValueEnd)); |
| 305 | ui.leValueEnd->setText(str); |
| 306 | break; |
| 307 | } |
| 308 | case AbstractColumn::ColumnMode::BigInt: { |
| 309 | m_numeric = true; |
| 310 | const auto str = QLocale().toString(column->bigIntAt(0)); |
| 311 | // TODO: QLongLongValidator |
| 312 | ui.leValue->setValidator(new QIntValidator(ui.leValue)); |
| 313 | ui.leValue->setText(str); |
| 314 | ui.leValueStart->setValidator(new QIntValidator(ui.leValueStart)); |
| 315 | ui.leValueStart->setText(str); |
| 316 | ui.leValueEnd->setValidator(new QIntValidator(ui.leValueEnd)); |
| 317 | ui.leValueEnd->setText(str); |
| 318 | break; |
| 319 | } |
| 320 | case AbstractColumn::ColumnMode::Double: { |
| 321 | m_numeric = true; |
| 322 | ui.leValue->setValidator(new QDoubleValidator(ui.leValue)); |
| 323 | ui.leValueStart->setValidator(new QDoubleValidator(ui.leValueStart)); |
| 324 | ui.leValueEnd->setValidator(new QDoubleValidator(ui.leValueEnd)); |
| 325 | |
| 326 | for (int row = 0; row < column->rowCount(); ++row) { |
| 327 | const double value = column->valueAt(row); |
| 328 | if (std::isfinite(value)) { |
| 329 | const auto str = QLocale().toString(column->valueAt(row), 'g', 16); |
| 330 | ui.leValue->setText(str); |
| 331 | ui.leValueStart->setText(str); |
| 332 | ui.leValueEnd->setText(str); |
| 333 | break; |
| 334 | } |
| 335 | } |
| 336 | break; |
| 337 | } |
| 338 | case AbstractColumn::ColumnMode::Month: |
| 339 | case AbstractColumn::ColumnMode::Day: |
| 340 | case AbstractColumn::ColumnMode::DateTime: { |
| 341 | m_numeric = false; |
| 342 | auto* filter = static_cast<DateTime2StringFilter*>(column->outputFilter()); |
| 343 | ui.dteTimeValueStart->setDisplayFormat(filter->format()); |
| 344 | ui.dteTimeValueEnd->setDisplayFormat(filter->format()); |
| 345 | |
| 346 | for (int row = 0; row < column->rowCount(); ++row) { |
| 347 | const QDateTime& value = column->dateTimeAt(row); |
| 348 | if (value.isValid()) { |
| 349 | ui.dteTimeValueStart->setDateTime(value); |
| 350 | ui.dteTimeValueEnd->setDateTime(value); |
nothing calls this directly
no test coverage detected