Ejemplo n.º 1
0
void VConfirmDeletionDialog::currentFileChanged(int p_row)
{
    bool succeed = false;
    if (p_row > -1 && m_enablePreview) {
        ConfirmItemWidget *widget = getItemWidget(m_listWidget->item(p_row));
        if (widget) {
            int idx = widget->getIndex();
            Q_ASSERT(idx < m_items.size());
            QPixmap image(m_items[idx].m_path);
            if (!image.isNull()) {
                int width = 512 * VUtils::calculateScaleFactor();
                QSize previewSize(width, width);
                if (image.width() > width || image.height() > width) {
                    m_previewer->setPixmap(image.scaled(previewSize, Qt::KeepAspectRatio));
                } else {
                    m_previewer->setPixmap(image);
                }

                succeed = true;
            }
        }
    }

    m_previewer->setVisible(succeed);
}
Ejemplo n.º 2
0
	void ItemBox::_redrawAllVisible()
	{

		int count = mCountLineVisible * mCountItemInLine + mTopIndex;
		size_t iwid = 0; // индекс виджета
		for (int pos = mTopIndex; pos<count; ++pos, ++iwid) {
			// дальше нет айтемов
			if (pos >= mCountItems) break;

			WidgetPtr widget = getItemWidget(iwid);

			widget->show();
			redrawItem(widget, (size_t)pos);

		}

		// все виджеты еще есть, то их надо бы скрыть
		while (iwid < mVectorItems.size()) {
			mVectorItems[iwid]->hide();
			iwid ++;
		}

		//MYGUI_OUT(mVectorItems.size());

	}
Ejemplo n.º 3
0
QVector<ConfirmItemInfo> VConfirmDeletionDialog::getConfirmedItems() const
{
    QVector<ConfirmItemInfo> confirmedItems;

    for (int i = 0; i < m_listWidget->count(); ++i) {
        ConfirmItemWidget *widget = getItemWidget(m_listWidget->item(i));
        if (widget->isChecked()) {
            confirmedItems.push_back(m_items[widget->getIndex()]);
        }
    }

    return confirmedItems;
}
Ejemplo n.º 4
0
	void ItemBox::_updateAllVisible(bool _redraw)
	{
		int count_visible = 0;
		if (mAlignVert)
		{
			count_visible = (_getClientWidget()->getHeight() / mSizeItem.height) + 2;
		}
		else
		{
			count_visible = (_getClientWidget()->getWidth() / mSizeItem.width) + 2;
		}

		size_t start = (mFirstVisibleIndex * mCountItemInLine);
		size_t count = (count_visible * mCountItemInLine) + start;

		size_t index = 0;
		for (size_t pos = start; pos < count; ++pos, ++index)
		{
			// дальше нет айтемов
			if (pos >= mItemsInfo.size()) break;

			Widget* item = getItemWidget(index);
			if (mAlignVert)
			{
				item->setPosition(((int)index % mCountItemInLine) * mSizeItem.width - mContentPosition.left,
					(((int)index / mCountItemInLine) * mSizeItem.height)  - mFirstOffsetIndex);
			}
			else
			{
				item->setPosition((((int)index / mCountItemInLine) * mSizeItem.width)  - mFirstOffsetIndex,
					((int)index % mCountItemInLine) * mSizeItem.height - mContentPosition.top);
			}

			item->setSize(mSizeItem);
			item->setVisible(true);

			if (_redraw)
			{
				IBDrawItemInfo data(pos, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, true, false);
				requestDrawItem(this, item, data);
			}

		}

		// все виджеты еще есть, то их надо бы скрыть
		while (index < mVectorItems.size())
		{
			mVectorItems[index]->setVisible(false);
			index ++;
		}
	}
