Пример #1
0
void StringEdit::setupLabel()
{
    QString stringLabel;
    if(hasMultipleCardinality()) {
        QList<Nepomuk2::Resource> stringList = resource().property(propertyUrl()).toResourceList();

        foreach (const Nepomuk2::Resource & r, stringList) {
            stringLabel.append(r.property(propertyUrl()).toString());
            stringLabel.append(QLatin1String("; "));
        }
        stringLabel.chop(2);
    }
QList<Nepomuk2::Query::Term> PassDatePeriods::run(const QList<Nepomuk2::Query::Term> &match) const
{
    QList<Nepomuk2::Query::Term> rs;
    int value_match_index = 0;
    Period p = period;
    int v = value;
    int value_position = 0;
    int value_length = 0;

    if (p == VariablePeriod) {
        // Parse the period from match.at(0)
        QString period_name = termStringValue(match.at(0));

        if (period_name.isNull() || !periods.contains(period_name)) {
            return rs;
        }

        p = periodFromName(period_name);
        value_match_index = 1;
    }

    if (v == 0 && value_match_index < match.count()) {
        // Parse the value either from match.at(0) (there was no period) or
        // match.at(1)
        if (!termIntValue(match.at(value_match_index), v)) {
            return rs;
        }

        value_position = match.at(value_match_index).position();
        value_length = match.at(value_match_index).length();
    }

    // Create a comparison on the right "property", that will be used in a later
    // pass to build a real date-time object
    Nepomuk2::Query::LiteralTerm value_term(value_type == InvertedOffset ? -v : v);
    value_term.setPosition(value_position, value_length);

    rs.append(Nepomuk2::Query::ComparisonTerm(
        propertyUrl(p, value_type != Value),
        value_term,
        Nepomuk2::Query::ComparisonTerm::Equal
    ));

    return rs;
}