Update BarcodeType enum in HistoryEnums.swift to include additional barcode formats; enhance ScannerView logic to differentiate between QR codes and barcodes, improving data handling and user feedback during scanning.

main
v504 2 months ago
parent 1fdc94e103
commit f23fb833f9

@ -7,7 +7,13 @@ public enum BarcodeType: String, CaseIterable {
case ean8 = "EAN-8" case ean8 = "EAN-8"
case upce = "UPC-E" case upce = "UPC-E"
case code39 = "Code 39" case code39 = "Code 39"
case code39Checksum = "Code 39 (Checksum)"
case code39FullASCII = "Code 39 (Full ASCII)"
case code39FullASCIIChecksum = "Code 39 (Full ASCII + Checksum)"
case code93 = "Code 93"
case code93i = "Code 93i"
case code128 = "Code 128" case code128 = "Code 128"
case itf14 = "ITF-14"
case pdf417 = "PDF417" case pdf417 = "PDF417"
var displayName: String { var displayName: String {
@ -18,8 +24,12 @@ public enum BarcodeType: String, CaseIterable {
switch self { switch self {
case .ean13, .ean8, .upce: case .ean13, .ean8, .upce:
return "barcode" return "barcode"
case .code39, .code128: case .code39, .code39Checksum, .code39FullASCII, .code39FullASCIIChecksum:
return "barcode.viewfinder" return "barcode.viewfinder"
case .code93, .code93i, .code128:
return "barcode.viewfinder"
case .itf14:
return "barcode"
case .pdf417: case .pdf417:
return "qrcode.viewfinder" return "qrcode.viewfinder"
} }

@ -237,19 +237,30 @@ struct ScannerView: View {
historyItem.id = UUID() historyItem.id = UUID()
historyItem.content = detectedCode.content historyItem.content = detectedCode.content
historyItem.dataType = DataType.qrcode.rawValue
historyItem.dataSource = DataSource.scanned.rawValue historyItem.dataSource = DataSource.scanned.rawValue
historyItem.createdAt = Date() historyItem.createdAt = Date()
historyItem.isFavorite = false historyItem.isFavorite = false
// //
if detectedCode.type.lowercased().contains("qr") || detectedCode.type.lowercased().contains("二维码") { let isQRCode = detectedCode.type.lowercased().contains("qr") ||
detectedCode.type.lowercased().contains("二维码") ||
detectedCode.type.lowercased().contains("data matrix") ||
detectedCode.type.lowercased().contains("aztec")
if isQRCode {
//
historyItem.dataType = DataType.qrcode.rawValue
// //
let parsedData = QRCodeParser.parseQRCode(detectedCode.content) let parsedData = QRCodeParser.parseQRCode(detectedCode.content)
historyItem.qrCodeType = parsedData.type.rawValue historyItem.qrCodeType = parsedData.type.rawValue
historyItem.barcodeType = nil //
logInfo("📱 创建二维码历史记录,类型: \(detectedCode.type)", className: "ScannerView")
} else { } else {
// //
historyItem.dataType = DataType.barcode.rawValue
historyItem.barcodeType = detectedCode.type historyItem.barcodeType = detectedCode.type
historyItem.qrCodeType = nil //
logInfo("📊 创建条形码历史记录,类型: \(detectedCode.type)", className: "ScannerView")
} }
// Core Data // Core Data

Loading…
Cancel
Save