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);
	}
Example #4
0
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);
}