Download *DownloadManagerImpl::getDownloadByContactId(int contactId) { QMutexLocker locker(&m_mutexLocker); for (int i = 0; i < m_downloadQueue.count(); i++) { Download *download = m_downloadQueue.at(i); if (download == 0) continue; Contact *contact = download->getContact(); if (contact == 0) continue; if (contact->getId() == contactId) return download; } foreach(Download *download, m_downloadingList) { if (download == 0) continue; Contact *contact = download->getContact(); if (contact == 0) continue; if (contact->getId() == contactId) return download; } return 0; }
bool DownloadManagerImpl::removeDownloadByContactId(int contactId) { QMutexLocker locker(&m_mutexLocker); for (int i = 0; i < m_downloadQueue.count(); i++) { Download *download = m_downloadQueue.at(i); if (download == 0) continue; Contact *contact = download->getContact(); if (contact == 0) continue; if (contact->getId() == contactId) { m_downloadQueue.removeAt(i); // Free memory download->stop(); download->deleteLater(); return true; } } for (int i = 0; i < m_downloadingList.count(); i++) { Download *download = m_downloadingList.at(i); if (download == 0) continue; Contact *contact = download->getContact(); if (contact == 0) continue; if (contact->getId() == contactId) { m_downloadingList.removeAt(i); // Free memory download->stop(); download->deleteLater(); return true; } } return false; }
bool DownloadManagerImpl::isDownloadExistingInQueue(int contactId) { for (int i = 0; i < m_downloadQueue.count(); i++) { Download *download = m_downloadQueue.at(i); if (download == 0) continue; Contact *contact = download->getContact(); if (contact == 0) continue; if (contact->getId() == contactId) return true; } return false; }