void CntFilterDetail::createSelectQuery(const QContactFilter& filter, QString& sqlQuery, QContactManager::Error* error) { if (!filterSupported(filter)) { *error = QContactManager::NotSupportedError; return; } QContactDetailFilter detailFilter(filter); //type if (detailFilter.detailDefinitionName() == QContactType::DefinitionName) { if (detailFilter.value().toString() == QContactType::TypeContact) sqlQuery = "SELECT contact_id FROM contact WHERE (type_flags>>24)<=1"; else if (detailFilter.value().toString() == QContactType::TypeGroup) sqlQuery = "SELECT contact_id FROM contact WHERE (type_flags>>24)=3"; } else if (detailFilter.detailDefinitionName() == QContactGuid::DefinitionName) { if (detailFilter.detailFieldName() == QContactGuid::FieldGuid) { QStringList fullGuidValue = detailFilter.value().toString().split('-'); if (fullGuidValue.count() == 3) { QString localGuidValue = fullGuidValue.at(1); sqlQuery = "SELECT contact_id FROM contact WHERE guid_string = '" + localGuidValue + '\''; } } } else if (detailFilter.detailDefinitionName() == QContactEmailAddress::DefinitionName && (detailFilter.detailFieldName().isEmpty())) { QString type = QString(" type = %1").arg(CntDbInfo::EEmailAddress); QString whereClause = " WHERE" + type; sqlQuery = "SELECT DISTINCT contact_id FROM comm_addr" + whereClause; } else if (detailFilter.detailDefinitionName() == QContactOnlineAccount::DefinitionName && (detailFilter.detailFieldName().isEmpty())) { QString type = QString(" type = %1").arg(CntDbInfo::ESipAddress); QString whereClause = " WHERE" + type; sqlQuery = "SELECT DISTINCT contact_id FROM comm_addr" + whereClause; } //everything else else { QString tableName; QString sqlWhereClause; getTableNameWhereClause(detailFilter,tableName,sqlWhereClause,error); //Create the sql query sqlQuery += "SELECT DISTINCT contact_id FROM " + tableName + " WHERE " + sqlWhereClause; } }
void CntFilterDetail::createSelectQuery(const QContactFilter& filter, QString& sqlQuery, QContactManager::Error* error) { if (!filterSupported(filter)) { *error = QContactManager::NotSupportedError; return; } QContactDetailFilter detailFilter(filter); //display label if (detailFilter.detailDefinitionName() == QContactDisplayLabel::DefinitionName) { CntFilterDetailDisplayLabel displayLabelFilter; displayLabelFilter.createSelectQuery(filter, sqlQuery, error); } //type else if (detailFilter.detailDefinitionName() == QContactType::DefinitionName) { if (detailFilter.value().toString() == QContactType::TypeContact) sqlQuery = "SELECT contact_id FROM contact WHERE (type_flags>>24)=0"; else if (detailFilter.value().toString() == QContactType::TypeGroup) sqlQuery = "SELECT contact_id FROM contact WHERE (type_flags>>24)=3"; } else if (detailFilter.detailDefinitionName() == QContactGuid::DefinitionName) { if (detailFilter.detailFieldName() == QContactGuid::FieldGuid) { QStringList fullGuidValue = detailFilter.value().toString().split('-'); if (fullGuidValue.count() == 3) { QString localGuidValue = fullGuidValue.at(1); sqlQuery = "SELECT contact_id FROM contact WHERE guid_string = '" + localGuidValue + '\''; } } } //everything else else { QString tableName; QString sqlWhereClause; getTableNameWhereClause(detailFilter,tableName,sqlWhereClause,error); //Create the sql query sqlQuery += "SELECT DISTINCT contact_id FROM " + tableName + " WHERE " + sqlWhereClause; } }