Пример #1
0
void DocumentList::sendAllDocLinks()
{
    if ( d->tid != 0 ) {
    // We are in the middle of scanning, set a flag so
    // we do this when we finish our scanning
    d->needToSendAllDocLinks = true;
    return;
    }

    QString contents;
    Categories cats;
    for ( QListIterator<DocLnk> it( d->dls.children() ); it.current(); ++it ) {
    DocLnk *doc = it.current();
    QFileInfo fi( doc->file() );
    if ( !fi.exists() )
        continue;

    bool fake = !doc->linkFileKnown();
    if ( !fake ) {
        QFile f( doc->linkFile() );
        if ( f.open( IO_ReadOnly ) ) {
        QTextStream ts( &f );
        ts.setEncoding( QTextStream::UnicodeUTF8 );
        QString docLnk = ts.read();
        // Strip out the (stale) LinkFile entry
        int start = docLnk.find( "\nLinkFile = " ) + 1;
        if ( start > 0 ) {
            int end = docLnk.find( "\n", start + 1 ) + 1;
            contents += docLnk.left(start);
            contents += docLnk.mid(end);
        } else {
            contents += docLnk;
        }
        contents += "LinkFile = " + doc->linkFile() + "\n";

        f.close();
        } else
        fake = TRUE;
    }
    if (fake) {
        contents += "[Desktop Entry]\n"; // No tr
        contents += "Categories = " + // No tr
        cats.labels("Document View",doc->categories()).join(";") + "\n"; // No tr
        contents += "Name = "+doc->name()+"\n"; // No tr
        contents += "Type = "+doc->type()+"\n"; // No tr
    }
    contents += "File = "+doc->file()+"\n"; // No tr // (resolves path)
    contents += QString("Size = %1\n").arg( fi.size() ); // No tr
    }

    //odebug << "sending length " << contents.length() << "" << oendl;
#ifndef QT_NO_COP
    QCopEnvelope e( "QPE/Desktop", "docLinks(QString)" );
    e << contents;
#endif
    //odebug << "================ \n\n" << contents << "\n\n===============" << oendl;

    d->needToSendAllDocLinks = false;
}
Пример #2
0
void DocumentList::linkChanged( QString arg )
{
    odebug << "linkchanged( " << arg << " )" << oendl;

    if ( arg.isNull() || OGlobal::isAppLnkFileName( arg ) ) {
    reloadAppLnks();
    } else {

    const QList<DocLnk> &list = d->dls.children();
    QListIterator<DocLnk> it( list );
    while ( it.current() ) {
        DocLnk *doc = it.current();
        ++it;
        if ( ( doc->linkFileKnown() && doc->linkFile() == arg )
        || ( doc->fileKnown() && doc->file() == arg ) ) {
        //odebug << "found old link" << oendl;
        DocLnk* dl = new DocLnk( arg );
        // add new one if it exists and matches the mimetype
        if ( d->store( dl ) ) {
            // Existing link has been changed, send old link ref and a ref
            // to the new link
            //odebug << "change case" << oendl;
            if ( d->serverGui )
            d->serverGui->documentChanged( *doc, *dl );

        } else {
            // Link has been removed or doesn't match the mimetypes any more
            // so we aren't interested in it, so take it away from the list
            //odebug << "removal case" << oendl;
            if ( d->serverGui )
            d->serverGui->documentRemoved( *doc );

        }
        d->dls.remove( doc ); // remove old link from docLnkSet
        delete doc;
        return;
        }
    }
    // Didn't find existing link, must be new
    DocLnk* dl = new DocLnk( arg );
    if ( d->store( dl ) ) {
        // Add if it's a link we are interested in
        //odebug << "add case" << oendl;
        add( *dl );
    }

    }
}