void KNArticleManager::setAllRead( bool read, int lastcount ) { if ( !g_roup ) return; int groupLength = g_roup->length(); int newCount = g_roup->newCount(); int readCount = g_roup->readCount(); int offset = lastcount; if ( lastcount > groupLength || lastcount < 0 ) offset = groupLength; KNRemoteArticle *a; for ( int i = groupLength - offset; i < groupLength; i++ ) { a = g_roup->at( i ); if ( a->getReadFlag() != read && !a->isIgnored() ) { a->setRead( read ); a->setChanged( true ); if ( !read ) { readCount--; if ( a->isNew() ) newCount++; } else { readCount++; if ( a->isNew() ) newCount--; } } } g_roup->updateThreadInfo(); if ( lastcount < 0 && read ) { // HACK: try to hide the effects of the ignore/filter new/unread count bug g_roup->setReadCount( groupLength ); g_roup->setNewCount( 0 ); } else { g_roup->setReadCount( readCount ); g_roup->setNewCount( newCount ); } g_roup->updateListItem(); showHdrs( true ); }
void KNArticleManager::setAllNotNew() { if ( !g_roup ) return; KNRemoteArticle *a; for ( int i = 0; i < g_roup->length(); ++i) { a = g_roup->at(i); if ( a->isNew() ) { a->setNew( false ); a->setChanged( true ); } } g_roup->setFirstNewIndex( -1 ); g_roup->setNewCount( 0 ); g_roup->updateThreadInfo(); }