diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rwxr-xr-x | AAP.svg | 248 | ||||
| -rw-r--r-- | ALP.svg | 131 | ||||
| -rw-r--r-- | Alee Audio Player.desktop | 7 | ||||
| -rw-r--r-- | Alee Audio Player.pro (renamed from AleePlayer.pro) | 13 | ||||
| -rw-r--r-- | AleePlayer.desktop | 7 | ||||
| -rw-r--r-- | AleePlayer_en_CA.ts | 3 | ||||
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | about.cpp | 19 | ||||
| -rw-r--r-- | about.h | 17 | ||||
| -rw-r--r-- | about.ui | 45 | ||||
| -rw-r--r-- | appveyor.yml | 6 | ||||
| -rw-r--r-- | library.cpp | 54 | ||||
| -rw-r--r-- | library.h | 39 | ||||
| -rw-r--r-- | main.cpp | 37 | ||||
| -rw-r--r-- | player.cpp | 72 | ||||
| -rw-r--r-- | player.h | 30 | ||||
| -rw-r--r-- | player.ui | 279 | ||||
| -rw-r--r-- | scripts/appveyor.bat | 6 | ||||
| -rw-r--r-- | translations/en_CA.ts | 202 | ||||
| -rw-r--r-- | translations/fr_CA.ts | 202 | ||||
| -rw-r--r-- | translations/vi_VN.ts | 202 |
22 files changed, 1291 insertions, 332 deletions
@@ -52,3 +52,5 @@ compile_commands.json *creator.user* build + +android @@ -0,0 +1,248 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1000mm" + height="1000mm" + viewBox="0 0 1000 1000" + version="1.1" + id="svg1957" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + sodipodi:docname="AAP.svg"> + <defs + id="defs1951"> + <filter + inkscape:collect="always" + style="color-interpolation-filters:sRGB" + id="filter3581-5" + x="-0.059999999" + width="1.12" + y="-0.059999999" + height="1.12"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="11.72299" + id="feGaussianBlur3583-0" /> + </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3954" + id="linearGradient4532-0" + x1="4.1577382" + y1="58.875" + x2="199.57143" + y2="241.81548" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.562833,0,0,0.562833,120.95711,117.57609)" /> + <linearGradient + id="linearGradient3954" + inkscape:collect="always"> + <stop + id="stop3950" + offset="0" + style="stop-color:#ff8807;stop-opacity:1" /> + <stop + id="stop3952" + offset="1" + style="stop-color:#975100;stop-opacity:1" /> + </linearGradient> + <filter + height="1.096" + y="-0.048" + width="1.096" + x="-0.048" + id="filter3168" + style="color-interpolation-filters:sRGB" + inkscape:collect="always"> + <feGaussianBlur + id="feGaussianBlur3170" + stdDeviation="1.5378906" + inkscape:collect="always" /> + </filter> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="247.911" + x2="232.47932" + y1="133.34694" + x1="120.119" + id="linearGradient2918" + xlink:href="#linearGradient2924" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2924"> + <stop + style="stop-color:#fcff00;stop-opacity:1" + offset="0" + id="stop2920" /> + <stop + style="stop-color:#b09100;stop-opacity:1" + offset="1" + id="stop2922" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.12374369" + inkscape:cx="2579.6705" + inkscape:cy="799.47074" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1343" + inkscape:window-height="908" + inkscape:window-x="569" + inkscape:window-y="34" + inkscape:window-maximized="0" /> + <metadata + id="metadata1954"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g3354" + transform="matrix(10.267165,0,0,10.267547,-1289.1305,-1500.2746)" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <path + d="m 222.93122,194.81694 a 48.673847,48.673847 0 0 1 -47.79061,48.66583 48.673847,48.673847 0 0 1 -49.52503,-46.89964 48.673847,48.673847 0 0 1 45.99324,-50.36792 48.673847,48.673847 0 0 1 51.19422,45.07168" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="6.2105971" + sodipodi:start="0" + sodipodi:ry="48.673847" + sodipodi:rx="48.673847" + sodipodi:cy="194.81694" + sodipodi:cx="174.25737" + sodipodi:type="arc" + id="path817-9" + style="fill:#000c80;fill-opacity:1;stroke-width:0.224156" /> + <path + d="M 937.5005,251.83664 A 234.45979,234.45979 0 0 1 704.2221,486.29346 234.45979,234.45979 0 0 1 468.59282,254.19939 234.45979,234.45979 0 0 1 699.49666,17.403634 234.45979,234.45979 0 0 1 937.45288,247.11137" + sodipodi:arc-type="arc" + transform="matrix(0.18545219,0,0,0.18545219,43.87694,148.11327)" + sodipodi:open="true" + sodipodi:end="6.2630301" + sodipodi:start="0" + sodipodi:ry="234.45979" + sodipodi:rx="234.45979" + sodipodi:cy="251.83664" + sodipodi:cx="703.04071" + sodipodi:type="arc" + id="path819-8-6" + style="fill:#191919;fill-opacity:1;stroke-width:1.78393;filter:url(#filter3581-5)" /> + <path + d="m 217.73845,194.81694 a 43.481079,43.481079 0 0 1 -43.26199,43.48053 43.481079,43.481079 0 0 1 -43.69796,-43.04235 43.481079,43.481079 0 0 1 42.82162,-43.91429 43.481079,43.481079 0 0 1 44.1295,42.5998" + sodipodi:arc-type="arc" + sodipodi:open="true" + sodipodi:end="6.2630301" + sodipodi:start="0" + sodipodi:ry="43.481079" + sodipodi:rx="43.481079" + sodipodi:cy="194.81694" + sodipodi:cx="174.25737" + sodipodi:type="arc" + id="path819-3" + style="fill:url(#linearGradient4532-0);fill-opacity:1;stroke-width:0.330834" /> + <g + id="g3337"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.95665px;line-height:1.25;font-family:Play;-inkscape-font-specification:Play;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.148916" + x="172.20232" + y="194.81694" + id="text1825-5-8"><tspan + sodipodi:role="line" + id="tspan1823-6-5" + x="172.20232" + y="194.81694" + style="stroke-width:0.148916"> </tspan></text> + <circle + transform="matrix(0.61264227,0,0,0.61264227,-603.22306,164.97543)" + r="38.447266" + cy="48.709526" + cx="1269.061" + id="path3766-8" + style="fill:#000000;fill-opacity:0.996078;fill-rule:nonzero;stroke:none;stroke-width:2.06667;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal;filter:url(#filter3168)" /> + <g + transform="translate(-0.16912973,-2.7675262)" + id="g2933"> + <circle + r="23.55442" + cy="197.64726" + cx="174.25737" + id="path3766" + style="fill:url(#linearGradient2918);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.26613;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" /> + <ellipse + ry="3.5370526" + rx="1.6651245" + cy="191.02161" + cx="164.32909" + id="path3794" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78783;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" /> + <ellipse + ry="3.5370526" + rx="1.6651245" + cy="190.92998" + cx="183.73766" + id="path3794-1" + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78783;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" /> + <g + transform="translate(4.4158622,31.006934)" + id="g1035"> + <rect + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.0851603;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + id="rect3680" + width="6.2427411" + height="20.71139" + x="142.70897" + y="157.49884" /> + <path + sodipodi:type="spiral" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" + id="path3772" + sodipodi:cx="1292.2246" + sodipodi:cy="-55.781796" + sodipodi:expansion="1" + sodipodi:revolution="3.02601" + sodipodi:radius="39.10619" + sodipodi:argument="-19.247704" + sodipodi:t0="0.85191101" + transform="matrix(0.68412502,0.09907965,-0.0858267,0.8299174,-720.64463,86.204294)" + d="m 1259.0482,-58.817824 c 0.568,-19.184701 17.5934,-34.020666 36.5069,-33.357732 16.1054,0.564507 30.1652,11.938063 34.7034,27.298741" /> + <rect + style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.0851603;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + id="rect3680-6" + width="6.2427411" + height="20.71139" + x="191.06956" + y="156.7856" /> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/ALP.svg b/ALP.svg deleted file mode 100644 index 11a8a9d..0000000 --- a/ALP.svg +++ /dev/null @@ -1,131 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="32px" - height="32px" - viewBox="0 0 32 32" - version="1.1" - id="SVGRoot" - inkscape:version="0.92.4 5da689c313, 2019-01-14" - sodipodi:docname="ALP.svg"> - <defs - id="defs23"> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient1815" - id="linearGradient1849" - x1="191.35619" - y1="77.545326" - x2="165.94176" - y2="36.145283" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.6679636,0,0,1.6679636,-180.21985,-725.61614)" /> - <linearGradient - inkscape:collect="always" - id="linearGradient1815"> - <stop - style="stop-color:#008000;stop-opacity:1" - offset="0" - id="stop1811" /> - <stop - style="stop-color:#000080;stop-opacity:1" - offset="1" - id="stop1813" /> - </linearGradient> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.313708" - inkscape:cx="17.930357" - inkscape:cy="8.2669824" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1920" - inkscape:window-height="974" - inkscape:window-x="0" - inkscape:window-y="36" - inkscape:window-maximized="1" - inkscape:grid-bbox="true" /> - <metadata - id="metadata26"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1"> - <g - transform="matrix(0.17705736,0,0,0.17705736,-3.9152667,126.91168)" - id="g1147" - inkscape:export-xdpi="96" - inkscape:export-ydpi="96"> - <path - style="display:inline;fill:url(#linearGradient1849);fill-opacity:1;stroke-width:0.39826357" - id="path817-7" - sodipodi:type="arc" - sodipodi:cx="113.56826" - sodipodi:cy="-626.15546" - sodipodi:rx="86.480103" - sodipodi:ry="86.480103" - sodipodi:start="0" - sodipodi:end="6.2105971" - sodipodi:open="true" - d="m 200.04836,-626.15546 a 86.480103,86.480103 0 0 1 -84.91083,86.46587 86.480103,86.480103 0 0 1 -87.99242,-83.32784 86.480103,86.480103 0 0 1 81.7174,-89.49 86.480103,86.480103 0 0 1 90.95812,80.08005" /> - <path - style="display:inline;fill:#5aa02c;fill-opacity:1;stroke-width:0.58780181" - id="path819-0" - sodipodi:type="arc" - sodipodi:cx="113.56826" - sodipodi:cy="-626.15546" - sodipodi:rx="77.253967" - sodipodi:ry="77.253967" - sodipodi:start="0" - sodipodi:end="6.2105971" - sodipodi:open="true" - d="m 190.82223,-626.15546 a 77.253967,77.253967 0 0 1 -75.85212,77.24125 77.253967,77.253967 0 0 1 -78.604941,-74.438 77.253967,77.253967 0 0 1 72.999371,-79.94276 77.253967,77.253967 0 0 1 81.25425,71.53671" /> - <path - style="fill:#ffffff;stroke-width:0.08870116" - inkscape:connector-curvature="0" - d="m 155.94806,-608.99878 h -28.3844 c -7.84115,0 -14.19216,6.35103 -14.19216,14.19218 0,7.84118 6.35101,14.1922 14.19216,14.1922 3.97385,0 7.55736,-1.63212 10.12969,-4.25766 h 8.11618 c 2.57232,2.62554 6.16473,4.25766 10.12968,4.25766 7.84115,0 14.19215,-6.35101 14.19215,-14.1922 0,-7.84115 -6.34212,-14.19218 -14.1833,-14.19218 z m -19.86905,15.96623 c 0,0.58545 -0.479,1.06437 -1.06442,1.06437 h -4.61247 v 4.61249 c 0,0.58541 -0.47896,1.06441 -1.06442,1.06441 h -3.54806 c -0.58542,0 -1.0644,-0.479 -1.0644,-1.06441 v -4.61249 h -4.61245 c -0.58543,0 -1.06442,-0.47897 -1.06442,-1.06437 v -3.54809 c 0,-0.58543 0.47899,-1.0644 1.06442,-1.0644 h 4.61245 v -4.61245 c 0,-0.58543 0.47898,-1.06441 1.0644,-1.06441 h 3.54806 c 0.58546,0 1.06442,0.47898 1.06442,1.06441 v 4.61245 h 4.61247 c 0.58542,0 1.06442,0.47897 1.06442,1.0644 z m 16.32097,6.03166 c -2.35056,0 -4.25763,-1.90707 -4.25763,-4.25766 0,-2.35058 1.90707,-4.25765 4.25763,-4.25765 2.35062,0 4.25767,1.90707 4.25767,4.25765 0,2.35059 -1.90705,4.25766 -4.25767,4.25766 z m 7.09614,-7.0961 c -2.3506,0 -4.25768,-1.90708 -4.25768,-4.25766 0,-2.35055 1.90708,-4.25762 4.25768,-4.25762 2.35057,0 4.25764,1.90707 4.25764,4.25762 0,2.35058 -1.90707,4.25766 -4.25764,4.25766 z" - id="path1581-3" /> - <path - style="fill:#ffffff;stroke-width:0.08802874" - inkscape:connector-curvature="0" - d="m 98.479254,-607.66596 v 0.53336 H 87.211581 v -11.26769 h 0.533372 c 0.560277,0 1.097714,0.22264 1.493942,0.61877 l 8.621633,8.62159 a 2.1131295,2.1131295 0 0 1 0.618726,1.49397 z m -11.971928,3.35027 c -1.161952,0 -2.112663,-0.95072 -2.112663,-2.11267 v -11.97193 H 66.788914 c -1.166817,0 -2.11269,0.94588 -2.11269,2.1127 v 40.84531 c 0,1.16684 0.945873,2.11271 2.11269,2.11271 h 29.577672 c 1.166822,0 2.112668,-0.94587 2.112668,-2.11271 v -28.87341 z m -10.985439,21.17134 a 0.47535512,0.47535512 0 0 1 -0.671925,0.0216 l -5.710062,-5.35322 a 0.47535512,0.47535512 0 0 1 0,-0.69358 l 5.710062,-5.3532 a 0.47535512,0.47535512 0 0 1 0.671925,0.0216 l 1.723504,1.83851 a 0.47535512,0.47535512 0 0 1 -0.03262,0.68196 l -3.588304,3.15794 3.588304,3.15796 a 0.47535512,0.47535512 0 0 1 0.03262,0.68193 z m 4.515422,4.44362 -2.416637,-0.70158 a 0.47553119,0.47553119 0 0 1 -0.324046,-0.58908 l 5.408486,-18.62921 a 0.47553119,0.47553119 0 0 1 0.589101,-0.32402 l 2.416548,0.70159 a 0.47535512,0.47535512 0 0 1 0.323951,0.58908 l -5.408498,18.62918 a 0.47509106,0.47509106 0 0 1 -0.588905,0.32404 z m 14.154303,-9.77517 -5.710011,5.35324 a 0.47535512,0.47535512 0 0 1 -0.671925,-0.0216 l -1.723636,-1.83847 a 0.47535512,0.47535512 0 0 1 0.03265,-0.68196 l 3.588424,-3.15787 -3.588328,-3.15792 a 0.47535512,0.47535512 0 0 1 -0.03265,-0.68195 l 1.723636,-1.8385 a 0.47535512,0.47535512 0 0 1 0.671893,-0.0216 l 5.710091,5.35322 a 0.47535512,0.47535512 0 0 1 -9.6e-5,0.69359 z" - id="path3972" /> - <path - style="fill:#ffffff;stroke-width:0.08816871" - inkscape:connector-curvature="0" - d="m 61.212704,-654.75471 c 3.112359,0 5.642798,-2.53046 5.642798,-5.6428 0,-3.11235 -2.530439,-5.6428 -5.642798,-5.6428 -3.112347,0 -5.642785,2.53045 -5.642785,5.6428 0,3.11234 2.530438,5.6428 5.642785,5.6428 z m 39.499576,0 c 3.11238,0 5.64282,-2.53046 5.64282,-5.6428 0,-3.11235 -2.53044,-5.6428 -5.64282,-5.6428 -3.112362,0 -5.642792,2.53045 -5.642792,5.6428 0,3.11234 2.53043,5.6428 5.642792,5.6428 z m 2.82143,2.82138 h -5.642833 c -1.551769,0 -2.953639,0.62598 -3.976419,1.63993 3.55322,1.94855 6.074833,5.46647 6.621492,9.64569 h 5.81915 c 1.56058,0 2.8214,-1.26082 2.8214,-2.82143 v -2.8214 c 0,-3.11233 -2.53046,-5.64279 -5.64279,-5.64279 z m -22.571214,0 c 5.457654,0 9.874898,-4.41723 9.874898,-9.8749 0,-5.45762 -4.417244,-9.87488 -9.874898,-9.87488 -5.457639,0 -9.874882,4.41726 -9.874882,9.87488 0,5.45767 4.417243,9.8749 9.874882,9.8749 z m 6.771339,2.82142 h -0.731762 c -1.833939,0.88169 -3.870626,1.41069 -6.039577,1.41069 -2.168936,0 -4.19682,-0.529 -6.039548,-1.41069 h -0.731816 c -5.607522,0 -10.157029,4.54951 -10.157029,10.15703 v 2.53926 c 0,2.33647 1.895621,4.23207 4.2321,4.23207 h 25.392575 c 2.33648,0 4.232099,-1.8956 4.232099,-4.23207 v -2.53926 c 0,-5.60752 -4.549509,-10.15703 -10.157042,-10.15703 z m -19.723333,-1.18148 c -1.02275,-1.01394 -2.424634,-1.63992 -3.976399,-1.63992 h -5.642798 c -3.112347,0 -5.642798,2.53046 -5.642798,5.64278 v 2.82141 c 0,1.56059 1.260817,2.82142 2.821412,2.82142 h 5.810312 c 0.555461,-4.17922 3.07707,-7.69715 6.630271,-9.64569 z" - id="path3983" /> - <path - style="fill:#ffffff;stroke-width:0.09225987" - inkscape:connector-curvature="0" - d="m 148.63404,-668.58888 h -26.60777 c -2.43563,0 -4.41,1.97441 -4.41,4.41006 v 26.60771 c 0,2.43565 1.97437,4.41001 4.41,4.41001 h 26.60777 c 2.43565,0 4.41,-1.97436 4.41,-4.41001 v -26.60771 c 0,-2.43565 -1.97435,-4.41006 -4.41,-4.41006 z m 17.47394,3.4782 -10.11165,6.97481 v 14.52172 l 10.11165,6.96561 c 1.95595,1.34699 4.64998,-0.0278 4.64998,-2.3803 v -23.70155 c 0,-2.34338 -2.68482,-3.72733 -4.64998,-2.38029 z" - id="path1514-6-7" /> - </g> - </g> -</svg> diff --git a/Alee Audio Player.desktop b/Alee Audio Player.desktop new file mode 100644 index 0000000..17a1a4b --- /dev/null +++ b/Alee Audio Player.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Name=Alee Audio Player +Comment=Audio Player +Exec=AleeAudioPlayer +Icon=AAP +Categories=Audio; diff --git a/AleePlayer.pro b/Alee Audio Player.pro index c7ffdff..3c4e2fa 100644 --- a/AleePlayer.pro +++ b/Alee Audio Player.pro @@ -17,11 +17,13 @@ DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ about.cpp \ + library.cpp \ main.cpp \ player.cpp HEADERS += \ about.h \ + library.h \ player.h FORMS += \ @@ -29,21 +31,24 @@ FORMS += \ player.ui TRANSLATIONS += \ - AleePlayer_en_CA.ts + translations/en_CA.ts \ + translations/fr_CA.ts \ + translations/vi_VN.ts unix:!macx:!android { - TARGET = AleePlayer + TARGET = AleeAudioPlayer target.path = /usr/bin desktop.path = /usr/share/applications - desktop.files = AleePlayer.desktop + desktop.files = Alee Audio Player.desktop icon.path = /usr/share/icons/hicolor/scalable/apps/ - icon.files = ALP.svg + icon.files = AAP.svg + LIBS += -ltag INSTALLS += target desktop icon } diff --git a/AleePlayer.desktop b/AleePlayer.desktop deleted file mode 100644 index 8c5b8aa..0000000 --- a/AleePlayer.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Type=Application -Name=AleePlayer -Comment=Music Player by Alee Productions -Exec=AleePlayer -Icon=ALP -Categories=Audio; diff --git a/AleePlayer_en_CA.ts b/AleePlayer_en_CA.ts deleted file mode 100644 index 3cee958..0000000 --- a/AleePlayer_en_CA.ts +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="AleePlayer_en_CA"></TS> @@ -1,4 +1,4 @@ -# AleePlayer +# Alee Audio Player An audio player written in Qt [](https://ci.appveyor.com/project/Alee14/aleeaudioplayer) [](https://travis-ci.org/aleeproductions/AleePlayer) @@ -1,5 +1,23 @@ +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "about.h" #include "ui_about.h" +#include <QDebug> About::About(QWidget *parent) : QDialog(parent), @@ -16,5 +34,6 @@ About::About(QWidget *parent) : About::~About() { + qDebug() << "Closing about dialog"; delete ui; } @@ -1,3 +1,20 @@ +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #ifndef ABOUT_H #define ABOUT_H @@ -23,7 +23,7 @@ </size> </property> <property name="windowTitle"> - <string>About</string> + <string>About - Alee Audio Player</string> </property> <property name="modal"> <bool>false</bool> @@ -53,22 +53,25 @@ </font> </property> <property name="text"> - <string>AleePlayer 0.1 by Alee Productions</string> + <string>Alee Audio Player 0.2 by Alee Productions</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> </widget> </item> <item> - <widget class="QLabel" name="label_2"> + <widget class="QLabel" name="label_4"> <property name="font"> <font> <pointsize>16</pointsize> </font> </property> <property name="text"> - <string>Licensed with GPL-3.0</string> + <string>Written in C++ and Qt, Licensed with GPL-3.0</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> @@ -108,23 +111,23 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> AleePlayer: Music player in Qt </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> Copyright (C) 2020 Alee Productions</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> This program is free software: you can redistribute it and/or modify</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> it under the terms of the GNU General Public License as published by</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> the Free Software Foundation, either version 3 of the License, or</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> (at your option) any later version.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> This program is distributed in the hope that it will be useful,</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> GNU General Public License for more details.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> You should have received a copy of the GNU General Public License</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p></body></html></string> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Audio Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> </property> </widget> </item> diff --git a/appveyor.yml b/appveyor.yml index e4d7951..a8fc5ca 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,8 +10,8 @@ clone_depth: 5 environment: GITHUB_TOKEN: secure: hFxvrP00pBfZqJGfgLLZgkXPI5ZPGND3ToEURxPW5K5PYcuNaG0oiipX5b/O+dDR - REPO_SLUG: aleeproductions/AleePlayer - deploy_project: AleePlayer + REPO_SLUG: aleeproductions/Alee-Audio-Player + deploy_project: Alee Audio Player deploy_version: '' deploy_artifact: '' @@ -22,7 +22,7 @@ test: off artifacts: - path: deploy - name: AleePlayer-Windows + name: Alee-Audio-Player-Windows before_deploy: diff --git a/library.cpp b/library.cpp new file mode 100644 index 0000000..ffba966 --- /dev/null +++ b/library.cpp @@ -0,0 +1,54 @@ +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ +#include "library.h" + +Library::Library(QObject *parent) + : QAbstractListModel(parent) +{ +} + +int Library::rowCount(const QModelIndex &parent) const +{ + // For list models only the root node (an invalid parent) should return the list's size. For all + // other (valid) parents, rowCount() should return 0 so that it does not become a tree model. + if (parent.isValid()) + return 0; + + return 3; + +} + +QVariant Library::data(const QModelIndex &index, int role) const +{ + + if (!index.isValid()) + return QVariant(); + + if (role == Qt::DisplayRole) { + switch (index.row()) { + case 0: + return "Item 1"; + case 1: + return "Item 2"; + case 2: + return "Item 3"; + } + } + + return QVariant(); +} diff --git a/library.h b/library.h new file mode 100644 index 0000000..c88f49d --- /dev/null +++ b/library.h @@ -0,0 +1,39 @@ +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ +#ifndef LIBRARY_H +#define LIBRARY_H + +#include <QAbstractListModel> +#include <QAbstractTableModel> + +class Library : public QAbstractListModel +{ + Q_OBJECT + +public: + explicit Library(QObject *parent = nullptr); + + // Basic functionality: + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + +private: +}; + +#endif // LIBRARY_H @@ -1,13 +1,48 @@ +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "player.h" #include <QMessageBox> #include <QDebug> +#include <QTranslator> +#include <QFile> +#include <QDir> #include <QApplication> int main(int argc, char *argv[]) { - qInfo() << "AleePlayer: A music player by Alee Productions. Licensed with GPL-3.0\n"; + qInfo() << "Alee Audio Player: A music player by Alee Productions. Licensed with GPL-3.0.\n"; + + qDebug() << "Creating files..."; + + //Change this to appdata or .local/share in linux + //QDir directory(QDir::homePath() + "/.alee-productions/Alee Audio Player"); + + //File file(directory.absoluteFilePath("test.txt")); + + //file.open(QFile::WriteOnly); + //file.close(); + QApplication a(argc, argv); + QTranslator translator; + translator.load(QLocale(), "/home/andrew/Documents/GitHub/Alee Audio Player/translations/"); + a.installTranslator(&translator); + Player musicPlayer; musicPlayer.show(); return a.exec(); @@ -1,32 +1,60 @@ -#include <QMediaPlayer> -#include <QDebug> -#include <QFileDialog> -#include <QMessageBox> +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "player.h" #include "ui_player.h" #include "about.h" +#include "library.h" -void Player::mFileDialog() +void Player::loadFile() { - QString mFile; QMessageBox msgbox; - mFile = QFileDialog::getOpenFileName(this, "Open any audio file", QDir::homePath(), tr("Audio Files (*.mp3 *.wav *.ogg *.flac)")); + + mFile = QFileDialog::getOpenFileName(this, tr("Open any audio file"), QDir::homePath(), tr("Audio Files (*.mp3 *.wav *.ogg *.flac)")); if (mFile == NULL) { - qDebug() << "File cannot be found"; - msgbox.setWindowTitle("Uh oh! An error has occured!"); - msgbox.setText("File is invalid. Maybe try loading a valid audio file."); + qDebug() << tr("File cannot be found"); + msgbox.setWindowTitle(tr("Uh oh! An error has occured!")); + msgbox.setText(tr("File is invalid. Maybe try loading a valid audio file.")); msgbox.setIcon(QMessageBox::Critical); msgbox.exec(); return; } else { mPlayer->setMedia(QUrl::fromLocalFile(mFile)); - qDebug() << "Opening" << mFile; - msgbox.setWindowTitle("Success!"); - msgbox.setText("This audio file has been loaded."); + qDebug() << tr("Opening") << mFile; + msgbox.setWindowTitle(tr("Success!")); + msgbox.setText(tr("This audio file has been loaded.")); msgbox.setIcon(QMessageBox::Information); msgbox.exec(); ui->volumeSlider->setValue(100); - ui->playButton->setText(tr("Play")); + ui->playbackSlider->setEnabled(true); + + char* fn = new char [mFile.toStdString().size()+1]; + strcpy( fn, mFile.toStdString().c_str() ); + TagLib::FileRef* fileref = new TagLib::FileRef(fn); + + if (fileref->tag() != nullptr) { + TagLib::String title = fileref->tag()->title(); + TagLib::String artist = fileref->tag()->artist(); + const char* title_ = title.to8Bit(true).c_str(); + const char* artist_ = artist.to8Bit(true).c_str(); + ui->labelTitle->setText(title_); + ui->labelAuthor->setText(artist_); + } + return; } } @@ -38,6 +66,7 @@ Player::Player(QWidget *parent) , ui(new Ui::Player) { ui->setupUi(this); + ui->library->setModel(new Library()); connect(mPlayer, &QMediaPlayer::positionChanged, this, &Player::on_positionChanged); connect(mPlayer, &QMediaPlayer::durationChanged, this, &Player::on_durationChanged); @@ -46,7 +75,7 @@ Player::Player(QWidget *parent) Player::~Player() { - qInfo() << "Closing AleePlayer..."; + qInfo() << tr("Closing Alee Audio Player..."); mPlayer->deleteLater(); delete ui; } @@ -62,11 +91,11 @@ void Player::on_playButton_pressed() ui->volumeSlider->setEnabled(true); if (mPlayer->state() == mPlayer->PlayingState) { - qDebug() << "Pausing music..."; + qDebug() << tr("Pausing music..."); mPlayer->pause(); ui->playButton->setText(tr("Play")); } else { - qDebug() << "Playing music..."; + qDebug() << tr("Playing music..."); mPlayer->play(); ui->playButton->setText(tr("Pause")); } @@ -75,9 +104,8 @@ void Player::on_playButton_pressed() void Player::on_stopButton_pressed() { - qInfo() << "Stopping music..."; + qInfo() << tr("Stopping music..."); mPlayer->stop(); - ui->volumeSlider->setEnabled(false); ui->volumeSlider->setValue(100); ui->playbackSlider->setEnabled(false); ui->playbackSlider->setValue(0); @@ -85,19 +113,19 @@ void Player::on_stopButton_pressed() void Player::on_actionAbout_triggered() { - qDebug() << "Opening dialog"; + qDebug() << tr("Opening about dialog"); About about; about.exec(); } void Player::on_mediaButton_pressed() { - mFileDialog(); + loadFile(); } void Player::on_actionOpen_triggered() { - mFileDialog(); + loadFile(); } @@ -1,8 +1,29 @@ +/* + Alee Audio Player: Audio player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #ifndef PLAYER_H #define PLAYER_H #include <QMediaPlayer> - +#include <QStringListModel> #include <QMainWindow> +#include <QDebug> +#include <QFileDialog> +#include <QMessageBox> +#include <taglib/fileref.h> QT_BEGIN_NAMESPACE namespace Ui { class Player; } @@ -16,8 +37,12 @@ public: Player(QWidget *parent = nullptr); ~Player(); QMediaPlayer* mPlayer = new QMediaPlayer(); + QString mFile; + + int amount = 0; private slots: + void on_actionQuit_triggered(); void on_playButton_pressed(); @@ -30,7 +55,7 @@ private slots: void on_stopButton_pressed(); - void mFileDialog(); + void loadFile(); void on_volumeSlider_sliderMoved(int position); @@ -42,5 +67,6 @@ private slots: private: Ui::Player *ui; + QStringListModel *model; }; #endif // PLAYER_H @@ -6,171 +6,176 @@ <rect> <x>0</x> <y>0</y> - <width>800</width> - <height>607</height> + <width>837</width> + <height>680</height> </rect> </property> <property name="windowTitle"> - <string>AleePlayer</string> + <string>Alee Audio Player</string> + </property> + <property name="windowIcon"> + <iconset> + <normaloff>AAP.svg</normaloff>AAP.svg</iconset> </property> <widget class="QWidget" name="centralwidget"> <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" colspan="8"> - <widget class="QSlider" name="playbackSlider"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item row="3" column="5"> - <widget class="QPushButton" name="mediaButton"> - <property name="text"> - <string>Browse</string> - </property> - <property name="flat"> - <bool>false</bool> - </property> - </widget> + <item row="4" column="1"> + <widget class="QWidget" name="widget" native="true"/> </item> - <item row="3" column="2"> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="4" column="5" colspan="3"> - <widget class="QSlider" name="volumeSlider"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="value"> - <number>99</number> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="tickPosition"> - <enum>QSlider::NoTicks</enum> - </property> - <property name="tickInterval"> - <number>0</number> - </property> - </widget> - </item> - <item row="0" column="0" colspan="8"> + <item row="1" column="0" colspan="8"> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> <number>0</number> </property> - <widget class="QWidget" name="tab"> + <widget class="QWidget" name="tabLibrary"> <attribute name="title"> <string>Library</string> </attribute> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> - <widget class="QLabel" name="labelComingSoon"> - <property name="font"> - <font> - <pointsize>14</pointsize> - </font> - </property> - <property name="text"> - <string><html><head/><body><p>Coming soon in a later update!</p></body></html></string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> + <widget class="QTreeView" name="library"/> </item> </layout> </widget> - <widget class="QWidget" name="tab_2"> + <widget class="QWidget" name="tabPlaylist"> <attribute name="title"> <string>Playlist</string> </attribute> + <layout class="QGridLayout" name="gridLayout_4"/> </widget> </widget> </item> - <item row="3" column="4"> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="1"> - <widget class="QPushButton" name="playButton"> - <property name="text"> - <string>Play</string> - </property> - <property name="checkable"> - <bool>false</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - <property name="flat"> + <item row="4" column="4"> + <widget class="QSlider" name="playbackSlider"> + <property name="enabled"> <bool>false</bool> </property> - </widget> - </item> - <item row="3" column="7"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="0"> - <spacer name="horizontalSpacer_5"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="5" column="5"> - <widget class="QLabel" name="labelVolume"> - <property name="text"> - <string>Volume</string> - </property> </widget> </item> - <item row="3" column="3"> - <widget class="QPushButton" name="stopButton"> - <property name="text"> - <string>Stop</string> - </property> - <property name="flat"> + <item row="2" column="4" colspan="2"> + <widget class="QFrame" name="frame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Ignored" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="autoFillBackground"> <bool>false</bool> </property> + <property name="frameShape"> + <enum>QFrame::Box</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="3" column="3"> + <widget class="QPushButton" name="stopButton"> + <property name="text"> + <string>Stop</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="3" column="4"> + <widget class="QPushButton" name="mediaButton"> + <property name="text"> + <string>Browse</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="7" column="3"> + <widget class="QLabel" name="labelVolume"> + <property name="text"> + <string>Volume</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="labelTitle"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> + <property name="text"> + <string>Title</string> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QPushButton" name="playButton"> + <property name="text"> + <string>Play</string> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="6" column="3" colspan="2"> + <widget class="QSlider" name="volumeSlider"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="value"> + <number>99</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="tickPosition"> + <enum>QSlider::NoTicks</enum> + </property> + <property name="tickInterval"> + <number>0</number> + </property> + </widget> + </item> + <item row="3" column="1"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Maximum</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>200</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="6" column="0"> + <widget class="QLabel" name="labelAuthor"> + <property name="font"> + <font> + <pointsize>12</pointsize> + </font> + </property> + <property name="text"> + <string>Author</string> + </property> + </widget> + </item> + </layout> </widget> </item> </layout> @@ -180,7 +185,7 @@ <rect> <x>0</x> <y>0</y> - <width>800</width> + <width>837</width> <height>23</height> </rect> </property> @@ -190,10 +195,16 @@ </property> <addaction name="actionOpen"/> <addaction name="separator"/> - <addaction name="actionAbout"/> <addaction name="actionQuit"/> </widget> + <widget class="QMenu" name="menuHelp"> + <property name="title"> + <string>Help</string> + </property> + <addaction name="actionAbout"/> + </widget> <addaction name="menuFile"/> + <addaction name="menuHelp"/> </widget> <widget class="QStatusBar" name="statusbar"/> <action name="actionQuit"> @@ -201,7 +212,7 @@ <string>Quit</string> </property> <property name="shortcut"> - <string>Ctrl+W</string> + <string>Ctrl+Q</string> </property> </action> <action name="actionAbout"> diff --git a/scripts/appveyor.bat b/scripts/appveyor.bat index 7d3c32f..6326e9e 100644 --- a/scripts/appveyor.bat +++ b/scripts/appveyor.bat @@ -8,9 +8,9 @@ set QTDIR=C:\Qt\5.12\msvc2017_64 set PATH=%PATH%;%QTDIR%\bin call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" -qmake AleePlayer.pro "CONFIG+=release" +qmake "Alee Audio Player.pro" "CONFIG+=release" nmake release mkdir deploy -copy release\AleePlayer.exe deploy +copy release\AleeAudioPlayer.exe deploy cd deploy -windeployqt AleePlayer.exe -multimedia +windeployqt AleeAudioPlayer.exe -multimedia diff --git a/translations/en_CA.ts b/translations/en_CA.ts new file mode 100644 index 0000000..090d22b --- /dev/null +++ b/translations/en_CA.ts @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en_CA"> +<context> + <name>About</name> + <message> + <location filename="../about.ui" line="26"/> + <source>About - Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="56"/> + <source>Alee Music Player 0.2 by Alee Productions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="74"/> + <source>Licensed with GPL-3.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="84"/> + <source><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Website</span></a></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="110"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Player</name> + <message> + <location filename="../player.ui" line="14"/> + <source>Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="28"/> + <source>Library</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="38"/> + <source>Playlist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="75"/> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="85"/> + <source>Browse</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="95"/> + <source>Volume</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="107"/> + <source>Title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="114"/> + <location filename="../player.cpp" line="42"/> + <location filename="../player.cpp" line="82"/> + <source>Play</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="178"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="187"/> + <source>View</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="196"/> + <source>Quit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="199"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="204"/> + <source>About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="209"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="212"/> + <source>Ctrl+O</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Open any audio file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="28"/> + <source>File cannot be found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="29"/> + <source>Uh oh! An error has occured!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="30"/> + <source>File is invalid. Maybe try loading a valid audio file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="36"/> + <source>Opening</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="37"/> + <source>Success!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="38"/> + <source>This audio file has been loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="64"/> + <source>Closing AleePlayer...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="80"/> + <source>Pausing music...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="84"/> + <source>Playing music...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="86"/> + <source>Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="95"/> + <source>Stopping music...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="105"/> + <source>Opening about dialog</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/translations/fr_CA.ts b/translations/fr_CA.ts new file mode 100644 index 0000000..ce4ff90 --- /dev/null +++ b/translations/fr_CA.ts @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr_CA"> +<context> + <name>About</name> + <message> + <location filename="../about.ui" line="26"/> + <source>About - Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="56"/> + <source>Alee Music Player 0.2 by Alee Productions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="74"/> + <source>Licensed with GPL-3.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="84"/> + <source><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Website</span></a></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="110"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Player</name> + <message> + <location filename="../player.ui" line="14"/> + <source>Alee Music Player</source> + <translation>Alee Music Player</translation> + </message> + <message> + <location filename="../player.ui" line="28"/> + <source>Library</source> + <translation>Bibliothèque</translation> + </message> + <message> + <location filename="../player.ui" line="38"/> + <source>Playlist</source> + <translation>Liste de chansons</translation> + </message> + <message> + <location filename="../player.ui" line="75"/> + <source>Stop</source> + <translation>Arrêt</translation> + </message> + <message> + <location filename="../player.ui" line="85"/> + <source>Browse</source> + <translation>Feuilleter</translation> + </message> + <message> + <location filename="../player.ui" line="95"/> + <source>Volume</source> + <translation>Le volume</translation> + </message> + <message> + <location filename="../player.ui" line="107"/> + <source>Title</source> + <translation>Titre</translation> + </message> + <message> + <location filename="../player.ui" line="114"/> + <location filename="../player.cpp" line="42"/> + <location filename="../player.cpp" line="82"/> + <source>Play</source> + <translation>Jouer</translation> + </message> + <message> + <location filename="../player.ui" line="178"/> + <source>File</source> + <translation>Fichier</translation> + </message> + <message> + <location filename="../player.ui" line="187"/> + <source>View</source> + <translation>Vue</translation> + </message> + <message> + <location filename="../player.ui" line="196"/> + <source>Quit</source> + <translation>Quitter</translation> + </message> + <message> + <location filename="../player.ui" line="199"/> + <source>Ctrl+Q</source> + <translation>Ctrl + Q</translation> + </message> + <message> + <location filename="../player.ui" line="204"/> + <source>About</source> + <translation>À propos du logiciel</translation> + </message> + <message> + <location filename="../player.ui" line="209"/> + <source>Open</source> + <translation>Ouvrir</translation> + </message> + <message> + <location filename="../player.ui" line="212"/> + <source>Ctrl+O</source> + <translation>Ctrl+O</translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Open any audio file</source> + <translation>Ouvrir n'importe quel fichier audio</translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)</source> + <translation>Fichiers Audio (*.mp3 *.wav *.ogg *.flac *.mp4)</translation> + </message> + <message> + <location filename="../player.cpp" line="28"/> + <source>File cannot be found</source> + <translation>Le fichier est introuvable</translation> + </message> + <message> + <location filename="../player.cpp" line="29"/> + <source>Uh oh! An error has occured!</source> + <translation>Euh oh! Une erreur est survenue!</translation> + </message> + <message> + <location filename="../player.cpp" line="30"/> + <source>File is invalid. Maybe try loading a valid audio file.</source> + <translation>Le fichier n'est pas valide. Essayez peut-être de charger un fichier audio valide.</translation> + </message> + <message> + <location filename="../player.cpp" line="36"/> + <source>Opening</source> + <translation>Overture</translation> + </message> + <message> + <location filename="../player.cpp" line="37"/> + <source>Success!</source> + <translation>Succès!</translation> + </message> + <message> + <location filename="../player.cpp" line="38"/> + <source>This audio file has been loaded.</source> + <translation>Ce fichier audio a été chargé.</translation> + </message> + <message> + <location filename="../player.cpp" line="64"/> + <source>Closing AleePlayer...</source> + <translation>Fermeture AleePlayer...</translation> + </message> + <message> + <location filename="../player.cpp" line="80"/> + <source>Pausing music...</source> + <translation>Pause la musique...</translation> + </message> + <message> + <location filename="../player.cpp" line="84"/> + <source>Playing music...</source> + <translation>Jouer la musique...</translation> + </message> + <message> + <location filename="../player.cpp" line="86"/> + <source>Pause</source> + <translation>Pause</translation> + </message> + <message> + <location filename="../player.cpp" line="95"/> + <source>Stopping music...</source> + <translation>Arrêtez la musique...</translation> + </message> + <message> + <location filename="../player.cpp" line="105"/> + <source>Opening about dialog</source> + <translation>Boîte de dialogue d'ouverture</translation> + </message> +</context> +</TS> diff --git a/translations/vi_VN.ts b/translations/vi_VN.ts new file mode 100644 index 0000000..85ffb90 --- /dev/null +++ b/translations/vi_VN.ts @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="vi_VN" sourcelanguage="en_US"> +<context> + <name>About</name> + <message> + <location filename="../about.ui" line="26"/> + <source>About - Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="56"/> + <source>Alee Music Player 0.2 by Alee Productions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="74"/> + <source>Licensed with GPL-3.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="84"/> + <source><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Website</span></a></p></body></html></source> + <translation><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Trang Web</span></a></p></body></html></translation> + </message> + <message> + <location filename="../about.ui" line="110"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Player</name> + <message> + <location filename="../player.ui" line="14"/> + <source>Alee Music Player</source> + <translation></translation> + </message> + <message> + <location filename="../player.ui" line="28"/> + <source>Library</source> + <translation>Thư viện</translation> + </message> + <message> + <location filename="../player.ui" line="38"/> + <source>Playlist</source> + <translation>Hàng phát</translation> + </message> + <message> + <location filename="../player.ui" line="75"/> + <source>Stop</source> + <translation>Dừng lại</translation> + </message> + <message> + <location filename="../player.ui" line="85"/> + <source>Browse</source> + <translation>Duyệt</translation> + </message> + <message> + <location filename="../player.ui" line="95"/> + <source>Volume</source> + <translation>Âm lượng</translation> + </message> + <message> + <location filename="../player.ui" line="107"/> + <source>Title</source> + <translation>Tiêu đề</translation> + </message> + <message> + <location filename="../player.ui" line="114"/> + <location filename="../player.cpp" line="42"/> + <location filename="../player.cpp" line="82"/> + <source>Play</source> + <translation>Phát</translation> + </message> + <message> + <location filename="../player.ui" line="178"/> + <source>File</source> + <translation>Tệp</translation> + </message> + <message> + <location filename="../player.ui" line="187"/> + <source>View</source> + <translation>Xem</translation> + </message> + <message> + <location filename="../player.ui" line="196"/> + <source>Quit</source> + <translation>Thoát</translation> + </message> + <message> + <location filename="../player.ui" line="199"/> + <source>Ctrl+Q</source> + <translation>Ctrl+Q</translation> + </message> + <message> + <location filename="../player.ui" line="204"/> + <source>About</source> + <translation>Giới Thiệu</translation> + </message> + <message> + <location filename="../player.ui" line="209"/> + <source>Open</source> + <translation>Mở</translation> + </message> + <message> + <location filename="../player.ui" line="212"/> + <source>Ctrl+O</source> + <translation></translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Open any audio file</source> + <translation>Mở bất kỳ tệp nhạc nào</translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)</source> + <translation>Tệp nhạc (*.mp3 *.wav *.ogg *.flac *.mp4)</translation> + </message> + <message> + <location filename="../player.cpp" line="28"/> + <source>File cannot be found</source> + <translation>Không thể tìm tệp</translation> + </message> + <message> + <location filename="../player.cpp" line="29"/> + <source>Uh oh! An error has occured!</source> + <translation>Chà, một lỗi đã xảy ra!</translation> + </message> + <message> + <location filename="../player.cpp" line="30"/> + <source>File is invalid. Maybe try loading a valid audio file.</source> + <translation>Tệp không hợp lệ. Hãy tải một tệp nhạc hợp lệ.</translation> + </message> + <message> + <location filename="../player.cpp" line="36"/> + <source>Opening</source> + <translation>Đang mở</translation> + </message> + <message> + <location filename="../player.cpp" line="37"/> + <source>Success!</source> + <translation>Tốt đẹp!</translation> + </message> + <message> + <location filename="../player.cpp" line="38"/> + <source>This audio file has been loaded.</source> + <translation>Tệp nhạc đã bị tải.</translation> + </message> + <message> + <location filename="../player.cpp" line="64"/> + <source>Closing AleePlayer...</source> + <translation>Đang thoát AleePlayer...</translation> + </message> + <message> + <location filename="../player.cpp" line="80"/> + <source>Pausing music...</source> + <translation>Đang tạm dừng nhạc...</translation> + </message> + <message> + <location filename="../player.cpp" line="84"/> + <source>Playing music...</source> + <translation>Đang phát nhạc...</translation> + </message> + <message> + <location filename="../player.cpp" line="86"/> + <source>Pause</source> + <translation>Tạm dừng</translation> + </message> + <message> + <location filename="../player.cpp" line="95"/> + <source>Stopping music...</source> + <translation>Đang dừng lại nhắc...</translation> + </message> + <message> + <location filename="../player.cpp" line="105"/> + <source>Opening about dialog</source> + <translation>Đang mở cửa sổ giới thiệu</translation> + </message> +</context> +</TS> |
