2022-08-30 Fred Gleason <fredg@paravelsystems.com>

* Modified the full disc ripper in rdlibrary(1) to use CD-Text.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2022-08-30 18:32:25 -04:00
parent 9587f4300e
commit e7a03c8b52
36 changed files with 1062 additions and 164 deletions

View File

@ -20912,3 +20912,5 @@
2022-08-25 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rdservice(8) that could cause a segfault when
started with a previous instance running.
2022-08-30 Fred Gleason <fredg@paravelsystems.com>
* Modified the full disc ripper in rdlibrary(1) to use CD-Text.

View File

@ -2,7 +2,7 @@
##
## icons/automake.am for Rivendell
##
## (C) Copyright 2002-2006,2016-2017 Fred Gleason <fredg@paravelsystems.com>
## (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
@ -272,6 +272,10 @@ uninstall-local:
EXTRA_DIST = admin.xpm\
blueball.png\
blueball.xpm\
cd_text-55x47.xpm\
cd_text.svg\
cddb-60x25.xcf\
cddb-60x25.xpm\
chain.png\
chain.xpm\
checkmark.xpm\

290
icons/cd-text-55x47.xpm Normal file
View File

@ -0,0 +1,290 @@
/* XPM */
static const char * cd_text_55x47_xpm[] = {
"55 47 240 2",
" c None",
". c #FFFFFF",
"+ c #C5C5C5",
"@ c #666666",
"# c #A4A4A4",
"$ c #DEDEDE",
"% c #616161",
"& c #484848",
"* c #575757",
"= c #B8B8B8",
"- c #DADADA",
"; c #5F5F5F",
"> c #585858",
", c #BEBEBE",
"' c #B2B2B2",
") c #C3C3C3",
"! c #C0C0C0",
"~ c #B5B5B5",
"{ c #AFAFAF",
"] c #7F7F7F",
"^ c #E6E6E6",
"/ c #E1E1E1",
"( c #888888",
"_ c #B7B7B7",
": c #626262",
"< c #4C4C4C",
"[ c #5C5C5C",
"} c #999999",
"| c #7D7D7D",
"1 c #131313",
"2 c #8B8B8B",
"3 c #1D1D1D",
"4 c #979797",
"5 c #464646",
"6 c #414141",
"7 c #818181",
"8 c #222222",
"9 c #989898",
"0 c #404040",
"a c #070707",
"b c #565656",
"c c #505050",
"d c #838383",
"e c #7A7A7A",
"f c #2C2C2C",
"g c #1B1B1B",
"h c #919191",
"i c #171717",
"j c #080808",
"k c #F5F5F5",
"l c #424242",
"m c #474747",
"n c #777777",
"o c #000000",
"p c #5E5E5E",
"q c #DFDFDF",
"r c #B4B4B4",
"s c #E9E9E9",
"t c #0F0F0F",
"u c #828282",
"v c #454545",
"w c #F0F0F0",
"x c #E4E4E4",
"y c #787878",
"z c #4E4E4E",
"A c #848484",
"B c #444444",
"C c #161616",
"D c #151515",
"E c #4D4D4D",
"F c #EAEAEA",
"G c #3F3F3F",
"H c #B3B3B3",
"I c #393939",
"J c #8E8E8E",
"K c #EEEEEE",
"L c #E3E3E3",
"M c #E8E8E8",
"N c #868686",
"O c #3D3D3D",
"P c #8A8A8A",
"Q c #7C7C7C",
"R c #4A4A4A",
"S c #5B5B5B",
"T c #494949",
"U c #010101",
"V c #121212",
"W c #ABABAB",
"X c #1F1F1F",
"Y c #696969",
"Z c #3C3C3C",
"` c #878787",
" . c #B6B6B6",
".. c #A8A8A8",
"+. c #181818",
"@. c #050505",
"#. c #606060",
"$. c #9F9F9F",
"%. c #040404",
"&. c #6A6A6A",
"*. c #AEAEAE",
"=. c #F6F6F6",
"-. c #1A1A1A",
";. c #DDDDDD",
">. c #9B9B9B",
",. c #CCCCCC",
"'. c #D9D9D9",
"). c #FDFDFD",
"!. c #FEFEFE",
"~. c #E7E7E7",
"{. c #FBFBFB",
"]. c #EFEFEF",
"^. c #EDEDED",
"/. c #FAFAFA",
"(. c #FCFCFC",
"_. c #B1B1B1",
":. c #757575",
"<. c #141414",
"[. c #EBEBEB",
"}. c #DCDCDC",
"|. c #D3D3D3",
"1. c #BFBFBF",
"2. c #CACACA",
"3. c #2E2E2E",
"4. c #7E7E7E",
"5. c #9C9C9C",
"6. c #030303",
"7. c #292929",
"8. c #555555",
"9. c #808080",
"0. c #202020",
"a. c #797979",
"b. c #C6C6C6",
"c. c #020202",
"d. c #D2D2D2",
"e. c #F2F2F2",
"f. c #4F4F4F",
"g. c #E5E5E5",
"h. c #111111",
"i. c #D8D8D8",
"j. c #0E0E0E",
"k. c #F8F8F8",
"l. c #969696",
"m. c #313131",
"n. c #A9A9A9",
"o. c #ECECEC",
"p. c #A3A3A3",
"q. c #545454",
"r. c #ACACAC",
"s. c #C9C9C9",
"t. c #383838",
"u. c #252525",
"v. c #909090",
"w. c #676767",
"x. c #363636",
"y. c #898989",
"z. c #BDBDBD",
"A. c #9D9D9D",
"B. c #5A5A5A",
"C. c #8D8D8D",
"D. c #595959",
"E. c #333333",
"F. c #2F2F2F",
"G. c #060606",
"H. c #F3F3F3",
"I. c #9E9E9E",
"J. c #F1F1F1",
"K. c #212121",
"L. c #959595",
"M. c #BABABA",
"N. c #BBBBBB",
"O. c #C7C7C7",
"P. c #F4F4F4",
"Q. c #2A2A2A",
"R. c #CBCBCB",
"S. c #F7F7F7",
"T. c #707070",
"U. c #303030",
"V. c #E0E0E0",
"W. c #A0A0A0",
"X. c #BCBCBC",
"Y. c #D7D7D7",
"Z. c #515151",
"`. c #3E3E3E",
" + c #AAAAAA",
".+ c #B0B0B0",
"++ c #737373",
"@+ c #5D5D5D",
"#+ c #DBDBDB",
"$+ c #0D0D0D",
"%+ c #CFCFCF",
"&+ c #3A3A3A",
"*+ c #CECECE",
"=+ c #191919",
"-+ c #0C0C0C",
";+ c #6C6C6C",
">+ c #323232",
",+ c #262626",
"'+ c #9A9A9A",
")+ c #343434",
"!+ c #2B2B2B",
"~+ c #232323",
"{+ c #D0D0D0",
"]+ c #CDCDCD",
"^+ c #272727",
"/+ c #F9F9F9",
"(+ c #101010",
"_+ c #1C1C1C",
":+ c #D5D5D5",
"<+ c #353535",
"[+ c #0A0A0A",
"}+ c #3B3B3B",
"|+ c #525252",
"1+ c #717171",
"2+ c #A5A5A5",
"3+ c #6F6F6F",
"4+ c #D1D1D1",
"5+ c #6E6E6E",
"6+ c #4B4B4B",
"7+ c #E2E2E2",
"8+ c #636363",
"9+ c #646464",
"0+ c #686868",
"a+ c #C1C1C1",
"b+ c #C8C8C8",
"c+ c #D4D4D4",
"d+ c #858585",
"e+ c #434343",
"f+ c #0B0B0B",
"g+ c #090909",
"h+ c #939393",
"i+ c #C4C4C4",
"j+ c #535353",
"k+ c #A2A2A2",
"l+ c #ADADAD",
"m+ c #7B7B7B",
"n+ c #D6D6D6",
"o+ c #6D6D6D",
"p+ c #A6A6A6",
"q+ c #767676",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . + @ @ @ @ # . $ % & * = - ; & > , ' @ ) . ! @ ~ { @ @ ] ^ / @ ( . _ * & % ! : : : $ . . . ",
". . . . . . . . . . < [ } } | 1 . 2 3 4 5 6 7 8 9 0 < ] a b . c a d e f 7 g 7 h i j k l m 4 3 n [ o p q . . . ",
". . . . . . . . . . & r . . s t . u v . w x y z . A 6 ] B C ^ D 0 d e E F G e m d g H I J . ^ K L o M . . . . ",
". . . . . . . . . . & r . . s t . N O . r P Q m . | v ] z * R S T d e U o V W j T X Y Z ` . ( .L o M . . . . ",
". . . . . . . . . . & ~ . . F t . ..U +.@.#.$.U +.%.&.] z *.o ' T d e < =.. H -.;.>.X ; @.+.U ..L o M . . . . ",
". . . . . . . . . . & .. . F t . . ^ ,.'.).. x ,.- !.K ~.{.;.{.~.].^.M . . ].^ . /.;.{.'.,.^ . (.q ).. . . . ",
". . . . _.Q n n n :.<.! . . [.t . }.e n n n ... . . .Q n n n n n n n n |.. . . 1.] n n n n n n d 2.. . . . . ",
". . . p 3.4.( ( ( ( 5.).. . [.t . @ l ( ( y 6./.. &.7.Q ( ( ( ( ( ( ( c 8.. . 9.0.a.( ( ( ( ( ( :.+.9 . . . . ",
". . b.8 =.. . . . . . . . . [.t . #.>.. . . c.=.d.-.e.. . . . . . . . W f.. g.h.M . . . . . . . . i.j.k.. . . ",
". . l.% . . . i.m m.n.. . . o.t . #.>.. . . c.=.p.q.. . . . . . . . . r.c . = G . . . s.t.6 i.. . . u.d.. . . ",
". . v.w.. . . x.y.z.<./ . . o.t . #.>.. . . c.=.A.B.. . (.C.> 8.D.@ @ E.; . ' v . . . F.4 9.T . . . f ,.. . . ",
". . v.w.. . . G.H.. 5 r . . o.t . #.5.. . . 6.=.A.B.. . $.m.9 } } } } I.[.. ' v . . . j J.i.K.. . . f ,.. . . ",
". . v.w.. . . %.k . & ' . . o.t . #.5.. . . 6.=.A.B.. . L.0 M.N.N.N.O.P.. . ' v . . . G.P.'.0.. . . Q.R.. . . ",
". . v.w.. . . %.k . & ' . . ^.t . #.5.. . . %.=.A.B.. . S.T.B B B t.f C _ . ' v . . . G.P.s a U.E.m.@.V.. . . ",
". . v.w.. . . %.k . & ' . . ^.t . #.5.. . . %.=.W.* . . . . . . . . . X.D J.' v . . . G.P.. - N.N.N.Y.. . . . ",
". . v.w.. . . %.k . & ' . . ^.t . #.A.. . . @.=.2.8 k.. . . . . . . . . t., ' v . . . G.P.. . . . . . . . . . ",
". . v.w.. . . %.k . & ' . . K t . #.A.. . . @.=.. Z.`.>. + + +W / . . . 5 .+' v . . . G.P.).y 8.8.8.++{.. . . ",
". . v.w.. . . %.k . & ' . . K t . #.A.. . . G.=.. (.} @+8.8.8.f.<./ . . 5 _.' v . . . G.P.#+$+l.} 4 V %+. . . ",
". . v.w.. . . %.k . & ' . . K t . #.I.. . . G.=.. . . . . . . (.&+_.. . v _.' v . . . G.P.'.K.. . . f ,.. . . ",
". . v.w.. . . t ^ . t., . . ].t . #.I.. . . a =.*+=+h.h.h.h.h.-+Z k . . v ' ' v . . . t x 2.7.. . . f ,.. . . ",
". . v.w.. . . ;+>+q.,+=.. . ].t . #.I.. . . a =.'+T K K K K K e.. . . . B H ' v . . . [ 6 )+n . . . !+,.. . . ",
". . W & . . . !.*.9 ].. . . w t . #.I.. . . j =.'+@+. . . . . . . . . !.~+{+]+^+!.. . /+$...).. . /.(+M . . . ",
". . w _+h s K K K K K K K K :+t . #.y.K K ^ @.=.'+R K K K K K K K K V.T.<+(.{.m.n x K K K K K K / % & . . . . ",
". . . :+B [+o o o o o o o o o Z.. A.@.o o o }+. %+V o o o o o o o o 1 D.~.. . L |+j.o o o o o o V ; ^.. . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . o.n n 4.' ^.1+k y.@+p v.].1+%+1+1+1+~.2+@ + . W.~ . . . . 2+@ b.!.n / . ] i.7 n e A.{.y ;.A.#.[ 9./.. . . ",
". . }.o 3+c c.:+o 4+o :.5+o 4+o 1.6+o q.7+3.C 8+. |+a.. . . . 3.C 9+).o O.. t .1 b 0+U a+[+a+%.% 7 o R.. . . ",
". . }.o K ;.o 2.o b+o ^. +W.i.o M '.o e.L U 9 =+!.|+a.. . . L U 9 =+(.o O.. t .1 = . 1 ' [+X.o ,.. G.! . . . ",
". . }.o K c+o ]+o R.o ^ d+e+,.o M '.o e.} f+[ o *+|+y {.!.. 9 f+[ o %+%.! !.g+X.1 = ).$+ .[+1.o O.(.6.) . . . ",
". . }.o V G.g #+o ;.j g +.$+- o M '.o e.f.T.;.e+A |+o o h+. z 1+;.e+d+0.1 K.c.Y.1 j.g+g+i.[+a+=+<.X 6.$ . . . ",
". . k.,.,.}././+{+(.M ) i+F /.{+{./+{+).7+H.. o.s q %+%+[.. 7+H.. o.s w b.a+7+. {+,.Y.P.. |.P.].+ a+x . . . . ",
". . . b+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +,.. . . . ",
". . } D q.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.j+1 k+. . . ",
". . R p.. . . . . . . . . . . . o.i+i+i+i+x R.i+i+i+s q . . . #+d.i+i+i+i+. . . . . . . . . . . . . '+j+. . . ",
". . v l+. . . . . . . . . . . . $ 4 n 9+4 %+q.4 4 4 V.&.Y.. J .+{ 4 e+4 4 !.. . . . . . . . . . . . # z . . . ",
". . v l+. . . . . . . . . . . . . . b+... . m+. . . . P.* X.9.. . . 1+. . . . . . . . . . . . . . . # z . . . ",
". . v l+. . . . . . . . . . . . . . b+... . `.[ [ [ ~.. # =+e.. . . 1+. . . . . . . . . . . . . . . # z . . . ",
". . v l+. . . . . . . . . . . . . . b+... . m+. . . . ^.[ n+T.. . . 1+. . . . . . . . . . . . . . . # z . . . ",
". . v l+. . . . . . . . . . . . . . b+... . o+'.'.'.e.B.V.. p+W.. . 1+. . . . . . . . . . . . . . . # z . . . ",
". . v l+. . . . . . . . . . . . . . g.:+. . v.u u u z.+ . . . ..).. M.. . . . . . . . . . . . . . . # z . . . ",
". . o+& + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +n.6 q+. . . ",
". . ].T.B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B v ++e.. . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "};