Ejemplo n.º 5
0
void VConfirmDeletionDialog::updateCountLabel()
{
    int total = m_listWidget->count();
    int checked = 0;

    for (int i = 0; i < total; ++i) {
        ConfirmItemWidget *widget = getItemWidget(m_listWidget->item(i));
        if (widget->isChecked()) {
            ++checked;
        }
    }

    m_countLabel->setText(tr("%1/%2 Items").arg(checked).arg(total));
}
Ejemplo n.º 6
0
void VConfirmDeletionDialog::setupUI(const QString &p_title,
                                     const QString &p_text,
                                     const QString &p_info)
{
    QLabel *textLabel = NULL;
    if (!p_text.isEmpty()) {
        textLabel = new QLabel(p_text);
        textLabel->setWordWrap(true);
    }

    QLabel *infoLabel = NULL;
    if (!p_info.isEmpty()) {
        infoLabel = new QLabel(p_info);
        infoLabel->setWordWrap(true);
    }

    m_countLabel = new QLabel("Items");
    QHBoxLayout *labelLayout = new QHBoxLayout;
    labelLayout->addWidget(m_countLabel);
    labelLayout->addStretch();
    labelLayout->setContentsMargins(0, 0, 0, 0);

    m_listWidget = new QListWidget();
    m_listWidget->setAttribute(Qt::WA_MacShowFocusRect, false);
    connect(m_listWidget, &QListWidget::currentRowChanged,
            this, &VConfirmDeletionDialog::currentFileChanged);
    connect(m_listWidget, &QListWidget::itemActivated,
            this, [this](QListWidgetItem *p_item) {
                // Open it using resource manager.
                if (!p_item) {
                    return;
                }

                ConfirmItemWidget *widget = getItemWidget(p_item);
                Q_ASSERT(widget);
                QString filePath = m_items[widget->getIndex()].m_path;

                if (!filePath.isEmpty()) {
                    QUrl url = QUrl::fromLocalFile(filePath);
                    QDesktopServices::openUrl(url);
                }
            });

    m_previewer = new QLabel();

    m_askAgainCB = new QCheckBox(tr("Do not ask for confirmation again"));
    m_askAgainCB->setChecked(!m_askAgainEnabled);
    m_askAgainCB->setVisible(m_enableAskAgain);

    // Ok is the default button.
    m_btnBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
    connect(m_btnBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(m_btnBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
    m_btnBox->button(QDialogButtonBox::Ok)->setProperty("DangerBtn", true);

    QHBoxLayout *midLayout = new QHBoxLayout;
    midLayout->addWidget(m_listWidget);
    if (m_enablePreview) {
        midLayout->addStretch();
        midLayout->addWidget(m_previewer);
        midLayout->addStretch();
    } else {
        midLayout->addWidget(m_previewer);
        m_previewer->setVisible(false);
    }

    QVBoxLayout *mainLayout = new QVBoxLayout;
    if (textLabel) {
        mainLayout->addWidget(textLabel);
    }

    if (infoLabel) {
        mainLayout->addWidget(infoLabel);
    }

    mainLayout->addWidget(m_askAgainCB);
    mainLayout->addWidget(m_btnBox);
    mainLayout->addLayout(labelLayout);
    mainLayout->addLayout(midLayout);

    setLayout(mainLayout);
    setWindowTitle(p_title);
}
Ejemplo n.º 7
0
	void ListCtrl::_updateAllVisible(size_t _index, bool _needUpdateContetntSize, bool _update)
	{

		bool change = false;

		int top = 0;
		size_t widget_index = 0;

		for (size_t index = 0; index < mItemsInfo.size(); ++index)
		{
			ItemDataInfo& info = mItemsInfo[index];

			// айтем сверху не виден
			if ((top + info.size.height) < (mContentPosition.top))
			{
			}
			// айтем снизу и не виден
			else if (top > ((mContentPosition.top) + _getClientWidget()->getHeight()))
			{
			}
			// айтем встрял в видимость
			else
			{
				Widget* item = getItemWidget(widget_index);
				widget_index++;

				if (index == _index || ITEM_NONE == _index)
				{
					item->_setInternalData((size_t)index);

					item->setPosition(-mContentPosition.left, top - (mContentPosition.top));
					item->setVisible(true);

					IBDrawItemInfo data(index, mIndexSelect, mIndexActive, mIndexAccept, mIndexRefuse, _update, false);

					IntCoord coord(IntPoint(), info.size);
					requestDrawItem(this, item, data, coord);

					if (info.size != coord.size())
						change = true;

					info.size = coord.size();
					item->setSize(mClient->getWidth()/*mContentSize.width*/, info.size.height);
				}

			}

			top += info.size.height;
		}

		// если виджеты еще есть, то их надо скрыть
		while (widget_index < mVectorItems.size())
		{
			Widget* item = mVectorItems[widget_index];
			widget_index ++;

			item->setVisible(false);
			item->_setInternalData((size_t)ITEM_NONE);
		}

		if (change && _needUpdateContetntSize)
		{
			updateMetrics();

			updateScrollSize();
			updateScrollPosition();
		}
	}