void tst_QMimeData::setText() const
{
    QMimeData mimeData;

    // verify initial state
    QCOMPARE(mimeData.text(), QLatin1String(""));
    QVERIFY(mimeData.hasText() == false);

    // set, verify
    mimeData.setText("pirates");
    QVERIFY(mimeData.hasText());
    QCOMPARE(mimeData.text(), QLatin1String("pirates"));
    QCOMPARE(mimeData.text().toLatin1(), mimeData.data("text/plain"));

    // reset, verify
    mimeData.setText("ninjas");
    QVERIFY(mimeData.hasText());
    QCOMPARE(mimeData.text(), QLatin1String("ninjas"));
    QCOMPARE(mimeData.text().toLatin1(), mimeData.data("text/plain"));

    // clear, verify
    mimeData.clear();
    QCOMPARE(mimeData.text(), QLatin1String(""));
    QVERIFY(mimeData.hasText() == false);
}
void tst_QMimeData::data() const
{
    QMimeData mimeData;

    // set text, verify
    mimeData.setData("text/plain", "pirates");
    QCOMPARE(mimeData.data("text/plain"), QByteArray("pirates"));
    QVERIFY(mimeData.data("text/html").length() == 0);

    // html time
    mimeData.setData("text/html", "ninjas");
    QCOMPARE(mimeData.data("text/html"), QByteArray("ninjas"));
    QCOMPARE(mimeData.data("text/plain"), QByteArray("pirates")); // make sure text not damaged
    QCOMPARE(mimeData.data("text/html"), mimeData.html().toLatin1());
}
示例#3
0
bool ResourceMimeData::containsRelevantData( const QMimeData& data, const SerializableReflectionType& acceptedBaseType )
{
   QByteArray encodedData = data.data( "TamyEditor/ResourceMimeData" );
   QDataStream stream( &encodedData, QIODevice::ReadOnly );

   // check if the stream carries any data of interest to us
   if ( stream.atEnd() )
   {
      return false;
   }

   // check if the stream contains an object of a class that derives from the one set for this encoder
   uint typeId;
   stream >> typeId;

   ReflectionTypesRegistry& typesRegistry = TSingleton< ReflectionTypesRegistry >::getInstance();
   SerializableReflectionType* matchingType = typesRegistry.findSerializable( typeId );
   if ( !matchingType )
   {
      // this type wasn't defined in the registry - the stream must be corrupt
      return false;
   }

   bool typeMatches = matchingType->isA( acceptedBaseType );
   return typeMatches;
}
示例#4
0
void ResourceMimeData::load( Resource*& outResourcePtr, const QMimeData& data )
{
   QByteArray encodedData = data.data( "TamyEditor/ResourceMimeData" );
   QDataStream stream( &encodedData, QIODevice::ReadOnly );

   uint typeId, ptr;
   stream >> typeId;
   stream >> ptr;
   outResourcePtr = (Resource*)ptr;
}
/*
 * This function is called when a standalone MimeData instance is passed as parameter to push()
 */