47
icons/cd-text.svg Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="4.619in" height="3.854in" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" viewBox="0 0 4.619 3.854" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
<![CDATA[
.fil0 {fill:black}
]]>
</style>
</defs>
<g id="Layer_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<g id="_57672680">
<path id="_57718848" class="fil0" d="M3.94838 2.90459l-3.37499 0 -0.381909 0c-0.0919213,0 -0.166701,0.0747953 -0.166701,0.16672l0 0.591043c0,0.0445315 0.0173425,0.0863976 0.0488346,0.11789 0.0314882,0.0314882 0.0733465,0.0488307 0.117866,0.0488307l4.23604 -3.93701e-006c0.0445236,0 0.086378,-0.0173386 0.117866,-0.0488268 0.0314921,-0.0314921 0.0488346,-0.0733543 0.0488346,-0.117886l0 -0.591047c0,-0.0445315 -0.0173425,-0.0863937 -0.0488346,-0.117886 -0.0314882,-0.0314882 -0.0733465,-0.0488307 -0.117866,-0.0488307l-0.479134 -3.93701e-006 0 0.0972244 0.479134 0c0.0185512,0 0.0359921,0.00722835 0.0491181,0.0203583 0.0131299,0.013126 0.0203583,0.0305787 0.0203583,0.0491378l3.93701e-006 0.591043c0,0.0383228 -0.0311732,0.0694961 -0.0694803,0.0694961l-4.23604 0c-0.0185512,0 -0.0359961,-0.00722441 -0.049122,-0.0203504 -0.013126,-0.0131299 -0.0203583,-0.0305787 -0.0203583,-0.0491417l0 -0.591047c0,-0.018563 0.00723228,-0.0360118 0.0203583,-0.0491378 0.013126,-0.0131299 0.0305709,-0.0203543 0.049122,-0.0203543l0.381909 -3.93701e-006 3.37499 0 0 -0.0972244z"/>
<path id="_58508176" class="fil0" d="M4.09237 0.309791c-0.000330709,0.0127835 -0.000751969,0.0232953 -0.00117717,0.0270591 -0.00327559,0.028811 0,0.0424409 -0.0830945,0.0424409 -0.0830827,-3.93701e-006 -0.079811,-0.013626 -0.0830866,-0.0424409 -0.00106693,-0.00938189 -0.00205512,-0.0606969 -0.00195276,-0.0847008 0.000102362,-0.0240118 0.000885827,-0.0753228 0.00195276,-0.0847008 0.00327559,-0.0288228 0,-0.0424449 0.0830866,-0.0424449 0.0830945,0 0.079815,0.013626 0.0830945,0.0424449 0.000444882,0.00392913 0.00084252,0.0152362 0.00116142,0.0288031l0.113665 -3.93701e-006c-0.000728346,-0.0257559 -0.00194882,-0.0472835 -0.00322047,-0.0585 -0.00655512,-0.0576378 0.0161496,-0.112827 -0.194567,-0.112827 -0.210717,0 -0.188016,0.0551929 -0.194567,0.112827 -0.00212992,0.0187638 -0.00411024,0.0663858 -0.00390551,0.114402 0.000208661,0.0480079 0.00177165,0.0956339 0.00390551,0.114398 0.00655512,0.0576339 -0.0161535,0.112827 0.194567,0.112827 0.21072,0 0.188012,-0.055189 0.194567,-0.112827 0.00124803,-0.0109646 0.00229528,-0.0317717 0.00299606,-0.0567559l-0.113425 0z"/>
<polygon id="_57069896" class="fil0" points="2.7446,0.0364488 2.6337,0.360437 2.52278,0.0364488 2.35687,0.0355787 2.35687,0.470472 2.46778,0.470472 2.46778,0.14648 2.57867,0.470472 2.68959,0.470472 2.79962,0.14648 2.79962,0.470472 2.91052,0.470472 2.91052,0.0355787 "/>
<polygon id="_56712032" class="fil0" points="4.23092,0.0355787 4.54967,0.0355787 4.54967,0.14648 4.44574,0.14648 4.44574,0.470472 4.33484,0.470472 4.33484,0.14648 4.23092,0.14648 "/>
<polygon id="_58293864" class="fil0" points="3.37598,0.470472 3.50319,0.0351457 3.66853,0.0351457 3.79602,0.470472 3.68513,0.470472 3.65893,0.38052 3.5134,0.38052 3.53402,0.309791 3.63796,0.309791 3.58644,0.132508 3.48688,0.470472 "/>
<path id="_57704664" class="fil0" d="M2.08978 0.125004c0.0830906,0 0.079811,0.013626 0.0830906,0.0424449 0.00106299,0.00937795 0.00184646,0.060689 0.00195276,0.0847008 9.84252e-005,0.0240039 -0.000889764,0.0753189 -0.00195276,0.0847008 -0.00327559,0.028811 0,0.0424409 -0.0830906,0.0424409 -0.0830906,-3.93701e-006 -0.079815,-0.013626 -0.0830906,-0.0424409 -0.00106693,-0.00938189 -0.00205512,-0.0606969 -0.00195276,-0.0847008 0.000102362,-0.0240118 0.000885827,-0.0753228 0.00195276,-0.0847008 0.00327559,-0.0288228 0,-0.0424449 0.0830906,-0.0424449l0.000129921 -0.100083c-0.21072,0 -0.188016,0.0551929 -0.194567,0.112827 -0.00213386,0.0187638 -0.00411024,0.0663858 -0.00390551,0.114402 0.000204724,0.0480079 0.00177165,0.0956339 0.00390551,0.114398 0.00655118,0.0576339 -0.0161535,0.112827 0.194567,0.112827 0.21072,0 0.188012,-0.055189 0.194567,-0.112827 0.00212992,-0.0187638 0.00369685,-0.0663858 0.00390157,-0.114398 0.000204724,-0.0480197 -0.00177165,-0.0956378 -0.00390157,-0.114402 -0.00655512,-0.0576378 0.0161496,-0.112827 -0.194567,-0.112827l-0.000129921 0.100083z"/>
<path id="_57094768" class="fil0" d="M1.71532 0.309791c-0.000334646,0.0127835 -0.000748031,0.0232953 -0.00117717,0.0270591 -0.00327559,0.028811 0,0.0424409 -0.0830945,0.0424409 -0.0830866,-3.93701e-006 -0.079811,-0.013626 -0.0830906,-0.0424409 -0.00106299,-0.00938189 -0.00205118,-0.0606969 -0.00194882,-0.0847008 0.000102362,-0.0240118 0.000885827,-0.0753228 0.00194882,-0.0847008 0.00327953,-0.0288228 0,-0.0424449 0.0830906,-0.0424449 0.0830945,0 0.079815,0.013626 0.0830945,0.0424449 0.000448819,0.00392913 0.00084252,0.0152362 0.00116142,0.0288031l0.113665 -3.93701e-006c-0.000728346,-0.0257559 -0.00194882,-0.0472835 -0.00322441,-0.0585 -0.00655118,-0.0576378 0.0161535,-0.112827 -0.194563,-0.112827 -0.210717,0 -0.188016,0.0551929 -0.194567,0.112827 -0.00213386,0.0187638 -0.00411024,0.0663858 -0.00390157,0.114402 0.000200787,0.0480079 0.00176772,0.0956339 0.00390157,0.114398 0.00655118,0.0576339 -0.0161535,0.112827 0.194567,0.112827 0.210717,0 0.188012,-0.055189 0.194563,-0.112827 0.00124803,-0.0109646 0.00229921,-0.0317717 0.003,-0.0567559l-0.113425 0z"/>
<path id="_57649192" class="fil0" d="M3.18056 0.371012l-0.0672953 -3.93701e-005 0 -0.0992008 0.0672795 -0.000405512c0.0830866,0 0.0805079,-0.013622 0.0837835,-0.0424409 0.00107087,-0.00938583 0.000846457,-0.00167323 0.000744094,-0.0256811 -9.84252e-005,-0.0240079 0.000322835,-0.0157638 -0.000744094,-0.0251457 -0.00327165,-0.028815 -0.00069685,-0.0424449 -0.0837874,-0.0424449l-0.067311 0.000177165 0.000114173 0.334205 -0.111126 0 0 -0.434457 0.178343 -3.93701e-006c0.210713,0 0.187618,0.0553425 0.195374,0.112827 0.00092126,0.00681102 0.000917323,0.038252 0.000917323,0.0551969 3.93701e-006,0.0136142 0,0.0450551 -0.000917323,0.0550236 -0.0053189,0.0577677 0.0153386,0.11239 -0.195374,0.11239z"/>
<path id="_58296408" class="fil0" d="M4.35506 2.42522c0.0830906,0 0.079815,0.013622 0.0830906,0.0424409 0.00106693,0.00937795 0.00184646,0.0606929 0.00194882,0.0847008 0.000106299,0.0240039 -0.00088189,0.0753189 -0.00194882,0.0847008 -0.00327559,0.0288189 0,0.0424409 -0.0830945,0.0424409 -0.0830866,0 -0.079811,-0.013622 -0.0830906,-0.0424409 -0.00106299,-0.00938189 -0.00205118,-0.0606929 -0.00194882,-0.0847008 0.000106299,-0.0240079 0.000885827,-0.0753189 0.00194882,-0.0847008 0.00327953,-0.0288189 0,-0.0424409 0.0830906,-0.0424409l0.000133858 -0.100087c-0.210717,0 -0.188016,0.0551929 -0.194567,0.112827 -0.00213386,0.0187638 -0.00411024,0.0663858 -0.00390157,0.114402 0.000204724,0.0480118 0.00176772,0.0956378 0.00390157,0.114398 0.00655118,0.0576339 -0.0161496,0.112827 0.194567,0.112827 0.210717,-3.93701e-006 0.188012,-0.055189 0.194563,-0.112827 0.00213386,-0.0187598 0.00370079,-0.0663858 0.00390157,-0.114398 0.000208661,-0.0480157 -0.00176772,-0.0956378 -0.00390157,-0.114402 -0.00655118,-0.0576339 0.0161535,-0.112823 -0.194563,-0.112823l-0.000129921 0.100083z"/>
<polygon id="_58327216" class="fil0" points="2.59974,2.76647 2.72694,2.33114 2.89228,2.33114 3.01978,2.76647 2.90887,2.76647 2.88268,2.67652 2.73715,2.67652 2.75777,2.60579 2.86172,2.60579 2.81019,2.4285 2.71063,2.76647 "/>
<polygon id="_57116472" class="fil0" points="1.67554,2.76647 1.80275,2.33114 1.96809,2.33114 2.09558,2.76647 1.98468,2.76647 1.95848,2.67652 1.81296,2.67652 1.83358,2.60579 1.93753,2.60579 1.886,2.4285 1.78644,2.76647 "/>
<polygon id="_58044672" class="fil0" points="0.653559,2.33579 0.653559,2.77068 0.54265,2.77068 0.54265,2.33579 "/>
<polygon id="_57661776" class="fil0" points="1.30239,2.33579 1.30239,2.77068 1.19148,2.77068 1.19148,2.33579 "/>
<polygon id="_59329400" class="fil0" points="1.36133,2.33579 1.68009,2.33579 1.68009,2.44669 1.57616,2.44669 1.57616,2.77068 1.46526,2.77068 1.46526,2.44669 1.36133,2.44669 "/>
<polygon id="_59330448" class="fil0" points="2.26693,2.66065 2.26693,2.33579 2.15602,2.33579 2.15602,2.77111 2.44245,2.77111 2.44245,2.66065 "/>
<polygon id="_59217328" class="fil0" points="4.08988,2.33579 4.08988,2.77068 3.97898,2.77068 3.97898,2.33579 "/>
<path id="_59218232" class="fil0" d="M3.65281 2.33605l0.0602598 0c0.210717,0 0.188008,0.0554488 0.194563,0.113087 0.00213386,0.0187638 0.0041063,0.0524094 0.00390157,0.100425 -0.000200787,0.0480118 -0.00177165,0.0895315 -0.00390157,0.108295 -0.00655118,0.0576339 0.0161496,0.112827 -0.194567,0.112827l-0.193433 -3.93701e-006 0 -0.43463 0.133177 0 -0.00174409 0.0999449 -0.0200827 -0.000133858 0 0.235618 0.0819528 -0.000885827c0.0830945,0 0.079815,-0.0136181 0.0830906,-0.042437 0.00107087,-0.00938189 0.00205512,-0.0545866 0.00195276,-0.0785945 -0.000102362,-0.0240118 -0.000885827,-0.0613465 -0.00195276,-0.0707283 -0.00327559,-0.0288189 0,-0.0424409 -0.0830906,-0.0424409l-0.0618701 -0.000397638 0.00174409 -0.0999449z"/>
<path id="_59219920" class="fil0" d="M3.44683 2.55236l-0.00011811 -0.216575 -0.113319 0 0 0.216575c0.000102362,0.0240039 -0.000885827,0.0753189 -0.00195276,0.0847008 -0.00327559,0.0288189 0,0.0424409 -0.0830906,0.0424409 -0.0830906,0 -0.079815,-0.013622 -0.0830906,-0.0424409 -0.00106693,-0.00938189 -0.00188583,-0.0606929 -0.00178346,-0.0847008l0.000165354 -0.216571 -0.11363 0 0 0.216571c0.000204724,0.0480118 0.00176772,0.0956378 0.00390157,0.114398 0.00655512,0.0576339 -0.0161535,0.112827 0.194567,0.112827 0.210717,-3.93701e-006 0.188012,-0.055189 0.194567,-0.112827 0.00212992,-0.0187598 0.00357874,-0.0663858 0.00378346,-0.114398z"/>
<path id="_59221088" class="fil0" d="M1.00649 2.61c-0.000334646,0.0127835 -0.000748031,0.0232953 -0.00117717,0.0270551 -0.00327559,0.0288189 0,0.0424409 -0.0830906,0.0424409 -0.0830906,0 -0.079815,-0.013622 -0.0830945,-0.0424409 -0.00106299,-0.00938189 -0.00205118,-0.0606929 -0.00194882,-0.0847008 0.000102362,-0.0240079 0.000885827,-0.0753189 0.00194882,-0.0847008 0.00327953,-0.0288189 0,-0.0424409 0.0830945,-0.0424409 0.0830906,0 0.079811,0.013622 0.0830906,0.0424409 0.000448819,0.00392913 0.00084252,0.00125984 0.00116142,0.0148307l0.113665 0c-0.000732283,-0.0257638 -0.00194882,-0.033315 -0.00322441,-0.0445315 -0.00655118,-0.0576339 0.0161535,-0.112823 -0.194567,-0.112823 -0.210717,-3.93701e-006 -0.188012,0.055189 -0.194563,0.112823 -0.00213386,0.0187638 -0.0041063,0.0663858 -0.00390157,0.114402 0.000204724,0.0480118 0.00176772,0.0956378 0.00390157,0.114398 0.00655118,0.0576339 -0.0161535,0.112827 0.194563,0.112827 0.21072,-3.93701e-006 0.188016,-0.055189 0.194567,-0.112827 0.00124409,-0.0109606 0.00229921,-0.0317677 0.003,-0.056752l-0.113425 0z"/>
<polygon id="_59222240" class="fil0" points="0.922083,2.54014 0.922083,2.61 1.11991,2.61 1.11991,2.54014 "/>
<path id="_59224136" class="fil0" d="M0.212984 2.33605l0.060252 0c0.21072,0 0.188016,0.0554488 0.194567,0.113087 0.00213386,0.0187638 0.00411024,0.0524094 0.00390157,0.100425 -0.000200787,0.0480118 -0.00176772,0.0895315 -0.00390157,0.108295 -0.00655118,0.0576339 0.0161535,0.112827 -0.194567,0.112827l-0.193433 -3.93701e-006 0 -0.43463 0.133181 0 -0.00174803 0.0999449 -0.0200866 -0.000133858 0 0.235618 0.0819606 -0.000885827c0.0830866,0 0.079811,-0.0136181 0.0830866,-0.042437 0.00107087,-0.00938189 0.00205512,-0.0545866 0.00195276,-0.0785945 -9.84252e-005,-0.0240118 -0.00088189,-0.0613465 -0.00195276,-0.0707283 -0.00327165,-0.0288189 0,-0.0424409 -0.0830866,-0.0424409l-0.061874 -0.000397638 0.00174803 -0.0999449z"/>
<path id="_59225576" class="fil0" d="M1.02375 2.10803l-0.694197 -0.000811024c-0.100445,0 -0.181866,-0.0814291 -0.181866,-0.181862l0 -1.05667c0,-0.100449 0.0814173,-0.181862 0.181866,-0.181862l0.434472 -0.000492126c0.0521732,0 0.0944803,-0.0422913 0.0944803,-0.0944803l0.00127165 -0.422484c0,-0.0218661 0.0177323,-0.0395945 0.0395984,-0.0395945l0.254705 -3.93701e-006c0.0218661,0 0.0396102,0.0177323 0.0396102,0.0396024l0.00261417 1.8992c0,0.0218701 -0.0177323,0.0396181 -0.0395984,0.0396181l-0.132957 -0.00015748 -0.00323228 0.0943622 0.173732 -5.11811e-005c0.0521732,0 0.0944803,-0.0422913 0.0944803,-0.0944803l0 -1.97884c0,-0.0521732 -0.0423071,-0.0944685 -0.0944803,-0.0944685l-0.334165 -3.93701e-006c-0.0521732,0 -0.0944803,0.0422992 -0.0944803,0.0944724l0.000476378 0.423543c0,0.0218701 -0.0177323,0.0396142 -0.0396142,0.0396142l-0.396913 -0.000724409c-0.153122,0 -0.277256,0.124114 -0.277256,0.27724l0 1.05666c0,0.15311 0.124134,0.277244 0.277256,0.277244l0.690965 -0.000204724 0.00323228 -0.0943622z"/>
<path id="_59227312" class="fil0" d="M0.765594 1.71909l0 -0.68361c0,-0.0572913 -0.0464488,-0.103732 -0.103748,-0.103732 -0.0572874,0 -0.103732,0.0464449 -0.103732,0.103732l3.93701e-006 0.737925c0,0.0572835 0.0464409,0.103748 0.103728,0.103748 0.0572992,-3.93701e-006 0.103744,-0.0464606 0.103744,-0.103748l3.93701e-006 -0.054315 0.0942992 0.00323228 0 0.0510827c0,0.109362 -0.0886732,0.198035 -0.198047,0.198035 -0.109362,-3.93701e-006 -0.198031,-0.0886693 -0.198031,-0.198035l3.93701e-006 -0.737925c0,-0.109366 0.0886654,-0.198031 0.198028,-0.198031 0.109374,0 0.198047,0.0886693 0.198047,0.198031l0 0.686843 -0.0942992 -0.00323228z"/>
<path id="_59229240" class="fil0" d="M1.68356 2.10802l-0.129925 7.87402e-006c-0.0218819,0 -0.0396142,-0.017748 -0.0396142,-0.0396142l0.00159449 -1.34114c0,-0.0218819 0.0177283,-0.0396102 0.0396102,-0.0396102l0.254705 -3.93701e-006c0.0218819,0 0.0396142,0.0177323 0.0396142,0.0396142l0.00261024 1.34113c0,0.021878 -0.0177323,0.0396102 -0.0395984,0.0396102l-0.128996 7.87402e-006 0 0.0939803 0.166543 0.000173228c0.052185,0 0.0944764,-0.0422913 0.0944764,-0.0944646l3.93701e-006 -1.42079c0,-0.0521772 -0.0422953,-0.0944803 -0.0944843,-0.0944803l-0.334177 0c-0.0521732,0 -0.0944685,0.0423071 -0.0944685,0.0944803l-0.00019685 1.42042c0,0.052185 0.0419764,0.0944803 0.0941457,0.0944803l0.168157 0.000177165 0 -0.0939803z"/>
<path id="_59230816" class="fil0" d="M2.88351 0.951547l-0.279823 -0.000385827c-0.0860945,0 -0.155909,0.0698268 -0.155909,0.155925 0,0.0861063 0.069811,0.155917 0.155909,0.155917l0.383378 0.00104331c0.100433,0 0.181862,0.0814331 0.181862,0.18187l-0.0012874 0.477268c0,0.100449 -0.0814291,0.18187 -0.181866,0.18187l-0.761024 0.00137795c-0.0218661,0 -0.0396142,-0.0177441 -0.0396142,-0.0396063l3.93701e-006 -0.184843c0,-0.0218858 0.0177441,-0.0396142 0.0396102,-0.0396142l0.518661 -0.00169291c0.0861142,0 0.155929,-0.0698031 0.155929,-0.155917 3.93701e-006,-0.0861102 -0.0698189,-0.155917 -0.155929,-0.155917l-0.3755 -0.00148031c-0.100437,0 -0.181866,-0.0814331 -0.181866,-0.181866l0 -0.476811c0,-0.100449 0.0814291,-0.181862 0.181866,-0.181862l0.705445 -0.00329921c0.0218661,0 0.0395945,0.017748 0.0395945,0.0396142l1.9685e-005 0.189055c0,0.0218701 -0.0177323,0.0396142 -0.0396142,0.0396142l-0.189846 -0.000259843 -0.00323622 0.0929567 0.232024 6.69291e-005c0.0521732,0 0.0944803,-0.0419724 0.0944803,-0.0941417l0.000354331 -0.264839c0,-0.052185 -0.0422992,-0.0944803 -0.0944843,-0.0944803l-0.744736 0.000338583c-0.15311,0 -0.27724,0.124114 -0.27724,0.27724l0 0.476807c0,0.153106 0.124126,0.27724 0.27724,0.27724l0.3755 -0.000645669c0.034626,0 0.0626811,0.028063 0.0626811,0.0626693 0,0.034626 -0.0280591,0.0626811 -0.0626811,0.0626811l-0.559016 -0.000110236c-0.0521732,0 -0.0944685,0.0422913 -0.0944685,0.0944803l0 0.264299c0,0.052189 0.0422953,0.0944843 0.0944685,0.0944843l0.801382 -0.000165354c0.15311,0 0.27724,-0.124118 0.27724,-0.27724l0.00128346 -0.477276c0,-0.153106 -0.12413,-0.277236 -0.27724,-0.277236l-0.383374 0.00108661c-0.0346063,0 -0.0626654,-0.0280551 -0.0626654,-0.0626772 0,-0.0346102 0.0280551,-0.0626693 0.0626654,-0.0626693l0.276587 8.66142e-005 0.00323622 -0.0929567z"/>
<path id="_59232120" class="fil0" d="M4.29369 1.21375l0.120181 0c0.021878,0 0.0396102,-0.0177283 0.0396102,-0.0396102l-0.0005 -0.305453c0,-0.100449 -0.0814213,-0.181862 -0.18187,-0.181862l-0.601232 0c-0.100445,0 -0.181878,0.0814173 -0.181878,0.181866l0 1.05666c0,0.100433 0.0814291,0.181866 0.181878,0.181866l0.601236 0c0.100449,0 0.181862,-0.0814291 0.181862,-0.181862l0.000503937 -0.290433c0,-0.0218858 -0.0177323,-0.0396142 -0.0396142,-0.0396142l-0.226811 0c-0.0218701,0 -0.0396024,0.0177323 -0.0396024,0.0396142l0.00127559 0.13848c0,0.109362 -0.0688701,0.198035 -0.178232,0.198035 -0.109374,-3.93701e-006 -0.178232,-0.0886693 -0.178232,-0.198035l0 -0.737925c0,-0.109366 0.0688543,-0.198031 0.178232,-0.198031 0.109362,0 0.178232,0.0886693 0.178232,0.198031l-0.00127165 0.138657c0,0.0218858 0.0177283,0.0396181 0.0395945,0.0396181l0.106638 -3.93701e-006 -0.00323228 0.0952244 -0.142693 0c-0.0521732,0 -0.0944803,-0.0423071 -0.0944803,-0.0944803l0.00114567 -0.179016c0,-0.0572913 -0.0266457,-0.103732 -0.0839331,-0.103732 -0.0573031,0 -0.0839488,0.0464449 -0.0839488,0.103732l3.93701e-006 0.737925c0,0.0572835 0.0266417,0.103748 0.0839449,0.103748 0.0572874,-3.93701e-006 0.0839331,-0.0464606 0.0839331,-0.103748l-0.00114567 -0.178835c0,-0.0521693 0.0423071,-0.0944803 0.0944803,-0.0944803l0.30628 -3.93701e-006c0.0521811,0 0.0944764,0.042315 0.0944764,0.0944882l-0.000165354 0.33078c0,0.15311 -0.124118,0.277244 -0.277244,0.277244l-0.601232 -3.93701e-006c-0.153122,0 -0.277252,-0.12413 -0.277252,-0.277236l0 -1.05667c0,-0.153126 0.12413,-0.277236 0.277252,-0.277236l0.601236 0c0.153122,0 0.27724,0.124114 0.27724,0.27724l0.000169291 0.345803c0,0.0521693 -0.0422992,0.0944803 -0.0944843,0.0944803l-0.163583 0 0.00323228 -0.0952244z"/>
<polygon id="_56723472" class="fil0" points="2.24678,3.62504 1.85894,3.62504 1.85894,3.09997 2.09687,3.09997 2.24678,3.09997 2.24678,3.15847 1.90661,3.15847 1.90661,3.32314 2.23234,3.32314 2.23234,3.38165 1.90661,3.38165 1.90661,3.56654 2.24678,3.56654 2.24678,3.61174 "/>
<polygon id="_56724072" class="fil0" points="2.71473,3.62504 2.52622,3.37442 2.33845,3.62504 2.26767,3.62504 2.27734,3.61233 2.48072,3.34481 2.29222,3.09997 2.36084,3.09997 2.52478,3.31448 2.69234,3.09997 2.75879,3.09997 2.74898,3.11276 2.57101,3.34481 2.78407,3.62504 "/>
<polygon id="_56725056" class="fil0" points="3.23707,3.15847 3.0403,3.15847 3.0403,3.62504 2.98902,3.62504 2.98902,3.15847 2.79401,3.15847 2.79401,3.11174 2.79401,3.09997 3.23707,3.09997 3.23707,3.12736 "/>
<polygon id="_57678824" class="fil0" points="1.79958,3.15847 1.6028,3.15847 1.6028,3.62504 1.55152,3.62504 1.55152,3.15847 1.35652,3.15847 1.35652,3.11174 1.35652,3.09997 1.79958,3.09997 1.79958,3.12736 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

