File indexing completed on 2024-05-19 04:55:56
0001 /** 0002 * \file importconfig.h 0003 * Configuration for import dialog. 0004 * 0005 * \b Project: Kid3 0006 * \author Urs Fleisch 0007 * \date 17 Sep 2003 0008 * 0009 * Copyright (C) 2003-2024 Urs Fleisch 0010 * 0011 * This file is part of Kid3. 0012 * 0013 * Kid3 is free software; you can redistribute it and/or modify 0014 * it under the terms of the GNU General Public License as published by 0015 * the Free Software Foundation; either version 2 of the License, or 0016 * (at your option) any later version. 0017 * 0018 * Kid3 is distributed in the hope that it will be useful, 0019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0021 * GNU General Public License for more details. 0022 * 0023 * You should have received a copy of the GNU General Public License 0024 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0025 */ 0026 0027 #pragma once 0028 0029 #include <QStringList> 0030 #include "config.h" 0031 #include "generalconfig.h" 0032 #include "frame.h" 0033 0034 /** 0035 * Import configuration. 0036 */ 0037 class KID3_CORE_EXPORT ImportConfig : public StoredConfig<ImportConfig> { 0038 Q_OBJECT 0039 /** available plugins, this information is not stored in the configuration */ 0040 Q_PROPERTY(QStringList availablePlugins READ availablePlugins 0041 WRITE setAvailablePlugins NOTIFY availablePluginsChanged) 0042 /** import server */ 0043 Q_PROPERTY(int importServer READ importServer WRITE setImportServer 0044 NOTIFY importServerChanged) 0045 /** tag version to import */ 0046 Q_PROPERTY(int importDest READ importDest WRITE setImportDestInt 0047 NOTIFY importDestChanged) 0048 /** Names of import formats */ 0049 Q_PROPERTY(QStringList importFormatNames READ importFormatNames 0050 WRITE setImportFormatNames NOTIFY importFormatNamesChanged) 0051 /** regexp describing header import format */ 0052 Q_PROPERTY(QStringList importFormatHeaders READ importFormatHeaders 0053 WRITE setImportFormatHeaders NOTIFY importFormatHeadersChanged) 0054 /** regexp describing track import format */ 0055 Q_PROPERTY(QStringList importFormatTracks READ importFormatTracks 0056 WRITE setImportFormatTracks NOTIFY importFormatTracksChanged) 0057 /** selected import format */ 0058 Q_PROPERTY(int importFormatIndex READ importFormatIndex 0059 WRITE setImportFormatIndex NOTIFY importFormatIndexChanged) 0060 /** maximum allowable time difference */ 0061 Q_PROPERTY(int maxTimeDifference READ maxTimeDifference 0062 WRITE setMaxTimeDifference NOTIFY maxTimeDifferenceChanged) 0063 /** visible optional columns in import table */ 0064 Q_PROPERTY(quint64 importVisibleColumns READ importVisibleColumns 0065 WRITE setImportVisibleColumns NOTIFY importVisibleColumnsChanged) 0066 /** import window geometry */ 0067 Q_PROPERTY(QByteArray importWindowGeometry READ importWindowGeometry 0068 WRITE setImportWindowGeometry NOTIFY importWindowGeometryChanged) 0069 /** Names of import tags formats */ 0070 Q_PROPERTY(QStringList importTagsNames READ importTagsNames 0071 WRITE setImportTagsNames NOTIFY importTagsNamesChanged) 0072 /** Expressions for tag import sources */ 0073 Q_PROPERTY(QStringList importTagsSources READ importTagsSources 0074 WRITE setImportTagsSources NOTIFY importTagsSourcesChanged) 0075 /** regexp describing extraction from import tag sources */ 0076 Q_PROPERTY(QStringList importTagsExtractions READ importTagsExtractions 0077 WRITE setImportTagsExtractions NOTIFY importTagsExtractionsChanged) 0078 /** selected import tags format */ 0079 Q_PROPERTY(int importTagsIndex READ importTagsIndex WRITE setImportTagsIndex 0080 NOTIFY importTagsIndexChanged) 0081 /** names of picture sources */ 0082 Q_PROPERTY(QStringList pictureSourceNames READ pictureSourceNames 0083 WRITE setPictureSourceNames NOTIFY pictureSourceNamesChanged) 0084 /** picture source URLs */ 0085 Q_PROPERTY(QStringList pictureSourceUrls READ pictureSourceUrls 0086 WRITE setPictureSourceUrls NOTIFY pictureSourceUrlsChanged) 0087 /** selected picture source */ 0088 Q_PROPERTY(int pictureSourceIndex READ pictureSourceIndex 0089 WRITE setPictureSourceIndex NOTIFY pictureSourceIndexChanged) 0090 /** Browse cover art window geometry */ 0091 Q_PROPERTY(QByteArray browseCoverArtWindowGeometry READ browseCoverArtWindowGeometry 0092 WRITE setBrowseCoverArtWindowGeometry NOTIFY browseCoverArtWindowGeometryChanged) 0093 /** Mapping for picture URL matching */ 0094 Q_PROPERTY(QStringList matchPictureUrlMap READ matchPictureUrlStringList 0095 WRITE setMatchPictureUrlStringList NOTIFY matchPictureUrlMapChanged) 0096 /** Last directory used for import or export. */ 0097 Q_PROPERTY(QString importDir READ importDir WRITE setImportDir 0098 NOTIFY importDirChanged) 0099 /** Disabled plugins */ 0100 Q_PROPERTY(QStringList disabledPlugins READ disabledPlugins 0101 WRITE setDisabledPlugins NOTIFY disabledPluginsChanged) 0102 /** check maximum allowable time difference */ 0103 Q_PROPERTY(bool enableTimeDifferenceCheck READ enableTimeDifferenceCheck 0104 WRITE setEnableTimeDifferenceCheck NOTIFY enableTimeDifferenceCheckChanged) 0105 0106 public: 0107 /** 0108 * Constructor. 0109 */ 0110 ImportConfig(); 0111 0112 /** 0113 * Destructor. 0114 */ 0115 ~ImportConfig() override = default; 0116 0117 /** 0118 * Persist configuration. 0119 * 0120 * @param config configuration 0121 */ 0122 void writeToConfig(ISettings* config) const override; 0123 0124 /** 0125 * Read persisted configuration. 0126 * 0127 * @param config configuration 0128 */ 0129 void readFromConfig(ISettings* config) override; 0130 0131 /** Get list of available plugins. */ 0132 QStringList availablePlugins() const { return m_availablePlugins; } 0133 0134 /** Set list of available plugins. */ 0135 void setAvailablePlugins(const QStringList& availablePlugins); 0136 0137 /** Clear list of available plugins. */ 0138 void clearAvailablePlugins() { m_availablePlugins.clear(); } 0139 0140 /** Get import server. */ 0141 int importServer() const { return m_importServer; } 0142 0143 /** Set import server. */ 0144 void setImportServer(int importServer); 0145 0146 /** Get tag version to import. */ 0147 Frame::TagVersion importDest() const { return m_importDest; } 0148 0149 /** Set tag version to import. */ 0150 void setImportDest(Frame::TagVersion importDest); 0151 0152 /** Get names of import formats. */ 0153 QStringList importFormatNames() const { return m_importFormatNames; } 0154 0155 /** Set names of import formats. */ 0156 void setImportFormatNames(const QStringList& importFormatNames); 0157 0158 /** Get regexp describing header import format. */ 0159 QStringList importFormatHeaders() const { return m_importFormatHeaders; } 0160 0161 /** Set regexp describing header import format. */ 0162 void setImportFormatHeaders(const QStringList& importFormatHeaders); 0163 0164 /** Get regexp describing track import format. */ 0165 QStringList importFormatTracks() const { return m_importFormatTracks; } 0166 0167 /** Set regexp describing track import format. */ 0168 void setImportFormatTracks(const QStringList& importFormatTracks); 0169 0170 /** Get selected import format. */ 0171 int importFormatIndex() const { return m_importFormatIdx; } 0172 0173 /** Set selected import format. */ 0174 void setImportFormatIndex(int importFormatIndex); 0175 0176 /** Get maximum allowable time difference. */ 0177 int maxTimeDifference() const { return m_maxTimeDifference; } 0178 0179 /** Set maximum allowable time difference. */ 0180 void setMaxTimeDifference(int maxTimeDifference); 0181 0182 /** Get visible optional columns in import table. */ 0183 quint64 importVisibleColumns() const { return m_importVisibleColumns; } 0184 0185 /** Set visible optional columns in import table. */ 0186 void setImportVisibleColumns(quint64 importVisibleColumns); 0187 0188 /** Get import window geometry. */ 0189 QByteArray importWindowGeometry() const { return m_importWindowGeometry; } 0190 0191 /** Set import window geometry. */ 0192 void setImportWindowGeometry(const QByteArray& importWindowGeometry); 0193 0194 /** Get names of import tags formats. */ 0195 QStringList importTagsNames() const { return m_importTagsNames; } 0196 0197 /** Set names of import tags formats. */ 0198 void setImportTagsNames(const QStringList& importTagsNames); 0199 0200 /** Get expressions for tag import sources. */ 0201 QStringList importTagsSources() const { return m_importTagsSources; } 0202 0203 /** Set expressions for tag import sources. */ 0204 void setImportTagsSources(const QStringList& importTagsSources); 0205 0206 /** Get regexp describing extraction from import tag sources. */ 0207 QStringList importTagsExtractions() const { return m_importTagsExtractions; } 0208 0209 /** Set regexp describing extraction from import tag sources. */ 0210 void setImportTagsExtractions(const QStringList& importTagsExtractions); 0211 0212 /** Get selected import tags format. */ 0213 int importTagsIndex() const { return m_importTagsIdx; } 0214 0215 /** Set selected import tags format. */ 0216 void setImportTagsIndex(int importTagsIndex); 0217 0218 /** Get names of picture sources. */ 0219 QStringList pictureSourceNames() const { return m_pictureSourceNames; } 0220 0221 /** Set names of picture sources. */ 0222 void setPictureSourceNames(const QStringList& pictureSourceNames); 0223 0224 /** Get picture source URLs. */ 0225 QStringList pictureSourceUrls() const { return m_pictureSourceUrls; } 0226 0227 /** Set picture source URLs. */ 0228 void setPictureSourceUrls(const QStringList& pictureSourceUrls); 0229 0230 /** Get selected picture source. */ 0231 int pictureSourceIndex() const { return m_pictureSourceIdx; } 0232 0233 /** Set selected picture source. */ 0234 void setPictureSourceIndex(int pictureSourceIndex); 0235 0236 /** Get browse cover art window geometry. */ 0237 QByteArray browseCoverArtWindowGeometry() const { 0238 return m_browseCoverArtWindowGeometry; 0239 } 0240 0241 /** Set browse cover art window geometry. */ 0242 void setBrowseCoverArtWindowGeometry(const QByteArray& browseCoverArtWindowGeometry); 0243 0244 /** Get mapping for picture URL matching. */ 0245 QList<QPair<QString, QString>> matchPictureUrlMap() const { 0246 return m_matchPictureUrlMap; 0247 } 0248 0249 /** Set mapping for picture URL matching. */ 0250 void setMatchPictureUrlMap(const QList<QPair<QString, QString>>& matchPictureUrlMap); 0251 0252 /** Get mapping for picture URL matching as list with alternating key, values. */ 0253 QStringList matchPictureUrlStringList() const; 0254 0255 /** Set mapping for picture URL matching from list with alternating key, values. */ 0256 void setMatchPictureUrlStringList(const QStringList& lst); 0257 0258 /** Get last directory used for import or export. */ 0259 QString importDir() const { return m_importDir; } 0260 0261 /** Set last directory used for import or export. */ 0262 void setImportDir(const QString& importDir); 0263 0264 /** Get disabled plugins */ 0265 QStringList disabledPlugins() const { return m_disabledPlugins; } 0266 0267 /** Set disabled plugins */ 0268 void setDisabledPlugins(const QStringList& disabledPlugins); 0269 0270 /** Check if maximum allowable time difference check is enabled. */ 0271 bool enableTimeDifferenceCheck() const { return m_enableTimeDifferenceCheck; } 0272 0273 /** Set if maximum allowable time difference check is enabled. */ 0274 void setEnableTimeDifferenceCheck(bool enableTimeDifferenceCheck); 0275 0276 signals: 0277 /** Emitted when @a availablePlugins changed. */ 0278 void availablePluginsChanged(const QStringList& availablePlugins); 0279 0280 /** Emitted when @a importServer changed. */ 0281 void importServerChanged(int importServer); 0282 0283 /** Emitted when @a importDest changed. */ 0284 void importDestChanged(Frame::TagVersion importDest); 0285 0286 /** Emitted when @a importFormatNames changed. */ 0287 void importFormatNamesChanged(const QStringList& importFormatNames); 0288 0289 /** Emitted when @a importFormatHeaders changed. */ 0290 void importFormatHeadersChanged(const QStringList& importFormatHeaders); 0291 0292 /** Emitted when @a importFormatTracks changed. */ 0293 void importFormatTracksChanged(const QStringList& importFormatTracks); 0294 0295 /** Emitted when @a importFormatIdx changed. */ 0296 void importFormatIndexChanged(int importFormatIndex); 0297 0298 /** Emitted when @a maxTimeDifference changed. */ 0299 void maxTimeDifferenceChanged(int maxTimeDifference); 0300 0301 /** Emitted when @a importVisibleColumns changed. */ 0302 void importVisibleColumnsChanged(quint64 importVisibleColumns); 0303 0304 /** Emitted when @a importWindowGeometry changed. */ 0305 void importWindowGeometryChanged(const QByteArray& importWindowGeometry); 0306 0307 /** Emitted when @a importTagsNames changed. */ 0308 void importTagsNamesChanged(const QStringList& importTagsNames); 0309 0310 /** Emitted when @a importTagsSources changed. */ 0311 void importTagsSourcesChanged(const QStringList& importTagsSources); 0312 0313 /** Emitted when @a importTagsExtractions changed. */ 0314 void importTagsExtractionsChanged(const QStringList& importTagsExtractions); 0315 0316 /** Emitted when @a importTagsIdx changed. */ 0317 void importTagsIndexChanged(int importTagsIndex); 0318 0319 /** Emitted when @a pictureSourceNames changed. */ 0320 void pictureSourceNamesChanged(const QStringList& pictureSourceNames); 0321 0322 /** Emitted when @a pictureSourceUrls changed. */ 0323 void pictureSourceUrlsChanged(const QStringList& pictureSourceUrls); 0324 0325 /** Emitted when @a pictureSourceIdx changed. */ 0326 void pictureSourceIndexChanged(int pictureSourceIndex); 0327 0328 /** Emitted when @a browseCoverArtWindowGeometry changed. */ 0329 void browseCoverArtWindowGeometryChanged(const QByteArray& browseCoverArtWindowGeometry); 0330 0331 /** Emitted when @a matchPictureUrlMap changed. */ 0332 void matchPictureUrlMapChanged(const QList<QPair<QString, QString>>& matchPictureUrlMap); 0333 0334 /** Emitted when @a importDir changed. */ 0335 void importDirChanged(const QString& importDir); 0336 0337 /** Emitted when @a disabledPlugins changed. */ 0338 void disabledPluginsChanged(const QStringList& disabledPlugins); 0339 0340 /** Emitted when @a enableTimeDifferenceCheck changed. */ 0341 void enableTimeDifferenceCheckChanged(bool enableTimeDifferenceCheck); 0342 0343 private: 0344 friend ImportConfig& StoredConfig<ImportConfig>::instance(); 0345 0346 void setImportDestInt(int importDest) { 0347 setImportDest(Frame::tagVersionCast(importDest)); 0348 } 0349 0350 int m_importServer; 0351 Frame::TagVersion m_importDest; 0352 QStringList m_importFormatNames; 0353 QStringList m_importFormatHeaders; 0354 QStringList m_importFormatTracks; 0355 int m_importFormatIdx; 0356 int m_maxTimeDifference; 0357 quint64 m_importVisibleColumns; 0358 QByteArray m_importWindowGeometry; 0359 0360 QStringList m_importTagsNames; 0361 QStringList m_importTagsSources; 0362 QStringList m_importTagsExtractions; 0363 int m_importTagsIdx; 0364 0365 QStringList m_pictureSourceNames; 0366 QStringList m_pictureSourceUrls; 0367 int m_pictureSourceIdx; 0368 QByteArray m_browseCoverArtWindowGeometry; 0369 QList<QPair<QString, QString>> m_matchPictureUrlMap; 0370 0371 QString m_importDir; 0372 0373 QStringList m_disabledPlugins; 0374 0375 QStringList m_availablePlugins; 0376 bool m_enableTimeDifferenceCheck; 0377 0378 /** Index in configuration storage */ 0379 static int s_index; 0380 };