void ImportExport::XMLHandler::writeCategories( QDomDocument doc, QDomElement root, const DB::ImageInfoPtr& info ) { QDomElement elm = doc.createElement( QString::fromLatin1("options") ); bool anyAtAll = false; QStringList grps = info->availableCategories(); Q_FOREACH(const QString &name, grps ) { QDomElement opt = doc.createElement( QString::fromLatin1("option") ); opt.setAttribute( QString::fromLatin1("name"), name ); StringSet items = info->itemsOfCategory(name); bool any = false; Q_FOREACH( const QString &item, items ) { QDomElement val = doc.createElement( QString::fromLatin1("value") ); val.setAttribute( QString::fromLatin1("value"), item ); opt.appendChild( val ); any = true; anyAtAll = true; }
ImportExport::ClashInfo ImportExport::MD5CheckPage::clashes(const ImportSettings& settings) { QStringList myCategories; Q_FOREACH( const CategoryMatchSetting& matcher, settings.categoryMatchSetting() ) { myCategories.append( matcher.DBCategoryName() ); } ClashInfo res( myCategories ); DB::ImageInfoList list = settings.selectedImages(); Q_FOREACH( DB::ImageInfoPtr info, list ) { if ( !DB::ImageDB::instance()->md5Map()->contains(info->MD5Sum()) ) continue; const DB::FileName name = DB::ImageDB::instance()->md5Map()->lookup(info->MD5Sum()); DB::ImageInfoPtr other = DB::ImageDB::instance()->info(name); if ( info->label() != other->label() ) res.label = true; if ( info->description() != other->description() ) res.description = true; if ( info->angle() != other->angle() ) res.orientation = true; if (info->date() != other->date() ) res.date = true; Q_FOREACH( const CategoryMatchSetting& matcher, settings.categoryMatchSetting() ) { const QString XMLFileCategory = matcher.XMLCategoryName(); const QString DBCategory = matcher.DBCategoryName(); if ( mapCategoriesToDB( matcher, info->itemsOfCategory( XMLFileCategory ) ) != other->itemsOfCategory( DBCategory ) ) res.categories[DBCategory] = true; } } return res; }