Beispiel #1
0
void    QFetionSMS::initial()
{
    if (!isInitialed)
    {
        messageManager = new QMessageManager(this);
        connect(messageManager,SIGNAL(messageAdded(QMessageId,QMessageManager::NotificationFilterIdSet)),this,SLOT(messageAdded(QMessageId,QMessageManager::NotificationFilterIdSet)));
        connect(messageManager,SIGNAL(messageRemoved(QMessageId,QMessageManager::NotificationFilterIdSet)),this,SLOT(messageRemoved(QMessageId,QMessageManager::NotificationFilterIdSet)));
        connect(messageManager,SIGNAL(messageUpdated(QMessageId,QMessageManager::NotificationFilterIdSet)),this,SLOT(messageUpdated(QMessageId,QMessageManager::NotificationFilterIdSet)));
        connect(this,SIGNAL(cellphoneChanged()),this,SLOT(getNewMessageList()));

        QHash<int, QByteArray> roleNames;
        roleNames[SubjectRole] = "subject";
        roleNames[SenderRole] = "sender";
        roleNames[ToRole] = "to";
        roleNames[SizeRole] = "size";
        roleNames[TypeRole] = "type";
        roleNames[DateRole] = "date";
        roleNames[ReceivedDateRole] = "receivedDate";
        roleNames[BodyRole] = "body";
        roleNames[PriorityRole] = "priority";
        roleNames[InboxRole] = "isInbox";
        roleNames[ReadyRole] = "ready";
        setRoleNames(roleNames);
        filterid = messageManager->registerNotificationFilter(QMessageFilter());

        isInitialed = true;
    }
}
const QMessageFilter& QMessageFilter::operator&=(const QMessageFilter& other)
{
	if (&other == this) {
		return *this;
	}
	
	if (isEmpty()) {
		*this = other;
		return *this;
	}
	
	if (other.isEmpty()) {
		return *this;
	}
	
	if (d_ptr->_notFilter && !d_ptr->_notFilterForComparator) {
		return *this;
	}

	if (other.d_ptr->_notFilter && !d_ptr->_notFilterForComparator) {
		*this = other;
		return *this;
	}
	
    if (d_ptr->_filterList.count() == 0) {
        QMessageFilter newFilter = QMessageFilter(*this); 
        d_ptr->_filterList.append(QMessageFilterPrivate::SortedMessageFilterList());
        d_ptr->_filterList[0] << newFilter;
        d_ptr->_value = QVariant();
        d_ptr->_field = QMessageFilterPrivate::None;
        d_ptr->_comparatorType = QMessageFilterPrivate::Equality;
        d_ptr->_comparatorValue = 0;
    }
    int i = 0;
    while (i < d_ptr->_filterList.count()) {
        if (other.d_ptr->_filterList.count() == 0) {
            d_ptr->_filterList[i] << other;
            qSort(d_ptr->_filterList[i].begin(), d_ptr->_filterList[i].end(), QMessageFilterPrivate::lessThan);
        } else {
            int j = 0;
            int k = i;
            while (j < other.d_ptr->_filterList.count()) {
                if (j+1 < other.d_ptr->_filterList.count()) {
                    d_ptr->_filterList.insert(k+j+1,QMessageFilterPrivate::SortedMessageFilterList());
                    d_ptr->_filterList[k+j+1] << d_ptr->_filterList[k+j];
                    i++;
                }
                d_ptr->_filterList[k+j] << other.d_ptr->_filterList[j];
                if (d_ptr->_filterList[k+j].count() > 1) {
                    qSort(d_ptr->_filterList[k+j].begin(), d_ptr->_filterList[k+j].end(), QMessageFilterPrivate::lessThan);
                }
                j++;
            }
        }
        i++;
    }
    d_ptr->_valid = d_ptr->_valid & other.d_ptr->_valid;
    
    return *this;
}
void QMessageFilterPrivate::changeANDsAndORsToOpposite(QMessageFilter& filter)
{
    if (filter.d_ptr->_filterList.count() > 0) {
        QMessageFilter oldFilter = filter;
        filter.d_ptr->_filterList.clear();
        for (int i=0; i < oldFilter.d_ptr->_filterList.count(); i++) {
            if (i == 0) {
                for (int j=0; j < oldFilter.d_ptr->_filterList[i].count(); j++) {
                    if (j == 0) {
                        filter.d_ptr->_filterList.append(QMessageFilterPrivate::SortedMessageFilterList());
                        filter.d_ptr->_filterList[0] << QMessageFilter(oldFilter.d_ptr->_filterList[i][j]);
                    } else {
                        filter |= oldFilter.d_ptr->_filterList[i][j];
                    }
                }
            } else {
                QMessageFilter tempFilter;
                for (int j=0; j < oldFilter.d_ptr->_filterList[i].count(); j++) {
                    if (j == 0) {
                        tempFilter = oldFilter.d_ptr->_filterList[i][j];
                    } else {
                        tempFilter |= oldFilter.d_ptr->_filterList[i][j];
                    }
                }
                filter &= tempFilter;
            }
        }
        
        for (int i=0; i < filter.d_ptr->_filterList.count(); i++) {
            qSort(filter.d_ptr->_filterList[i].begin(), filter.d_ptr->_filterList[i].end(), QMessageFilterPrivate::lessThan);
        }
    }
}
QMessageFilter QDeclarativeMessageUnionFilter::filter()
{
    if (m_filters.count() == 0)
        return QMessageFilter();

    QMessageFilter filter = m_filters.first()->filter();
    for (int i = 1; i < m_filters.count(); ++i)
        filter |= m_filters.at(i)->filter();

    if (m_negated)
        return ~filter;
    else
        return filter;
}
const QMessageFilter& QMessageFilter::operator|=(const QMessageFilter& other)
{
	if (&other == this) {
		return *this;
	}
	
	if (isEmpty()) {
		return *this;
	}

	if (other.isEmpty()) {
		*this = other;
		return *this;
	}

	if (d_ptr->_notFilter && !d_ptr->_notFilterForComparator) {
		*this = other;
		return *this;
	}

	if (other.d_ptr->_notFilter && !d_ptr->_notFilterForComparator) {
		return *this;
	}
    
    if (d_ptr->_filterList.count() == 0) {
        QMessageFilter newFilter = QMessageFilter(*this);
        d_ptr->_filterList.append(QMessageFilterPrivate::SortedMessageFilterList());
        d_ptr->_filterList[d_ptr->_filterList.count()-1] << newFilter;
        d_ptr->_value = QVariant();
        d_ptr->_field = QMessageFilterPrivate::None;
        d_ptr->_comparatorType = QMessageFilterPrivate::Equality;
        d_ptr->_comparatorValue = 0;
    } 
    if (other.d_ptr->_filterList.count() == 0) {
        d_ptr->_filterList.append(QMessageFilterPrivate::SortedMessageFilterList());
        d_ptr->_filterList[d_ptr->_filterList.count()-1] << other;
    } else {
        d_ptr->_filterList << other.d_ptr->_filterList;
    }
    d_ptr->_valid = d_ptr->_valid & other.d_ptr->_valid;

    return *this;
}