bool CntFilterDetail::filterSupported(const QContactFilter& filter) { bool result = false; if (QContactFilter::ContactDetailFilter == filter.type()) { QContactDetailFilter detailFilter = static_cast<QContactFilter>(filter); if (m_dbInfo.SupportsDetail(detailFilter.detailDefinitionName(), detailFilter.detailFieldName())) { result = true; } else if (detailFilter.detailDefinitionName() == QContactPhoneNumber::DefinitionName && detailFilter.detailFieldName() == QContactPhoneNumber::FieldNumber) { //special case - phone number matching result = true; } else if (detailFilter.detailDefinitionName() == QContactType::DefinitionName && detailFilter.detailFieldName() == QContactType::FieldType) { //filtering by contact type is supported result = true; } else if (detailFilter.detailDefinitionName() == QContactGuid::DefinitionName && detailFilter.detailFieldName() == QContactGuid::FieldGuid) { //filtering by global Uid is supported result = true; } } return result; }
void CntFilterDetail::getTableNameWhereClause(const QContactDetailFilter& detailfilter, QString& tableName, QString& sqlWhereClause , QContactManager::Error* error) const { //Get the table name and the column name QString columnName; bool isSubType; m_dbInfo.getDbTableAndColumnName(detailfilter.detailDefinitionName(), detailfilter.detailFieldName(), tableName, columnName, isSubType); // return if tableName is empty if (tableName.isEmpty()) { *error = QContactManager::NotSupportedError; return; } //check columnName if (columnName.isEmpty()) { *error = QContactManager::NotSupportedError; return; } else if (isSubType) { sqlWhereClause += columnName; sqlWhereClause += " NOT NULL "; } else if (detailfilter.detailDefinitionName() == QContactFavorite::DefinitionName) { bool favoritesSearch = true; if (detailfilter.value().canConvert(QVariant::Bool)) { if (!detailfilter.value().toBool()) { //filter to fetch non-favorite contacts favoritesSearch = false; } } sqlWhereClause += columnName; if (favoritesSearch) { sqlWhereClause += " NOT NULL "; } else { sqlWhereClause += " IS NULL "; } } else { sqlWhereClause += ' ' + columnName + ' '; QString fieldToUpdate; //Update the value depending on the match flag updateForMatchFlag(detailfilter,fieldToUpdate,error); sqlWhereClause += fieldToUpdate; } }
void CntFilterDetail::getTableNameWhereClause(const QContactDetailFilter& detailfilter, QString& tableName, QString& sqlWhereClause , QContactManager::Error* error) const { //Get the table name and the column name QString columnName; bool isSubType; m_dbInfo.getDbTableAndColumnName(detailfilter.detailDefinitionName(), detailfilter.detailFieldName(), tableName, columnName, isSubType); // return if tableName is empty if (tableName.isEmpty()) { *error = QContactManager::NotSupportedError; return; } //check columnName if (columnName.isEmpty()) { *error = QContactManager::NotSupportedError; return; } else if (isSubType) { sqlWhereClause += columnName; sqlWhereClause += " NOT NULL "; } else { sqlWhereClause += ' ' + columnName + ' '; QString fieldToUpdate; //Update the value depending on the match flag updateForMatchFlag(detailfilter,fieldToUpdate,error); sqlWhereClause += fieldToUpdate; } }
bool CntFilterDetail::filterSupported(const QContactFilter& filter) { bool result = false; if (QContactFilter::ContactDetailFilter == filter.type()) { QContactDetailFilter detailFilter = static_cast<QContactFilter>(filter); if (m_dbInfo.SupportsDetail(detailFilter.detailDefinitionName(), detailFilter.detailFieldName())) { result = true; } if (detailFilter.detailDefinitionName() == QContactPhoneNumber::DefinitionName && detailFilter.detailFieldName() == QContactPhoneNumber::FieldNumber) { //cpecial case - phone number matching result = true; } } return result; }