BIN
icons/cddb-60x25.xcf Normal file

Binary file not shown.

144
icons/cddb-60x25.xpm Normal file
View File

@ -0,0 +1,144 @@
/* XPM */
static const char * cddb_60x25_xpm[] = {
"60 25 116 2",
" c None",
". c #FFFFFF",
"+ c #E2E2E2",
"@ c #757575",
"# c #2F2F2F",
"$ c #0F0F0F",
"% c #080808",
"& c #202020",
"* c #3D3D3D",
"= c #868686",
"- c #DEDEDE",
"; c #F7F7F7",
"> c #000000",
", c #070707",
"' c #161616",
") c #373737",
"! c #6D6D6D",
"~ c #C7C7C7",
"{ c #252525",
"] c #6F6F6F",
"^ c #E9E9E9",
"/ c #9E9E9E",
"( c #1F1F1F",
"_ c #4D4D4D",
": c #ECECEC",
"< c #1E1E1E",
"[ c #EAEAEA",
"} c #A8A8A8",
"| c #4E4E4E",
"1 c #BBBBBB",
"2 c #EEEEEE",
"3 c #F8F8F8",
"4 c #E0E0E0",
"5 c #C4C4C4",
"6 c #7B7B7B",
"7 c #424242",
"8 c #FCFCFC",
"9 c #EBEBEB",
"0 c #C0C0C0",
"a c #383838",
"b c #F9F9F9",
"c c #B5B5B5",
"d c #1B1B1B",
"e c #7D7D7D",
"f c #F2F2F2",
"g c #111111",
"h c #7C7C7C",
"i c #CBCBCB",
"j c #0C0C0C",
"k c #959595",
"l c #9C9C9C",
"m c #535353",
"n c #969696",
"o c #2E2E2E",
"p c #FEFEFE",
"q c #8A8A8A",
"r c #313131",
"s c #676767",
"t c #545454",
"u c #8B8B8B",
"v c #E5E5E5",
"w c #020202",
"x c #F0F0F0",
"y c #B8B8B8",
"z c #1D1D1D",
"A c #BDBDBD",
"B c #BABABA",
"C c #121212",
"D c #D9D9D9",
"E c #2B2B2B",
"F c #A9A9A9",
"G c #242424",
"H c #CCCCCC",
"I c #0A0A0A",
"J c #6C6C6C",
"K c #FAFAFA",
"L c #DADADA",
"M c #F4F4F4",
"N c #474747",
"O c #606060",
"P c #030303",
"Q c #F3F3F3",
"R c #E4E4E4",
"S c #898989",
"T c #333333",
"U c #2C2C2C",
"V c #101010",
"W c #808080",
"X c #989898",
"Y c #C2C2C2",
"Z c #A6A6A6",
"` c #505050",
" . c #BCBCBC",
".. c #EFEFEF",
"+. c #E1E1E1",
"@. c #C5C5C5",
"#. c #C1C1C1",
"$. c #6E6E6E",
"%. c #3B3B3B",
"&. c #484848",
"*. c #F6F6F6",
"=. c #9A9A9A",
"-. c #060606",
";. c #4F4F4F",
">. c #EDEDED",
",. c #A4A4A4",
"'. c #737373",
"). c #0E0E0E",
"!. c #3E3E3E",
"~. c #151515",
"{. c #363636",
"]. c #C8C8C8",
"^. c #040404",
"/. c #1A1A1A",
"(. c #555555",
"_. c #C6C6C6",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . + @ # $ % & * = - . . ; > > > > , ' ) ! ~ . . . . . ; > > > > , ' ) ! ~ . . . . . ; > > > > > , { ] ^ . . . . ",
". . . . / , > > > > > > > ( . . ; > > > > > > > > > _ : . . . ; > > > > > > > > > _ : . . . ; > > > > > > > > < [ . . . ",
". . . } > > | 1 2 3 4 5 6 7 . . ; > $ . . 8 9 0 ! , > a b . . ; > $ . . 8 9 0 ! , > a b . . ; > $ . . . 2 c d > e . . . ",
". . f g > h . . . . . . . . . . ; > $ . . . . . . i j > k . . ; > $ . . . . . . i j > k . . ; > $ . . . . . l > m . . . ",
". . n > o p . . . . . . . . . . ; > $ . . . . . . . q > r . . ; > $ . . . . . . . q > r . . ; > $ . . . . . l > s . . . ",
". . t > u . . . . . . . . . . . ; > $ . . . . . . . v > w f . ; > $ . . . . . . . v > w f . ; > $ . . . x y z > A . . . ",
". . r > B . . . . . . . . . . . ; > $ . . . . . . . . C > D . ; > $ . . . . . . . . C > D . ; > > > > > > > E F . . . . ",
". . G > ~ . . . . . . . . . . . ; > $ . . . . . . . . ( > H . ; > $ . . . . . . . . ( > H . ; > > > > > > > I J K . . . ",
". . r > B . . . . . . . . . . . ; > $ . . . . . . . . g > L . ; > $ . . . . . . . . g > L . ; > $ . . . M i N > O . . . ",
". . t > u . . . . . . . . . . . ; > $ . . . . . . . v > P Q . ; > $ . . . . . . . v > P Q . ; > $ . . . . . M j w R . . ",
". . n > # p . . . . . . . . . . ; > $ . . . . . . . S > T . . ; > $ . . . . . . . S > T . . ; > $ . . . . . . U > 1 . . ",
". . f V > W . . . . . . . . . . ; > $ . . . . . . i j > X . . ; > $ . . . . . . i j > X . . ; > $ . . . . . M j > Y . . ",
". . . Z > > ` ...b +.@.h 7 . . ; > $ . . 8 : #.$., > %.b . . ; > $ . . 8 : #.$., > %.b . . ; > $ . . . M H &.> V *.. . ",
". . . . =.-.> > > > > > > ( . . ; > > > > > > > > > ;.>.. . . ; > > > > > > > > > ;.>.. . . ; > > > > > > > > w ,.. . . ",
". . . . . 4 '.o )., & !.= - . . ; > > > > -.~.{.! ].. . . . . ; > > > > -.~.{.! ].. . . . . ; > > > > > ^./.(._.. . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "};

