Beispiel #1
0
void TablePile::timerEvent(QTimerEvent *)
{    
    QList<CardItem *> oldCards;
    _m_mutex_pileCards.lock();
    m_currentTime++;
    foreach (CardItem* toRemove, m_visibleCards)
    {
        if (m_currentTime - toRemove->m_uiHelper.tablePileClearTimeStamp
            > S_CLEARANCE_DELAY_BUCKETS)
        {
            oldCards.append(toRemove);
            m_visibleCards.removeOne(toRemove);
        }
        else if (m_currentTime > toRemove->m_uiHelper.tablePileClearTimeStamp)
            toRemove->setEnabled(false); // @todo: this is a dirty trick. Use another property in the future
    }
    
    if (oldCards.empty()) {
        _m_mutex_pileCards.unlock();
        return;
    }

    _fadeOutCardsLocked(oldCards);
    _m_mutex_pileCards.unlock();
    
    adjustCards();
}
void TablePile::clear(bool delayRequest) {
    if (m_visibleCards.empty()) return;
    _m_mutex_pileCards.lock();
    // check again since we just gain the lock.
    if (m_visibleCards.empty()) {
        _m_mutex_pileCards.unlock();
        return;
    }

    if (delayRequest) {
        foreach (CardItem *toRemove, m_visibleCards)
            _markClearance(toRemove);
    } else {
        _fadeOutCardsLocked(m_visibleCards);
        m_visibleCards.clear();
    }

    _m_mutex_pileCards.unlock();
}