Пример #1
0
// -------------------------------------------------------------------------------
QMimeData* CCollectionModel::mimeData( const QModelIndexList& indexes ) const
// -------------------------------------------------------------------------------
{
   //std::cout<<"CCollectionModel::mimeData()"<<std::endl;
   
   Q_ASSERT( NULLPTR != mpCollection );
   if ( !mpCollection )
      return NULLPTR;


   if ( indexes.isEmpty() )
      return NULLPTR;

   QModelIndex firstIndex = indexes.first();
   if ( !firstIndex.isValid() )
      return NULLPTR;

   CTreeInformationElement* pTIE = mapIndexToIE( firstIndex );
   if ( !pTIE )
      return NULLPTR;


   QByteArray encodedData;
   encodedData.append( mpCollection->toXML( pTIE ).toUtf8() );
   debugTrace( "[CCollectionModel::mimeData] encodedData = '" + encodedData + "'" );
   //std::cout<<"[DragContent]"<<QString(encodedData).toStdString()<<"[/DragContent]"<<std::endl;


   // TODO: Check whether the encoding for umlauts, accents, etc. is correct.
   //       If not it might be accomplished like this:
   //QTextStream t( &encodedData, QIODevice::WriteOnly );
   //t.setCodec( "UTF-8" );
   //t << mpCollection->toXML( pTIE );

   QMimeData* pMimeData = new QMimeData();
   pMimeData->setData( TUXCARDS_DRAGDROP_TYPE, encodedData );
   
   return pMimeData;
}
Пример #2
0
void SeList::mouseMoveEvent(QMouseEvent* e)
{
	if ((Mpressed) && ((Mpos - e->pos()).manhattanLength() > 4))
	{
		Mpressed = false;
		QListWidgetItem *item = itemAt(Mpos);
		if (!item)
			return;
		QMimeData *mimeData = new QMimeData;
		QString pageName = item->data(Qt::UserRole).toString();
		mimeData->setData("page/magic", "1" + pageName.toLocal8Bit());
		mimeData->setText("1" + pageName);
		QDrag *dr = new QDrag(this);
		dr->setMimeData(mimeData);
		const QPixmap& pm = IconManager::instance()->loadPixmap("doc.png");
		dr->setPixmap(pm);
	//	dr->setDragCursor(pm, Qt::CopyAction);
	//	dr->setDragCursor(pm, Qt::MoveAction);
		dr->exec(Qt::CopyAction | Qt::MoveAction);
		QApplication::setOverrideCursor(Qt::ArrowCursor);
	}
}
Пример #3
0
QVariantMap cloneData(const QMimeData &data)
{
    QStringList formats;

    for ( const auto &mime : data.formats() ) {
        // ignore uppercase mimetypes (e.g. UTF8_STRING, TARGETS, TIMESTAMP)
        // and internal type to check clipboard owner
        if ( !mime.isEmpty() && mime[0].isLower() )
            formats.append(mime);
    }

    return cloneData(data, formats);
}
Пример #4
0
//virtual
QMimeData * EffectsListWidget::mimeData(const QList<QTreeWidgetItem *> list) const
{
    QDomDocument doc;
    bool transitionMode = false;
    foreach(QTreeWidgetItem *item, list) {
        if (item->flags() & Qt::ItemIsDragEnabled) {
            int type = item->data(0, TypeRole).toInt();
            if (type == EffectsList::TRANSITION_TYPE) {
                transitionMode = true;
            }
            QStringList info = item->data(0, IdRole).toStringList();
            const QDomElement e = itemEffect(type, info);
            if (!e.isNull())
                doc.appendChild(doc.importNode(e, true));
        }
    }
    QMimeData *mime = new QMimeData;
    QByteArray data;
    data.append(doc.toString().toUtf8());
    mime->setData(transitionMode ? "kdenlive/transitionslist" : "kdenlive/effectslist", data);
    return mime;
}
QMimeData *TableModelAnovaWithinSubjectCells::mimeData(const QModelIndexList &indexes) const
{
	QMimeData *mimeData = new QMimeData();
	QByteArray encodedData;

	QDataStream dataStream(&encodedData, QIODevice::WriteOnly);

	dataStream << indexes.length();

	foreach (const QModelIndex &index, indexes)
	{
		if (index.isValid())
		{
			Term term = _variables.at(index.row());
			dataStream << term.asQString();
		}
	}

	mimeData->setData("application/vnd.list.variable", encodedData);

	return mimeData;
}
Пример #6
0
QMimeData* BasketTreeListView::mimeData(const QList<QTreeWidgetItem *> items) const
{
    QString mimeType = TREE_ITEM_MIME_STRING;

    QByteArray data = QByteArray();
    QDataStream out(&data, QIODevice::WriteOnly);

    if(items.isEmpty())
        return new QMimeData();


    for (int i = 0; i < items.count(); ++i) {
        BasketListViewItem *basketItem = static_cast<BasketListViewItem*>(items[i]);
        out << basketItem->basket()->basketName() << basketItem->basket()->folderName()
                << basketItem->basket()->icon();
    }

    QMimeData *mimeData = new QMimeData();

    mimeData->setData(mimeType, data);
    return mimeData;
}
Пример #7
0
void KIOPasteTest::testCut()
{
    QMimeData *mimeData = new QMimeData;

    QUrl localURL1(QStringLiteral("file:///tmp/Mat%C3%A9riel"));
    QUrl localURL2(QStringLiteral("file:///tmp"));
    QList<QUrl> localURLs; localURLs << localURL1 << localURL2;

    KUrlMimeData::setUrls(QList<QUrl>(), localURLs, mimeData);
    KIO::setClipboardDataCut(mimeData, true);

    QVERIFY(mimeData->hasUrls());
    const QList<QUrl> lst = KUrlMimeData::urlsFromMimeData(mimeData);
    QCOMPARE(lst.count(), 2);
    QCOMPARE(lst[0].url(), localURL1.url());
    QCOMPARE(lst[1].url(), localURL2.url());

    const bool isCut = KIO::isClipboardDataCut(mimeData);
    QVERIFY(isCut);

    delete mimeData;
}
Пример #8
0
void QtRosterWidget::mouseMoveEvent(QMouseEvent *event)
 {
	if (!(event->buttons() & Qt::LeftButton)) {
		return;
	}
	if ((event->pos() - dragStartPosition).manhattanLength()< QApplication::startDragDistance()) {
		return;
	}
	clickedIndex=indexAt(event->pos());
	if (!clickedIndex.isValid()) {
		return;
	}
	QDrag *drag = new QDrag(this);
	QMimeData *mimeData = new QMimeData();
	RosterItem* item = static_cast<RosterItem*>(clickedIndex.internalPointer());
	ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item);
	std::string jid=contact->getJID().toString();
	QString str=QString::P2QSTRING(jid);
	mimeData->setText(str);
	drag->setMimeData(mimeData);
	drag->exec(Qt::CopyAction | Qt::MoveAction);     
 }
