QtViewportInteractionEngine::QtViewportInteractionEngine(QQuickWebView* viewport, QQuickWebPage* content) : m_viewport(viewport) , m_content(content) , m_suspendCount(0) , m_hasSuspendedContent(false) , m_hadUserInteraction(false) , m_scaleAnimation(new ScaleAnimation(this)) , m_pinchStartScale(-1) { reset(); connect(m_content, SIGNAL(widthChanged()), SLOT(itemSizeChanged()), Qt::DirectConnection); connect(m_content, SIGNAL(heightChanged()), SLOT(itemSizeChanged()), Qt::DirectConnection); connect(m_viewport, SIGNAL(movementStarted()), SLOT(flickableMoveStarted()), Qt::DirectConnection); connect(m_viewport, SIGNAL(movementEnded()), SLOT(flickableMoveEnded()), Qt::DirectConnection); connect(m_scaleAnimation, SIGNAL(valueChanged(QVariant)), SLOT(scaleAnimationValueChanged(QVariant)), Qt::DirectConnection); connect(m_scaleAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), SLOT(scaleAnimationStateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), Qt::DirectConnection); }
void DataSetView::calculateCellSizes() { _cellSizes.clear(); _dataColsMaxWidth.clear(); for(auto col : _cellTextItems) { for(auto row : col.second) storeTextItem(row.first, col.first, false); col.second.clear(); } _cellSizes.resize(_model->columnCount()); _colXPositions.resize(_model->columnCount()); _cellTextItems.clear(); for(int col=0; col<_model->columnCount(); col++) { QString text = _model->headerData(col, Qt::Orientation::Horizontal, _roleNameToRole["maxColString"]).toString(); QSizeF calcedSize = _metricsFont.size(Qt::TextSingleLine, text); _cellSizes[col] = calcedSize; } _dataColsMaxWidth.resize(_model->columnCount()); for(int col=0; col<_model->columnCount(); col++) _dataColsMaxWidth[col] = _cellSizes[col].width() + _itemHorizontalPadding * 2; _dataRowsMaxHeight = _model->columnCount() == 0 ? 0 : _cellSizes[0].height() + _itemVerticalPadding * 2; float w=_rowNumberMaxWidth; for(int col=0; col<_model->columnCount(); col++) w += _dataColsMaxWidth[col]; float x = _rowNumberMaxWidth; for(int col=0; col<_model->columnCount(); col++) { _colXPositions[col] = x; x += _dataColsMaxWidth[col]; } setWidth(w); setHeight( _dataRowsMaxHeight * _model->rowCount()); _recalculateCellSizes = false; emit itemSizeChanged(); }
QtViewportInteractionEngine::QtViewportInteractionEngine(const QQuickWebView* viewport, QQuickWebPage* content) : m_viewport(viewport) , m_content(content) , m_suspendCount(0) , m_scaleAnimation(new ScaleAnimation(this)) , m_pinchStartScale(-1) { reset(); QScrollerProperties properties = scroller()->scrollerProperties(); // The QtPanGestureRecognizer is responsible for recognizing the gesture // thus we need to disable the drag start distance. properties.setScrollMetric(QScrollerProperties::DragStartDistance, 0.0); // Set some default QScroller constrains to mimic the physics engine of the N9 browser. properties.setScrollMetric(QScrollerProperties::AxisLockThreshold, 0.66); properties.setScrollMetric(QScrollerProperties::ScrollingCurve, QEasingCurve(QEasingCurve::OutExpo)); properties.setScrollMetric(QScrollerProperties::DecelerationFactor, 0.05); properties.setScrollMetric(QScrollerProperties::MaximumVelocity, 0.635); properties.setScrollMetric(QScrollerProperties::OvershootDragResistanceFactor, 0.33); properties.setScrollMetric(QScrollerProperties::OvershootScrollDistanceFactor, 0.33); scroller()->setScrollerProperties(properties); connect(m_content, SIGNAL(widthChanged()), this, SLOT(itemSizeChanged()), Qt::DirectConnection); connect(m_content, SIGNAL(heightChanged()), this, SLOT(itemSizeChanged()), Qt::DirectConnection); connect(m_scaleAnimation, SIGNAL(valueChanged(QVariant)), SLOT(scaleAnimationValueChanged(QVariant)), Qt::DirectConnection); connect(m_scaleAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), SLOT(scaleAnimationStateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), Qt::DirectConnection); connect(scroller(), SIGNAL(stateChanged(QScroller::State)), SLOT(scrollStateChanged(QScroller::State)), Qt::DirectConnection); }
void KasBar::setItemExtent( int size ) { if ( size == itemExtent_ ) return; itemExtent_ = size; if ( size < MEDIUM_EXTENT ) itemSize_ = Small; else if ( size < LARGE_EXTENT ) itemSize_ = Medium; else if ( size < HUGE_EXTENT ) itemSize_ = Large; else if ( size < ENORMOUS_EXTENT ) itemSize_ = Huge; else itemSize_ = Enormous; emit itemSizeChanged( itemSize_ ); emit configChanged(); updateLayout(); }