bool Article::operator==(const Article &other) const { return d->title == other.title() && d->link == other.link() && d->description == other.description() && d->pubDate == other.pubDate() && d->guid == other.guid() && d->guidIsPermaLink == other.guidIsPermaLink(); }
bool Criterion::satisfiedBy(const Article &article) const { if (article.isNull()) { return false; } QVariant concreteSubject; switch (m_subject) { case Title: concreteSubject = QVariant(article.title()); break; case Description: concreteSubject = QVariant(article.description()); break; case Link: // ### Maybe use prettyUrl here? concreteSubject = QVariant(article.link().url()); break; case Status: concreteSubject = QVariant(article.status()); break; case KeepFlag: concreteSubject = QVariant(article.keep()); break; case Author: concreteSubject = QVariant(article.authorName()); default: break; } bool satisfied = false; const Predicate predicateType = static_cast<Predicate>(m_predicate & ~Negation); QString subjectType = QLatin1String(concreteSubject.typeName()); switch (predicateType) { case Contains: satisfied = concreteSubject.toString().indexOf(m_object.toString(), 0, Qt::CaseInsensitive) != -1; break; case Equals: if (subjectType == QLatin1String("int")) { satisfied = concreteSubject.toInt() == m_object.toInt(); } else { satisfied = concreteSubject.toString() == m_object.toString(); } break; case Matches: satisfied = QRegExp(m_object.toString()).indexIn(concreteSubject.toString()) != -1; break; default: qCDebug(AKREGATOR_LOG) << "Internal inconsistency; predicateType should never be Negation"; break; } if (m_predicate & Negation) { satisfied = !satisfied; } return satisfied; }
ArticleListBoxItem::ArticleListBoxItem( QListBox *listbox, const Article &article ) : QListBoxText( listbox ), m_article( article ) { setText( article.title() ); }