VirtualBox

Ignore:
Timestamp:
Jun 19, 2015 10:25:34 AM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
101179
Message:

DnD: FE/Qt: Return the (variant) drag data by reference, added rc.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/runtime
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp

    r56503 r56555  
    280280
    281281    /* Invoke this handler as data needs to be retrieved. */
    282     connect(m_pMIMEData, SIGNAL(getData(QString, QVariant::Type)),
    283             this, SLOT(sltGetData(QString, QVariant::Type)));
     282    connect(m_pMIMEData, SIGNAL(getData(QString, QVariant::Type, QVariant&)),
     283            this, SLOT(sltGetData(QString, QVariant::Type, QVariant&)));
    284284
    285285    /* Inform the MIME data object of any changes in the current action. */
     
    468468                                             QVariant       &vaData)
    469469{
    470     LogFlowFunc(("Retrieving data as type=%s (variant type=%ld)\n",
     470    LogFlowFunc(("Retrieving data as type=%s (variant type=%RU32)\n",
    471471                 strMimeType.toAscii().constData(), vaType));
    472472
     
    503503                        case QVariant::String:
    504504                        {
    505                             vaData = QVariant(QString(reinterpret_cast<const char*>(vecData.constData())));
     505                            vaData = QVariant::fromValue(QString(reinterpret_cast<const char *>(vecData.constData())));
     506                            Assert(vaData.type() == QVariant::Type::String);
    506507                            break;
    507508                        }
     
    510511                        {
    511512                            QByteArray ba(reinterpret_cast<const char*>(vecData.constData()), vecData.size());
    512                             vaData = QVariant(ba);
     513
     514                            vaData = QVariant::fromValue(ba);
     515                            Assert(vaData.type() == QVariant::Type::ByteArray);
    513516                            break;
    514517                        }
     
    519522                            QStringList lstString = strData.split("\r\n", QString::SkipEmptyParts);
    520523
    521                             vaData = QVariant(lstString);
     524                            vaData = QVariant::fromValue(lstString);
     525                            Assert(vaData.type() == QVariant::Type::StringList);
    522526                            break;
    523527                        }
     
    556560}
    557561
    558 /**
    559  * Called by UIDnDMIMEData (Linux, OS X, Solaris) to start retrieving the actual data
    560  * from the guest. This function will block and show a modal progress dialog until
    561  * the data transfer is complete.
    562  *
    563  * @return QVariant with data retrieved, if any.
    564  * @param strMimeType           MIME data type.
    565  * @param vaType                Qt's variant type of the MIME data.
    566  */
    567 QVariant UIDnDHandler::sltGetData(const QString        &strMimeType,
    568                                         QVariant::Type  vaType)
    569 {
    570     QVariant vaData;
     562int UIDnDHandler::sltGetData(const QString        &strMimeType,
     563                                   QVariant::Type  vaType,
     564                                   QVariant       &vaData)
     565{
    571566    int rc = retrieveDataInternal(Qt::CopyAction, strMimeType, vaType, vaData);
    572     NOREF(rc);
    573567    LogFlowFuncLeaveRC(rc);
    574     return vaData;
     568    return rc;
    575569}
    576570
  • TabularUnified trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.h

    r56497 r56555  
    9797public slots:
    9898
    99     QVariant                   sltGetData(const QString &strMimeType, QVariant::Type vaType);
     99    /**
     100     * Called by UIDnDMIMEData (Linux, OS X, Solaris) to start retrieving the actual data
     101     * from the guest. This function will block and show a modal progress dialog until
     102     * the data transfer is complete.
     103     *
     104     * @return IPRT status code.
     105     * @param strMimeType           MIME data type.
     106     * @param vaType                Qt's variant type of the MIME data.
     107     * @param vaData                Reference to QVariant where to store the retrieved data.
     108     */
     109    int                        sltGetData(const QString &strMimeType, QVariant::Type vaType, QVariant &vaData);
    100110
    101111protected:
  • TabularUnified trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDMIMEData.cpp

    r56502 r56555  
    125125    LogRel3(("DnD: State=%ld, Action=0x%x, fCanDrop=%RTbool\n", m_enmState, m_curAction, fCanDrop));
    126126
    127     if (!fCanDrop)
    128     {
    129         LogFlowFunc(("Skipping request, state=%RU32 ...\n", m_enmState));
    130         return QVariant(QVariant::Invalid); /* Return a NULL variant. */
    131     }
    132 
    133     QVariant vaData = emit getData(strMIMEType, vaType);
    134 
    135     LogRel3(("DnD: Returning data of type '%s'\n", vaData.typeName()));
    136     return vaData;
     127    if (fCanDrop)
     128    {
     129        QVariant vaData;
     130        int rc = emit getData(strMIMEType, vaType, vaData);
     131
     132        LogRel3(("DnD: Returning data of type=%s (requested MIME type=%s, requested type=%s), rc=%Rrc\n",
     133                 vaData.typeName() ? vaData.typeName() : "<Invalid>",
     134                 strMIMEType.toStdString().c_str(),
     135                 QVariant::typeToName(vaType) ? QVariant::typeToName(vaType) : "<Invalid>", rc));
     136
     137        if (RT_SUCCESS(rc))
     138            return vaData;
     139    }
     140
     141    LogFlowFunc(("Skipping request, state=%RU32 ...\n", m_enmState));
     142    return QVariant(QVariant::Invalid); /* Return a NULL variant. */
    137143}
    138144
  • TabularUnified trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDMIMEData.h

    r56500 r56555  
    6565signals:
    6666
    67      int getData(const QString &strMIMEType, QVariant::Type vaType) const;
     67     int getData(const QString &strMIMEType, QVariant::Type vaType, QVariant &vaData) const;
    6868
    6969public slots:
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette