| 464 | } |
| 465 | |
| 466 | void UIStateManager::restoreHeaderState(QHeaderView *header) |
| 467 | { |
| 468 | const QHeaderViewList headers = header ? (QHeaderViewList() << header) : this->headers(); |
| 469 | for (QHeaderView *header : headers) { |
| 470 | if (header->orientation() == Qt::Vertical || !checkWidget(header) || header->count() == 0) |
| 471 | continue; |
| 472 | |
| 473 | const QByteArray state = m_stateSettings->value(widgetStateKey(header)).toByteArray(); |
| 474 | |
| 475 | if (state.isEmpty()) { |
| 476 | const UISizeVector defaultSizes = this->defaultSizes(header); |
| 477 | QAbstractItemView *view = headerView(header); |
| 478 | |
| 479 | if (!defaultSizes.isEmpty()) { |
| 480 | Q_ASSERT(defaultSizes.size() == header->count()); |
| 481 | |
| 482 | QList<int> sizes; |
| 483 | sizes.reserve(defaultSizes.size()); |
| 484 | |
| 485 | int i = 0; |
| 486 | for (auto it = defaultSizes.constBegin(), end = defaultSizes.constEnd(); it != end; |
| 487 | ++it) { |
| 488 | int size = 0; |
| 489 | |
| 490 | switch ((*it).typeId()) { |
| 491 | case QMetaType::Int: // Pixels |
| 492 | size = (*it).toInt(); |
| 493 | break; |
| 494 | |
| 495 | case QMetaType::QString: // Percent |
| 496 | size = percentToInt((*it).toString()); |
| 497 | if (size == -1) { |
| 498 | } else if (header->orientation() == Qt::Horizontal) { |
| 499 | size = view->width() * size / 100; |
| 500 | } else { |
| 501 | size = view->height() * size / 100; |
| 502 | } |
| 503 | break; |
| 504 | |
| 505 | default: |
| 506 | Q_ASSERT(false); |
| 507 | } |
| 508 | |
| 509 | switch (header->sectionResizeMode(i)) { |
| 510 | case QHeaderView::Interactive: |
| 511 | case QHeaderView::Fixed: |
| 512 | header->resizeSection(i, size == -1 ? header->sectionSizeHint(i) : size); |
| 513 | break; |
| 514 | |
| 515 | default: |
| 516 | break; |
| 517 | } |
| 518 | |
| 519 | i++; |
| 520 | } |
| 521 | } |
| 522 | } else { |
| 523 | if (!m_resizing) { |
nothing calls this directly
no test coverage detected