void ShareUserGroupWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shares) { QScrollArea *scrollArea = _ui->scrollArea; auto newViewPort = new QWidget(scrollArea); auto layout = new QVBoxLayout(newViewPort); QSize minimumSize = newViewPort->sizeHint(); int x = 0; foreach(const auto &share, shares) { // We don't handle link shares if (share->getShareType() == Share::TypeLink) { continue; } ShareWidget *s = new ShareWidget(share, _isFile, _ui->scrollArea); connect(s, SIGNAL(resizeRequested()), this, SLOT(slotAdjustScrollWidgetSize())); layout->addWidget(s); x++; if (x <= 3) { minimumSize = newViewPort->sizeHint(); } else { minimumSize.rwidth() = qMax(newViewPort->sizeHint().width(), minimumSize.width()); } } minimumSize.rwidth() += layout->spacing(); minimumSize.rheight() += layout->spacing(); scrollArea->setMinimumSize(minimumSize); scrollArea->setVisible(!shares.isEmpty()); scrollArea->setWidget(newViewPort); }
void ShareWidget::slotDeleteAnimationFinished() { resizeRequested(); deleteLater(); // There is a painting bug where a small line of this widget isn't // properly cleared. This explicit repaint() call makes sure any trace of // the share widget is removed once it's destroyed. #4189 connect(this, SIGNAL(destroyed(QObject*)), parentWidget(), SLOT(repaint())); }
void ShareWidget::slotShareDeleted() { QPropertyAnimation *animation = new QPropertyAnimation(this, "maximumHeight", this); animation->setDuration(500); animation->setStartValue(height()); animation->setEndValue(0); connect(animation, SIGNAL(finished()), SLOT(slotDeleteAnimationFinished())); connect(animation, SIGNAL(valueChanged(QVariant)), this, SIGNAL(resizeRequested())); animation->start(); }
//post message to the Qt main loop in order to resize the renderer void Pipeline::resize(int width, int height) { emit resizeRequested(width, height); }