示例#1
0
void FileHandler::share(QString name, QString body)
{
    // tell tracker about the file before it's created
    QString queryStr = "INSERT { _:1 a nfo:FileDataObject, nfo:TextDocument ; "
            "nie:mimeType \"text/plain\" ; "
            "nie:url ?:path ; "
            "nie:byteSize ?:size ."
            "}";

    m_path = SAVEDIR_PATH + name;
    // QFileInfo fileInfo(file);
    // m_path = "file://" + fileInfo.canonicalFilePath();

    QSparqlQuery query (queryStr, QSparqlQuery::InsertStatement);
    query.bindValue ("path", "file://" + m_path);
    query.bindValue ("size", body.size());
    qDebug() << query.preparedQueryText();

    QSparqlConnection connection("QTRACKER_DIRECT");
    if (!connection.isValid()) {
        qDebug() << "Invalid tracker connection";
        return;
    }

    QSparqlResult* result = connection.syncExec(query);
    if (result->hasError()) {
        qDebug() << "Query error";
        qDebug() << result->lastError();
    }

    save(name, body);
    startShareUi();
}
示例#2
0
QStringList FaceDatabaseProvider::resolveContact(QString &contactUrn)
{
    static QSparqlQuery query("SELECT\n"
                              " tracker:coalesce(fn:concat(nco:nameGiven(?:contact), \" \",\n"
                              "                            nco:nameFamily(?:contact)),\n"
                              "                            nco:nameGiven(?:contact),\n"
                              "                            nco:nickname(?:contact),\n"
                              "                            nco:nameFamily(?:contact),\n"
                              "                            nco:fullname(?:contact)\n"
                              "                  )\n"
                              " ?photoUrl \n"
                              "WHERE {\n"
                              " ?:contact rdf:type nco:PersonContact .\n"
                              " OPTIONAL {\n"
                              "     ?:contact nco:photo ?photoUrn .\n"
                              "     ?photoUrn nie:url ?photoUrl .\n"
                              " }\n"
                              "}\n");

    query.bindValue("contact", QUrl(contactUrn));
    QSparqlResult *result = m_sparqlConnection->syncExec(query);
    if (result->hasError() || !result->first()) {
        delete result;
        return QStringList();
    } else {
        QStringList stringResult;
        stringResult << result->value(0).toString() << result->value(1).toString();
        delete result;
        return stringResult;
    }
}
示例#3
0
int FaceDatabaseProvider::countImages(QList<XQFaceRegion> regions)
{
    QString sparqlSentence("SELECT\n"
                           "  COUNT(?urn)\n"
                           "WHERE {\n"
                           "  ?urn rdf:type nfo:Visual ;\n"
                           "       tracker:available \"true\"^^xsd:boolean .\n"
                           "  FILTER(?urn IN (%1) ).\n"
                           "}\n");
    QString urnList;
    QListIterator<XQFaceRegion> iter(regions);
    while (iter.hasNext()) {
        urnList += "<" + iter.next().sourceId() + ">";
        if (iter.hasNext()) {
            urnList += " , ";
        }
    }
    QSparqlQuery query = QSparqlQuery(sparqlSentence.arg(urnList));

    int count = 0;
    QSparqlResult *result = m_sparqlConnection->syncExec(query);
    if (!result->hasError() && result->first()) {
        count = result->value(0).toInt();
    }

    delete result;

    return count;
}
void TrackerDocumentProvider::searchFinished()
{
    QSparqlResult *r = qobject_cast<QSparqlResult*>(sender());
    if (!r->hasError()) {
        // d->model->clear();
        // Mark all current entries in the model dirty.
        d->model->setAllItemsDirty(true);
        while (r->next()) {
            // This will remove the dirty flag for already
            // existing entries.
            d->model->addItem(
                r->binding(0).value().toString(),
                r->binding(1).value().toString(),
                r->binding(1).value().toString().split('.').last(),
                r->binding(2).value().toInt(),
                r->binding(3).value().toDateTime(),
                r->binding(4).value().toString()
            );
        }
        // Remove all entries with the dirty mark.
        d->model->removeItemsDirty();
        if (!d->ready) {
            d->ready = true;
            emit readyChanged();
        }
    }

    emit countChanged();
}