~ubuntu-branches/ubuntu/karmic/kid3/karmic

« back to all changes in this revision

Viewing changes to kid3/importconfig.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Patrick Matthäi
  • Date: 2009-05-20 16:12:30 UTC
  • mfrom: (1.2.3 upstream)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: james.westby@ubuntu.com-20090520161230-qetp532r8ydujkz2
Tags: upstream-1.2
Import upstream version 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 * \author Urs Fleisch
7
7
 * \date 17 Sep 2003
8
8
 *
9
 
 * Copyright (C) 2003-2007  Urs Fleisch
 
9
 * Copyright (C) 2003-2009  Urs Fleisch
10
10
 *
11
11
 * This file is part of Kid3.
12
12
 *
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)
49
51
{
50
52
        /**
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>");
206
208
 
 
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("");
 
213
 
207
214
        m_exportFormatNames.append("Custom Format");
208
215
        m_exportFormatHeaders.append("");
209
216
        m_exportFormatTracks.append("");
210
217
        m_exportFormatTrailers.append("");
 
218
 
 
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("");
 
257
 
 
258
        m_matchPictureUrlMap["http://images.google.com/.*imgurl=([^&]+)&.*"] =
 
259
                "\\1";
 
260
        m_matchPictureUrlMap["http://rds.yahoo.com/.*%26imgurl=((?:[^%]|%(?!26))+).*"] =
 
261
                "http%253A%252F%252F\\1";
 
262
        m_matchPictureUrlMap["http://rds.yahoo.com/.*&imgurl=([^&]+)&.*"] =
 
263
                "http%3A%2F%2F\\1";
 
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";
211
274
}
212
275
 
213
276
/**
249
312
        cfg.writeEntry("ExportFormatIdx", m_exportFormatIdx);
250
313
        cfg.writeEntry("ExportWindowWidth", m_exportWindowWidth);
251
314
        cfg.writeEntry("ExportWindowHeight", m_exportWindowHeight);
 
315
 
 
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);
252
323
#else
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);
273
344
 
 
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);
 
352
 
274
353
        config->endGroup();
275
354
#endif
276
355
}
289
368
        )
290
369
{
291
370
        QStringList names, headers, tracks;
292
 
        QStringList expNames, expHeaders, expTracks, expTrailers;
 
371
        QStringList expNames, expHeaders, expTracks, expTrailers, picNames, picUrls;
293
372
#ifdef CONFIG_USE_KDE
294
373
        KCM_KConfigGroup(cfg, config, m_group);
295
374
        m_importServer = static_cast<ImportConfig::ImportServer>(
314
393
        m_exportWindowWidth = cfg.KCM_readNumEntry("ExportWindowWidth", -1);
315
394
        m_exportWindowHeight = cfg.KCM_readNumEntry("ExportWindowHeight", -1);
316
395
 
 
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();
 
406
                         ++itk, ++itv) {
 
407
                        m_matchPictureUrlMap[*itk] = *itv;
 
408
                }
 
409
        }
 
410
        m_browseCoverArtWindowWidth = cfg.KCM_readNumEntry("BrowseCoverArtWindowWidth", -1);
 
411
        m_browseCoverArtWindowHeight = cfg.KCM_readNumEntry("BrowseCoverArtWindowHeight", -1);
 
412
 
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();
323
419
        while (static_cast<unsigned>(expHeaders.size()) < numExpNames) expHeaders.append("");
324
420
        while (static_cast<unsigned>(expTracks.size()) < numExpNames) expTracks.append("");
325
421
        while (static_cast<unsigned>(expTrailers.size()) < numExpNames) expTrailers.append("");
 
422
        unsigned numPicNames = picNames.size();
 
423
        while (static_cast<unsigned>(picUrls.size()) < numPicNames) picUrls.append("");
326
424
#else
327
425
        config->beginGroup("/" + m_group);
328
426
        m_importServer = static_cast<ImportConfig::ImportServer>(
347
445
        m_exportWindowWidth = config->QCM_readNumEntry("/ExportWindowWidth", -1);
348
446
        m_exportWindowHeight = config->QCM_readNumEntry("/ExportWindowHeight", -1);
349
447
 
 
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();
 
459
                         ++itk, ++itv) {
 
460
                        m_matchPictureUrlMap[*itk] = *itv;
 
461
                }
 
462
        }
 
463
        m_browseCoverArtWindowWidth = config->QCM_readNumEntry(
 
464
                "/BrowseCoverArtWindowWidth", -1);
 
465
        m_browseCoverArtWindowHeight = config->QCM_readNumEntry(
 
466
                "/BrowseCoverArtWindowHeight", -1);
 
467
 
350
468
        config->endGroup();
351
469
#endif
352
470
        /* Use defaults if no configuration found */
395
513
                }
396
514
        }
397
515
 
 
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);
 
522
#else
 
523
                int idx = m_pictureSourceNames.findIndex(*picNamesIt);
 
524
#endif
 
525
                if (idx >= 0) {
 
526
                        m_pictureSourceUrls[idx] = *picUrlsIt;
 
527
                } else if (!(*picNamesIt).isEmpty()) {
 
528
                        m_pictureSourceNames.append(*picNamesIt);
 
529
                        m_pictureSourceUrls.append(*picUrlsIt);
 
530
                }
 
531
        }
 
532
 
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;
402
539
}