QMimeData *QQuickMimeData::toMimeData()
{
    QMimeData *ret = m_mimeData;
    if (!m_refData) {
        m_mimeData = new QMimeData;
        // copy data so we keep the properties as they were
        Q_FOREACH(const QString &format, ret->formats()) {
            m_mimeData->setData(format, ret->data(format));
        }
        // set teh color separately
        m_mimeData->setColorData(ret->colorData());
    }
示例#6
0
文件: common.cpp 项目: DINKIN/CopyQ
QByteArray getUtf8Data(const QMimeData &data, const QString &format)
{
    if (format == mimeText || format == mimeHtml)
        return dataToText( data.data(format), format ).toUtf8();

    if (format == mimeUriList) {
        QByteArray bytes;
        foreach ( const QUrl &url, data.urls() ) {
            if ( !bytes.isEmpty() )
                bytes += '\n';
            bytes += url.toString().toUtf8();
        }
        return bytes;
    }
示例#7
0
QMimeData* WGMergeProxy::mimeData(const QModelIndexList &indexes) const
{
	QMimeData* data = new QMimeData();

	for(const auto& index : indexes)
	{
		auto pair = mappingFromIndex(index);
		if(pair.first)
		{
			QMimeData* mimeData = pair.first->model_->mimeData({index});
			for (auto& format : mimeData->formats())
			{
				data->setData(format, mimeData->data(format));
			}
		}
	}

	return data;
}
void DataDeviceManager::overrideSelection(const QMimeData &mimeData)
{
    QStringList formats = mimeData.formats();
    if (formats.isEmpty())
        return;

    m_retainedData.clear();
    foreach (const QString &format, formats)
        m_retainedData.setData(format, mimeData.data(format));

    m_compositor->feedRetainedSelectionData(&m_retainedData);

    m_compositorOwnsSelection = true;

    InputDevice *dev = m_compositor->defaultInputDevice();
    Surface *focusSurface = dev->keyboardFocus();
    if (focusSurface)
        offerFromCompositorToClient(
                    dev->dataDevice(focusSurface->base()->resource.client)->dataDeviceResource());
}
void DataDeviceManager::overrideSelection(const QMimeData &mimeData)
{
    QStringList formats = mimeData.formats();
    if (formats.isEmpty())
        return;

    m_retainedData.clear();
    foreach (const QString &format, formats)
        m_retainedData.setData(format, mimeData.data(format));

    QWaylandCompositorPrivate::get(m_compositor)->feedRetainedSelectionData(&m_retainedData);

    m_compositorOwnsSelection = true;

    QWaylandSeat *dev = m_compositor->defaultSeat();
    QWaylandSurface *focusSurface = dev->keyboardFocus();
    if (focusSurface)
        offerFromCompositorToClient(
                    QWaylandSeatPrivate::get(dev)->dataDevice()->resourceMap().value(focusSurface->waylandClient())->handle);
}
示例#10
0
void ColumnNameView::mousePressEvent(QMouseEvent *press)
{
	QModelIndex atClick = indexAt(press->pos());
	if (!atClick.isValid())
		return;

	QRect indexRect = visualRect(atClick);
	QPixmap pix(indexRect.width(), indexRect.height());
	pix.fill(QColor(0,0,0,0));
	render(&pix, QPoint(0, 0),QRegion(indexRect));

	QDrag *drag = new QDrag(this);
	QMimeData *mimeData = new QMimeData;
	mimeData->setData(subsurface_mimedata, atClick.data().toByteArray());
	model()->removeRow(atClick.row());
	drag->setPixmap(pix);
	drag->setMimeData(mimeData);
	if (drag->exec() == Qt::IgnoreAction){
		model()->insertRow(model()->rowCount());
		QModelIndex idx = model()->index(model()->rowCount()-1, 0);
		model()->setData(idx, mimeData->data(subsurface_mimedata));
	}
}
void PlayListW::mousePressEvent(QMouseEvent *event) {
	QListWidget::mousePressEvent(event);

	if ( event->button() == Qt::LeftButton ) {
		QListWidgetItem *item = currentItem();

		QDrag *drag = new QDrag(this);
		QMimeData *mimeData = new QMimeData();

		//Playlist Id, convoluted? indeed
		QByteArray playlistba;
		playlistba.append(item->text());

		mimeData->setText(item->text());
		mimeData->setData("application/playlist-id", playlistba);
		drag->setMimeData(mimeData);

		qDebug() << "Start Playlist Drag: " << mimeData->text() 
			 << " " << mimeData->data("application/playlist-id").toInt();

		Qt::DropAction dropAction = drag->start(Qt::CopyAction); // [WTF]
	}
}
示例#12
0
 void PasteData(const QMimeData& data)
 {
   if (data.hasUrls())
   {
     const QList<QUrl>& urls = data.urls();
     QStringList files;
     std::for_each(urls.begin(), urls.end(),
       boost::bind(&QStringList::push_back, &files,
         boost::bind(&QUrl::toLocalFile, _1)));
     AddItems(files);
   }
   else if (data.hasFormat(ITEMS_MIMETYPE))
   {
     const QByteArray& encodedData = data.data(ITEMS_MIMETYPE);
     QStringList items;
     {
       QDataStream stream(encodedData);
       stream >> items;
     }
     //pasting is done immediately, so update UI right here
     const Playlist::Scanner::Ptr scanner = Controller->GetScanner();
     scanner->PasteItems(items);
   }
   else if (data.hasText())