MCPcopy Create free account
hub / github.com/KDAB/GammaRay / restoreSplitterState

Method restoreSplitterState

ui/uistatemanager.cpp:401–453  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

399}
400
401void UIStateManager::restoreSplitterState(QSplitter *splitter)
402{
403 const QSplitterList splitters = splitter ? (QSplitterList() << splitter) : this->splitters();
404 for (QSplitter *splitter : splitters) {
405 if (!checkWidget(splitter))
406 continue;
407
408 const QByteArray state = m_stateSettings->value(widgetStateKey(splitter)).toByteArray();
409
410 if (state.isEmpty()) {
411 const UISizeVector defaultSizes = this->defaultSizes(splitter);
412
413 if (!defaultSizes.isEmpty()) {
414 Q_ASSERT(defaultSizes.size() == splitter->count());
415
416 QList<int> sizes;
417 sizes.reserve(defaultSizes.size());
418
419 for (const QVariant &size : defaultSizes) {
420 switch (size.typeId()) {
421 case QMetaType::Int: // Pixels
422 sizes << size.toInt();
423 break;
424
425 case QMetaType::QString: { // Percent
426 int value = percentToInt(size.toString());
427 if (value == -1)
428 sizes << value;
429 else if (splitter->orientation() == Qt::Horizontal)
430 sizes << splitter->width() * value / 100;
431 else
432 sizes << splitter->height() * value / 100;
433 break;
434 }
435
436 default:
437 Q_ASSERT(false);
438 }
439 }
440
441 distributeSpace(sizes,
442 splitter->orientation() == Qt::Horizontal ? splitter->width() : splitter->height(),
443 splitter->handleWidth());
444 splitter->setSizes(sizes);
445 }
446 } else {
447 if (!m_resizing) {
448 splitter->restoreState(state);
449 splitter->setProperty(WIDGET_CUSTOMIZED, true);
450 }
451 }
452 }
453}
454
455void UIStateManager::saveSplitterState(QSplitter *splitter)
456{

Callers

nothing calls this directly

Calls 10

splittersMethod · 0.95
defaultSizesMethod · 0.95
distributeSpaceFunction · 0.85
reserveMethod · 0.80
valueMethod · 0.45
isEmptyMethod · 0.45
sizeMethod · 0.45
countMethod · 0.45
restoreStateMethod · 0.45
setPropertyMethod · 0.45

Tested by

no test coverage detected