Exemplo n.º 1
0
// Wait for request to complete 
bool QOrganizerItemRequestQueue::waitForRequestFinished(
        QOrganizerAbstractRequest* req, int msecs)
{
    // Verify that request exists in this manager
    if (!m_abstractRequestMap.keys().contains(req)) 
        return false;
    
    // Verify that request is active
    if (req->state() != QOrganizerAbstractRequest::ActiveState)
        return false;
    
    // Create an event loop
    QEventLoop *loop = new QEventLoop(this);
    
    // If request state changes quit the loop
    QObject::connect(req, SIGNAL(stateChanged(QOrganizerAbstractRequest::State)), loop, SLOT(quit()));

    // Set a timeout for the request
    // NOTE: zero means wait forever
    if (msecs > 0)
        QTimer::singleShot(msecs, loop, SLOT(quit()));

    // Start the loop
    loop->exec();
    
    loop->disconnect();
    loop->deleteLater();

    return (req->state() == QOrganizerAbstractRequest::FinishedState);
}