45
45
m_enableTimeDifferenceCheck(true), m_maxTimeDifference(3),
46
46
m_importWindowWidth(-1), m_importWindowHeight(-1),
47
47
m_exportSrcV1(true), m_exportFormatIdx(0),
48
m_exportWindowWidth(-1), m_exportWindowHeight(-1)
48
m_exportWindowWidth(-1), m_exportWindowHeight(-1),
49
m_pictureSourceIdx(0),
50
m_browseCoverArtWindowWidth(-1), m_browseCoverArtWindowHeight(-1)
51
53
* Preset import format regular expressions.
204
206
m_exportFormatTracks.append(" <text><![CDATA[%{track}. %{title}]]></text>");
205
207
m_exportFormatTrailers.append(" </content>\\n</kover>");
209
m_exportFormatNames.append("Technical Details");
210
m_exportFormatHeaders.append("File\\tBitrate\\tVBR\\tDuration\\tSamplerate\\tChannels\\tMode\\tCodec");
211
m_exportFormatTracks.append("%{file}\\t%{bitrate}\\t%{vbr}\\t%{duration}\\t%{samplerate}\\t%{channels}\\t%{mode}\\t%{codec}");
212
m_exportFormatTrailers.append("");
207
214
m_exportFormatNames.append("Custom Format");
208
215
m_exportFormatHeaders.append("");
209
216
m_exportFormatTracks.append("");
210
217
m_exportFormatTrailers.append("");
219
m_pictureSourceNames.append("Google Images");
220
m_pictureSourceUrls.append("http://images.google.com/images?q=%u{artist}%20%u{album}");
221
m_pictureSourceNames.append("Yahoo Images");
222
m_pictureSourceUrls.append("http://images.search.yahoo.com/search/images?ei=UTF-8&p=%u{artist}%20%u{album}");
223
m_pictureSourceNames.append("Amazon");
224
m_pictureSourceUrls.append("http://www.amazon.com/s?search-alias=aps&field-keywords=%u{artist}+%u{album}");
225
m_pictureSourceNames.append("Amazon.co.uk");
226
m_pictureSourceUrls.append("http://www.amazon.co.uk/s?search-alias=aps&field-keywords=%u{artist}+%u{album}");
227
m_pictureSourceNames.append("Amazon.de");
228
m_pictureSourceUrls.append("http://www.amazon.de/s?search-alias=aps&field-keywords=%u{artist}+%u{album}");
229
m_pictureSourceNames.append("Amazon.fr");
230
m_pictureSourceUrls.append("http://www.amazon.fr/s?search-alias=aps&field-keywords=%u{artist}+%u{album}");
231
m_pictureSourceNames.append("MusicBrainz");
232
m_pictureSourceUrls.append("http://musicbrainz.org/search/textsearch.html?query=%u{artist}+%u{album}&type=release");
233
m_pictureSourceNames.append("Discogs");
234
m_pictureSourceUrls.append("http://www.discogs.com/search?q=%u{artist}+%u{album}");
235
m_pictureSourceNames.append("CD Universe");
236
m_pictureSourceUrls.append("http://www.cduniverse.com/sresult.asp?HT_Search_Info=%u{artist}+%u{album}");
237
m_pictureSourceNames.append("Coveralia");
238
m_pictureSourceUrls.append("http://www.coveralia.com/mostrar.php?bus=%u{artist}%20%u{album}&bust=2");
239
m_pictureSourceNames.append("FreeCovers");
240
m_pictureSourceUrls.append("http://www.freecovers.net/search.php?search=%u{artist}+%u{album}&cat=4");
241
m_pictureSourceNames.append("CoverHunt");
242
m_pictureSourceUrls.append("http://www.coverhunt.com/search/%u{artist}+%u{album}");
243
m_pictureSourceNames.append("SlothRadio");
244
m_pictureSourceUrls.append("http://www.slothradio.com/covers/?artist=%u{artist}&album=%u{album}");
245
m_pictureSourceNames.append("Albumart");
246
m_pictureSourceUrls.append("http://www.albumart.org/index.php?srchkey=%u{artist}+%u{album}&searchindex=Music");
247
m_pictureSourceNames.append("Yalp!");
248
m_pictureSourceUrls.append("http://search.yalp.alice.it/search/search.html?txtToSearch=%u{artist}%20%u{album}");
249
m_pictureSourceNames.append("HMV");
250
m_pictureSourceUrls.append("http://hmv.com/hmvweb/advancedSearch.do?searchType=2&artist=%u{artist}&title=%u{album}");
251
m_pictureSourceNames.append("CD Baby");
252
m_pictureSourceUrls.append("http://cdbaby.com/found?artist=%u{artist}&album=%u{album}");
253
m_pictureSourceNames.append("Jamendo");
254
m_pictureSourceUrls.append("http://www.jamendo.com/en/search/all/%u{artist}%20%u{album}");
255
m_pictureSourceNames.append("Custom Source");
256
m_pictureSourceUrls.append("");
258
m_matchPictureUrlMap["http://images.google.com/.*imgurl=([^&]+)&.*"] =
260
m_matchPictureUrlMap["http://rds.yahoo.com/.*%26imgurl=((?:[^%]|%(?!26))+).*"] =
261
"http%253A%252F%252F\\1";
262
m_matchPictureUrlMap["http://rds.yahoo.com/.*&imgurl=([^&]+)&.*"] =
264
m_matchPictureUrlMap["http://(?:www.)?amazon.(?:com|co.uk|de|fr).*/(?:dp|ASIN|images|product|-)/([A-Z0-9]+).*"] =
265
"http://images.amazon.com/images/P/\\1.01._SCLZZZZZZZ_.jpg";
266
m_matchPictureUrlMap["http://musicbrainz.org/misc/redirects/.*&asin=([A-Z0-9]+).*"] =
267
"http://images.amazon.com/images/P/\\1.01._SCLZZZZZZZ_.jpg";
268
m_matchPictureUrlMap["http://www.freecovers.net/view/(\\d+)/([0-9a-f]+)/.*"] =
269
"http://www.freecovers.net/preview/\\1/\\2/big.jpg";
270
m_matchPictureUrlMap["http://cdbaby.com/cd/(\\w)(\\w)(\\w+)"] =
271
"http://cdbaby.name/\\1/\\2/\\1\\2\\3.jpg";
272
m_matchPictureUrlMap["http://www.jamendo.com/en/album/(\\d+)"] =
273
"http://imgjam.com/albums/\\1/covers/1.0.jpg";
249
312
cfg.writeEntry("ExportFormatIdx", m_exportFormatIdx);
250
313
cfg.writeEntry("ExportWindowWidth", m_exportWindowWidth);
251
314
cfg.writeEntry("ExportWindowHeight", m_exportWindowHeight);
316
cfg.writeEntry("PictureSourceNames", m_pictureSourceNames);
317
cfg.writeEntry("PictureSourceUrls", m_pictureSourceUrls);
318
cfg.writeEntry("PictureSourceIdx", m_pictureSourceIdx);
319
cfg.writeEntry("MatchPictureUrlMapKeys", m_matchPictureUrlMap.keys());
320
cfg.writeEntry("MatchPictureUrlMapValues", m_matchPictureUrlMap.values());
321
cfg.writeEntry("BrowseCoverArtWindowWidth", m_browseCoverArtWindowWidth);
322
cfg.writeEntry("BrowseCoverArtWindowHeight", m_browseCoverArtWindowHeight);
253
324
config->beginGroup("/" + m_group);
254
325
config->QCM_writeEntry("/ImportServer", m_importServer);
271
342
config->QCM_writeEntry("/ExportWindowWidth", m_exportWindowWidth);
272
343
config->QCM_writeEntry("/ExportWindowHeight", m_exportWindowHeight);
345
config->QCM_writeEntry("/PictureSourceNames", m_pictureSourceNames);
346
config->QCM_writeEntry("/PictureSourceUrls", m_pictureSourceUrls);
347
config->QCM_writeEntry("/PictureSourceIdx", m_pictureSourceIdx);
348
config->QCM_writeEntry("/MatchPictureUrlMapKeys", m_matchPictureUrlMap.keys());
349
config->QCM_writeEntry("/MatchPictureUrlMapValues", m_matchPictureUrlMap.values());
350
config->QCM_writeEntry("/BrowseCoverArtWindowWidth", m_browseCoverArtWindowWidth);
351
config->QCM_writeEntry("/BrowseCoverArtWindowHeight", m_browseCoverArtWindowHeight);
274
353
config->endGroup();
314
393
m_exportWindowWidth = cfg.KCM_readNumEntry("ExportWindowWidth", -1);
315
394
m_exportWindowHeight = cfg.KCM_readNumEntry("ExportWindowHeight", -1);
396
picNames = cfg.KCM_readListEntry("PictureSourceNames");
397
picUrls = cfg.KCM_readListEntry("PictureSourceUrls");
398
m_pictureSourceIdx = cfg.KCM_readNumEntry("PictureSourceIdx", m_pictureSourceIdx);
399
QStringList keys = cfg.KCM_readListEntry("MatchPictureUrlMapKeys");
400
QStringList values = cfg.KCM_readListEntry("MatchPictureUrlMapValues");
401
if (!keys.empty() && !values.empty()) {
402
QStringList::Iterator itk, itv;
403
m_matchPictureUrlMap.clear();
404
for (itk = keys.begin(), itv = values.begin();
405
itk != keys.end() && itv != values.end();
407
m_matchPictureUrlMap[*itk] = *itv;
410
m_browseCoverArtWindowWidth = cfg.KCM_readNumEntry("BrowseCoverArtWindowWidth", -1);
411
m_browseCoverArtWindowHeight = cfg.KCM_readNumEntry("BrowseCoverArtWindowHeight", -1);
317
413
// KConfig seems to strip empty entries from the end of the string lists,
318
414
// so we have to append them again.
319
415
unsigned numNames = names.size();
347
445
m_exportWindowWidth = config->QCM_readNumEntry("/ExportWindowWidth", -1);
348
446
m_exportWindowHeight = config->QCM_readNumEntry("/ExportWindowHeight", -1);
448
picNames = config->QCM_readListEntry("/PictureSourceNames");
449
picUrls = config->QCM_readListEntry("/PictureSourceUrls");
450
m_pictureSourceIdx = config->QCM_readNumEntry(
451
"/PictureSourceIdx", m_pictureSourceIdx);
452
QStringList keys = config->QCM_readListEntry("/MatchPictureUrlMapKeys");
453
QStringList values = config->QCM_readListEntry("/MatchPictureUrlMapValues");
454
if (!keys.empty() && !values.empty()) {
455
QStringList::Iterator itk, itv;
456
m_matchPictureUrlMap.clear();
457
for (itk = keys.begin(), itv = values.begin();
458
itk != keys.end() && itv != values.end();
460
m_matchPictureUrlMap[*itk] = *itv;
463
m_browseCoverArtWindowWidth = config->QCM_readNumEntry(
464
"/BrowseCoverArtWindowWidth", -1);
465
m_browseCoverArtWindowHeight = config->QCM_readNumEntry(
466
"/BrowseCoverArtWindowHeight", -1);
350
468
config->endGroup();
352
470
/* Use defaults if no configuration found */
516
QStringList::const_iterator picNamesIt, picUrlsIt;
517
for (picNamesIt = picNames.begin(), picUrlsIt = picUrls.begin();
518
picNamesIt != picNames.end() && picUrlsIt != picUrls.end();
519
++picNamesIt, ++picUrlsIt) {
520
#if QT_VERSION >= 0x040000
521
int idx = m_pictureSourceNames.indexOf(*picNamesIt);
523
int idx = m_pictureSourceNames.findIndex(*picNamesIt);
526
m_pictureSourceUrls[idx] = *picUrlsIt;
527
} else if (!(*picNamesIt).isEmpty()) {
528
m_pictureSourceNames.append(*picNamesIt);
529
m_pictureSourceUrls.append(*picUrlsIt);
398
533
if (m_importFormatIdx >= static_cast<int>(m_importFormatNames.size()))
399
534
m_importFormatIdx = 0;
400
535
if (m_exportFormatIdx >= static_cast<int>(m_exportFormatNames.size()))
401
536
m_exportFormatIdx = 0;
537
if (m_pictureSourceIdx >= static_cast<int>(m_pictureSourceNames.size()))
538
m_pictureSourceIdx = 0;