Пример #9
0
void DragableLabel::mousePressEvent(QMouseEvent *event)
{
    QPoint hotSpot = event->pos();

    QMimeData *mimeData = new QMimeData;
    mimeData->setText(this->text());
    mimeData->setData("application/x-hotspot",
                      QByteArray::number(hotSpot.x()) + " " + QByteArray::number(hotSpot.y()));

    QPixmap pixmap(this->size());
    this->render(&pixmap);

    QDrag *drag = new QDrag(this);
    drag->setMimeData(mimeData);
    drag->setPixmap(pixmap);
    drag->setHotSpot(hotSpot);

    Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);

    if (dropAction == Qt::MoveAction)
        this->close();
}
Пример #10
0
void KIOPasteTest::testPopulate()
{
    QMimeData *mimeData = new QMimeData;

    // Those URLs don't have to exist.
    QUrl mediaURL(QStringLiteral("media:/hda1/tmp/Mat%C3%A9riel"));
    QUrl localURL(QStringLiteral("file:///tmp/Mat%C3%A9riel"));
    QList<QUrl> kdeURLs; kdeURLs << mediaURL;
    QList<QUrl> mostLocalURLs; mostLocalURLs << localURL;

    KUrlMimeData::setUrls(kdeURLs, mostLocalURLs, mimeData);

    QVERIFY(mimeData->hasUrls());
    const QList<QUrl> lst = KUrlMimeData::urlsFromMimeData(mimeData);
    QCOMPARE(lst.count(), 1);
    QCOMPARE(lst[0].url(), mediaURL.url());

    const bool isCut = KIO::isClipboardDataCut(mimeData);
    QVERIFY(!isCut);

    delete mimeData;
}
Пример #11
0
QMimeData* DisplayModel::mimeData(const QModelIndexList& indexes) const
{

	DatabaseLocker lock(db_);

	QMimeData *mimeData = new QMimeData();
	QList<QUrl> list;
	for (const QModelIndex &index: indexes)
	{
		if (index.isValid())
		{
			QStandardItem* qitem = this->itemFromIndex(index);
			file_hash_t hash = qitem->data(IMAGE_QVARIANT_ROLE).value<file_hash_t>();
			ImageDescription_ptr desc = db_->images().get_image_description(hash);

			list << QUrl("file:///" + db_->images().storage_location() + "/" + desc->path);
		}
	}
	mimeData->setUrls(list);

	return mimeData;
}
Пример #12
0
QMimeData *StatsListModel::mimeData(const QModelIndexList &indexes) const
{
    QMimeData *mimeData = new QMimeData();
    QByteArray encodedData;

    QDataStream stream(&encodedData, QIODevice::WriteOnly);

    foreach (QModelIndex index, indexes) {
        if (index.isValid()) {
            int ind = data(index, Qt::UserRole).toInt();
            int alpha = data(index, Qt::UserRole+1).toInt();
            QModelIndex checkindex = StatsListModel::createIndex(index.row(), 1, 999);
            bool draw = data(checkindex, Qt::CheckStateRole).toBool();
            bool drawgrid = data(index, Qt::UserRole+2).toBool();
            QString name = data(index, Qt::DisplayRole).toString();
            stream << ind << alpha << draw << drawgrid << name;
        }
    }

    mimeData->setData("application/YUView-Statistics", encodedData);
    return mimeData;
}
Пример #13
0
QMimeData *BookmarksModel::mimeData(const QModelIndexList &indexes) const
{
    QMimeData *mimeData = new QMimeData();
    QByteArray data;
    QDataStream stream(&data, QIODevice::WriteOnly);
    QList<QUrl> urls;
    foreach (const QModelIndex &index, indexes) {
        if (index.column() != 0 || !index.isValid())
            continue;
        QByteArray encodedData;
        QBuffer buffer(&encodedData);
        buffer.open(QBuffer::ReadWrite);
        XbelWriter writer;
        const BookmarkNode *parentNode = node(index);
        writer.write(&buffer, parentNode);
        stream << encodedData;
        urls.append(index.data(BookmarksModel::UrlRole).toUrl());
    }
    mimeData->setData(MIMETYPE, data);
    mimeData->setUrls(urls);
    return mimeData;
}
Пример #14
0
void DummyBlock::mousePressEvent(QMouseEvent *event)
{
    cout << "Starting Drag" << endl;

    QByteArray itemData;

    QDataStream dataStream(&itemData, QIODevice::WriteOnly);

    dataStream << QPoint(event->pos());

    QMimeData *mimeData = new QMimeData;
    mimeData->setData("application/x-dnditemdata", itemData);

    QDrag *drag = new QDrag(this);
    drag->setMimeData(mimeData);
    drag->setHotSpot(event->pos());
    drag->setPixmap(this->grab());
    if (drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction) == Qt::MoveAction)
    {
//        this->close();
    }
}
Пример #15
0
QMimeData *GraphModel::mimeData(const QModelIndexList &indexes) const
{
	if(QApplication::keyboardModifiers() & Qt::ShiftModifier)
	{
		QMimeData *mimeData = new QMimeData();
		QByteArray encodedData;

		QDataStream stream(&encodedData, QIODevice::WriteOnly);

		foreach (const QModelIndex &index, indexes)
		{
			if (index.isValid())
			{
				GraphItem *item = static_cast<GraphItem *>(index.internalPointer());
				QVariant uData = PointerHolder<GraphItem *>::ToQVariant(item);
				stream << uData;
			}
		}

		mimeData->setData("application/tree.userdata", encodedData);
		return mimeData;
	}
Пример #16
0
void VSCDeviceTree::mousePressEvent(QMouseEvent *event)
{
	VDC_DEBUG( "%s \n",__FUNCTION__);
	// Get current selection
	QTreeWidgetItem *selectedItem = currentItem();
	
    if (event->buttons() & Qt::RightButton)
    {
        return;
    }
	// If the selected Item exists
	if (selectedItem)
	{
		VSCDeviceIPC *pIpc = dynamic_cast<VSCDeviceIPC * >(selectedItem);
	    //VSCDeviceIPC *pIpc = (VSCDeviceIPC * )(selectedItem);
        // Create data
		if (pIpc)
		{
		    u32 nId = pIpc->GetDeviceId();
		    VDC_DEBUG( "%s id %d\n",__FUNCTION__, nId);
			QMimeData *mimeData = new QMimeData();
			mimeData->setText(QString::number(nId));
			
			// Create drag
			QPixmap pixmap(":/device/resources/camera1.png");
			QPainter painter(&pixmap);

			QDrag *drag = new QDrag(this);
			drag->setMimeData(mimeData);
			drag->setPixmap(pixmap);
                      drag->setHotSpot(QPoint(drag->pixmap().width()/2,
                             drag->pixmap().height()/2));
			drag->exec();
		}

	}
	
	QTreeWidget::mousePressEvent(event);
}
Пример #17
0
//! [0]
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton
            && iconLabel->geometry().contains(event->pos())) {

//! [1]
        QDrag *drag = new QDrag(this);
        QMimeData *mimeData = new QMimeData;

        mimeData->setText(commentEdit->toPlainText());
        drag->setMimeData(mimeData);
//! [1]
        drag->setPixmap(iconPixmap);

        Qt::DropAction dropAction = drag->exec();
//! [0]

        QString actionText;
        switch (dropAction) {
        case Qt::CopyAction:
            actionText = tr("The text was copied.");
            break;
        case Qt::MoveAction:
            actionText = tr("The text was moved.");
            break;
        case Qt::LinkAction:
            actionText = tr("The text was linked.");
            break;
        case Qt::IgnoreAction:
            actionText = tr("The drag was ignored.");
            break;
        default:
            actionText = tr("Unknown action.");
            break;
        }
        statusBar()->showMessage(actionText);
//! [2]
    }
}
Пример #18
0
void Pasteboard::writeSelection(Range* selectedRange, bool canSmartCopyOrDelete, Frame* frame)
{
    QMimeData* md = new QMimeData;
    QString text = frame->editor()->selectedText();
    text.replace(QChar(0xa0), QLatin1Char(' '));
    md->setText(text);

    QString markup = createMarkup(selectedRange, 0, AnnotateForInterchange, false, AbsoluteURLs);
#ifdef Q_OS_MAC
    markup.prepend(QLatin1String("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head><body>"));
    markup.append(QLatin1String("</body></html>"));
    md->setData(QLatin1String("text/html"), markup.toUtf8());
#else
    md->setHtml(markup);
#endif

#ifndef QT_NO_CLIPBOARD
    QApplication::clipboard()->setMimeData(md, m_selectionMode ? QClipboard::Selection : QClipboard::Clipboard);
#endif
    if (canSmartCopyOrDelete)
        md->setData("application/vnd.qtwebkit.smartpaste", QByteArray());
}
Пример #19
0
    bool drag( Token *token )
    {
        if ( !token )
            return false;

        bool ret = false;
        bool stacked = token->parentWidget() && qobject_cast<TokenDropTarget*>( token->parentWidget() );
        if (stacked)
            token->hide();

        QPixmap pixmap( token->size() );
        token->render( &pixmap );
        QDrag *drag = new QDrag( token );
        QMimeData *data = new QMimeData;

        QByteArray itemData;
        QDataStream dataStream( &itemData, QIODevice::WriteOnly );
//         dataStream << child->name() << child->iconName() << child->value();

        data->setData( m_mimeType, itemData );
        drag->setMimeData( data );
        drag->setPixmap( pixmap );
        drag->setHotSpot ( pixmap.rect().center() );

        Qt::DropAction dropAction = drag->exec( Qt::CopyAction | Qt::MoveAction, Qt::CopyAction );

        if ( stacked )
        {
            if ( dropAction != Qt::MoveAction && dropAction != Qt::CopyAction ) // dragged out
            {
                // TODO: nice poof animation? ;-)
                delete token;
                ret = true; // THIS IS IMPORTANT
            }
            // anyway, tell daddy to wipe empty rows NOW
            static_cast<TokenDropTarget*>(parent())->deleteEmptyRows();
        }
        return ret;
    }