View File

@ -881,6 +881,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1644,6 +1652,14 @@ vozík</translation>
<source>Unable to read CD.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -877,6 +877,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1638,6 +1646,14 @@ Cart</source>
<source>Unknown</source>
<translation type="obsolete">Unbekannt</translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -877,6 +877,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1631,6 +1639,14 @@ Cartucho</translation>
<source>Unable to read CD.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -847,6 +847,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1468,6 +1476,14 @@ Cart</source>
<source>Unable to read CD.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -877,6 +877,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1633,6 +1641,14 @@ Cart</source>
<source>Unknown</source>
<translation type="obsolete">Ukjent</translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -877,6 +877,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1633,6 +1641,14 @@ Cart</source>
<source>Unknown</source>
<translation type="obsolete">Ukjent</translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -877,6 +877,14 @@
<source>Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disc Artist</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>
@ -1639,6 +1647,14 @@ Cartão</translation>
<source>Unknown</source>
<translation type="obsolete">Desconhecido</translation>
</message>
<message>
<source>Unable to create temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CD-TEXT</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDEditAudio</name>

View File

@ -2,7 +2,7 @@
//
// RDDiscLookup instance class for accessing the FreeDB CD Database.
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -59,7 +59,7 @@ RDCddbLookup::~RDCddbLookup()
QString RDCddbLookup::sourceName() const
{
return QString("FreeDB");
return QString("CDDB");
}
@ -156,7 +156,7 @@ void RDCddbLookup::readyReadData()
f0.erase(f0.begin());
f0.erase(f0.begin());
f0.erase(f0.begin());
discRecord()->setDiscTitle(f0.join(" "));
discRecord()->setDiscTitle(RDDiscRecord::RemoteSource,f0.join(" "));
snprintf(buffer,2048,"cddb read %s %08x\n",
(const char *)discRecord()->discGenre().utf8(),
discRecord()->discId());
@ -248,10 +248,12 @@ void RDCddbLookup::readyReadData()
discRecord()->setDiscGenre(f0.at(0));
f0=titlesBox()->currentText().split("/");
if(f0.size()==2) {
discRecord()->setDiscTitle(f0.at(1).trimmed());
discRecord()->setDiscTitle(RDDiscRecord::RemoteSource,
f0.at(1).trimmed());
}
else {
discRecord()->setDiscTitle(titlesBox()->currentText().trimmed());
discRecord()->setDiscTitle(RDDiscRecord::RemoteSource,
titlesBox()->currentText().trimmed());
}
snprintf(buffer,2048,"cddb read %s %08x\n",
(const char *)discRecord()->discGenre().utf8(),
@ -291,7 +293,8 @@ void RDCddbLookup::readyReadData()
}
ParsePair(&line,&tag,&value,&index);
if(tag=="DTITLE") {
discRecord()->setDiscTitle(value.left(value.length()-1));
discRecord()->setDiscTitle(RDDiscRecord::RemoteSource,
value.left(value.length()-1));
}
if(tag=="DYEAR") {
discRecord()->setDiscYear(value.toUInt());
@ -305,7 +308,8 @@ void RDCddbLookup::readyReadData()
discRecord()->setDiscPlayOrder(value);
}
if((tag=="TTITLE")&&(index!=-1)) {
discRecord()->setTrackTitle(index,value.left(value.length()-1));
discRecord()->setTrackTitle(RDDiscRecord::RemoteSource,index,
value.left(value.length()-1));
}
if((tag=="EXTT")&&(index!=-1)) {
discRecord()->
@ -340,19 +344,19 @@ void RDCddbLookup::errorData(QAbstractSocket::SocketError err)
}
lookup_state=0;
QApplication::restoreOverrideCursor();
emit lookupDone(RDCddbLookup::LookupError,err_msg);
}
void RDCddbLookup::FinishCddbLookup(RDCddbLookup::Result res,
const QString &err_msg)
{
printf("FinishCddbLookup(%d,%s)\n",res,err_msg.toUtf8().constData());
SendToServer("quit");
lookup_socket->close();
lookup_state=0;
QApplication::restoreOverrideCursor();
emit lookupDone(res,err_msg);
profile("CDDB lookup finished");
processLookup(res,err_msg);
}

