void toggleView(bool show) { if (show && !m_formLayout) resize(-1); m_scrollArea->setVisible(show); m_toggleButton->setText(show ? QPushButton::tr("hide") : QPushButton::tr("show")); }
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, _ui->scrollArea); layout->addWidget(s); x++; if (x <= 3) { minimumSize = newViewPort->sizeHint(); } } minimumSize.rwidth() += layout->spacing(); minimumSize.rheight() += layout->spacing(); scrollArea->setMinimumSize(minimumSize); scrollArea->setVisible(!shares.isEmpty()); scrollArea->setWidget(newViewPort); }
void resize(int nb) { if (nb == -1) nb = list_traits::size(m_value); int prevNb = m_propertyWidgets.size(); if (m_formLayout && nb == prevNb) return; // No need to recreate the same widgets bool visible = m_scrollArea->isVisible(); m_scrollArea->setVisible(false); m_propertyWidgets.clear(); list_traits::resize(m_value, nb); auto scrollAreaWidget = new QWidget; m_formLayout = new QFormLayout; m_formLayout->setContentsMargins(3, 3, 3, 3); auto name = m_property->name(); const auto& metaProperties = m_propertyValue->metaContainer().properties(); for (int i = 0; i < nb; ++i) { auto& value = list_traits::value(m_value, i); auto prop = property::createRefProperty(name, value); auto propValue = prop->value<base_type>(); auto& metaContainer = propValue->metaContainer(); for (auto& metaProp : metaProperties) metaContainer.addExisting(metaProp); std::shared_ptr<BasePropertyWidget> propWidget = m_widgetCreator->create(prop, scrollAreaWidget); propWidget->setParent(m_parent); m_propertyWidgets.push_back(propWidget); m_formLayout->addRow(QString::number(i), propWidget->createWidgets()); } scrollAreaWidget->setLayout(m_formLayout); m_scrollArea->setWidget(scrollAreaWidget); if (visible) m_scrollArea->setVisible(true); }
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); _disableCompleterActivated = false; _ui->shareeLineEdit->setEnabled(true); }