On Wednesday, November 07, 2012 07:28:59 AM Radek Polak wrote: > For now i have two source and build trees - with 4.7 qt and with 4.8 and > putting some qDebug() to figure out where the problem exactly is.
Attached is patch with some debug writes. You can see that 4.7 and 4.8 generate different QContent - note the values for Role and Filename: ------------------------>% for Qt 4.7: QMimeType::fromFileName "/opt/qtmoko/apps/Settings/gtalksettings.desktop" QMimeType::fromFileName 1 ======================== QMimeType::loadExtensions filename= "/etc/mime.types" QMimeType::fromFileName extension= "desktop" QMimeType::fromFileName type.mimeId= "" QMimeType::fromFileName 2 QMimeType::fromFileName 4 QSqlContentStore::installContent mimeType= ( MimeType: application/octet- stream ) ===== content QContent( QContentEngine( Id: "ffffffff|ffffffffffffffff" Name: "gtalksettings" FileName: "" MimeType: "application/octet-stream" DrmState: 0 Role: 2 IconName: "" LastUpdated: QDateTime("") ) ) QSqlContentStore::contentFromFileName 9 QSqlContentStore::contentFromFileName 0 QSqlContentStore::contentFromFileName 1 ------------------------>% for Qt 4.8: QMimeType::fromFileName "/opt/qtmoko/apps/Settings/gtalksettings.desktop" QMimeType::fromFileName 1 ======================== QMimeType::loadExtensions filename= "/etc/mime.types" QMimeType::fromFileName extension= "desktop" QMimeType::fromFileName type.mimeId= "" QMimeType::fromFileName 2 QMimeType::fromFileName 4 QSqlContentStore::installContent mimeType= ( MimeType: application/octet- stream ) ===== content QContent( QContentEngine( Id: "ffffffff|ffffffffffffffff" Name: "gtalksettings.desktop" FileName: "/opt/qtmoko/apps/Settings/gtalksettings.desktop" MimeType: "application/octet-stream" DrmState: 0 Role: 1 IconName: "" LastUpdated: QDateTime("Thu Jan 1 00:00:00 1970") ) ) QSqlContentStore::contentFromFileName 9 QSqlContentStore::contentFromFileName 0 QSqlContentStore::contentFromFileName 1 Regards Radek
diff --git a/qtopiacore/qt b/qtopiacore/qt index 1fe5204..4a7a2a1 160000 --- a/qtopiacore/qt +++ b/qtopiacore/qt @@ -1 +1 @@ -Subproject commit 1fe520458c815019ef14d5f0c99e2a0d49f28eef +Subproject commit 4a7a2a18e9871841ccf4606111b724c6e63dd2fd-dirty diff --git a/src/3rdparty/applications/yberbrowser b/src/3rdparty/applications/yberbrowser --- a/src/3rdparty/applications/yberbrowser +++ b/src/3rdparty/applications/yberbrowser @@ -1 +1 @@ -Subproject commit 60f53c930f71ec11e6e436e6a4e3da41a3e0ec2e +Subproject commit 60f53c930f71ec11e6e436e6a4e3da41a3e0ec2e-dirty diff --git a/src/libraries/qtopia/qcontent.cpp b/src/libraries/qtopia/qcontent.cpp index 690562a..49cd0ef 100644 --- a/src/libraries/qtopia/qcontent.cpp +++ b/src/libraries/qtopia/qcontent.cpp @@ -459,8 +459,10 @@ void QContent::uninstall( QContentId id ) void QContent::installBatch( const QList<QFileInfo> &batch ) { QList< QContent > content; - foreach(const QFileInfo &fi, batch) + foreach(const QFileInfo &fi, batch) { + qDebug() << "QContent::installBatch fi.absoluteFilePath=" << fi.absoluteFilePath(); content.append( QContentStore::instance()->contentFromFileName( fi.absoluteFilePath(), QContentStore::Construct ) ); + } QContentStore::instance()->batchCommitContent( content ); } diff --git a/src/libraries/qtopia/qfscontentengine.cpp b/src/libraries/qtopia/qfscontentengine.cpp index 3b49574..25e188a 100644 --- a/src/libraries/qtopia/qfscontentengine.cpp +++ b/src/libraries/qtopia/qfscontentengine.cpp @@ -185,6 +185,8 @@ bool QFSContentEngine::execute( const QStringList &arguments ) const */ QIODevice *QFSContentEngine::open( QIODevice::OpenMode mode ) { + qDebug() << "QFSContentEngine::open fileName=" << fileName(); + if( name().isEmpty() ) return 0; @@ -192,6 +194,8 @@ QIODevice *QFSContentEngine::open( QIODevice::OpenMode mode ) { if( mode & QIODevice::WriteOnly ) { + qDebug() << "QFSContentEngine::open 1"; + if( mimeType().isNull() ) setMimeType( QMimeType::fromFileName( name() ) ); @@ -213,7 +217,8 @@ QIODevice *QFSContentEngine::open( QIODevice::OpenMode mode ) } QFile *file = new QFile( fileName() ); - + qDebug() << "QFSContentEngine::open 2"; + if( !file->open( mode ) ) { setError( file->errorString() ); diff --git a/src/libraries/qtopia/qmimetype.cpp b/src/libraries/qtopia/qmimetype.cpp index f6306cc..b3fc699 100644 --- a/src/libraries/qtopia/qmimetype.cpp +++ b/src/libraries/qtopia/qmimetype.cpp @@ -180,6 +180,8 @@ QMimeType QMimeType::fromExtension( const QString &extension ) */ QMimeType QMimeType::fromFileName( const QString &fileName ) { + qDebug() << "QMimeType::fromFileName" << fileName; + QMimeType type; int slashIndex = fileName.lastIndexOf( QLatin1Char( '/' ) ); @@ -188,23 +190,34 @@ QMimeType QMimeType::fromFileName( const QString &fileName ) if( dotIndex > slashIndex ) { + qDebug() << "QMimeType::fromFileName 1"; if(loadedTimes()->count() == 0) loadExtensions(); QString extension = fileName.mid( dotIndex + 1 ).toLower(); + qDebug() << "QMimeType::fromFileName extension=" << extension; type.mimeId = typeFor()->value( extension ); + + qDebug() << "QMimeType::fromFileName type.mimeId=" << type.mimeId; } if( type.mimeId.isEmpty() ) { + qDebug() << "QMimeType::fromFileName 2"; const char elfMagic[] = { '\177', 'E', 'L', 'F', '\0' }; QFile ef( fileName ); if ( ef.size() > 5 && ef.open( QIODevice::ReadOnly ) && ef.peek(5) == elfMagic) // try to find from magic + { + qDebug() << "QMimeType::fromFileName 3"; type.mimeId = QLatin1String("application/x-executable"); // could be a shared library or an exe + } else + { + qDebug() << "QMimeType::fromFileName 4"; type.mimeId = QLatin1String("application/octet-stream"); + } } return type; @@ -404,6 +417,8 @@ static QString nextString( const char *line, int& posn ) */ void QMimeType::loadExtensions(const QString& filename) { + qDebug() << "======================== QMimeType::loadExtensions filename=" << filename; + QMutexLocker staticsGuard(&staticsGuardMutex); QFile file(filename); if ( file.open(QIODevice::ReadOnly) ) { diff --git a/src/libraries/qtopia/qsqlcontentstore.cpp b/src/libraries/qtopia/qsqlcontentstore.cpp index e167430..6057ad0 100644 --- a/src/libraries/qtopia/qsqlcontentstore.cpp +++ b/src/libraries/qtopia/qsqlcontentstore.cpp @@ -122,6 +122,8 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF return QContent(); } + qDebug() << "QSqlContentStore::contentFromFileName 0"; + if( lookup & Lookup ) { static const QString selectString = QLatin1String( @@ -131,14 +133,20 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF "left join mimeTypeLookup on content.mType = mimeTypeLookup.pKey " "WHERE path = :path and locationLookup.location = :location" ); + qDebug() << "QSqlContentStore::contentFromFileName 1"; + if( fileName.endsWith( QLatin1String( ".desktop" ), Qt::CaseInsensitive ) ) { + qDebug() << "QSqlContentStore::contentFromFileName 2"; QContent content = desktopContent( fileName ); + qDebug() << "QSqlContentStore::contentFromFileName 3"; if( !content.isNull() ) return content; } + qDebug() << "QSqlContentStore::contentFromFileName 4"; + int slash = fileName.lastIndexOf( '/' ); if( slash == -1 ) @@ -178,8 +186,10 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF QContent content; + qDebug() << "QSqlContentStore::contentFromFileName 5"; if( lookup & Construct ) { + qDebug() << "QSqlContentStore::contentFromFileName 6"; QContentEngine *engine = new QFSContentEngine; engine->setFileName( fileName ); @@ -188,15 +198,22 @@ QContent QSqlContentStore::contentFromFileName( const QString &fileName, LookupF if( !(lookup & Commit) ) { + qDebug() << "QSqlContentStore::contentFromFileName 7" << c; if( (engine = installContent( &c ) ) != 0 ) + { content = QContent( engine ); + qDebug() << "===== content " << content; + } } else if( commitContent( &c ) ) { + qDebug() << "QSqlContentStore::contentFromFileName 8"; content = c; } } + qDebug() << "QSqlContentStore::contentFromFileName 9"; + if( content.id() != QContent::InvalidId ) QContentCache::instance()->cache( content ); @@ -218,6 +235,7 @@ QContent QSqlContentStore::contentFromEngineType( const QString &engineType ) */ bool QSqlContentStore::commitContent( QContent *content ) { + qDebug() << "QSqlContentStore::commitContent" << *content; qLog(DocAPI) << __PRETTY_FUNCTION__ << *content; #ifndef QTOPIA_CONTENT_INSTALLER @@ -230,20 +248,25 @@ bool QSqlContentStore::commitContent( QContent *content ) #endif if( content->id() == QContent::InvalidId ) { + qDebug() << "QSqlContentStore::commitContent 1"; + QContentEngine *engine = 0; if( content->lastUpdated().isNull() ) { + qDebug() << "QSqlContentStore::commitContent 2"; if( (engine = installContent( content )) == 0 ) return false; } else if( !contentEngine( content )->isOutOfDate() || (engine = refreshContent( content )) == 0 ) { + qDebug() << "QSqlContentStore::commitContent 3"; engine = contentEngine( content ); } if( engine && insertContent( engine, QtopiaSql::instance()->databaseIdForPath( engine->fileName() ) ) ) { + qDebug() << "QSqlContentStore::commitContent 4"; *content = QContent( engine ); QContentCache::instance()->cache( *content ); @@ -252,6 +275,7 @@ bool QSqlContentStore::commitContent( QContent *content ) } else { + qDebug() << "QSqlContentStore::commitContent 5"; if( engine && !engine->ref ) delete engine; @@ -260,11 +284,13 @@ bool QSqlContentStore::commitContent( QContent *content ) } else { + qDebug() << "QSqlContentStore::commitContent 6"; QContentEngine *engine = 0; if( ( content->name().isNull() || content->type().isNull() || contentEngine( content )->isOutOfDate() ) && (engine = refreshContent( content )) != 0 ) { + qDebug() << "QSqlContentStore::commitContent 7"; *content = QContent( engine ); } @@ -272,6 +298,7 @@ bool QSqlContentStore::commitContent( QContent *content ) if( dbId == content->id().first ) { + qDebug() << "QSqlContentStore::commitContent 8"; if( updateContent( contentEngine( content ) ) ) { QContentCache::instance()->cache( *content ); @@ -283,12 +310,14 @@ bool QSqlContentStore::commitContent( QContent *content ) } else if( dbId == quint32(-1) ) { + qDebug() << "QSqlContentStore::commitContent 9"; uninstallContent( content->id() ); return false; } else { + qDebug() << "QSqlContentStore::commitContent 10"; QContentEngine *engine = contentEngine( content ); ensurePropertiesLoaded( engine ); @@ -298,6 +327,7 @@ bool QSqlContentStore::commitContent( QContent *content ) if( insertContent( engine, dbId ) ) { + qDebug() << "QSqlContentStore::commitContent 11"; QContentCache::instance()->cache( *content ); return true; @@ -368,19 +398,26 @@ QIODevice *QSqlContentStore::openContent( QContent *content, QIODevice::OpenMode */ QContentEngine *QSqlContentStore::installContent( QContent *content ) { + qDebug() << "QSqlContentStore::installContent" << *content; + QContentEngine *engine = QContentEngine::createEngine( *content ); if( engine ) return engine; QString fileName = content->fileName(); + qDebug() << "QSqlContentStore::installContent fileName=" << fileName; if( !fileName.isEmpty() ) { + qDebug() << "QSqlContentStore::installContent content->type=" << content->type(); + QMimeType type = content->type().isEmpty() ? QMimeType::fromFileName( fileName ) : QMimeType::fromId( content->type() ); + qDebug() << "QSqlContentStore::installContent mimeType=" << type; + QString name = deriveName( fileName, type ); QFileInfo fileInfo(fileName); @@ -1322,6 +1359,8 @@ QContentList QSqlContentStore::contentFromIds( const QContentIdList &contentIds */ QContent QSqlContentStore::contentFromQuery( const QSqlQuery &query, QtopiaDatabaseId dbId ) const { + qDebug() << "QSqlContentStore::contentFromQuery"; + QContent::DrmState drmState = convertDrmState( query.value( 3 ).toInt() ); #ifndef QTOPIA_CONTENT_INSTALLER @@ -1334,6 +1373,19 @@ QContent QSqlContentStore::contentFromQuery( const QSqlQuery &query, QtopiaDatab setId( QContentId( dbId, query.value( 0 ).toULongLong() ), engine ); + qDebug() << "query.value( 1 ).toString()=" << query.value( 1 ).toString(); + qDebug() << "query.value( 2 ).toString()=" << query.value( 2 ).toString(); + qDebug() << "query.value( 4 ).toString()=" << query.value( 4 ).toString(); + qDebug() << "query.value( 5 ).toString()=" << query.value( 5 ).toString(); + qDebug() << "query.value( 6 ).toString()=" << query.value( 6 ).toString(); + qDebug() << "query.value( 7 ).toString()=" << query.value( 7 ).toString(); + qDebug() << "query.value( 8 ).toString()=" << query.value( 8 ).toString(); + + qDebug() << "QMimeType::fromId( query.value( 2 ).toString()=" << QMimeType::fromId( query.value( 2 ).toString()); + qDebug() << "constructFileName=" << constructFileName( + query.value( 5 ).toString(), + query.value( 6 ).toString() ); + engine->setName( query.value( 1 ).toString() ); engine->setMimeType( QMimeType::fromId( query.value( 2 ).toString() ) ); engine->setFileName( constructFileName( @@ -1700,6 +1752,8 @@ bool QSqlContentStore::removeProperties( QContentId id ) */ QContent QSqlContentStore::desktopContent( const QString &fileName ) { + qDebug() << "QSqlContentStore::desktopContent fileName=" << fileName; + static const QString selectString = QLatin1String( "SELECT content.cid, uiName, mimeTypeLookup.mimeType, drmFlags, docStatus, path, " "locationLookup.location as directory, icon, lastUpdated " @@ -1730,7 +1784,9 @@ QContent QSqlContentStore::desktopContent( const QString &fileName ) if( selectQuery.first() ) { + qDebug() << "QSqlContentStore::desktopContent 1"; QContent content = contentFromQuery( selectQuery, dbId ); + qDebug() << "QSqlContentStore::desktopContent 2"; QContentCache::instance()->cache( content ); diff --git a/src/server/core_server/contentserver.cpp b/src/server/core_server/contentserver.cpp index 0644927..aab48c6 100644 --- a/src/server/core_server/contentserver.cpp +++ b/src/server/core_server/contentserver.cpp @@ -288,7 +288,9 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority) QContentFilter removedPaths; foreach (QString path, paths) { + qDebug() << "path=" << path; if (!QFile::exists(path)) { + qDebug() << "1"; QContentIdList contentIds = QContentSet(QContentFilter::Directory, path).itemIds(); foreach (QContentId contentId, contentIds) @@ -306,6 +308,8 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority) QStringList fileNames = QDir(dirPath).entryList( QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); + qDebug() << "fileNames=" << fileNames; + qSort(fileNames.begin(), fileNames.end(), binaryStringLessThan); int db = 0; @@ -345,7 +349,9 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority) ++db; } else if (comparison > 0) { + qDebug() << "2"; install(QFileInfo(dirPath + fsName)); + qDebug() << "3"; ++fs; } @@ -353,8 +359,11 @@ void DirectoryScanner::scanPath(const QString& path, int depth, int priority) while(db < dbCount) uninstall(dirContents.contentId(db++)); - while(fs < fsCount) + while(fs < fsCount) { + qDebug() << "4"; install(QFileInfo(dirPath + fileNames.at(fs++))); + qDebug() << "5"; + } if (depth < MaxSearchDepth) foreach (QString fileName, QDir(dirPath).entryList(QDir::Dirs | QDir::NoDotAndDotDot)) @@ -417,11 +426,15 @@ QString DirectoryScanner::thumbnailPath(const QString &thumbnailDir, const QStri void DirectoryScanner::install(const QFileInfo &fi) { + qDebug() << "DirectoryScanner::install" << fi.fileName(); if (!QtopiaSql::instance()->isDatabase(fi.absoluteFilePath())) { + qDebug() << "DirectoryScanner::install 1"; m_pendingInstalls.append(fi); if (m_pendingInstalls.count() == docsPerShot) { + qDebug() << "DirectoryScanner::install 2"; QContent::installBatch(m_pendingInstalls); + qDebug() << "DirectoryScanner::install 3"; m_pendingInstalls.clear(); }
_______________________________________________ Openmoko community mailing list community@lists.openmoko.org http://lists.openmoko.org/mailman/listinfo/community