View File

@ -2,7 +2,7 @@
//
// RDDiscLookup instance class for accessing the FreeDB CD Database.
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -56,16 +56,16 @@ class RDCddbLookup : public RDDiscLookup
private:
void FinishCddbLookup(RDCddbLookup::Result res,const QString &err_msg);
QString DecodeString(QString &str);
void ParsePair(QString *line,QString *tag,QString *value,int *index);
int GetIndex(QString *tag);
void SendToServer(const QString &msg);
QTcpSocket *lookup_socket;
int lookup_state;
QString lookup_username;
QString lookup_appname;
QString lookup_appver;
QString lookup_hostname;
QString DecodeString(QString &str);
void ParsePair(QString *line,QString *tag,QString *value,int *index);
int GetIndex(QString *tag);
void SendToServer(const QString &msg);
QTcpSocket *lookup_socket;
int lookup_state;
QString lookup_username;
QString lookup_appname;
QString lookup_appver;
QString lookup_hostname;
};
#endif // RDCDDBLOOKUP_H

View File

@ -2,7 +2,7 @@
//
// Base class for CD metadata lookup methods
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -29,8 +29,6 @@
#include <qregexp.h>
#include <qtimer.h>
#include <discid/discid.h>
#include "rdtempdirectory.h"
#include "rddisclookup.h"
#include "rdprofile.h"
@ -39,8 +37,20 @@ RDDiscLookup::RDDiscLookup(const QString &caption,FILE *profile_msgs,
QWidget *parent)
: RDDialog(parent)
{
QString err_msg;
lookup_caption=caption;
lookup_profile_msgs=profile_msgs;
lookup_has_cd_text=false;
lookup_disc=NULL;
lookup_temp_directory=new RDTempDirectory("rddisclookup");
if(!lookup_temp_directory->create(&err_msg)) {
QMessageBox::warning(this,caption+" - "+tr("Error"),
tr("Unable to create temporary directory")+
" \""+lookup_temp_directory->path()+"\".\n"+
"["+err_msg+"]");
}
lookup_titles_label=new QLabel(tr("Multiple Matches Found!"),this);
lookup_titles_label->setAlignment(Qt::AlignCenter|Qt::AlignVCenter);
@ -58,6 +68,12 @@ RDDiscLookup::RDDiscLookup(const QString &caption,FILE *profile_msgs,
}
RDDiscLookup::~RDDiscLookup()
{
delete lookup_temp_directory;
}
QSize RDDiscLookup::sizeHint() const
{
return QSize(400,140);
@ -66,7 +82,7 @@ QSize RDDiscLookup::sizeHint() const
QString RDDiscLookup::sourceName() const
{
return QString();
return QString(tr("CD-TEXT"));
}
@ -76,6 +92,23 @@ QPixmap RDDiscLookup::sourceLogo() const
}
QPixmap RDDiscLookup::sourceLogo(RDDiscRecord::DataSource src) const
{
QPixmap ret=RDLibraryConf::cdServerLogo(RDLibraryConf::DummyType);
switch(src) {
case RDDiscRecord::LocalSource:
case RDDiscRecord::LastSource:
break;
case RDDiscRecord::RemoteSource:
ret=sourceLogo();
}
return ret;
}
QString RDDiscLookup::sourceUrl() const
{
return QString();
@ -90,61 +123,99 @@ void RDDiscLookup::setCddbRecord(RDDiscRecord *rec)
void RDDiscLookup::lookup()
{
QString rip_dev=rda->libraryConf()->ripperDevice();
if(discRecord()->tracks()==0) {
return;
}
profile("starting CD-TEXT lookup");
if((lookup_has_cd_text=ReadCdText(rip_dev))) {
profile("CD-TEXT lookup success");
}
else {
profile("CD-TEXT lookup failure");
}
//
// Get some basic disc parameters,
//
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
DiscId *disc=discid_new();
if(discid_read_sparse(disc,rda->libraryConf()->ripperDevice().toUtf8(),0)==0) {
if(lookup_disc!=NULL) {
discid_free(lookup_disc);
lookup_disc=NULL;
}
lookup_disc=discid_new();
if(discid_read_sparse(lookup_disc,rip_dev.toUtf8(),0)==0) {
QMessageBox::warning(this,caption()+" - "+tr("Error"),
tr("Unable to read CD.")+
"\n["+QString::fromUtf8(discid_get_error_msg(disc))+"]");
discid_free(disc);
"\n["+QString::fromUtf8(discid_get_error_msg(lookup_disc))+"]");
discid_free(lookup_disc);
lookup_disc=NULL;
return;
}
discRecord()->setDiscId(QString(discid_get_freedb_id(disc)).toUInt(NULL,16));
discRecord()->setDiscMbId(discid_get_id(disc));
discRecord()->setMbSubmissionUrl(discid_get_submission_url(disc));
discRecord()->setDiscId(QString(discid_get_freedb_id(lookup_disc)).toUInt(NULL,16));
discRecord()->setDiscMbId(discid_get_id(lookup_disc));
discRecord()->setMbSubmissionUrl(discid_get_submission_url(lookup_disc));
QApplication::restoreOverrideCursor();
//
// Call the low-level driver to do its lookup.
//
lookupRecord();
}
void RDDiscLookup::lookupRecord()
{
processLookup(RDDiscLookup::ExactMatch,"OK");
}
void RDDiscLookup::processLookup(RDDiscLookup::Result result,
const QString &err_msg)
{
QString rip_dev=rda->libraryConf()->ripperDevice();
//
// If the low-level driver didn't find ISRCs, and the user has requested
// them, try to find them on the disc.
//
// WARNING: This operation can be VERY expensive if the disc does not in
// WARNING: This operation can take a long time if the disc does not in
// fact contain ISRCs!
//
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
if((!discRecord()->hasIsrcs())&&rda->libraryConf()->readIsrc()) {
if(discid_read(disc,rda->libraryConf()->ripperDevice().toUtf8())==0) {
if(discid_read(lookup_disc,rip_dev.toUtf8())==0) {
QMessageBox::warning(this,caption()+" - "+tr("Error"),
tr("Unable to read CD.")+
"\n["+QString::fromUtf8(discid_get_error_msg(disc))+"]");
discid_free(disc);
"\n["+QString::fromUtf8(discid_get_error_msg(lookup_disc))+"]");
discid_free(lookup_disc);
lookup_disc=NULL;
return;
}
discRecord()->setMcn(discid_get_mcn(disc));
int first=discid_get_first_track_num(disc);
int last=discid_get_last_track_num(disc);
discRecord()->setMcn(discid_get_mcn(lookup_disc));
int first=discid_get_first_track_num(lookup_disc);
int last=discid_get_last_track_num(lookup_disc);
for(int i=first;i<=last;i++) {
if((i-first)<discRecord()->tracks()) {
discRecord()->setIsrc(i-first,
RDDiscLookup::normalizedIsrc(discid_get_track_isrc(disc,i)));
RDDiscLookup::normalizedIsrc(discid_get_track_isrc(lookup_disc,i)));
}
}
}
QApplication::restoreOverrideCursor();
discid_free(disc);
discid_free(lookup_disc);
lookup_disc=NULL;
emit lookupDone(RDDiscLookup::ExactMatch,"OK");
}
bool RDDiscLookup::hasCdText() const
{
return lookup_has_cd_text;
}
@ -361,3 +432,86 @@ QString RDDiscLookup::normalizedUpcA(const QString &barcode,bool *ok)
}
return QString();
}
QString RDDiscLookup::tempDirectoryPath() const
{
return lookup_temp_directory->path();
}
bool RDDiscLookup::ReadCdText(const QString &cdda_dev)
{
RDProfile *title_profile=new RDProfile();
bool ret=false;
QString str;
QString cmd;
//
// Write the Track Title Data to a Temp File
//
QByteArray output;
Q3Process *proc=new Q3Process(this);
proc->addArgument("cdda2wav");
proc->addArgument("-D");
proc->addArgument(cdda_dev);
proc->addArgument("--info-only");
proc->addArgument("-v");
proc->addArgument("titles");
proc->setWorkingDirectory(tempDirectoryPath());
if(!proc->start()) {
delete proc;
return false;
}
while(proc->isRunning()) {
output=proc->readStderr();
if(output.size()>0) { // Work around icedax(1)'s idiotic user prompt
if(strncmp(output,"load cdrom please and press enter",33)==0) {
proc->kill();
delete proc;
return false;
}
}
}
if((!proc->normalExit())||(proc->exitStatus()!=0)) {
delete proc;
return false;
}
delete proc;
//
// Read the Track Title Data File
//
for(int i=0;i<lookup_record->tracks();i++) {
title_profile->setSource(tempDirectoryPath()+
QString().sprintf("/audio_%02d.inf",i+1));
str=title_profile->stringValue("","Albumtitle","");
str.remove("'");
if((!str.isEmpty())&&(str!="''")) {
lookup_record->setDiscTitle(RDDiscRecord::LocalSource,str);
ret=true;
}
str=title_profile->stringValue("","Albumperformer","");
str.remove("'");
if((!str.isEmpty())&&(str!="''")) {
lookup_record->setDiscArtist(RDDiscRecord::LocalSource,str);
ret=true;
}
str=title_profile->stringValue("","Tracktitle","");
str.remove("'");
if((!str.isEmpty())&&(str!="''")) {
lookup_record->setTrackTitle(RDDiscRecord::LocalSource,i,str);
ret=true;
}
str=title_profile->stringValue("","Performer","");
str.remove("'");
if((!str.isEmpty())&&(str!="''")) {
lookup_record->setTrackArtist(RDDiscRecord::LocalSource,i,str);
ret=true;
}
}
return ret;
}

