コード例 #1
0
ファイル: datamediawidget.cpp プロジェクト: Nikoli/vacuum-im
bool DataMediaWidget::updateWidget(const IDataMediaURI &AUri, const QByteArray &AData)
{
    bool success = false;
    if (AUri.type == MEDIAELEM_TYPE_IMAGE)
    {
        QBuffer *buffer = new QBuffer(this);
        buffer->setData(AData);
        buffer->open(QIODevice::ReadOnly);

        QImageReader reader(buffer);
        if (reader.supportsAnimation())
        {
            QMovie *movie = new QMovie(buffer,reader.format(),this);
            if (movie->isValid())
            {
                success = true;
                setMovie(movie);
                movie->start();
            }
            else
            {
                delete movie;
            }
        }
        else
        {
            QPixmap pixmap;
            pixmap.loadFromData(AData,reader.format());
            if (!pixmap.isNull())
            {
                success = true;
                setPixmap(pixmap);
            }
        }
        if (success)
        {
            setFrameShape(QLabel::NoFrame);
            setFrameShadow(QLabel::Plain);
            disconnect(FDataForms->instance());
            emit mediaShown();
        }
        else
        {
            delete buffer;
        }
    }
    return success;
}
コード例 #2
0
DataFormWidget::DataFormWidget(IDataForms *ADataForms, const IDataForm &AForm, QWidget *AParent) : QWidget(AParent)
{
	FForm = AForm;
	FTableWidget = NULL;
	FDataForms = ADataForms;

	QVBoxLayout *formLayout = new QVBoxLayout(this);
	formLayout->setMargin(0);

	foreach(const QString &text, FForm.instructions)
	{
		QLabel *label = new QLabel(this);
		label->setText(text);
		label->setWordWrap(true);
		label->setTextFormat(Qt::PlainText);
		label->setAlignment(Qt::AlignCenter);
		formLayout->addWidget(label);
	}

	if (!FForm.fields.isEmpty() || !FForm.table.columns.isEmpty())
	{
		foreach(const IDataField &field, FForm.fields)
		{
			IDataFieldWidget *fwidget = FDataForms->fieldWidget(field,!FForm.type.isEmpty() && FForm.type!=DATAFORM_TYPE_FORM,this);
			fwidget->instance()->setVisible(false);
			if (fwidget->mediaWidget() != NULL)
			{
				IDataMediaWidget *mwidget = fwidget->mediaWidget();
				connect(mwidget->instance(),SIGNAL(mediaShown()),SLOT(onFieldMediaShown()));
				connect(mwidget->instance(),SIGNAL(mediaError(const XmppError &)),SLOT(onFieldMediaError(const XmppError &)));
			}
			connect(fwidget->instance(),SIGNAL(changed()),SLOT(onFieldChanged()));
			connect(fwidget->instance(),SIGNAL(focusIn(Qt::FocusReason)),SLOT(onFieldFocusIn(Qt::FocusReason)));
			connect(fwidget->instance(),SIGNAL(focusOut(Qt::FocusReason)),SLOT(onFieldFocusOut(Qt::FocusReason)));
			FFieldWidgets.append(fwidget);
		}