641
bool QMessageFilterPrivate::preFilter(QMessage::Type type, const QString &idPrefix, const QMessageFilterPrivate &privateFilter)
645
switch (privateFilter._field) {
646
case QMessageFilterPrivate::Id:
648
if (privateFilter._comparatorType == QMessageFilterPrivate::Equality) {
649
QMessageDataComparator::EqualityComparator cmp(static_cast<QMessageDataComparator::EqualityComparator>(privateFilter._comparatorValue));
650
if (cmp == QMessageDataComparator::Equal) {
651
if (!privateFilter._value.toString().isEmpty()) {
652
if (!privateFilter._value.toString().startsWith(idPrefix)) {
657
// => Filter must be handled
659
} else if (privateFilter._comparatorType == QMessageFilterPrivate::Inclusion) {
660
QMessageDataComparator::InclusionComparator cmp(static_cast<QMessageDataComparator::InclusionComparator>(privateFilter._comparatorValue));
661
if (privateFilter._ids.count() > 0) { // QMessageIdList
662
if (cmp == QMessageDataComparator::Includes) {
664
for (int i = 0; i < privateFilter._ids.count(); i++) {
665
if (privateFilter._ids[i].toString().startsWith(idPrefix)) {
671
// => Filter must be handled
673
} else { // QMessageFilter
674
if (cmp == QMessageDataComparator::Includes) {
683
case QMessageFilterPrivate::Type:
685
QMessage::Type typeFromFilter = static_cast<QMessage::Type>(privateFilter._value.toInt());
686
if (privateFilter._comparatorType == QMessageFilterPrivate::Equality) {
687
QMessageDataComparator::EqualityComparator cmp(static_cast<QMessageDataComparator::EqualityComparator>(privateFilter._comparatorValue));
688
if (cmp == QMessageDataComparator::Equal) {
689
if (typeFromFilter != QMessage::NoType && type != typeFromFilter) {
693
if (typeFromFilter != QMessage::NoType && type == typeFromFilter) {
697
} else if (privateFilter._comparatorType == QMessageFilterPrivate::Inclusion) {
698
QMessageDataComparator::InclusionComparator cmp(static_cast<QMessageDataComparator::InclusionComparator>(privateFilter._comparatorValue));
699
if (cmp == QMessageDataComparator::Includes) {
700
if ((type & typeFromFilter) == 0) {
704
if ((type & typeFromFilter) == type) {
711
case QMessageFilterPrivate::ParentAccountId:
713
if (privateFilter._comparatorType == QMessageFilterPrivate::Equality) {
714
QMessageDataComparator::EqualityComparator cmp(static_cast<QMessageDataComparator::EqualityComparator>(privateFilter._comparatorValue));
715
if (cmp == QMessageDataComparator::Equal) {
716
if (!privateFilter._value.toString().isEmpty()) {
717
if (!privateFilter._value.toString().startsWith(idPrefix)) {
722
// => Filter must be handled
727
case QMessageFilterPrivate::ParentFolderId:
729
if (privateFilter._comparatorType == QMessageFilterPrivate::Equality) {
730
QMessageDataComparator::EqualityComparator cmp(static_cast<QMessageDataComparator::EqualityComparator>(privateFilter._comparatorValue));
731
if (cmp == QMessageDataComparator::Equal) {
732
if (!privateFilter._value.toString().isEmpty()) {
733
if (!privateFilter._value.toString().startsWith(idPrefix)) {
738
// => Filter must be handled
740
} else if (privateFilter._comparatorType == QMessageFilterPrivate::Inclusion) {
741
QMessageDataComparator::InclusionComparator cmp(static_cast<QMessageDataComparator::InclusionComparator>(privateFilter._comparatorValue));
742
if (cmp == QMessageDataComparator::Includes) {
744
for (int i = 0; i < privateFilter._ids.count(); i++) {
745
if (privateFilter._ids[i].toString().startsWith(idPrefix)) {
751
// => Filter must be handled
756
case QMessageFilterPrivate::AncestorFolderIds:
758
if (privateFilter._comparatorType == QMessageFilterPrivate::Inclusion) {
759
QMessageDataComparator::InclusionComparator cmp(static_cast<QMessageDataComparator::InclusionComparator>(privateFilter._comparatorValue));
760
if (!privateFilter._value.isNull()) { // QMessageFolderId
761
if (cmp == QMessageDataComparator::Includes) {
763
for (int i = 0; i < privateFilter._ids.count(); i++) {
764
if (privateFilter._ids[i].toString().startsWith(idPrefix)) {
770
// => Filter must be handled
772
} else { // QMessageFolderFilter
773
if (cmp == QMessageDataComparator::Includes) {
782
case QMessageFilterPrivate::ParentAccountIdFilter:
783
case QMessageFilterPrivate::ParentFolderIdFilter:
784
case QMessageFilterPrivate::StandardFolder:
785
case QMessageFilterPrivate::TimeStamp:
786
case QMessageFilterPrivate::ReceptionTimeStamp:
787
case QMessageFilterPrivate::Sender:
788
case QMessageFilterPrivate::Recipients:
789
case QMessageFilterPrivate::Subject:
790
case QMessageFilterPrivate::Status:
791
case QMessageFilterPrivate::Priority:
792
case QMessageFilterPrivate::Size:
793
case QMessageFilterPrivate::None:
800
bool QMessageFilterPrivate::preFilterRow(QMessage::Type type, const QString &idPrefix, const SortedMessageFilterList &filterRow)
804
for (int i=0; i < filterRow.count(); i++) {
805
result = preFilter(type, idPrefix, *filterRow[i].d_ptr);
806
if (result == false) {
814
bool QMessageFilterPrivate::preFilter(QMessage::Type type, const QString idPrefix) const
818
SortedMessageFilterList filterRow;
820
if (_filterList.count() == 0) {
821
result = preFilter(type, idPrefix, *this);
823
for (int i=0; i < _filterList.count(); i++) {
824
result = preFilterRow(type, idPrefix, _filterList[i]);
825
if (result == true) {
647
834
QMessageFilterPrivate* QMessageFilterPrivate::implementation(const QMessageFilter &filter)