View File

@ -2,7 +2,7 @@
//
// Base class for CD metadata lookup methods
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -24,6 +24,8 @@
#include <stdio.h>
#include <discid/discid.h>
#include <qcombobox.h>
#include <qlabel.h>
#include <qpixmap.h>
@ -33,6 +35,7 @@
#include <rddiscrecord.h>
#include <rddialog.h>
#include <rdtempdirectory.h>
class RDDiscLookup : public RDDialog
{
@ -40,12 +43,15 @@ class RDDiscLookup : public RDDialog
public:
enum Result {ExactMatch=0,NoMatch=1,LookupError=2};
RDDiscLookup(const QString &caption,FILE *profile_msgs,QWidget *parent=0);
~RDDiscLookup();
QSize sizeHint() const;
virtual QString sourceName() const;
virtual QPixmap sourceLogo() const;
QPixmap sourceLogo(RDDiscRecord::DataSource src) const;
virtual QString sourceUrl() const;
void setCddbRecord(RDDiscRecord *);
void lookup();
bool hasCdText() const;
static bool isrcIsValid(const QString &isrc);
static QString formattedIsrc(const QString &isrc,bool *ok=NULL);
static QString normalizedIsrc(const QString &isrc,bool *ok=NULL);
@ -62,28 +68,34 @@ class RDDiscLookup : public RDDialog
void cancelData();
protected:
virtual void lookupRecord()=0;
virtual void lookupRecord();
void processLookup(RDDiscLookup::Result result,const QString &err_msg);
void resizeEvent(QResizeEvent *e);
RDDiscRecord *discRecord() const;
void profile(const QString &msg);
QComboBox *titlesBox();
QStringList *titlesKey();
QString tempDirectoryPath() const;
private:
QLabel *lookup_titles_label;
QComboBox *lookup_titles_box;
QStringList lookup_titles_key;
QPushButton *lookup_ok_button;
QPushButton *lookup_cancel_button;
RDDiscRecord *lookup_record;
QTcpSocket *lookup_socket;
int lookup_state;
QString lookup_username;
QString lookup_appname;
QString lookup_appver;
QString lookup_hostname;
FILE *lookup_profile_msgs;
QString lookup_caption;
bool ReadCdText(const QString &cdda_dev);
QLabel *lookup_titles_label;
QComboBox *lookup_titles_box;
QStringList lookup_titles_key;
QPushButton *lookup_ok_button;
QPushButton *lookup_cancel_button;
RDDiscRecord *lookup_record;
QTcpSocket *lookup_socket;
int lookup_state;
QString lookup_username;
QString lookup_appname;
QString lookup_appver;
QString lookup_hostname;
FILE *lookup_profile_msgs;
QString lookup_caption;
RDTempDirectory *lookup_temp_directory;
bool lookup_has_cd_text;
DiscId *lookup_disc;
};
#endif // RDDISCLOOKUP_H

View File

