mirror of
https://github.com/videolan/vlc-android
synced 2024-12-04 15:23:51 +08:00
Create the new permission setting
This commit is contained in:
parent
7c11e62985
commit
ba9420b3a1
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="32mm"
|
||||
height="32mm"
|
||||
viewBox="0 0 32 32"
|
||||
version="1.1"
|
||||
id="svg869"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
sodipodi:docname="ic_permission_check_unchecked.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview871"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="true"
|
||||
inkscape:zoom="3.1108586"
|
||||
inkscape:cx="12.376005"
|
||||
inkscape:cy="96.275672"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid930" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs866" />
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
id="path954"
|
||||
style="fill:#757575;stroke-width:3.52754"
|
||||
d="M 60.472656 7.5585938 A 52.913386 52.913386 0 0 0 7.5585938 60.472656 A 52.913386 52.913386 0 0 0 60.472656 113.38672 A 52.913386 52.913386 0 0 0 113.38672 60.472656 A 52.913386 52.913386 0 0 0 60.472656 7.5585938 z M 60.472656 11.337891 A 49.133858 49.133858 0 0 1 109.60547 60.472656 A 49.133858 49.133858 0 0 1 60.472656 109.60547 A 49.133858 49.133858 0 0 1 11.337891 60.472656 A 49.133858 49.133858 0 0 1 60.472656 11.337891 z "
|
||||
transform="scale(0.26458333)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,244 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
sodipodi:docname="ic_permission_media_audio.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview10963"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#111111"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
inkscape:zoom="7.2466938"
|
||||
inkscape:cx="37.051379"
|
||||
inkscape:cy="3.794834"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid11026" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs10958">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3906">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3908" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3910" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5801">
|
||||
<stop
|
||||
id="stop5807"
|
||||
offset="0"
|
||||
style="stop-color:#7f4400;stop-opacity:0.49803922;" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5805" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4755"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4757"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4759"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755"
|
||||
id="linearGradient3168"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.70645135,0,0,0.70645135,-127.87625,199.80852)"
|
||||
x1="130"
|
||||
y1="972.36218"
|
||||
x2="350"
|
||||
y2="1202.3622" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5801"
|
||||
id="linearGradient3170"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.70645135,0,0,0.70645135,-127.87625,405.05058)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3906"
|
||||
id="linearGradient3172"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.70645135,0,0,0.70645135,-339.81165,411.74394)"
|
||||
x1="548"
|
||||
y1="840.36218"
|
||||
x2="520"
|
||||
y2="868.36218" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient3243"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.73291793,0,0,0.73291793,-68.425047,408.9889)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
id="linearGradient4755-4">
|
||||
<stop
|
||||
id="stop4757-9"
|
||||
offset="0"
|
||||
style="stop-color:#ff8800;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4759-3"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient3902"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.73291793,0,0,0.73291793,-68.425047,196.05764)"
|
||||
x1="220"
|
||||
y1="1064.3622"
|
||||
x2="324"
|
||||
y2="1200.3622" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient4109"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.6925994,0,0,0.6925994,-124.58052,417.00327)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient4112"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.6925994,0,0,0.6925994,-124.58052,215.78557)"
|
||||
x1="220"
|
||||
y1="1064.3622"
|
||||
x2="324"
|
||||
y2="1200.3622" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5801"
|
||||
id="linearGradient4748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.30474373,0,0,0.30474373,-109.31562,751.9659)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient4746"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.30474373,0,0,0.30474373,-109.31562,663.59818)"
|
||||
x1="235"
|
||||
y1="1087.3622"
|
||||
x2="350"
|
||||
y2="1202.3622" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4372">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ff8800"
|
||||
d="m 6.7127721,1041.1039 c -0.176491,0 -0.318719,0.028 -0.458307,0.1149 -0.229209,0.1146 -0.57318,1.1457 -0.57318,1.1457 l -0.229153,0.6875 -0.802334,2.407 -0.916612,2.7504 -0.458901,1.3749 h -0.01369 -0.211297 -0.766621 c -0.1534556,0 -0.5644956,0.229 -0.6630556,0.5589 -0.376361,1.286 -0.72779895,2.4867 -1.05648495,3.6099 -0.0675,0.2306 0.0031,0.4045 0.122017,0.5268 0.0013,0 0.0029,0 0.0042,0 h -0.0042 c 0.152882,0.1572 0.38413095,0.2291 0.49758895,0.2291 H 12.281487 c 0.04441,0 0.120828,-0.018 0.204155,-0.055 0.08327,-0.038 0.173718,-0.095 0.247009,-0.1738 0.118273,-0.1273 0.191794,-0.3115 0.118445,-0.5619 -0.175231,-0.5991 -0.348159,-1.1908 -0.522588,-1.7868 l -0.533896,-1.816 c -0.08905,-0.3037 -0.499589,-0.5339 -0.677341,-0.5339 h -0.966609 v -6e-4 l -0.4583057,-1.3749 -0.9166119,-2.7504 -0.8023323,-2.407 -0.229153,-0.6875 c 0,0 -0.343972,-1.0311 -0.573181,-1.1457 -0.139703,-0.087 -0.282044,-0.1149 -0.458306,-0.1149 z"
|
||||
id="path4374" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4820">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ff8800"
|
||||
d="m 1848.8208,4174.6353 c -22.8772,0 -41.3132,-3.6294 -59.407,-14.8936 -29.7107,-14.8548 -74.2971,-148.5088 -74.2971,-148.5088 l -29.7034,-89.1156 -104.0007,-312.0018 -118.8138,-356.5143 -59.484,-178.2182 h -1.7745 -27.3889 -99.3715 c -19.8913,0 -73.1714,-29.6836 -85.947,-72.4462 -48.7849,-166.6948 -94.3393,-322.3327 -136.9444,-467.925 -8.7496,-29.8909 0.4018,-52.4323 15.8161,-68.2852 0.1685,0 0.3759,0 0.5444,0 h -0.5444 c 19.817,-20.3767 49.7921,-29.6966 64.4988,-29.6966 h 1438.6493 c 5.7565,0 15.662,2.3333 26.4631,7.1293 10.7937,4.9257 22.5178,12.3142 32.018,22.5284 15.3308,16.501 24.8608,40.3775 15.3531,72.835 -22.7139,77.657 -45.1293,154.3547 -67.7392,231.6099 l -69.2051,235.3948 c -11.5429,39.3664 -64.7581,69.2055 -87.7987,69.2055 h -125.2945 v 0.078 l -59.4068,178.2183 -118.8137,356.5142 -104.0005,312.0019 -29.7035,89.1156 c 0,0 -44.5865,133.6539 -74.2972,148.5087 -18.1087,11.2772 -36.5593,14.8937 -59.4069,14.8937 z"
|
||||
id="path4822" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4217">
|
||||
<rect
|
||||
y="976.95551"
|
||||
x="-0.60522246"
|
||||
height="30.474373"
|
||||
width="48.758995"
|
||||
id="rect4219"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#757575;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.77165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<circle
|
||||
style="fill:#757575;stroke-width:0.294741"
|
||||
id="path845"
|
||||
cx="16"
|
||||
cy="16"
|
||||
r="14" />
|
||||
<g
|
||||
id="g3158"
|
||||
transform="matrix(0.98443372,0,0,0.98443372,-10.404198,-1018.4836)">
|
||||
<g
|
||||
id="g4203"
|
||||
transform="matrix(1.4285714,0,0,1.4285714,-25.508491,-434.8634)">
|
||||
<circle
|
||||
r="4.2664123"
|
||||
cy="1046.3929"
|
||||
cx="43.030762"
|
||||
id="circle7239"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ff8800;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.1;marker:none;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect7258"
|
||||
d="m 42.421275,1048.2215 3.358522,-3.3585 -0.430971,-0.431 -2.927551,2.9275 -1.292918,-1.2929 -0.430972,0.431 z"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#fafafa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.77165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
id="path3110"
|
||||
style="color:#000000;overflow:visible;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.12898;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 18.13387,6.25 C 16.950081,6.26792 15.999865,7.232741 16,8.416667 v 2.166666 7.080811 c -0.658725,-0.380418 -1.405985,-0.580733 -2.166667,-0.580811 -2.393234,0 -4.333333,1.9401 -4.333333,4.333334 0,2.393234 1.940099,4.333333 4.333333,4.333333 2.393234,0 4.333334,-1.940099 4.333334,-4.333333 V 10.583333 H 20.36613 C 21.549919,10.565413 22.500135,9.600592 22.5,8.416667 V 6.25 Z m -4.333333,13 c 0.01093,-8.3e-5 0.02187,-8.3e-5 0.0328,0 1.196617,0 2.166667,0.97005 2.166667,2.166667 0,1.196617 -0.97005,2.166666 -2.166667,2.166666 -1.196617,0 -2.166667,-0.970049 -2.166667,-2.166666 -1.35e-4,-1.183926 0.950081,-2.148746 2.133871,-2.166667 z"
|
||||
sodipodi:nodetypes="cccccssscccccscsscss" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,244 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
version="1.1"
|
||||
id="SVGRoot"
|
||||
sodipodi:docname="ic_permission_media_video.svg"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview10963"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#111111"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
inkscape:zoom="7.2466938"
|
||||
inkscape:cx="37.051379"
|
||||
inkscape:cy="3.794834"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid11026" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs10958">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3906">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3908" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3910" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5801">
|
||||
<stop
|
||||
id="stop5807"
|
||||
offset="0"
|
||||
style="stop-color:#7f4400;stop-opacity:0.49803922;" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5805" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4755"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4757"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4759"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755"
|
||||
id="linearGradient3168"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.70645135,0,0,0.70645135,-127.87625,199.80852)"
|
||||
x1="130"
|
||||
y1="972.36218"
|
||||
x2="350"
|
||||
y2="1202.3622" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5801"
|
||||
id="linearGradient3170"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.70645135,0,0,0.70645135,-127.87625,405.05058)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3906"
|
||||
id="linearGradient3172"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.70645135,0,0,0.70645135,-339.81165,411.74394)"
|
||||
x1="548"
|
||||
y1="840.36218"
|
||||
x2="520"
|
||||
y2="868.36218" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient3243"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.73291793,0,0,0.73291793,-68.425047,408.9889)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
id="linearGradient4755-4">
|
||||
<stop
|
||||
id="stop4757-9"
|
||||
offset="0"
|
||||
style="stop-color:#ff8800;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4759-3"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient3902"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.73291793,0,0,0.73291793,-68.425047,196.05764)"
|
||||
x1="220"
|
||||
y1="1064.3622"
|
||||
x2="324"
|
||||
y2="1200.3622" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient4109"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.6925994,0,0,0.6925994,-124.58052,417.00327)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient4112"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.6925994,0,0,0.6925994,-124.58052,215.78557)"
|
||||
x1="220"
|
||||
y1="1064.3622"
|
||||
x2="324"
|
||||
y2="1200.3622" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5801"
|
||||
id="linearGradient4748"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.30474373,0,0,0.30474373,-109.31562,751.9659)"
|
||||
x1="288"
|
||||
y1="905.83679"
|
||||
x2="248"
|
||||
y2="865.83679" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4755-4"
|
||||
id="linearGradient4746"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.30474373,0,0,0.30474373,-109.31562,663.59818)"
|
||||
x1="235"
|
||||
y1="1087.3622"
|
||||
x2="350"
|
||||
y2="1202.3622" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4372">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ff8800"
|
||||
d="m 6.7127721,1041.1039 c -0.176491,0 -0.318719,0.028 -0.458307,0.1149 -0.229209,0.1146 -0.57318,1.1457 -0.57318,1.1457 l -0.229153,0.6875 -0.802334,2.407 -0.916612,2.7504 -0.458901,1.3749 h -0.01369 -0.211297 -0.766621 c -0.1534556,0 -0.5644956,0.229 -0.6630556,0.5589 -0.376361,1.286 -0.72779895,2.4867 -1.05648495,3.6099 -0.0675,0.2306 0.0031,0.4045 0.122017,0.5268 0.0013,0 0.0029,0 0.0042,0 h -0.0042 c 0.152882,0.1572 0.38413095,0.2291 0.49758895,0.2291 H 12.281487 c 0.04441,0 0.120828,-0.018 0.204155,-0.055 0.08327,-0.038 0.173718,-0.095 0.247009,-0.1738 0.118273,-0.1273 0.191794,-0.3115 0.118445,-0.5619 -0.175231,-0.5991 -0.348159,-1.1908 -0.522588,-1.7868 l -0.533896,-1.816 c -0.08905,-0.3037 -0.499589,-0.5339 -0.677341,-0.5339 h -0.966609 v -6e-4 l -0.4583057,-1.3749 -0.9166119,-2.7504 -0.8023323,-2.407 -0.229153,-0.6875 c 0,0 -0.343972,-1.0311 -0.573181,-1.1457 -0.139703,-0.087 -0.282044,-0.1149 -0.458306,-0.1149 z"
|
||||
id="path4374" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4820">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ff8800"
|
||||
d="m 1848.8208,4174.6353 c -22.8772,0 -41.3132,-3.6294 -59.407,-14.8936 -29.7107,-14.8548 -74.2971,-148.5088 -74.2971,-148.5088 l -29.7034,-89.1156 -104.0007,-312.0018 -118.8138,-356.5143 -59.484,-178.2182 h -1.7745 -27.3889 -99.3715 c -19.8913,0 -73.1714,-29.6836 -85.947,-72.4462 -48.7849,-166.6948 -94.3393,-322.3327 -136.9444,-467.925 -8.7496,-29.8909 0.4018,-52.4323 15.8161,-68.2852 0.1685,0 0.3759,0 0.5444,0 h -0.5444 c 19.817,-20.3767 49.7921,-29.6966 64.4988,-29.6966 h 1438.6493 c 5.7565,0 15.662,2.3333 26.4631,7.1293 10.7937,4.9257 22.5178,12.3142 32.018,22.5284 15.3308,16.501 24.8608,40.3775 15.3531,72.835 -22.7139,77.657 -45.1293,154.3547 -67.7392,231.6099 l -69.2051,235.3948 c -11.5429,39.3664 -64.7581,69.2055 -87.7987,69.2055 h -125.2945 v 0.078 l -59.4068,178.2183 -118.8137,356.5142 -104.0005,312.0019 -29.7035,89.1156 c 0,0 -44.5865,133.6539 -74.2972,148.5087 -18.1087,11.2772 -36.5593,14.8937 -59.4069,14.8937 z"
|
||||
id="path4822" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4217">
|
||||
<rect
|
||||
y="976.95551"
|
||||
x="-0.60522246"
|
||||
height="30.474373"
|
||||
width="48.758995"
|
||||
id="rect4219"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#757575;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.77165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<circle
|
||||
style="fill:#757575;stroke-width:0.294741"
|
||||
id="path845"
|
||||
cx="16"
|
||||
cy="16"
|
||||
r="14" />
|
||||
<path
|
||||
id="path46413"
|
||||
style="color:#000000;fill:#000000;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none"
|
||||
d="m 11,11 c -0.825,0 -1.5,0.675 -1.5,1.5 v 7 c 0,0.825 0.675,1.5 1.5,1.5 h 10 c 0.825,0 1.5,-0.675 1.5,-1.5 V 11.75 C 22.5,11.3375 22.1625,11 21.75,11 H 20 l 0.820312,1.638672 c 0.082,0.1657 -0.03806,0.360428 -0.222656,0.361328 h -0.980468 c -0.379001,0 -0.725132,-0.214034 -0.894532,-0.552734 L 18,11 h -1 l 0.820312,1.638672 c 0.082,0.1657 -0.03806,0.360428 -0.222656,0.361328 h -0.980468 c -0.379001,0 -0.725132,-0.214034 -0.894532,-0.552734 L 15,11 h -1 l 0.820312,1.638672 c 0.082,0.1657 -0.03806,0.360428 -0.222656,0.361328 h -0.980468 c -0.379,0 -0.725132,-0.214034 -0.894532,-0.552734 L 12,11 Z m 0.5,2 0.722656,1.447266 C 12.392056,14.785966 12.738287,15 13.117188,15 H 13.5 h 7 v 4 h -9 z"
|
||||
sodipodi:nodetypes="sssssssscccscccccscccccsccsccsccccc" />
|
||||
<g
|
||||
id="g3158"
|
||||
transform="matrix(0.98443372,0,0,0.98443372,-10.404198,-1018.4836)">
|
||||
<g
|
||||
id="g4203"
|
||||
transform="matrix(1.4285714,0,0,1.4285714,-25.508491,-434.8634)">
|
||||
<circle
|
||||
r="4.2664123"
|
||||
cy="1046.3929"
|
||||
cx="43.030762"
|
||||
id="circle7239"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ff8800;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.1;marker:none;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect7258"
|
||||
d="m 42.421275,1048.2215 3.358522,-3.3585 -0.430971,-0.431 -2.927551,2.9275 -1.292918,-1.2929 -0.430972,0.431 z"
|
||||
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#fafafa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.77165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,56 @@
|
||||
<!--
|
||||
~ *************************************************************************
|
||||
~ ic_permission_media_audio.xml
|
||||
~ **************************************************************************
|
||||
~ Copyright © 2024 VLC authors and VideoLAN
|
||||
~ Author: Nicolas POMEPUY
|
||||
~ 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 2 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, write to the Free Software
|
||||
~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
~ ***************************************************************************
|
||||
~
|
||||
~
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M16,16m-14,0a14,14 0,1 1,28 0a14,14 0,1 1,-28 0"
|
||||
android:strokeWidth="0.294741"
|
||||
android:fillColor="@color/grey600"/>
|
||||
<path
|
||||
android:pathData="M25,25m-6,0a6,6 135,1 1,12 0a6,6 135,1 1,-12 0"
|
||||
android:strokeWidth="0.141"
|
||||
android:fillColor="?attr/colorPrimary"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="m24.143,27.572 l4.723,-4.723 -0.606,-0.606 -4.117,4.117 -1.818,-1.818 -0.606,0.606z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2.492"
|
||||
android:fillColor="@color/white"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M18.134,6.25C16.95,6.268 16,7.233 16,8.417v2.167,7.081c-0.659,-0.38 -1.406,-0.581 -2.167,-0.581 -2.393,0 -4.333,1.94 -4.333,4.333 0,2.393 1.94,4.333 4.333,4.333 2.393,0 4.333,-1.94 4.333,-4.333L18.167,10.583L20.366,10.583C21.55,10.565 22.5,9.601 22.5,8.417L22.5,6.25ZM13.801,19.25c0.011,-0 0.022,-0 0.033,0 1.197,0 2.167,0.97 2.167,2.167 0,1.197 -0.97,2.167 -2.167,2.167 -1.197,0 -2.167,-0.97 -2.167,-2.167 -0,-1.184 0.95,-2.149 2.134,-2.167z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2.12898"
|
||||
android:fillColor="@color/white"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"/>
|
||||
</vector>
|
@ -0,0 +1,55 @@
|
||||
<!--
|
||||
~ *************************************************************************
|
||||
~ ic_permission_media_audio.xml
|
||||
~ **************************************************************************
|
||||
~ Copyright © 2024 VLC authors and VideoLAN
|
||||
~ Author: Nicolas POMEPUY
|
||||
~ 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 2 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, write to the Free Software
|
||||
~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
~ ***************************************************************************
|
||||
~
|
||||
~
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:fillColor="@color/grey400"
|
||||
android:pathData="M16,16m-14,0a14,14 0,1 1,28 0a14,14 0,1 1,-28 0"
|
||||
android:strokeWidth="0.294741" />
|
||||
<path
|
||||
android:fillColor="@color/grey300"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M25,25m-6,0a6,6 135,1 1,12 0a6,6 135,1 1,-12 0"
|
||||
android:strokeWidth="0.141"
|
||||
android:strokeColor="#00000000" />
|
||||
<path
|
||||
android:fillColor="@color/white"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="m24.143,27.572 l4.723,-4.723 -0.606,-0.606 -4.117,4.117 -1.818,-1.818 -0.606,0.606z"
|
||||
android:strokeWidth="2.492"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="round"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillColor="@color/white"
|
||||
android:pathData="M18.134,6.25C16.95,6.268 16,7.233 16,8.417v2.167,7.081c-0.659,-0.38 -1.406,-0.581 -2.167,-0.581 -2.393,0 -4.333,1.94 -4.333,4.333 0,2.393 1.94,4.333 4.333,4.333 2.393,0 4.333,-1.94 4.333,-4.333L18.167,10.583L20.366,10.583C21.55,10.565 22.5,9.601 22.5,8.417L22.5,6.25ZM13.801,19.25c0.011,-0 0.022,-0 0.033,0 1.197,0 2.167,0.97 2.167,2.167 0,1.197 -0.97,2.167 -2.167,2.167 -1.197,0 -2.167,-0.97 -2.167,-2.167 -0,-1.184 0.95,-2.149 2.134,-2.167z"
|
||||
android:strokeWidth="2.12898"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeLineCap="butt"
|
||||
android:strokeLineJoin="round" />
|
||||
</vector>
|
@ -0,0 +1,30 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M16,16m-14,0a14,14 0,1 1,28 0a14,14 0,1 1,-28 0"
|
||||
android:strokeWidth="0.294741"
|
||||
android:fillColor="@color/grey600"/>
|
||||
<path
|
||||
android:pathData="m11,11c-0.825,0 -1.5,0.675 -1.5,1.5v7c0,0.825 0.675,1.5 1.5,1.5h10c0.825,0 1.5,-0.675 1.5,-1.5L22.5,11.75C22.5,11.337 22.163,11 21.75,11L20,11l0.82,1.639c0.082,0.166 -0.038,0.36 -0.223,0.361h-0.98c-0.379,0 -0.725,-0.214 -0.895,-0.553L18,11h-1l0.82,1.639c0.082,0.166 -0.038,0.36 -0.223,0.361h-0.98c-0.379,0 -0.725,-0.214 -0.895,-0.553L15,11h-1l0.82,1.639c0.082,0.166 -0.038,0.36 -0.223,0.361h-0.98c-0.379,0 -0.725,-0.214 -0.895,-0.553L12,11ZM11.5,13 L12.223,14.447C12.392,14.786 12.738,15 13.117,15L13.5,15h7v4h-9z"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillColor="@color/white"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M25,25m-6,0a6,6 135,1 1,12 0a6,6 135,1 1,-12 0"
|
||||
android:strokeWidth="0.141"
|
||||
android:fillColor="?attr/colorPrimary"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="m24.143,27.572 l4.723,-4.723 -0.606,-0.606 -4.117,4.117 -1.818,-1.818 -0.606,0.606z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2.492"
|
||||
android:fillColor="#fafafa"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
@ -0,0 +1,30 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="32"
|
||||
android:viewportHeight="32">
|
||||
<path
|
||||
android:pathData="M16,16m-14,0a14,14 0,1 1,28 0a14,14 0,1 1,-28 0"
|
||||
android:strokeWidth="0.294741"
|
||||
android:fillColor="@color/grey400"/>
|
||||
<path
|
||||
android:pathData="m11,11c-0.825,0 -1.5,0.675 -1.5,1.5v7c0,0.825 0.675,1.5 1.5,1.5h10c0.825,0 1.5,-0.675 1.5,-1.5L22.5,11.75C22.5,11.337 22.163,11 21.75,11L20,11l0.82,1.639c0.082,0.166 -0.038,0.36 -0.223,0.361h-0.98c-0.379,0 -0.725,-0.214 -0.895,-0.553L18,11h-1l0.82,1.639c0.082,0.166 -0.038,0.36 -0.223,0.361h-0.98c-0.379,0 -0.725,-0.214 -0.895,-0.553L15,11h-1l0.82,1.639c0.082,0.166 -0.038,0.36 -0.223,0.361h-0.98c-0.379,0 -0.725,-0.214 -0.895,-0.553L12,11ZM11.5,13 L12.223,14.447C12.392,14.786 12.738,15 13.117,15L13.5,15h7v4h-9z"
|
||||
android:strokeLineJoin="round"
|
||||
android:fillColor="@color/white"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M25,25m-6,0a6,6 135,1 1,12 0a6,6 135,1 1,-12 0"
|
||||
android:strokeWidth="0.141"
|
||||
android:fillColor="@color/grey300"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="m24.143,27.572 l4.723,-4.723 -0.606,-0.606 -4.117,4.117 -1.818,-1.818 -0.606,0.606z"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2.492"
|
||||
android:fillColor="#fafafa"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
@ -0,0 +1,9 @@
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/permission_explanation_background">
|
||||
</solid>
|
||||
<corners android:radius="8dp">
|
||||
</corners>
|
||||
|
||||
</shape>
|
@ -81,6 +81,7 @@
|
||||
<attr name="widget_preview_rounded_bg" format="reference" />
|
||||
<attr name="swipe_refresh_background" format="reference|color" />
|
||||
<attr name="dialogButtonStyle" format="reference" />
|
||||
<attr name="permission_explanation_background" format="color" />
|
||||
|
||||
<!--Main Icons-->
|
||||
<attr name="gridview_progressbar" format="reference" />
|
||||
|
@ -1113,6 +1113,14 @@
|
||||
<string name="notification_permission">Notification permission</string>
|
||||
<string name="notification_permission_explanation">VLC needs your permission to send notifications.\nThe app will only notify you when scanning your media or using the custom video Picture in Picture.\nRefusing it won\'t prevent VLC to work, however the notifications will be hidden.</string>
|
||||
<string name="permission">Permission</string>
|
||||
<string name="permission_no_access">No file access</string>
|
||||
<string name="permissions">Permissions</string>
|
||||
<string name="permissions_summary">List of all the permissions</string>
|
||||
<string name="manage_storage_permission">File permissions</string>
|
||||
<string name="permission_media_title">Access to standard media</string>
|
||||
<string name="permission_all_title">All file access</string>
|
||||
<string name="permission_all_warning">To enable this, you have to disable the standard media file access first</string>
|
||||
<string name="permission_media_warning">To enable this, you have to disable the full file permission first</string>
|
||||
<string name="customize">Customize</string>
|
||||
<string name="selection_count">%d selected</string>
|
||||
<string name="control_setting">Control settings</string>
|
||||
|
187
application/vlc-android/res/layout/dialog_permissions.xml
Normal file
187
application/vlc-android/res/layout/dialog_permissions.xml
Normal file
@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ *************************************************************************
|
||||
~ dialog_permissions.xml
|
||||
~ **************************************************************************
|
||||
~ Copyright © 2024 VLC authors and VideoLAN
|
||||
~ Author: Nicolas POMEPUY
|
||||
~ 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 2 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, write to the Free Software
|
||||
~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
~ ***************************************************************************
|
||||
~
|
||||
~
|
||||
-->
|
||||
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/permission_title"
|
||||
style="@style/Theme.VLC.BottomSheetTitle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:minHeight="0dp"
|
||||
android:text="@string/permissions"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView37"
|
||||
style="@style/Theme.VLC.BottomSheetTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:text="@string/manage_storage_permission"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/permission_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/file_access_explanation"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:background="@drawable/rounded_corners_permissions_explanation"
|
||||
android:drawablePadding="16dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:gravity="center_vertical"
|
||||
android:padding="16dp"
|
||||
android:text="@string/permission_onboarding_perm_all"
|
||||
android:textColor="?attr/font_default"
|
||||
android:textSize="18sp"
|
||||
app:drawableTint="?attr/font_default"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView37" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/all_access_warning"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:background="@drawable/rounded_corners_permissions_warning"
|
||||
android:padding="12dp"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/permission_all_warning"
|
||||
android:textColor="?attr/font_default"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/manage_all_perms_check"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/no_access_check"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_weight="1"
|
||||
android:enabled="true"
|
||||
android:paddingStart="16dp"
|
||||
android:text="@string/permission_no_access"
|
||||
android:textColor="?attr/font_default"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/file_access_explanation" />
|
||||
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/manage_media_perms_check"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_weight="1"
|
||||
android:enabled="true"
|
||||
android:paddingStart="16dp"
|
||||
android:text="@string/permission_media_title"
|
||||
android:textColor="?attr/font_default"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toStartOf="@+id/manage_media_audio"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/no_access_check" />
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/manage_media_audio"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/manage_media_perms_check"
|
||||
app:layout_constraintEnd_toStartOf="@+id/manage_media_video"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/manage_media_perms_check"
|
||||
app:layout_constraintTop_toTopOf="@+id/manage_media_perms_check"
|
||||
app:srcCompat="@drawable/ic_permission_media_audio" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/manage_media_video"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/manage_media_perms_check"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@+id/manage_media_audio"
|
||||
app:layout_constraintTop_toTopOf="@+id/manage_media_perms_check"
|
||||
app:srcCompat="@drawable/ic_permission_media_video" />
|
||||
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/manage_all_perms_check"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_weight="1"
|
||||
android:enabled="true"
|
||||
android:paddingStart="16dp"
|
||||
android:text="@string/permission_all_title"
|
||||
android:textColor="?attr/font_default"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/manage_media_perms_check" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</layout>
|
@ -77,6 +77,7 @@
|
||||
<item name="primary_focus">@color/orange_800_transparent_20</item>
|
||||
<item name="swipe_refresh_background">?attr/background_default</item>
|
||||
<item name="dialogButtonStyle">@style/Widget.MaterialComponents.Button.TextButton.Dialog</item>
|
||||
<item name="permission_explanation_background">@color/grey200</item>
|
||||
|
||||
<item name="gridview_progressbar">@drawable/gridview_progressbar</item>
|
||||
<item name="progress_mini_player">@drawable/progress_mini_player</item>
|
||||
@ -269,6 +270,7 @@
|
||||
<item name="primary_focus">@color/orange_500_transparent_20</item>
|
||||
<item name="swipe_refresh_background">?attr/background_default_darker</item>
|
||||
<item name="dialogButtonStyle">@style/Widget.MaterialComponents.Button.TextButton.Dialog</item>
|
||||
<item name="permission_explanation_background">@color/grey800</item>
|
||||
|
||||
<item name="gridview_progressbar">@drawable/gridview_progressbar_w</item>
|
||||
<item name="progress_mini_player">@drawable/progress_mini_player_black</item>
|
||||
|
@ -50,6 +50,12 @@
|
||||
android:summary="%s"
|
||||
android:title="@string/metered_connection"/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/permissions">
|
||||
<PreferenceScreen
|
||||
android:key="permissions"
|
||||
android:summary="@string/permissions_summary"
|
||||
android:title="@string/permissions"/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/history">
|
||||
<CheckBoxPreference
|
||||
|
@ -0,0 +1,246 @@
|
||||
/*
|
||||
* ************************************************************************
|
||||
* PermissionListDialog.kt
|
||||
* *************************************************************************
|
||||
* Copyright © 2024 VLC authors and VideoLAN
|
||||
* Author: Nicolas POMEPUY
|
||||
* 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 2 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, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
* **************************************************************************
|
||||
*
|
||||
*
|
||||
*/
|
||||
package org.videolan.vlc.gui.dialogs
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.RadioButton
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
|
||||
import kotlinx.coroutines.launch
|
||||
import org.videolan.resources.SCHEME_PACKAGE
|
||||
import org.videolan.tools.dp
|
||||
import org.videolan.tools.setGone
|
||||
import org.videolan.tools.setInvisible
|
||||
import org.videolan.tools.setVisible
|
||||
import org.videolan.vlc.R
|
||||
import org.videolan.vlc.databinding.DialogPermissionsBinding
|
||||
import org.videolan.vlc.util.Permissions
|
||||
|
||||
|
||||
/**
|
||||
* Dialog showing the info of the current version
|
||||
*/
|
||||
class PermissionListDialog : VLCBottomSheetDialogFragment() {
|
||||
|
||||
private lateinit var binding: DialogPermissionsBinding
|
||||
private val defaultBackground: Int
|
||||
get() {
|
||||
val outValue = TypedValue()
|
||||
requireActivity().theme.resolveAttribute(
|
||||
android.R.attr.selectableItemBackground,
|
||||
outValue,
|
||||
true
|
||||
)
|
||||
return outValue.resourceId
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun newInstance(): PermissionListDialog {
|
||||
return PermissionListDialog()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getDefaultState(): Int {
|
||||
return STATE_EXPANDED
|
||||
}
|
||||
|
||||
override fun needToManageOrientation(): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun initialFocusedView(): View = binding.permissionTitle
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = DialogPermissionsBinding.inflate(layoutInflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
updateStorageState()
|
||||
}
|
||||
|
||||
private fun updateStorageState() {
|
||||
|
||||
|
||||
// radio states
|
||||
arrayOf(
|
||||
binding.noAccessCheck,
|
||||
binding.manageAllPermsCheck,
|
||||
binding.manageMediaPermsCheck
|
||||
).forEach {
|
||||
it.isChecked = false
|
||||
}
|
||||
|
||||
when {
|
||||
Permissions.hasAllAccess(requireActivity()) -> binding.manageAllPermsCheck.isChecked = true
|
||||
Permissions.hasAnyFileFineAccess(requireActivity()) -> binding.manageMediaPermsCheck.isChecked = true
|
||||
else -> binding.noAccessCheck.isChecked = true
|
||||
}
|
||||
|
||||
// media permission states
|
||||
binding.manageMediaVideo.isEnabled = !Permissions.hasAllAccess(requireActivity()) && !Permissions.hasVideoPermission(requireActivity())
|
||||
binding.manageMediaAudio.isEnabled = !Permissions.hasAllAccess(requireActivity()) && !Permissions.hasAudioPermission(requireActivity())
|
||||
|
||||
//backgrounds
|
||||
binding.manageMediaPermsCheck.setBackgroundResource(defaultBackground)
|
||||
|
||||
|
||||
// explanation text state
|
||||
binding.fileAccessExplanation.text = when {
|
||||
Permissions.hasAllAccess(requireActivity()) -> getString(R.string.permission_onboarding_perm_all)
|
||||
Permissions.hasAnyFileFineAccess(requireActivity()) -> getString(R.string.permission_onboarding_perm_media)
|
||||
else -> getString(R.string.permission_expanation_no_allow)
|
||||
}
|
||||
binding.fileAccessExplanation.setCompoundDrawablesRelativeWithIntrinsicBounds(when {
|
||||
Permissions.hasAllAccess(requireActivity()) -> ContextCompat.getDrawable(requireActivity(), R.drawable.ic_perm_all)
|
||||
Permissions.hasAnyFileFineAccess(requireActivity()) -> ContextCompat.getDrawable(requireActivity(), R.drawable.ic_perm_media)
|
||||
else -> ContextCompat.getDrawable(requireActivity(), R.drawable.ic_perm_none)
|
||||
}, null, null, null)
|
||||
|
||||
|
||||
//warning visibility
|
||||
binding.allAccessWarning.setInvisible()
|
||||
binding.allAccessWarning.text = when {
|
||||
Permissions.hasAllAccess(requireActivity()) -> getString(R.string.permission_media_warning)
|
||||
Permissions.hasAnyFileFineAccess(requireActivity()) -> getString(R.string.permission_all_warning)
|
||||
else -> ""
|
||||
}
|
||||
|
||||
|
||||
//media permission icons
|
||||
binding.manageMediaVideo.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
requireActivity(),
|
||||
if (Permissions.hasVideoPermission(requireActivity())) R.drawable.ic_permission_media_video else R.drawable.ic_permission_media_video_denied
|
||||
)
|
||||
)
|
||||
binding.manageMediaAudio.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
requireActivity(),
|
||||
if (Permissions.hasAudioPermission(requireActivity())) R.drawable.ic_permission_media_audio else R.drawable.ic_permission_media_audio_denied
|
||||
)
|
||||
)
|
||||
|
||||
//click listeners
|
||||
binding.noAccessCheck.setOnClickListener {
|
||||
if (Permissions.hasAllAccess(requireActivity()) || Permissions.hasAnyFileFineAccess(
|
||||
requireActivity()
|
||||
)
|
||||
) {
|
||||
(it as RadioButton).isChecked = false
|
||||
when {
|
||||
Permissions.hasAllAccess(requireActivity()) -> binding.manageAllPermsCheck
|
||||
else -> binding.manageMediaPermsCheck
|
||||
}.background = ContextCompat.getDrawable(requireActivity(), R.drawable.rounded_corners_permissions_warning)
|
||||
showWarning()
|
||||
}
|
||||
}
|
||||
|
||||
binding.manageAllPermsCheck.setOnClickListener {
|
||||
if (Permissions.hasAnyFileFineAccess(requireActivity())) {
|
||||
(it as RadioButton).isChecked = false
|
||||
binding.manageMediaPermsCheck.background = ContextCompat.getDrawable(requireActivity(), R.drawable.rounded_corners_permissions_warning)
|
||||
showWarning()
|
||||
} else
|
||||
requireActivity().lifecycleScope.launch {
|
||||
val uri = Uri.fromParts(SCHEME_PACKAGE, requireContext().packageName, null)
|
||||
val intent = Intent(
|
||||
android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION,
|
||||
uri
|
||||
)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
binding.manageMediaPermsCheck.setOnClickListener {
|
||||
if (Permissions.hasAnyFileFineAccess(requireActivity())) {
|
||||
Permissions.showAppSettingsPage(requireActivity())
|
||||
(it as RadioButton).isChecked = false
|
||||
} else if (Permissions.hasAllAccess(requireActivity())) {
|
||||
(it as RadioButton).isChecked = false
|
||||
binding.manageAllPermsCheck.background = ContextCompat.getDrawable(requireActivity(), R.drawable.rounded_corners_permissions_warning)
|
||||
showWarning()
|
||||
} else
|
||||
ActivityCompat.requestPermissions(
|
||||
requireActivity(), arrayOf(
|
||||
Manifest.permission.READ_MEDIA_VIDEO,
|
||||
Manifest.permission.READ_MEDIA_AUDIO
|
||||
), Permissions.FINE_STORAGE_PERMISSION_REQUEST_CODE
|
||||
)
|
||||
}
|
||||
|
||||
binding.manageMediaAudio.setOnClickListener {
|
||||
if (!Permissions.hasAllAccess(requireActivity()) && !Permissions.hasAudioPermission(requireActivity())) {
|
||||
ActivityCompat.requestPermissions(
|
||||
requireActivity(), arrayOf(
|
||||
Manifest.permission.READ_MEDIA_AUDIO
|
||||
), Permissions.FINE_STORAGE_PERMISSION_REQUEST_CODE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
binding.manageMediaVideo.setOnClickListener {
|
||||
if (!Permissions.hasAllAccess(requireActivity()) && !Permissions.hasVideoPermission(requireActivity())) {
|
||||
ActivityCompat.requestPermissions(
|
||||
requireActivity(), arrayOf(
|
||||
Manifest.permission.READ_MEDIA_VIDEO
|
||||
), Permissions.FINE_STORAGE_PERMISSION_REQUEST_CODE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private fun showWarning() {
|
||||
binding.allAccessWarning.translationY = 100.dp.toFloat()
|
||||
binding.allAccessWarning.setVisible()
|
||||
binding.allAccessWarning.animate().translationY(0F).setDuration(300).start()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -57,7 +57,9 @@ import org.videolan.vlc.R
|
||||
import org.videolan.vlc.gui.PinCodeActivity
|
||||
import org.videolan.vlc.gui.PinCodeReason
|
||||
import org.videolan.vlc.gui.SecondaryActivity
|
||||
import org.videolan.vlc.gui.dialogs.AboutVersionDialog
|
||||
import org.videolan.vlc.gui.dialogs.ConfirmAudioPlayQueueDialog
|
||||
import org.videolan.vlc.gui.dialogs.PermissionListDialog
|
||||
import org.videolan.vlc.gui.helpers.UiTools
|
||||
import org.videolan.vlc.gui.preferences.search.PreferenceItem
|
||||
import org.videolan.vlc.util.Permissions
|
||||
@ -147,6 +149,10 @@ class PreferencesFragment : BasePreferenceFragment(), SharedPreferences.OnShared
|
||||
pinCodeResult.launch(intent)
|
||||
}
|
||||
}
|
||||
"permissions" -> {
|
||||
PermissionListDialog.newInstance().show(requireActivity().supportFragmentManager, "PermissionListDialog")
|
||||
|
||||
}
|
||||
"remote_access_category" -> loadFragment(PreferencesRemoteAccess())
|
||||
"android_auto_category" -> loadFragment(PreferencesAndroidAuto())
|
||||
PLAYBACK_HISTORY -> {
|
||||
|
@ -127,6 +127,36 @@ object Permissions {
|
||||
|
||||
}
|
||||
|
||||
fun hasAudioPermission(context: Context) = (
|
||||
ContextCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.READ_MEDIA_AUDIO
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
)
|
||||
fun hasVideoPermission(context: Context) = (
|
||||
ContextCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.READ_MEDIA_VIDEO
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
)
|
||||
|
||||
fun hasAnyFileFineAccess(context: Context) = (
|
||||
ContextCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.READ_MEDIA_AUDIO
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
||
|
||||
ContextCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.READ_MEDIA_VIDEO
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
||
|
||||
ContextCompat.checkSelfPermission(
|
||||
context,
|
||||
Manifest.permission.READ_MEDIA_IMAGES
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
)
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
|
||||
private fun isAnyFileFinePermissionGranted(context: Context) = (
|
||||
ContextCompat.checkSelfPermission(
|
||||
|
Loading…
Reference in New Issue
Block a user