void ImageScanner::scanFile(ScanMode mode) { m_scanMode = mode; if (m_scanMode == ModifiedScan) { if (m_scanInfo.category == DatabaseItem::Image) { scanImageInformation(); scanImageHistoryIfModified(); } } else { if (m_scanInfo.category == DatabaseItem::Image) { scanImageInformation(); if (m_hasMetadata) { scanImageMetadata(); scanImagePosition(); scanImageComments(); scanImageCopyright(); scanIPTCCore(); scanTags(); scanImageHistory(); } } else if (m_scanInfo.category == DatabaseItem::Video) { scanVideoFile(); } else if (m_scanInfo.category == DatabaseItem::Audio) { scanAudioFile(); } else if (m_scanInfo.category == DatabaseItem::Other) { // unsupported } } }
void ItemScanner::scanFile(ScanMode mode) { d->scanMode = mode; if (d->scanMode == ModifiedScan) { if (d->scanInfo.category == DatabaseItem::Image) { scanItemInformation(); scanImageHistoryIfModified(); } else if (d->scanInfo.category == DatabaseItem::Video || d->scanInfo.category == DatabaseItem::Audio) { scanVideoInformation(); // NOTE: Here, we only scan fields which can be expected to have changed, when we detect a change of file data. // It seems to me that at the moment video metadata contains such fields (which may change after editing). // In contrast, with photos, ImageMetadata contains fields which describe the moment of taking the photo, // which means they don't change. if (d->hasMetadata) { scanVideoMetadata(); } } else if (d->scanInfo.category == DatabaseItem::Other) { // unsupported } } else { if (d->scanMode == Rescan && d->scanInfo.id != -1 && MetaEngineSettings::instance()->settings().clearMetadataIfRescan) { CoreDbAccess().db()->clearMetadataFromImage(d->scanInfo.id); } if (d->scanInfo.category == DatabaseItem::Image) { scanItemInformation(); if (d->hasMetadata) { scanImageMetadata(); scanItemPosition(); scanItemComments(); scanItemCopyright(); scanIPTCCore(); scanTags(); scanFaces(); scanImageHistory(); scanBalooInfo(); } } else if (d->scanInfo.category == DatabaseItem::Video || d->scanInfo.category == DatabaseItem::Audio) { scanVideoInformation(); if (d->hasMetadata) { scanVideoMetadata(); scanItemPosition(); scanItemComments(); scanItemCopyright(); scanIPTCCore(); scanTags(); } } else if (d->scanInfo.category == DatabaseItem::Other) { // unsupported } } }