@ -2,7 +2,7 @@
//
// Container Class for Compact Disc Metadata
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -18,6 +18,8 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <QObject>
#include "rddiscrecord.h"
RDDiscRecord::RDDiscRecord()
@ -28,12 +30,19 @@ RDDiscRecord::RDDiscRecord()
void RDDiscRecord::clear()
{
for(int i=0;i<RDDiscRecord::LastSource;i++) {
disc_has_data[i]=false;
disc_disc_title[i]="";
disc_disc_artist[i]="";
disc_disc_album[i]="";
for(int j=0;j<CDROM_LEADOUT;j++) {
disc_track_title[i][j]="";
disc_track_artist[i][j]="";
}
}
disc_tracks=0;
disc_disc_id=0;
disc_disc_length=0;
disc_disc_title="";
disc_disc_artist="";
disc_disc_album="";
disc_disc_author="";
disc_disc_year=0;
disc_disc_genre="";
@ -41,9 +50,7 @@ void RDDiscRecord::clear()
disc_disc_playorder="";
disc_disc_release_mb_id="";
for(int i=0;i<CDROM_LEADOUT;i++) {
disc_track_title[i]="";
disc_track_extended[i]="";
disc_track_artist[i]="";
disc_track_isrc[i]="";
disc_track_offset[i]=0;
disc_track_recording_mb_id[i]="";
@ -63,6 +70,12 @@ void RDDiscRecord::setTracks(int num)
}
bool RDDiscRecord::hasData(RDDiscRecord::DataSource src) const
{
return disc_has_data[src];
}
unsigned RDDiscRecord::discLength() const
{
return disc_disc_length;
@ -95,7 +108,7 @@ QString RDDiscRecord::discMbId() const
void RDDiscRecord::setDiscMbId(const QString &mbid)
{
disc_disc_mb_id=mbid;
disc_disc_mb_id=mbid.trimmed();
}
@ -107,7 +120,7 @@ QString RDDiscRecord::mcn() const
void RDDiscRecord::setMcn(const QString &mcn)
{
disc_mcn=mcn;
disc_mcn=mcn.trimmed();
}
@ -119,7 +132,7 @@ QString RDDiscRecord::trackRecordingMbId(int track) const
void RDDiscRecord::setTrackRecordingMbId(int track,const QString &str)
{
disc_track_recording_mb_id[track]=str;
disc_track_recording_mb_id[track]=str.trimmed();
}
@ -131,7 +144,7 @@ QString RDDiscRecord::discReleaseMbId() const
void RDDiscRecord::setDiscReleaseMbId(const QString &mbid)
{
disc_disc_release_mb_id=mbid;
disc_disc_release_mb_id=mbid.trimmed();
}
@ -143,55 +156,61 @@ QString RDDiscRecord::mbSubmissionUrl() const
void RDDiscRecord::setMbSubmissionUrl(const QString &url)
{
disc_mb_submission_url=url;
disc_mb_submission_url=url.trimmed();
}
QString RDDiscRecord::discTitle() const
QString RDDiscRecord::discTitle(RDDiscRecord::DataSource src) const
{
return disc_disc_title;
return disc_disc_title[src];
}
void RDDiscRecord::setDiscTitle(QString title)
void RDDiscRecord::setDiscTitle(RDDiscRecord::DataSource src,
const QString &title)
{
int n;
disc_disc_title=title;
disc_has_data[src]=true;
disc_disc_title[src]=title.trimmed();
if((n=title.find(" / "))!=-1) {
disc_disc_artist=title.left(n);
disc_disc_album=title.right(title.length()-n-3);
disc_disc_artist[src]=title.left(n).trimmed();
disc_disc_album[src]=title.right(title.length()-n-3).trimmed();
disc_disc_author="";
}
else {
disc_disc_album=title;
disc_disc_artist=title;
disc_disc_album[src]=title.trimmed();
disc_disc_artist[src]=title.trimmed();
disc_disc_author="";
}
}
QString RDDiscRecord::discArtist() const
QString RDDiscRecord::discArtist(RDDiscRecord::DataSource src) const
{
return disc_disc_artist;
return disc_disc_artist[src];
}
void RDDiscRecord::setDiscArtist(QString artist)
void RDDiscRecord::setDiscArtist(RDDiscRecord::DataSource src,
const QString &artist)
{
disc_disc_artist=artist;
disc_has_data[src]=true;
disc_disc_artist[src]=artist.trimmed();
}
QString RDDiscRecord::discAlbum() const
QString RDDiscRecord::discAlbum(RDDiscRecord::DataSource src) const
{
return disc_disc_album;
return disc_disc_album[src];
}
void RDDiscRecord::setDiscAlbum(QString album)
void RDDiscRecord::setDiscAlbum(RDDiscRecord::DataSource src,
const QString &album)
{
disc_disc_album=album;
disc_has_data[src]=true;
disc_disc_album[src]=album.trimmed();
}
@ -203,7 +222,7 @@ QString RDDiscRecord::discAuthor() const
void RDDiscRecord::setDiscAuthor(QString author)
{
disc_disc_author=author;
disc_disc_author=author.trimmed();
}
@ -227,7 +246,7 @@ QString RDDiscRecord::discGenre() const
void RDDiscRecord::setDiscGenre(QString genre)
{
disc_disc_genre=genre;
disc_disc_genre=genre.trimmed();
}
@ -239,7 +258,7 @@ QString RDDiscRecord::discLabel() const
void RDDiscRecord::setDiscLabel(const QString &str)
{
disc_disc_label=str;
disc_disc_label=str.trimmed();
}
@ -251,7 +270,7 @@ QString RDDiscRecord::discExtended() const
void RDDiscRecord::setDiscExtended(QString text)
{
disc_disc_extended=text;
disc_disc_extended=text.trimmed();
}
@ -263,7 +282,7 @@ QString RDDiscRecord::discPlayOrder() const
void RDDiscRecord::setDiscPlayOrder(QString order)
{
disc_disc_playorder=order;
disc_disc_playorder=order.trimmed();
}
@ -284,19 +303,21 @@ void RDDiscRecord::setTrackOffset(int track,unsigned frames)
}
QString RDDiscRecord::trackTitle(int track) const
QString RDDiscRecord::trackTitle(RDDiscRecord::DataSource src,int track) const
{
if(track<CDROM_LEADOUT) {
return disc_track_title[track];
return disc_track_title[src][track];
}
return QString();
}
void RDDiscRecord::setTrackTitle(int track,QString title)
void RDDiscRecord::setTrackTitle(RDDiscRecord::DataSource src,int track,
const QString &title)
{
if(track<CDROM_LEADOUT) {
disc_track_title[track]=title;
disc_has_data[src]=true;
disc_track_title[src][track]=title.trimmed();
}
}
@ -313,24 +334,26 @@ QString RDDiscRecord::trackExtended(int track) const
void RDDiscRecord::setTrackExtended(int track,QString text)
{
if(track<CDROM_LEADOUT) {
disc_track_extended[track]=text;
disc_track_extended[track]=text.trimmed();
}
}
QString RDDiscRecord::trackArtist(int track) const
QString RDDiscRecord::trackArtist(RDDiscRecord::DataSource src,int track) const
{
if(track<CDROM_LEADOUT) {
return disc_track_artist[track];
return disc_track_artist[src][track];
}
return QString();
}
void RDDiscRecord::setTrackArtist(int track,QString artist)
void RDDiscRecord::setTrackArtist(RDDiscRecord::DataSource src,int track,
const QString &artist)
{
if(track<CDROM_LEADOUT) {
disc_track_artist[track]=artist;
disc_has_data[src]=true;
disc_track_artist[src][track]=artist.trimmed();
}
}
@ -355,17 +378,38 @@ QString RDDiscRecord::isrc(int track) const
}
void RDDiscRecord::setIsrc(int track,QString isrc)
void RDDiscRecord::setIsrc(int track,const QString &isrc)
{
if(track<CDROM_LEADOUT) {
disc_track_isrc[track]=isrc;
disc_track_isrc[track]=isrc.trimmed();
}
}
QString RDDiscRecord::dump()
QString RDDiscRecord::summary(RDDiscRecord::DataSource src) const
{
QString ret="RDDiscRecord::dump()\n";
QString ret;
if(!discTitle(src).isEmpty()) {
ret+="<strong>"+QObject::tr("Disc Title")+"</strong>: "+
discTitle(src)+"<br>\n";
}
if(!discArtist(src).isEmpty()) {
ret+="<strong>"+QObject::tr("Disc Artist")+"</strong>: "+
discArtist(src)+"<br>\n";
}
for(int i=0;i<tracks();i++) {
ret+="<strong>"+QObject::tr("Track")+QString().sprintf(" %2d: ",i+1)+
"</strong>"+trackTitle(src,i)+"<br>\n";
}
return ret;
}
QString RDDiscRecord::dump(RDDiscRecord::DataSource src) const
{
QString ret=QString().sprintf("RDDiscRecord::dump(%u)\n",src);
ret+=QString().sprintf("tracks: %d\n",tracks());
ret+=QString().sprintf("discLength: %d\n",discLength());
@ -373,9 +417,9 @@ QString RDDiscRecord::dump()
ret+="mcn: "+mcn()+"\n";
ret+="discMbId: "+discMbId()+"\n";
ret+="mbSubmissionUrl: "+mbSubmissionUrl()+"\n";
ret+="discTitle: "+discTitle()+"\n";
ret+="discArtist: "+discArtist()+"\n";
ret+="discAlbum: "+discAlbum()+"\n";
ret+="discTitle: "+discTitle(src)+"\n";
ret+="discArtist: "+discArtist(src)+"\n";
ret+="discAlbum: "+discAlbum(src)+"\n";
ret+="discAuthor: "+discAuthor()+"\n";
ret+=QString().sprintf("discYear: %u\n",discYear());
ret+="discGenre: "+discGenre()+"\n";
@ -385,7 +429,7 @@ QString RDDiscRecord::dump()
for(int i=0;i<tracks();i++) {
QString num=QString().sprintf("(%d): ",i+1);
ret+="trackOffset"+num+QString().sprintf("%u",trackOffset(i))+"\n";
ret+="trackTitle"+num+trackTitle(i)+"\n";
ret+="trackTitle"+num+trackTitle(src,i)+"\n";
ret+="trackExtended"+num+trackExtended(i)+"\n";
ret+="trackRecordingMbId"+num+trackRecordingMbId(i)+"\n";
ret+="isrc"+num+isrc(i)+"\n";

View File

@ -2,7 +2,7 @@
//
// Container Class for Compact Disc Metadata
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -25,22 +25,15 @@
#include <qstring.h>
#include <linux/cdrom.h>
/**
* @short A container class for CDDB data.
* @author Fred Gleason <fredg@paravelsystems.com>
**/
class RDDiscRecord
{
public:
/**
* Create an RDDiscRecord object
**/
enum DataSource {LocalSource=0,RemoteSource=1,LastSource=2};
RDDiscRecord();
void clear();
int tracks() const;
void setTracks(int num);
bool hasData(RDDiscRecord::DataSource src) const;
unsigned discLength() const;
void setDiscLength(unsigned len);
unsigned discId() const;
@ -53,12 +46,12 @@ class RDDiscRecord
void setDiscReleaseMbId(const QString &mbid);
QString mbSubmissionUrl() const;
void setMbSubmissionUrl(const QString &url);
QString discTitle() const;
void setDiscTitle(QString title);
QString discArtist() const;
void setDiscArtist(QString artist);
QString discAlbum() const;
void setDiscAlbum(QString album);
QString discTitle(DataSource src) const;
void setDiscTitle(DataSource src,const QString &title);
QString discArtist(DataSource src) const;
void setDiscArtist(DataSource src,const QString &artist);
QString discAlbum(DataSource src) const;
void setDiscAlbum(DataSource src, const QString &album);
QString discAuthor() const;
void setDiscAuthor(QString author);
unsigned discYear() const;
@ -73,18 +66,19 @@ class RDDiscRecord
void setDiscPlayOrder(QString order);
unsigned trackOffset(int track) const;
void setTrackOffset(int track,unsigned frames);
QString trackTitle(int track) const;
void setTrackTitle(int track,QString title);
QString trackTitle(DataSource src,int track) const;
void setTrackTitle(DataSource src,int track,const QString &title);
QString trackExtended(int track) const;
void setTrackExtended(int track,QString text);
QString trackArtist(int track) const;
void setTrackArtist(int track,QString artist);
QString trackArtist(DataSource src,int track) const;
void setTrackArtist(DataSource src,int track,const QString &artist);
QString trackRecordingMbId(int track) const;
void setTrackRecordingMbId(int track,const QString &str);
bool hasIsrcs() const;
QString isrc(int track) const;
void setIsrc(int track,QString isrc);
QString dump();
void setIsrc(int track,const QString &isrc);
QString summary(RDDiscRecord::DataSource src) const;
QString dump(RDDiscRecord::DataSource src) const;
private:
int disc_tracks;
@ -94,21 +88,22 @@ class RDDiscRecord
QString disc_disc_release_mb_id;
QString disc_mb_submission_url;
unsigned disc_disc_length;
QString disc_disc_title;
QString disc_disc_artist;
QString disc_disc_album;
QString disc_disc_title[RDDiscRecord::LastSource];
QString disc_disc_artist[RDDiscRecord::LastSource];
QString disc_disc_album[RDDiscRecord::LastSource];
QString disc_disc_author;
unsigned disc_disc_year;
QString disc_disc_genre;
QString disc_disc_label;
QString disc_disc_extended;
QString disc_disc_playorder;
QString disc_track_title[CDROM_LEADOUT];
QString disc_track_title[RDDiscRecord::LastSource][CDROM_LEADOUT];
QString disc_track_extended[CDROM_LEADOUT];
QString disc_track_artist[CDROM_LEADOUT];
QString disc_track_artist[RDDiscRecord::LastSource][CDROM_LEADOUT];
QString disc_track_isrc[CDROM_LEADOUT];
unsigned disc_track_offset[CDROM_LEADOUT];
QString disc_track_recording_mb_id[CDROM_LEADOUT];
bool disc_has_data[RDDiscRecord::LastSource];
};

View File

@ -2,7 +2,7 @@
//
// RDDiscLookup instance class for dummy lookup
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -30,5 +30,5 @@ RDDummyLookup::RDDummyLookup(const QString &caption,FILE *profile_msgs,
void RDDummyLookup::lookupRecord()
{
emit lookupDone(RDDiscLookup::NoMatch,"OK");
processLookup(RDDiscLookup::NoMatch,"OK");
}

View File

@ -2,7 +2,7 @@
//
// RDDiscLookup instance class for dummy lookup
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License

View File

@ -279,7 +279,7 @@ void RDFontEngine::MakeFonts(const QFont &default_font)
font_big_label_font=QFont(family,label_size+4,QFont::Bold);
font_big_label_font.setPixelSize(label_size+4);
font_big_label_font_metrics=new QFontMetrics(font_label_font);
font_big_label_font_metrics=new QFontMetrics(font_big_label_font);
font_label_font=QFont(family,label_size,QFont::Bold);
font_label_font.setPixelSize(label_size);

View File

@ -2,7 +2,7 @@
//
// Abstract an RDLibrary Configuration.
//
// (C) Copyright 2002-2003,2016-2018 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -18,14 +18,20 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <QPixmap>
#include <rddb.h>
#include <rdconf.h>
#include <rdlibrary_conf.h>
#include <rdescape_string.h>
//
// Global Classes
// Logos
//
#include "../icons/cd-text-55x47.xpm"
#include "../icons/cddb-60x25.xpm"
#include "../icons/musicbrainz-159x25.xpm"
RDLibraryConf::RDLibraryConf(const QString &station)
{
RDSqlQuery *q;
@ -428,6 +434,30 @@ QString RDLibraryConf::cdServerTypeText(RDLibraryConf::CdServerType type)
}
QPixmap RDLibraryConf::cdServerLogo(CdServerType type)
{
QPixmap ret;
switch(type) {
case RDLibraryConf::DummyType:
ret=QPixmap(cd_text_55x47_xpm);
break;
case RDLibraryConf::CddbType:
ret=QPixmap(cddb_60x25_xpm);
break;
case RDLibraryConf::MusicBrainzType:
ret=QPixmap(musicbrainz_159x25_xpm);
break;
case RDLibraryConf::LastType:
break;
}
return ret;
}
void RDLibraryConf::SetRow(const QString &param,int value) const
{
RDSqlQuery *q;

View File

@ -84,6 +84,7 @@ class RDLibraryConf
bool searchLimited() const;
void setSearchLimited(bool state) const;
static QString cdServerTypeText(CdServerType type);
static QPixmap cdServerLogo(CdServerType type);
private:
void SetRow(const QString &param,int value) const;

View File

@ -2,7 +2,7 @@
//
// RDDiscLookup instance class for MusicBrainz
//
// (C) Copyright 2003-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2003-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
@ -53,7 +53,6 @@
#include "rdconf.h"
#include "rdmblookup.h"
#include "../icons/musicbrainz-159x25.xpm"
#include "../icons/cover_art_default-60x60.xpm"
QString err_str="OK";
@ -118,7 +117,7 @@ QString RDMbLookup::sourceName() const
QPixmap RDMbLookup::sourceLogo() const
{
return QPixmap(musicbrainz_159x25_xpm);
return RDLibraryConf::cdServerLogo(RDLibraryConf::MusicBrainzType);
}
@ -246,7 +245,7 @@ void RDMbLookup::lookupRecord()
result_code=RDDiscLookup::NoMatch;
}
QApplication::restoreOverrideCursor();
emit lookupDone(result_code,err_str);
processLookup(result_code,err_str);
}
@ -260,7 +259,8 @@ RDDiscLookup::Result RDMbLookup::ProcessRelease(MusicBrainz5::CRelease *release)
// Extract Basic Release Data
//
discRecord()->setDiscReleaseMbId(QString::fromUtf8(release->ID().c_str()));
discRecord()->setDiscAlbum(QString::fromUtf8(release->Title().c_str()));
discRecord()->setDiscAlbum(RDDiscRecord::RemoteSource,
QString::fromUtf8(release->Title().c_str()));
//discRecord()->setDiscGenre();
QStringList f0=QString::fromUtf8(release->Date().c_str()).split("-");
discRecord()->setDiscYear(f0.at(0).toInt());
@ -284,7 +284,7 @@ RDDiscLookup::Result RDMbLookup::ProcessRelease(MusicBrainz5::CRelease *release)
QString::fromUtf8(credits->Item(j)->Artist()->Name().c_str());
str+=QString::fromUtf8(credits->Item(j)->JoinPhrase().c_str());
}
discRecord()->setDiscArtist(str);
discRecord()->setDiscArtist(RDDiscRecord::RemoteSource,str);
}
//
@ -307,7 +307,8 @@ RDDiscLookup::Result RDMbLookup::ProcessRelease(MusicBrainz5::CRelease *release)
MusicBrainz5::CTrack *track=tracks->Item(k);
MusicBrainz5::CRecording *recording=track->Recording();
discRecord()->
setTrackTitle(k,QString::fromUtf8(recording->Title().c_str()));
setTrackTitle(RDDiscRecord::RemoteSource,k,
QString::fromUtf8(recording->Title().c_str()));
discRecord()->
setTrackRecordingMbId(k,QString::fromUtf8(recording->ID().c_str()));
MusicBrainz5::CISRCList *isrcs=recording->ISRCList();