Пример #20
0
void DraggableLabel::mousePressEvent(QMouseEvent *event)
{
    if(!m_drag)
    {
        QWidget::mousePressEvent(event);
        return;
    }

    if (event->button() == Qt::LeftButton)
    {
        QDrag *drag = new QDrag(this);
        QMimeData *mimeData = new QMimeData;

        QByteArray data;
        QDataStream str(&data, QIODevice::WriteOnly);
        str << labelLayout->getLabelPos(this);

        if(m_drag && !m_drop && labelLayout)
        {
            DataFilter *f = labelLayout->getFilterTabs()->getCurrFilter();
            str.writeRawData((const char*)&f, sizeof(DataFilter*));
            mimeData->setData("analyzer/dragLabel", data);
        }
        else
            mimeData->setData("analyzer/dropLabel", data);

        drag->setMimeData(mimeData);

        QPixmap pixmap(size());
        this->render(&pixmap);

        drag->setPixmap(pixmap);

        drag->exec();
        delete drag;

        event->accept();
    }
}
Пример #21
0
void CopyAsController::onActionTriggered( QAction *action )
{
    AbstractModelStreamEncoder* encoder = action->data().value<AbstractModelStreamEncoder* >();

    const AbstractModelSelection* selection = mSelectionControl->modelSelection();

    AbstractModelStreamEncoderConfigEditor* configEditor =
        mModelCodecViewManager->createConfigEditor( encoder );

    if( configEditor )
    {
        CopyAsDialog* dialog = new CopyAsDialog( encoder->remoteTypeName(), configEditor );
        dialog->setData( mModel, selection );
        if( !dialog->exec() )
            return;
    }

    QApplication::setOverrideCursor( Qt::WaitCursor );

    QByteArray exportData;
    QBuffer exportDataBuffer( &exportData );
    exportDataBuffer.open( QIODevice::WriteOnly );

    ModelStreamEncodeThread *encodeThread =
        new ModelStreamEncodeThread( this, &exportDataBuffer, mModel, selection, encoder );
    encodeThread->start();
    while( !encodeThread->wait(100) )
        QApplication::processEvents( QEventLoop::ExcludeUserInputEvents | QEventLoop::ExcludeSocketNotifiers, 100 );

    delete encodeThread;

    exportDataBuffer.close();

    QMimeData *mimeData = new QMimeData;
    mimeData->setData( encoder->remoteClipboardMimeType(), exportData );
    QApplication::clipboard()->setMimeData( mimeData, QClipboard::Clipboard );

    QApplication::restoreOverrideCursor();
}
Пример #22
0
QMimeData * PartsBinListView::mimeData(const QList<QListWidgetItem *> items) const {
	if (items.count()>1) {
		throw "PartsBinListView::mimeData too many items";
	}

	if(items.count()==1) {
		QListWidgetItem * item = items.at(0);
		ModelPart * modelPart = itemModelPart(item);
		QByteArray itemData;
		QDataStream dataStream(&itemData, QIODevice::WriteOnly);

		dataStream << modelPart->moduleID() << QPointF(0,0);

		QMimeData *mimeData = new QMimeData;
		mimeData->setData("application/x-dnditemdata", itemData);
		mimeData->setData("action", "part-reordering");

		return mimeData;
	} else {
		return QListWidget::mimeData(items);
	}
}
Пример #23
0
void
TreeView::startDrag( Qt::DropActions supportedActions )
{
    QList<QPersistentModelIndex> pindexes;
    QModelIndexList indexes;
    foreach( const QModelIndex& idx, selectedIndexes() )
    {
        if ( ( m_proxyModel->flags( idx ) & Qt::ItemIsDragEnabled ) )
        {
            indexes << idx;
            pindexes << idx;
        }
    }

    if ( indexes.count() == 0 )
        return;

    qDebug() << "Dragging" << indexes.count() << "indexes";
    QMimeData* data = m_proxyModel->mimeData( indexes );
    if ( !data )
        return;

    QDrag* drag = new QDrag( this );
    drag->setMimeData( data );

    QPixmap p;
    if ( data->hasFormat( "application/tomahawk.metadata.artist" ) )
        p = TomahawkUtils::createDragPixmap( TomahawkUtils::MediaTypeArtist, indexes.count() );
    else if ( data->hasFormat( "application/tomahawk.metadata.album" ) )
        p = TomahawkUtils::createDragPixmap( TomahawkUtils::MediaTypeAlbum, indexes.count() );
    else
        p = TomahawkUtils::createDragPixmap( TomahawkUtils::MediaTypeTrack, indexes.count() );

    drag->setPixmap( p );
    drag->setHotSpot( QPoint( -20, -20 ) );

    drag->exec( supportedActions, Qt::CopyAction );
}
Пример #24
0
QString PsiTextView::getTextHelper(bool html) const
{
	PsiTextView *ptv = (PsiTextView *)this;
	QTextCursor cursor = ptv->textCursor();
	int position = ptv->verticalScrollBar()->value();

	bool unselectAll = false;
	if (!textCursor().hasSelection()) {
#if QT_VERSION == 0x040701
		// workaround for crash when deleting last character with backspace (qt-4.7.1)
		// http://bugreports.qt.nokia.com/browse/QTBUG-15857
		QTextCursor tempCursor = QTextCursor(ptv->document());
		tempCursor.movePosition(QTextCursor::Start);
		ptv->setTextCursor(tempCursor);
#endif
		ptv->selectAll();
		unselectAll = true;
	}

	QMimeData *mime = createMimeDataFromSelection();
	QString result;
	if (html)
		result = mime->html();
	else
		result = mime->text();
	delete mime;

	// we need to restore original position if selectAll()
	// was called, because setTextCursor() (which is necessary
	// to clear selection) will move vertical scroll bar
	if (unselectAll) {
		cursor.clearSelection();
		ptv->setTextCursor(cursor);
		ptv->verticalScrollBar()->setValue(position);
	}

	return result;
}
Пример #25
0
// ドラッグアンドドロップ開始
void GridLabel::startDragAndDrop(QMouseEvent *ev)
{
    Q_UNUSED(ev);

    EditData::ImageData *p = m_pEditData->getImageDataFromNo(m_Index);
    if (!p)
    {
        return;
    }

    QImage img = p->Image.copy(m_pEditData->getCatchRect().toRect());
    QPixmap pix = QPixmap::fromImage(img);

    QByteArray itemData;
    QDataStream stream(&itemData, QIODevice::WriteOnly);
    RectF rect = m_pEditData->getCatchRect();
    //	stream << rect << mScale << m_Index ;
    stream << rect.left() << rect.top() << rect.right() << rect.bottom() << mScale << m_Index;

    QMimeData *mimeData = new QMimeData;
    mimeData->setData("editor/selected-image", itemData);

    QPainter painter;
    painter.begin(&pix);
    painter.fillRect(pix.rect(), QColor(127, 127, 127, 127));
    painter.end();

    QDrag *drag = new QDrag(this);
    drag->setMimeData(mimeData);
    drag->setPixmap(pix);
    drag->setHotSpot(QPoint((rect.right() - rect.left()) / 2, (rect.bottom() - rect.top()) / 2));

    //	qDebug() << "x:" << ev->pos().x() << " y:" << ev->pos().y() ;

    m_pEditData->setDraggingImage(true);
    drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);
    m_pEditData->setDraggingImage(false);
}
Пример #26
0
void QMwStructuresWidget::mouseMoveEvent(QMouseEvent *event)
{
    QTreeWidget::mouseMoveEvent(event);
    //return;

    if (!(event->buttons() & Qt::LeftButton))
        return;

//    if ((event->pos() - this->dragStartPos).manhattanLength() < QApplication::startDragDistance())
//        return;


    QTreeWidgetItem *draggedItem = this->itemAt(this->dragStartPos);
    MwBaseResource *selectedResource = QMwStructuresWidget::GetMwResourceFromItem(draggedItem);
    if (selectedResource == 0)
        return;

    switch (this->dragMode)
    {
        case QMwStructuresWidget::DragMode_None:
        {
            QDrag *drag = new QDrag(this);
            QMimeData *mimeData = new QMimeData;
            mimeData->setData("application/mwresource", MwString((unsigned int)selectedResource).GetCharContents());
            mimeData->setData("application/twitem", MwString((unsigned int)draggedItem).GetCharContents());
            drag->setMimeData(mimeData);
            QString iconName;
            if (EditorUtils::resourceTypeIcons.GetValue(selectedResource->resourceType, iconName))
                drag->setPixmap(QPixmap(iconName));

            this->dragMode = QMwStructuresWidget::DragMode_Resource;

            drag->exec(Qt::CopyAction | Qt::MoveAction);

            break;
        }
    }
}
Пример #27
0
QMimeData *QHaikuClipboard::mimeData(QClipboard::Mode mode)
{
    QMimeData *mimeData = new QMimeData();

    if (mode != QClipboard::Clipboard)
        return mimeData;

    if (!be_clipboard->Lock())
        return mimeData;

    const BMessage *clipboard = be_clipboard->Data();
    if (clipboard) {
        char *name = Q_NULLPTR;
        uint32 type = 0;
        int32 count = 0;

        for (int i = 0; clipboard->GetInfo(B_MIME_TYPE, i, &name, &type, &count) == B_OK; i++) {
            const void *data = Q_NULLPTR;
            int32 dataLen = 0;

            const status_t status = clipboard->FindData(name, B_MIME_TYPE, &data, &dataLen);
            if (dataLen && (status == B_OK)) {
                const QString format = QString::fromLatin1(name);
                if (format == QStringLiteral("text/plain")) {
                    mimeData->setText(QString::fromLocal8Bit(reinterpret_cast<const char*>(data), dataLen));
                } else if (format == QStringLiteral("text/html")) {
                    mimeData->setHtml(QString::fromLocal8Bit(reinterpret_cast<const char*>(data), dataLen));
                } else {
                    mimeData->setData(format, QByteArray(reinterpret_cast<const char*>(data), dataLen));
                }
            }
        }
    }

    be_clipboard->Unlock();

    return mimeData;
}
Пример #28
0
void TrackView::editCopy()
{
	if (0 == getTrackCount()) {
		QApplication::beep();
		return;
	}

	QRect selection = getSelection();

	QVector<struct CopyEntry> copyEntries;
	for (int track = selection.left(); track <= selection.right(); ++track) {
		const SyncTrack *t = getTrack(track);

		for (int row = selection.top(); row <= selection.bottom(); ++row) {
			if (t->isKeyFrame(row)) {
				CopyEntry ce;
				ce.track = track - selection.left();
				ce.keyFrame = t->getKeyFrame(row);
				ce.keyFrame.row -= selection.top();
				copyEntries.push_back(ce);
			}
		}
	}

	int buffer_width  = selection.width();
	int buffer_height = selection.height();
	size_t buffer_size = copyEntries.size();

	QByteArray data;
	data.append((char *)&buffer_width, sizeof(int));
	data.append((char *)&buffer_height, sizeof(int));
	data.append((char *)&buffer_size, sizeof(size_t));
	data.append((char *)copyEntries.data(), sizeof(CopyEntry) * copyEntries.size());

	QMimeData *mimeData = new QMimeData;
	mimeData->setData("application/x-gnu-rocket", data);
	QApplication::clipboard()->setMimeData(mimeData);
}
Пример #29
0
void Drag::mouseMoveEvent(QMouseEvent *event)
{
    if (!m_data->widget)
        return;

    if (!(event->buttons() & Qt::LeftButton))
        return;

    if ((event->globalPos() - m_data->dragStartPosition).manhattanLength()
            < QApplication::startDragDistance())
        return;

    TypeDescriptor_ptr descriptor =
        m_data->widget->getReflective();

    Holder holder (descriptor->create_holder());
    m_data->widget->toHolder(holder);

    if (core::utils::calculate_size(holder) < GSIM_DRAG_MAX_SIZE)
    {
        QDrag * drag = new QDrag(m_data->qwidget);
        QMimeData * mimeData = new QMimeData;

        std::ostringstream oss;

        json::write(oss, descriptor, holder);

        mimeData->setText(oss.str().c_str());
        drag->setMimeData(mimeData);

        /* Qt::DropAction dropAction = */ drag->exec(Qt::CopyAction);
    }
    else
    {
        QMessageBox::information(m_data->qwidget, "Information",
                                 "Drag events have been disabled for performance reasons.");
    }
}
Пример #30
0
QMimeData *ContactListEdit::createMimeDataFromSelection() const
  {
  //QTextEdit::createMimeDataFromSelection();
  QString       textMime;
  QMimeData     *mimeData = new QMimeData ();
  QTextCursor   cursor = textCursor();
  int           posStart = cursor.selectionStart();
  int           posEnd = cursor.selectionEnd();  
  QTextBlock    block = this->document()->findBlock(posStart);
  QTextBlock    endBlock = this->document()->findBlock(posEnd);
  endBlock = endBlock.next();

  while (block.isValid() && block != endBlock)
    {
    for (QTextBlock::iterator i = block.begin(); !i.atEnd(); ++i)
      {
      int position = i.fragment().position();
      //qDebug() << i.fragment().position();
      if (position >= posEnd) break;
      if (position >= posStart)
        {
        QTextCharFormat format = i.fragment().charFormat();
        bool isImage = format.isImageFormat();
        if (isImage)
          {            
          //qDebug() << format.toImageFormat().name();
          textMime += format.toImageFormat().name();
          }
        else
          textMime += i.fragment().text();
        }
      }
      block = block.next();
    }

  mimeData->setText(textMime);
  return mimeData;
  }