void CAbstractFile::RefilterKadNotes(bool bUpdate){ // check all availabe comments against our filter again if (thePrefs.GetCommentFilter().IsEmpty()) return; POSITION pos1, pos2; for (pos1 = m_kadNotes.GetHeadPosition();( pos2 = pos1 ) != NULL;) { m_kadNotes.GetNext(pos1); Kademlia::CEntry* entry = m_kadNotes.GetAt(pos2); if (!entry->GetStrTagValue(TAG_DESCRIPTION).IsEmpty()){ CString strCommentLower(entry->GetStrTagValue(TAG_DESCRIPTION)); strCommentLower.MakeLower(); int iPos = 0; CString strFilter(thePrefs.GetCommentFilter().Tokenize(_T("|"), iPos)); while (!strFilter.IsEmpty()) { // comment filters are already in lowercase, compare with temp. lowercased received comment if (strCommentLower.Find(strFilter) >= 0) { m_kadNotes.RemoveAt(pos2); delete entry; break; } strFilter = thePrefs.GetCommentFilter().Tokenize(_T("|"), iPos); } } } if (bUpdate) // untill updated rating and m_bHasComment might be wrong UpdateFileRatingCommentAvail(); }
void CCollectionFile::UpdateFileRatingCommentAvail() { // bool bOldHasComment = m_bHasComment; // uint32 uOldUserRatings = m_uUserRating; m_bHasComment = false; uint32 uRatings = 0; uint32 uUserRatings = 0; for(POSITION pos = m_kadNotes.GetHeadPosition(); pos != NULL; ) { Kademlia::CEntry* entry = m_kadNotes.GetNext(pos); if (!m_bHasComment && !entry->GetStrTagValue(TAG_DESCRIPTION).IsEmpty()) m_bHasComment = true; uint16 rating = entry->GetIntTagValue(TAG_FILERATING); if(rating!=0) { uRatings++; uUserRatings += rating; } } if(uRatings) m_uUserRating = uUserRatings / uRatings; else m_uUserRating = 0; // if (bOldHasComment != m_bHasComment || uOldUserRatings != m_uUserRating) // theApp.emuledlg->searchwnd->UpdateSearch(this); }
void CCollectionFile::UpdateFileRatingCommentAvail(bool /*bForceUpdate*/) { m_bHasComment = false; UINT uRatings = 0; UINT uUserRatings = 0; for(POSITION pos = m_kadNotes.GetHeadPosition(); pos != NULL; ) { Kademlia::CEntry* entry = m_kadNotes.GetNext(pos); if (!m_bHasComment && !entry->GetStrTagValue(TAG_DESCRIPTION).IsEmpty()) m_bHasComment = true; UINT rating = (UINT)entry->GetIntTagValue(TAG_FILERATING); if (rating != 0) { uRatings++; uUserRatings += rating; } } if (uRatings) m_uUserRating = uUserRatings / uRatings; else m_uUserRating = 0; }