View File

@ -2,7 +2,7 @@
##
## Automake.am for rivendell/rdlibrary
##
## (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
## (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as

View File

@ -602,18 +602,23 @@ void CdRipper::stoppedData()
void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg)
{
RDDiscRecord::DataSource src=RDDiscRecord::RemoteSource;
switch(result) {
case RDDiscLookup::ExactMatch:
if(rip_cdrom->status()!=RDCdPlayer::Ok) {
return;
}
rip_artist_edit->setText(rip_disc_record->discArtist());
rip_album_edit->setText(rip_disc_record->discAlbum());
//
// FIXME: What do we do if we get BOTH local and remote data?
//
rip_artist_edit->setText(rip_disc_record->discArtist(src));
rip_album_edit->setText(rip_disc_record->discAlbum(src));
rip_label_edit->setText(rip_disc_record->discLabel());
rip_other_edit->setText(rip_disc_record->discExtended());
for(int i=0;i<rip_disc_record->tracks();i++) {
rip_track_list->findItem(QString().sprintf("%d",i+1),0)->
setText(2,rip_disc_record->trackTitle(i));
setText(2,rip_disc_record->trackTitle(src,i));
rip_track_list->findItem(QString().sprintf("%d",i+1),0)->
setText(3,rip_disc_record->trackExtended(i));
}

View File

@ -2,7 +2,7 @@
//
// CD Disk Ripper Dialog for Rivendell.
//
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -122,8 +122,8 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode,
rip_apply_box->setChecked(true);
rip_apply_box->setDisabled(true);
rip_apply_label=new QLabel(rip_apply_box,tr("Apply")+" "+
rip_disc_lookup->sourceName()+" "+
tr("Values to Carts"),this);
tr("Metadata")+" "+
tr("Values to Carts"),this);
rip_apply_label->setFont(labelFont());
rip_apply_label->setAlignment(Qt::AlignLeft);
rip_apply_box->setChecked(false);
@ -769,7 +769,7 @@ void DiskRipper::mediaChangedData()
rip_cutnames.push_back(QString());
rip_end_track.push_back(-1);
rip_wave_datas.push_back(new RDWaveData());
rip_wave_datas.back()->setTitle(tr("Track")+QString().sprintf(" %d",rip_cdrom->tracks()-i+1));
rip_wave_datas.back()->setTitle(tr("Track")+QString().sprintf(" %d",i));
l=new RDListViewItem(rip_track_list);
l->setText(0,QString().sprintf("%d",i));
if(rip_cdrom->isAudio(i)) {
@ -779,6 +779,7 @@ void DiskRipper::mediaChangedData()
l->setText(4,tr("Data Track"));
}
l->setText(1,RDGetTimeLength(rip_cdrom->trackLength(i)));
l->setText(2,rip_wave_datas.back()->title());
}
rip_disc_record.clear();
rip_cdrom->setCddbRecord(&rip_disc_record);
@ -803,40 +804,63 @@ void DiskRipper::stoppedData()
void DiskRipper::lookupDoneData(RDDiscLookup::Result result,
const QString &err_msg)
const QString &err_msg)
{
RDDiscRecord::DataSource src=RDDiscRecord::LastSource;
if(rip_disc_record.hasData(RDDiscRecord::LocalSource)) {
src=RDDiscRecord::LocalSource;
}
else {
if(rip_disc_record.hasData(RDDiscRecord::RemoteSource)) {
src=RDDiscRecord::RemoteSource;
}
else {
rip_apply_box->hide();
rip_apply_label->hide();
rip_track=-1;
return; // Apply no metadata
}
}
switch(result) {
case RDDiscLookup::ExactMatch:
if(rip_cdrom->status()!=RDCdPlayer::Ok) {
rip_track=-1;
return;
}
rip_artist_edit->setText(rip_disc_record.discArtist());
rip_album_edit->setText(rip_disc_record.discAlbum());
rip_artist_edit->setText(rip_disc_record.discArtist(src));
rip_album_edit->setText(rip_disc_record.discAlbum(src));
rip_other_edit->setText(rip_disc_record.discExtended());
for(int i=0;i<rip_disc_record.tracks();i++) {
rip_track_list->findItem(QString().sprintf("%d",i+1),0)->
setText(2,rip_disc_record.trackTitle(i));
setText(2,rip_disc_record.trackTitle(src,i));
rip_track_list->findItem(QString().sprintf("%d",i+1),0)->
setText(3,rip_disc_record.trackExtended(i));
rip_wave_datas[i]->setTitle(rip_disc_record.trackTitle(i));
rip_wave_datas[i]->setArtist(rip_disc_record.discArtist());
rip_wave_datas[i]->setAlbum(rip_disc_record.discAlbum());
rip_wave_datas[i]->setLabel(rip_disc_record.discLabel());
rip_wave_datas[rip_wave_datas.size()-i-1]->setTitle(rip_disc_record.trackTitle(src,i));
rip_wave_datas[rip_wave_datas.size()-i-1]->setArtist(rip_disc_record.discArtist(src));
rip_wave_datas[rip_wave_datas.size()-i-1]->setAlbum(rip_disc_record.discAlbum(src));
rip_wave_datas[rip_wave_datas.size()-i-1]->setLabel(rip_disc_record.discLabel());
}
rip_apply_box->setChecked(true);
rip_apply_box->setEnabled(true);
rip_apply_label->setEnabled(true);
rip_browser_button->setDisabled(rip_disc_lookup->sourceUrl().isNull());
rip_browser_label->setDisabled(rip_disc_lookup->sourceUrl().isNull());
rip_apply_box->show();
rip_apply_label->show();
break;
case RDDiscLookup::NoMatch:
rip_apply_box->hide();
rip_apply_label->hide();
rip_track=-1;
break;
case RDDiscLookup::LookupError:
QMessageBox::warning(this,"RDLibrary - "+rip_disc_lookup->sourceName()+
" "+tr("Lookup Error"),err_msg);
rip_apply_box->hide();
rip_apply_label->hide();
rip_track=-1;
break;
}
@ -1061,7 +1085,7 @@ void DiskRipper::RipTrack(int track,int end_track,QString cutname,QString title)
runImport(rda->user()->name(),rda->user()->password(),
&audio_conv_err))) {
case RDAudioImport::ErrorOk:
cart->setMetadata(rip_wave_datas[track-1]);
cart->setMetadata(rip_wave_datas[rip_wave_datas.size()-track]);
cut->setDescription(rip_wave_datas[track-1]->title());
cut->setIsrc(rip_disc_record.isrc(rip_track_number-1));
cut->setRecordingMbId(rip_disc_record.trackRecordingMbId(rip_track_number-1));
@ -1141,6 +1165,7 @@ QString DiskRipper::BuildTrackName(int start_track,int end_track) const
}
item=(RDListViewItem *)item->nextSibling();
}
return ret;
}

View File

@ -2,7 +2,7 @@
//
// CD Disk Ripper Dialog for Rivendell
//
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as

View File

@ -752,6 +752,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>

View File

@ -751,6 +751,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>

View File

@ -752,6 +752,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>

View File

@ -580,6 +580,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>

View File

@ -744,6 +744,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>

View File

@ -744,6 +744,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>

View File

@ -745,6 +745,10 @@ Selection</source>
<source>Lookup Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Metadata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditCart</name>