File indexing completed on 2025-03-09 03:57:06
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2010-05-22 0007 * Description : metadata information keys 0008 * 0009 * SPDX-FileCopyrightText: 2009-2012 by Andi Clemens <andi dot clemens at gmail dot com> 0010 * 0011 * SPDX-License-Identifier: GPL-2.0-or-later 0012 * 0013 * ============================================================ */ 0014 0015 #include "metadatakeys.h" 0016 0017 // KDE includes 0018 0019 #include <klocalizedstring.h> 0020 0021 // Local includes 0022 0023 #include "coredbinfocontainers.h" 0024 #include "iteminfo.h" 0025 0026 namespace 0027 { 0028 static const QString KEY_MAKE(QLatin1String("CameraMake")); 0029 static const QString KEY_MODEL(QLatin1String("CameraModel")); 0030 static const QString KEY_LENS(QLatin1String("CameraLens")); 0031 static const QString KEY_APERTURE(QLatin1String("Aperture")); 0032 static const QString KEY_FOCALLENGTH(QLatin1String("FocalLength")); 0033 static const QString KEY_FOCALLENGTH35(QLatin1String("FocalLength35")); 0034 static const QString KEY_EXPOSURETIME(QLatin1String("ExposureTime")); 0035 static const QString KEY_EXPOSUREPROGRAM(QLatin1String("ExposureProgram")); 0036 static const QString KEY_EXPOSUREMODE(QLatin1String("ExposureMode")); 0037 static const QString KEY_SENSITIVITY(QLatin1String("Sensitivity")); 0038 static const QString KEY_FLASHMODE(QLatin1String("FlashMode")); 0039 static const QString KEY_WHITEBALANCE(QLatin1String("WhiteBalance")); 0040 static const QString KEY_WHITEBALANCECOLORTEMPERATURE(QLatin1String("WhiteBalanceColorTemp")); 0041 static const QString KEY_METERINGMODE(QLatin1String("MeteringMode")); 0042 static const QString KEY_SUBJECTDISTANCE(QLatin1String("SubjectDistance")); 0043 static const QString KEY_SUBJECTDISTANCECATEGORY(QLatin1String("SubjectDistanceCategory")); 0044 0045 static const QString KEY_ASPECTRATIO(QLatin1String("AspectRatio")); 0046 static const QString KEY_AUDIOBITRATE(QLatin1String("AudioBitRate")); 0047 static const QString KEY_AUDIOCHANNELTYPE(QLatin1String("AudioChannelType")); 0048 static const QString KEY_AUDIOCodec(QLatin1String("AudioCodec")); 0049 static const QString KEY_DURATION(QLatin1String("Duration")); 0050 static const QString KEY_FRAMERATE(QLatin1String("FrameRate")); 0051 static const QString KEY_VIDEOCODEC(QLatin1String("VideoCodec")); 0052 } 0053 0054 namespace Digikam 0055 { 0056 0057 MetadataKeys::MetadataKeys() 0058 : DbKeysCollection(i18n("Metadata Information")) 0059 { 0060 addId(KEY_MAKE, i18n("Make of the camera")); 0061 addId(KEY_MODEL, i18n("Model of the camera")); 0062 addId(KEY_LENS, i18n("Lens of the camera")); 0063 addId(KEY_APERTURE, i18n("Aperture")); 0064 addId(KEY_FOCALLENGTH, i18n("Focal length")); 0065 addId(KEY_FOCALLENGTH35, i18n("Focal length (35mm equivalent)")); 0066 addId(KEY_EXPOSURETIME, i18n("Exposure time")); 0067 addId(KEY_EXPOSUREPROGRAM, i18n("Exposure program")); 0068 addId(KEY_EXPOSUREMODE, i18n("Exposure mode")); 0069 addId(KEY_SENSITIVITY, i18n("Sensitivity")); 0070 addId(KEY_FLASHMODE, i18n("Flash mode")); 0071 addId(KEY_WHITEBALANCE, i18n("White balance")); 0072 addId(KEY_WHITEBALANCECOLORTEMPERATURE, i18n("White balance (color temperature)")); 0073 addId(KEY_METERINGMODE, i18n("Metering mode")); 0074 addId(KEY_SUBJECTDISTANCE, i18n("Subject distance")); 0075 addId(KEY_SUBJECTDISTANCECATEGORY, i18n("Subject distance (category)")); 0076 0077 addId(KEY_ASPECTRATIO, i18n("Display Aspect Ratio")); 0078 addId(KEY_AUDIOBITRATE, i18n("Audio Bit Rate")); 0079 addId(KEY_AUDIOCHANNELTYPE, i18n("Audio Channel Type")); 0080 addId(KEY_AUDIOCodec, i18n("Audio Codec (Audio Codec)")); 0081 addId(KEY_DURATION, i18n("Duration of File")); 0082 addId(KEY_FRAMERATE, i18n("Frame Rate of Video")); 0083 addId(KEY_VIDEOCODEC, i18n("Video Codec")); 0084 } 0085 0086 QString MetadataKeys::getDbValue(const QString& key, ParseSettings& settings) 0087 { 0088 ItemInfo info = ItemInfo::fromUrl(settings.fileUrl); 0089 ImageMetadataContainer container = info.imageMetadataContainer(); 0090 VideoMetadataContainer videoContainer = info.videoMetadataContainer(); 0091 QString result; 0092 0093 if (key == KEY_MAKE) 0094 { 0095 result = container.make; 0096 } 0097 else if (key == KEY_MODEL) 0098 { 0099 result = container.model; 0100 } 0101 else if (key == KEY_LENS) 0102 { 0103 result = container.lens; 0104 } 0105 else if (key == KEY_APERTURE) 0106 { 0107 result = container.aperture; 0108 } 0109 else if (key == KEY_FOCALLENGTH) 0110 { 0111 result = container.focalLength; 0112 } 0113 else if (key == KEY_FOCALLENGTH35) 0114 { 0115 result = container.focalLength35; 0116 } 0117 else if (key == KEY_EXPOSURETIME) 0118 { 0119 result = container.exposureTime; 0120 } 0121 else if (key == KEY_EXPOSUREPROGRAM) 0122 { 0123 result = container.exposureProgram; 0124 } 0125 else if (key == KEY_EXPOSUREMODE) 0126 { 0127 result = container.exposureMode; 0128 } 0129 else if (key == KEY_SENSITIVITY) 0130 { 0131 result = container.sensitivity; 0132 } 0133 else if (key == KEY_FLASHMODE) 0134 { 0135 result = container.flashMode; 0136 } 0137 else if (key == KEY_WHITEBALANCE) 0138 { 0139 result = container.whiteBalance; 0140 } 0141 else if (key == KEY_WHITEBALANCECOLORTEMPERATURE) 0142 { 0143 result = container.whiteBalanceColorTemperature; 0144 } 0145 else if (key == KEY_METERINGMODE) 0146 { 0147 result = container.meteringMode; 0148 } 0149 else if (key == KEY_SUBJECTDISTANCE) 0150 { 0151 result = container.subjectDistance; 0152 } 0153 else if (key == KEY_SUBJECTDISTANCECATEGORY) 0154 { 0155 result = container.subjectDistanceCategory; 0156 } 0157 else if (key == KEY_ASPECTRATIO) 0158 { 0159 result = videoContainer.aspectRatio; 0160 } 0161 else if (key == KEY_AUDIOBITRATE) 0162 { 0163 result = videoContainer.audioBitRate; 0164 } 0165 else if (key == KEY_AUDIOCHANNELTYPE) 0166 { 0167 result = videoContainer.audioChannelType; 0168 } 0169 else if (key == KEY_AUDIOCodec) 0170 { 0171 result = videoContainer.audioCodec; 0172 } 0173 else if (key == KEY_DURATION) 0174 { 0175 result = videoContainer.duration; 0176 } 0177 else if (key == KEY_FRAMERATE) 0178 { 0179 result = videoContainer.frameRate; 0180 } 0181 else if (key == KEY_VIDEOCODEC) 0182 { 0183 result = videoContainer.videoCodec; 0184 } 0185 0186 result.replace(QLatin1Char('/'), QLatin1Char('_')); 0187 0188 return result; 0189 } 0190 0191 } // namespace Digikam