[#728] Complication support - Watch OS selection of Short, Long and Image complications with current AAPS status (SGV, trend, delta, BR, IoB, CoB, phone/uploader battery)

This commit is contained in:
Dominik Dzienia 2019-11-07 22:39:29 +01:00
parent 37ea3b3e30
commit 11665a1d89
121 changed files with 4181 additions and 233 deletions

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v14h-2v-1.5h-2v1.5h-2v-1.5h-2zm13.24 1.7598-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 522 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v11h-2v1h2v2h-2v-2h-2v2h-2v-2h-2zm2 12h2v-1h-2zm11.24-10.24-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 538 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v10h-2v2h2v2h-2v-2h-2v2h-2v-2h-2zm2 12h2v-2h-2zm11.24-10.24-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 538 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v10h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-1.5h-2zm2 10v2h2v-2zm2 0h2v-1.5h-2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 567 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v7h-2v1h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2zm2 8h2v-1h-2zm2 0v2h2v-2zm0 2h-2v2h2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 582 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v6h-2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2v-2h2v-.40039h-2zm2 6v2h2v-2zm2 0h2v-.40039h-2zm0 2v2h2v-2zm0 2h-2v2h2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 615 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v6h-2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2v-2h2v-2h-2zm2 6v2h2v-2zm2 0h2v-2h-2zm0 2v2h2v-2zm0 2h-2v2h2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 605 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v3h-2v1h2v2h-2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2v-2h2v-2h-2zm2 4h2v-1h-2zm2 0v2h2v-2zm0 2h-2v2h2zm0 2v2h2v-2zm0 2h-2v2h2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 626 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2c-.55228 0-1 .44772-1 1v16c0 .55228.44772 1 1 1h10c.55228 0 1-.44772 1-1v-16c0-.55228-.44772-1-1-1h-2v-2zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-16.07 1.0703h8v2h-2v2h2v2h-2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-.5h-2zm2 2v2h2v-2zm2 0h2v-.5h-2zm0 2v2h2v-2zm0 2h-2v2h2zm0 2v2h2v-2zm0 2h-2v2h2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 651 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m5 2v2h-2a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-16a1 1 0 0 0-1-1h-2v-2h-6zm15.07 2.9297-1.4102 1.4102c3.13 3.12 3.13 8.1903 0 11.32l1.4102 1.4102c3.9-3.9 3.9-10.231 0-14.141zm-14.07 1.0703h2v2h2v-2h2v2h-2v2h2v2h-2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2zm0 2v2h2v-2h-2zm2 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm9.2402-8.2402-1.4102 1.4102c1.56 1.56 1.56 4.0902 0 5.6602l1.4102 1.4102c2.34-2.34 2.34-6.1405 0-8.4805z"/>
</svg>

After

Width:  |  Height:  |  Size: 628 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m9 2v2h-1.6699a1.33 1.33 0 0 0-1.3301 1.3301v15.34c0 .73.60008 1.3301 1.3301 1.3301h9.3398a1.33 1.33 0 0 0 1.3301-1.3301v-15.34c0-.73-.60008-1.3301-1.3301-1.3301h-1.6699v-2h-6zm-1 4h8v14h-8v-14zm3.9922 1.6348c-.20776.0001459-.41627.012296-.53906.035156-.40487.075377-.87711.27315-1.1992.50391-.6162.44145-1.052 1.0995-1.2012 1.8145-.036974.17724-.068135.43288-.068359.54883v.076172h.75.75v-.09375c.0014-.40911.27856-.88798.66211-1.1445.27527-.18413.51594-.25465.85547-.25195.42432.00337.77536.15218 1.0664.45312.18687.19323.29535.3781.37695.64648.041091.13522.045052.18127.044922.39648-.00018.27125-.03153.43084-.12695.63476-.09497.20296-.18126.30868-.59375.72852-.74662.75992-.86069.88539-.99219 1.082-.13974.20897-.2684.46308-.34766.68945-.05321.15199-.14258.52203-.14258.58984v.037109h.75977.75781l.009765-.048828c.03414-.15494.12253-.39847.19141-.5332.15368-.3006.29355-.46626 1.0293-1.2148.18393-.18714.36832-.38472.41211-.4375.25761-.31052.44302-.7197.51172-1.1309.04095-.24512.02889-.73384-.02539-.98828-.12115-.568-.37976-1.0577-.77734-1.4727-.45238-.47215-.98198-.76014-1.6328-.88672-.11668-.022692-.32349-.03335-.53125-.033203zm-.75781 8.2637v.75.75h.75.75195v-.75-.75h-.75195-.75z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,55 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="24"
height="24"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="mask-burnin-battery-raw.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<metadata
id="metadata10">
<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>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1018"
id="namedview6"
showgrid="false"
inkscape:zoom="33.379557"
inkscape:cx="5.9350871"
inkscape:cy="13.348904"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
style="opacity:1;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 6 6 L 6 8 L 8 8 L 8 6 L 6 6 z M 8 8 L 8 10 L 10 10 L 10 8 L 8 8 z M 10 8 L 12 8 L 12 6 L 10 6 L 10 8 z M 10 10 L 10 12 L 12 12 L 12 10 L 10 10 z M 10 12 L 8 12 L 8 14 L 10 14 L 10 12 z M 10 14 L 10 16 L 12 16 L 12 14 L 10 14 z M 10 16 L 8 16 L 8 18 L 10 18 L 10 16 z M 10 18 L 10 20 L 12 20 L 12 18 L 10 18 z M 8 18 L 6 18 L 6 20 L 8 20 L 8 18 z M 6 18 L 6 16 L 4 16 L 4 18 L 6 18 z M 6 16 L 8 16 L 8 14 L 6 14 L 6 16 z M 6 14 L 6 12 L 4 12 L 4 14 L 6 14 z M 6 12 L 8 12 L 8 10 L 6 10 L 6 12 z M 6 10 L 6 8 L 4 8 L 4 10 L 6 10 z "
id="rect824-9" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,223 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="24"
height="24"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="mask-burnin-battery.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<metadata
id="metadata10">
<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>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1018"
id="namedview6"
showgrid="false"
inkscape:zoom="33.379557"
inkscape:cx="5.9350871"
inkscape:cy="13.348904"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<g
id="g1106"
transform="translate(-9.526788,-0.134268)">
<g
transform="translate(9.526789,4.1342669)"
id="g933">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 4,2 H 6 V 4 H 4 Z"
id="rect824"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 6,2 H 8 V 4 H 6 Z"
id="rect824-9" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 8,2 H 9.9999996 V 4 H 8 Z"
id="rect824-2" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10,2 h 2 v 2 h -2 z"
id="rect824-9-1" />
</g>
<g
transform="rotate(180,16.253008,7.0403444)"
id="g927">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-8"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 12.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-9-8" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 14.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-2-0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 16.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-9-1-8" />
</g>
<g
transform="translate(9.526789,8.1342669)"
id="g933-9">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 4,2 H 6 V 4 H 4 Z"
id="rect824-6"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 6,2 H 8 V 4 H 6 Z"
id="rect824-9-18" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 8,2 H 9.9999996 V 4 H 8 Z"
id="rect824-2-8" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10,2 h 2 v 2 h -2 z"
id="rect824-9-1-0" />
</g>
<g
transform="rotate(180,16.253008,9.0403445)"
id="g927-9">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-8-0"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 12.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-9-8-6" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 14.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-2-0-8" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 16.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-9-1-8-4" />
</g>
<g
transform="translate(9.526789,12.134267)"
id="g933-1">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 4,2 H 6 V 4 H 4 Z"
id="rect824-3"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 6,2 H 8 V 4 H 6 Z"
id="rect824-9-16" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 8,2 H 9.9999996 V 4 H 8 Z"
id="rect824-2-83" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10,2 h 2 v 2 h -2 z"
id="rect824-9-1-1" />
</g>
<g
transform="rotate(180,16.253008,11.040345)"
id="g927-4">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-8-4"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 12.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-9-8-1" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 14.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-2-0-0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 16.979228,3.946422 h 2 v 2 h -2 z"
id="rect824-9-1-8-8" />
</g>
<g
transform="translate(9.526788,16.134268)"
id="g933-0">
<path
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 4,2 H 6 V 4 H 4 Z"
id="rect824-63"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 6,2 H 8 V 4 H 6 Z"
id="rect824-9-85" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#00ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="M 8,2 H 9.9999996 V 4 H 8 Z"
id="rect824-2-87" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#008080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99737531;paint-order:markers stroke fill"
d="m 10,2 h 2 v 2 h -2 z"
id="rect824-9-1-7" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,18.5H4V6H12V18.5Z" /></svg>

After

Width:  |  Height:  |  Size: 606 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,17H4V6H12V17Z" /></svg>

After

Width:  |  Height:  |  Size: 602 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,16H4V6H12V16Z" /></svg>

After

Width:  |  Height:  |  Size: 602 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,14.5H4V6H12V14.5Z" /></svg>

After

Width:  |  Height:  |  Size: 606 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,13H4V6H12V13Z" /></svg>

After

Width:  |  Height:  |  Size: 602 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,11.6H4V6H12V11.6Z" /></svg>

After

Width:  |  Height:  |  Size: 606 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,10H4V6H12V10Z" /></svg>

After

Width:  |  Height:  |  Size: 602 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,9H4V6H12V9Z" /></svg>

After

Width:  |  Height:  |  Size: 600 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,7.5H4V6H12V7.5Z" /></svg>

After

Width:  |  Height:  |  Size: 604 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76Z" /></svg>

After

Width:  |  Height:  |  Size: 586 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></svg>

After

Width:  |  Height:  |  Size: 440 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z" /></svg>

After

Width:  |  Height:  |  Size: 682 B

View file

@ -0,0 +1,93 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 6.3499999 6.3500002"
version="1.1"
id="svg6582"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="ic_br_cob_iob_orig.svg">
<defs
id="defs6576" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="20.48"
inkscape:cx="21.368628"
inkscape:cy="7.6899364"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="7.0150757,3.6431885"
orientation="0,1"
id="guide7239"
inkscape:locked="false" />
<sodipodi:guide
position="6.110738,1.9637045"
orientation="0,1"
id="guide4515"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata6579">
<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"
transform="translate(0,-290.64998)">
<path
style="fill:#000000;stroke-width:0.99999988"
d="m 0.03622667,296.52928 c -0.05573246,-0.0616 -0.05418386,-0.0663 0.0545402,-0.1676 0.0615457,-0.0574 0.11915314,-0.12579 0.12801621,-0.15212 0.008863,-0.0264 -0.0358645,-0.14128 -0.0993956,-0.25541 -0.11006156,-0.19773 -0.11551067,-0.22183 -0.11551067,-0.51082 0,-0.27606 0.0084459,-0.31854 0.09406667,-0.47311 0.11396967,-0.20573 0.29667962,-0.37806 0.34723811,-0.32749 0.0650151,0.065 0.10430015,0.034 0.18887001,-0.14919 0.13241088,-0.28679 0.24662218,-0.40499 0.3924149,-0.40611 0.1141555,-8.6e-4 0.1239478,-0.009 0.1669233,-0.13767 0.025367,-0.0759 0.1153545,-0.21076 0.2025129,-0.3033 l 0.1568592,-0.16657 0.1259147,0.14214 c 0.069253,0.0782 0.1514296,0.18951 0.1826144,0.24742 0.031184,0.0579 0.074962,0.10528 0.097285,0.10528 0.022322,0 0.1232137,-0.0641 0.2242032,-0.1424 0.2551499,-0.19787 0.4707024,-0.26368 0.8024812,-0.24499 0.073924,0.003 0.075677,0.0105 0.060668,0.2203 -0.018902,0.2642 -0.1054117,0.46835 -0.2776124,0.65516 -0.071801,0.0779 -0.1305487,0.15755 -0.1305487,0.177 0,0.0194 0.075424,0.0848 0.1676113,0.14531 0.092186,0.0605 0.2081383,0.1437 0.2576717,0.18495 l 0.090061,0.075 -0.1219865,0.1237 c -0.067093,0.0681 -0.2010031,0.16002 -0.2975793,0.2044 -0.199175,0.0915 -0.2308085,0.12454 -0.1908675,0.19916 0.036351,0.068 -0.1489458,0.25209 -0.3518735,0.34972 -0.2420168,0.11644 -0.2399953,0.11454 -0.2300318,0.21521 0.00753,0.076 -0.014618,0.1162 -0.1102841,0.2002 -0.065833,0.0578 -0.1972437,0.14059 -0.2920236,0.18399 -0.1511967,0.0692 -0.2052261,0.0771 -0.4406271,0.0648 -0.23174967,-0.0122 -0.29885754,-0.0301 -0.49261315,-0.13125 l -0.22431318,-0.11718 -0.13823523,0.12743 c -0.0760293,0.0701 -0.14517698,0.12742 -0.15366134,0.12742 -0.008483,0 -0.0412387,-0.0284 -0.0727873,-0.0634 z m 1.47652803,-0.19404 c 0.074834,-0.0322 0.1454948,-0.0831 0.157023,-0.1132 0.05126,-0.13358 -0.38361,-0.32453 -0.6545159,-0.2874 -0.18637946,0.0257 -0.42075507,0.16129 -0.42075507,0.24369 0,0.12311 0.41715077,0.267 0.67044497,0.23125 0.061457,-0.009 0.1729686,-0.0421 0.247803,-0.0743 z m -0.95860832,-0.48265 c 0.0758147,-0.11469 0.0881196,-0.16528 0.0873291,-0.35916 -0.001169,-0.28626 -0.11548526,-0.54494 -0.24081925,-0.54494 -0.17348331,0 -0.28704584,0.48479 -0.18397596,0.7854 0.0980628,0.28599 0.20256607,0.32275 0.33746611,0.1187 z m 1.38140422,-0.0292 c 0.1856471,-0.0398 0.339672,-0.15275 0.3108314,-0.22791 -0.036872,-0.0961 -0.3571185,-0.22243 -0.5638097,-0.22243 -0.2049092,0 -0.4262288,0.0935 -0.4945342,0.2089 -0.041951,0.071 0.034352,0.1341 0.2645597,0.21918 0.1753201,0.0648 0.2652676,0.0689 0.4829528,0.0223 z m -0.8639771,-0.44935 c 0.1737466,-0.1865 0.2053776,-0.55083 0.070735,-0.81476 -0.1284641,-0.25181 -0.21204859,-0.2578 -0.32554745,-0.0234 -0.12087975,0.2497 -0.0886573,0.57245 0.0834178,0.83551 0.0586103,0.0896 0.0898824,0.0901 0.17139505,0.003 z m 1.5901381,-0.16903 c 0.176478,-0.0822 0.2038657,-0.13507 0.1117407,-0.21585 -0.2457795,-0.21549 -0.6736019,-0.23825 -0.9418152,-0.0501 -0.1378586,0.0967 -0.1129176,0.16431 0.095778,0.25956 0.2460525,0.11232 0.5019589,0.11452 0.7342967,0.006 z m -0.9395138,-0.52788 c 0.074142,-0.14449 0.087995,-0.20668 0.078224,-0.35117 -0.012903,-0.19079 -0.13139,-0.46543 -0.2216396,-0.51373 -0.078974,-0.0422 -0.1770734,0.0737 -0.237132,0.28028 -0.056866,0.19561 -0.026219,0.43452 0.083271,0.64914 0.094132,0.18452 0.1789426,0.16611 0.2972777,-0.0645 z m 0.6441989,-0.15798 c 0.1891937,-0.0821 0.3202273,-0.20649 0.4125549,-0.39177 0.1512249,-0.30347 0.097564,-0.40563 -0.1711463,-0.32584 -0.2829441,0.0841 -0.5846126,0.43186 -0.5846126,0.67407 0,0.14794 0.079282,0.158 0.343204,0.0435 z"
id="path7219"
inkscape:connector-curvature="0" />
<g
id="layer1-1"
transform="matrix(0.58700842,0,0,0.58700842,1.7392457,119.14951)"
style="fill:#000000;stroke-width:1.70355296">
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.90146357;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 0.62430507,292.16017 V 295.604 H -1.4578422 v 0.65081 h 2.7329683 v -3.44383 h 1.0710931 v 1.66668 h 1.6138442 v 1.77715 H 6.3496096 V 295.604 h -1.738725 v -1.77475 H 2.9970403 v -1.66908 z"
id="path6563"
inkscape:connector-curvature="0" />
</g>
<path
style="fill:#000000;stroke-width:1"
d="m 2.7360592,296.16852 c 0.035985,-0.0266 0.079014,-0.0464 0.095561,-0.0439 0.028453,0.004 0.1012562,0.0628 0.1998654,0.16077 0.042618,0.0422 0.050276,0.0379 0.2271026,-0.13015 0.1006543,-0.0957 0.1837529,-0.17894 0.1846679,-0.18509 7.368e-4,-0.005 -0.080243,-0.0992 -0.1803661,-0.20667 -0.1001149,-0.10752 -0.1858963,-0.21293 -0.1906298,-0.23422 -0.01591,-0.0715 0.00672,-0.14361 0.055248,-0.17596 0.052777,-0.0351 0.1863359,-0.0256 0.2035889,0.0146 0.00599,0.0138 0.028459,0.0383 0.049986,0.0543 0.034199,0.0255 0.1469599,-0.0773 0.8921084,-0.81307 0.4959648,-0.48972 0.8786622,-0.84956 0.9143988,-0.85984 0.057272,-0.0164 0.1193571,-0.006 0.4656563,0.0774 l 0.1179261,0.0284 0.2688188,-0.25067 c 0.4071733,-0.37969 0.4103449,-0.37495 0.026669,0.0399 l -0.2462072,0.26615 0.042598,0.25476 c 0.023426,0.14012 0.037869,0.28652 0.032094,0.3253 -0.00841,0.0565 -0.1829859,0.24089 -0.871827,0.92127 l -0.8613178,0.85072 0.056621,0.0699 c 0.080472,0.0992 0.086441,0.16909 0.02003,0.23528 -0.099061,0.0988 -0.169502,0.0709 -0.3691134,-0.14606 -0.097862,-0.10638 -0.1875382,-0.19485 -0.1992942,-0.1966 -0.01811,-0.003 -0.2766334,0.23868 -0.346337,0.3234 -0.014924,0.0182 0.00872,0.0666 0.069195,0.14254 0.1016878,0.12757 0.1059961,0.18332 0.020346,0.26412 -0.09641,0.0909 -0.1470079,0.0616 -0.4406566,-0.25571 -0.1491273,-0.16113 -0.2817818,-0.31113 -0.2947946,-0.33331 -0.037247,-0.0635 -0.013228,-0.14534 0.058107,-0.19819 z m 1.2661739,-0.0595 c 0.00508,7.5e-4 0.024809,0.009 0.042796,0.0201 0.02401,0.0137 0.2623398,-0.20766 0.8700641,-0.80776 0.4603218,-0.45456 0.839611,-0.84429 0.8428512,-0.86604 0.00323,-0.0217 -0.00965,-0.1319 -0.028692,-0.24474 -0.040702,-0.24158 -0.049455,-0.24932 -0.328551,-0.29089 -0.1607045,-0.0239 -0.2000044,-0.0227 -0.2397059,0.0103 -0.026037,0.0213 -0.043089,0.049 -0.037808,0.0615 0.00526,0.0126 0.079361,0.0959 0.1645424,0.18593 0.1467729,0.15491 0.1751347,0.20713 0.124336,0.22895 -0.012216,0.005 -0.096829,-0.0721 -0.1880173,-0.17197 -0.1747009,-0.19129 -0.1974008,-0.19898 -0.2757157,-0.0937 -0.024291,0.0327 -0.00304,0.0658 0.1358708,0.21208 0.090572,0.0953 0.1627979,0.18582 0.1605287,0.20105 -0.00998,0.067 -0.060365,0.0359 -0.2143205,-0.1314 -0.090441,-0.0983 -0.1694681,-0.1795 -0.175613,-0.18042 -0.00636,-9.4e-4 -0.037769,0.0259 -0.070354,0.0598 l -0.059172,0.0615 0.1595191,0.17024 c 0.087744,0.0935 0.1607166,0.18409 0.1621791,0.201 0.00675,0.0776 -0.058967,0.0374 -0.2140684,-0.13126 l -0.1681788,-0.18284 -0.051111,0.0492 c -0.028143,0.0272 -0.052465,0.057 -0.054123,0.0659 -0.00176,0.01 0.095906,0.12352 0.2167832,0.25426 0.1208911,0.13069 0.2213029,0.24481 0.2231458,0.25359 0.002,0.008 -0.2203961,0.23363 -0.4938623,0.49971 -0.4231911,0.41178 -0.5536869,0.55846 -0.5034353,0.56594 z"
id="path825"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,83 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 6.3499999 6.3500002"
version="1.1"
id="svg6582"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="ic_cob_detailed_orig.svg">
<defs
id="defs6576" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="10.24"
inkscape:cx="15.646632"
inkscape:cy="-12.499983"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="5.3485108,-2.2479248"
orientation="0,1"
id="guide7239"
inkscape:locked="false" />
<sodipodi:guide
position="7.4930827,-2.2479248"
orientation="0,1"
id="guide4515"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata6579">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-290.64998)">
<path
style="fill:#000000;stroke-width:0.99999994"
d="m 0.05089598,294.93416 c -0.07830027,-0.0866 -0.07612459,-0.0931 0.07662521,-0.23546 0.0864674,-0.0807 0.16740192,-0.17673 0.17985392,-0.21372 0.0124519,-0.0371 -0.0503872,-0.19849 -0.13964395,-0.35883 -0.15462889,-0.27779 -0.1622845,-0.31166 -0.1622845,-0.71767 0,-0.38785 0.01186591,-0.44752 0.13215717,-0.66469 0.16011951,-0.28904 0.41681436,-0.53114 0.48784554,-0.4601 0.0913417,0.0914 0.1465345,0.0477 0.26534931,-0.2096 0.18602812,-0.40291 0.34648712,-0.56898 0.55131572,-0.57056 0.1603807,-0.001 0.1741382,-0.0125 0.2345157,-0.1934 0.035639,-0.10668 0.1620652,-0.29611 0.2845168,-0.42613 l 0.2203763,-0.23402 0.1769015,0.1997 c 0.097295,0.10979 0.212748,0.26624 0.2565605,0.34761 0.043811,0.0814 0.1053167,0.14791 0.1366786,0.14791 0.031361,0 0.1731067,-0.09 0.3149901,-0.20006 0.358468,-0.278 0.6613044,-0.37046 1.1274306,-0.34419 0.1038581,0.004 0.1063214,0.0148 0.085235,0.3095 -0.026556,0.37118 -0.1480962,0.65799 -0.3900263,0.92046 -0.1008754,0.10945 -0.1834119,0.22134 -0.1834119,0.24866 0,0.0273 0.1059661,0.11915 0.2354823,0.20416 0.1295149,0.085 0.2924199,0.20189 0.362011,0.25984 l 0.1265294,0.10535 -0.1713826,0.17378 c -0.094261,0.0957 -0.2823955,0.22482 -0.4180783,0.28717 -0.2798272,0.12855 -0.3242699,0.17497 -0.2681556,0.27981 0.051071,0.0956 -0.2092585,0.35418 -0.4943581,0.49132 -0.3400167,0.16361 -0.3371767,0.16094 -0.3231787,0.30237 0.010579,0.10678 -0.020536,0.16325 -0.1549416,0.28125 -0.092491,0.0813 -0.2771137,0.19753 -0.4102729,0.25852 -0.2124209,0.0972 -0.2883285,0.10823 -0.6190505,0.091 -0.3255924,-0.0172 -0.4198742,-0.0423 -0.69208754,-0.18441 l -0.31514452,-0.16462 -0.19421093,0.17903 c -0.1068159,0.0985 -0.20396363,0.17902 -0.21588358,0.17902 -0.011918,0 -0.05793753,-0.0399 -0.10226112,-0.0891 z m 2.07441972,-0.27261 c 0.1051369,-0.0453 0.2044102,-0.11674 0.2206066,-0.15904 0.072017,-0.18766 -0.5389456,-0.45594 -0.9195496,-0.40378 -0.2618503,0.0361 -0.59113182,0.2266 -0.59113182,0.34238 0,0.17295 0.58606802,0.37512 0.94192882,0.3249 0.086342,-0.0127 0.2430089,-0.0592 0.348146,-0.10435 z m -1.34677832,-0.6781 c 0.1065144,-0.16113 0.12380194,-0.2322 0.12269135,-0.50459 -0.001642,-0.40217 -0.16224881,-0.76561 -0.3383344,-0.76561 -0.24373207,0 -0.40327958,0.68111 -0.25847353,1.10345 0.13777147,0.4018 0.28459134,0.45344 0.47411658,0.16675 z m 1.94077752,-0.0411 c 0.2608212,-0.0559 0.4772157,-0.2146 0.4366965,-0.3202 -0.051801,-0.13501 -0.5017268,-0.3125 -0.7921136,-0.3125 -0.2878833,0 -0.598822,0.13137 -0.6947864,0.29349 -0.058938,0.0998 0.048262,0.18841 0.3716881,0.30794 0.2463126,0.091 0.3726826,0.0968 0.6785154,0.0313 z m -1.2138282,-0.6313 c 0.244102,-0.26202 0.2885414,-0.77388 0.099378,-1.14469 -0.1804831,-0.35378 -0.2979135,-0.36219 -0.4573717,-0.033 -0.16982766,0.35082 -0.1245573,0.80425 0.1171964,1.17383 0.082343,0.12588 0.1262785,0.12658 0.2407982,0.004 z m 2.2340342,-0.23749 c 0.2479394,-0.11543 0.2864171,-0.18975 0.1569879,-0.30324 -0.3453032,-0.30275 -0.9463641,-0.33474 -1.3231853,-0.0704 -0.1936818,0.13585 -0.1586414,0.23084 0.1345615,0.36465 0.3456868,0.15781 0.7052176,0.1609 1.0316361,0.008 z m -1.319952,-0.74162 c 0.1041645,-0.203 0.1236269,-0.29037 0.1098991,-0.49337 -0.018127,-0.26805 -0.1845938,-0.6539 -0.3113883,-0.72176 -0.1109526,-0.0593 -0.248776,0.10357 -0.3331541,0.39378 -0.079893,0.27482 -0.036837,0.61047 0.1169895,0.912 0.1322489,0.25923 0.251402,0.23337 0.4176547,-0.0907 z m 0.9050549,-0.22195 c 0.2658041,-0.11532 0.4498971,-0.29011 0.5796111,-0.55042 0.2124605,-0.42634 0.1370707,-0.56987 -0.2404487,-0.45778 -0.397517,0.11816 -0.8213403,0.60673 -0.8213403,0.94702 0,0.20785 0.1113854,0.22198 0.4821779,0.0612 z"
id="path7219"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.42386249;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 2.9588068,295.12302 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 h 1.861385 a 0.21195244,0.21195244 0 1 0 0,-0.42374 h -1.861385 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z m 2.4784015,0 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 H 6.132256 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 5.4583956 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z m -2.4784015,0.72657 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 h 0.8030516 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 2.9799941 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z m 1.4273029,0 a 0.21218709,0.21218709 0 0 0 0.021704,0.42374 h 1.7244425 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 4.4078138 a 0.21195244,0.21195244 0 0 0 -0.021704,0 z m -1.4273029,0.72657 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 H 6.132256 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 2.9799941 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z"
id="path819-9"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

@ -0,0 +1,83 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 6.3499999 6.3500002"
version="1.1"
id="svg6582"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="ic_cob_iob_orig.svg">
<defs
id="defs6576" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="20.48"
inkscape:cx="11.749487"
inkscape:cy="7.6899364"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="5.3485108,-2.2479248"
orientation="0,1"
id="guide7239"
inkscape:locked="false" />
<sodipodi:guide
position="7.4930827,-2.2479248"
orientation="0,1"
id="guide4515"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata6579">
<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"
transform="translate(0,-290.64998)">
<path
style="fill:#000000;stroke-width:0.99999988"
d="m 0.04584936,294.50936 c -0.07053636,-0.078 -0.06857641,-0.0839 0.06902739,-0.21211 0.0778937,-0.0727 0.15080309,-0.15921 0.1620204,-0.19253 0.0112172,-0.0334 -0.045391,-0.17881 -0.12579747,-0.32325 -0.13929657,-0.25025 -0.14619309,-0.28076 -0.14619309,-0.64651 0,-0.34939 0.01068934,-0.40315 0.11905305,-0.59878 0.14424277,-0.26038 0.37548489,-0.47848 0.43947293,-0.41448 0.0822847,0.0823 0.13200479,0.043 0.23903845,-0.18882 0.16758237,-0.36296 0.31213098,-0.51256 0.49664968,-0.51398 0.1444781,-0.001 0.1568714,-0.0113 0.2112622,-0.17423 0.032105,-0.0961 0.1459955,-0.26675 0.2563053,-0.38387 l 0.1985248,-0.21082 0.1593607,0.1799 c 0.087648,0.0989 0.1916529,0.23984 0.2311211,0.31314 0.039467,0.0733 0.094874,0.13325 0.1231262,0.13325 0.028251,0 0.1559422,-0.0811 0.283757,-0.18023 0.3229239,-0.25043 0.5957324,-0.33372 1.0156396,-0.31006 0.09356,0.004 0.095779,0.0133 0.076783,0.27881 -0.023923,0.33438 -0.1334116,0.59275 -0.351353,0.82919 -0.090873,0.0986 -0.1652256,0.1994 -0.1652256,0.22401 0,0.0246 0.095459,0.10733 0.2121329,0.18391 0.1166728,0.0766 0.2634249,0.18188 0.3261156,0.23408 l 0.1139833,0.0949 -0.154389,0.15655 c -0.084915,0.0862 -0.2543944,0.20253 -0.3766235,0.2587 -0.2520808,0.1158 -0.2921168,0.15762 -0.2415665,0.25206 0.046007,0.0861 -0.1885094,0.31906 -0.4453397,0.44261 -0.3063022,0.14738 -0.3037438,0.14498 -0.2911338,0.27238 0.00953,0.0962 -0.0185,0.14707 -0.1395782,0.25337 -0.08332,0.0732 -0.2496364,0.17794 -0.3695921,0.23288 -0.1913582,0.0876 -0.2597391,0.0975 -0.5576682,0.082 -0.2933081,-0.0155 -0.3782413,-0.0381 -0.62346317,-0.16613 l -0.28389618,-0.14829 -0.17495384,0.16127 c -0.0962245,0.0887 -0.18373949,0.16127 -0.19447751,0.16127 -0.0107363,0 -0.0521927,-0.0359 -0.09212136,-0.0803 z m 1.86872944,-0.24558 c 0.094712,-0.0408 0.1841418,-0.10516 0.1987322,-0.14327 0.064876,-0.16905 -0.4855061,-0.41073 -0.8283711,-0.36374 -0.2358864,0.0325 -0.53251782,0.20413 -0.53251782,0.30843 0,0.1558 0.52795612,0.33792 0.84853132,0.29268 0.077781,-0.0114 0.2189132,-0.0533 0.3136254,-0.094 z m -1.21323775,-0.61086 c 0.0959529,-0.14515 0.11152629,-0.20918 0.11052582,-0.45456 -0.001479,-0.36229 -0.14616094,-0.68969 -0.30478666,-0.68969 -0.21956467,0 -0.36329215,0.61357 -0.23284443,0.99403 0.12411066,0.36196 0.25637252,0.40848 0.42710527,0.15022 z m 1.74833855,-0.037 c 0.2349594,-0.0504 0.4298971,-0.19332 0.3933956,-0.28845 -0.046665,-0.12162 -0.4519777,-0.28151 -0.7135711,-0.28151 -0.259338,0 -0.5394454,0.11834 -0.6258944,0.26439 -0.053094,0.0899 0.043477,0.16972 0.3348331,0.2774 0.2218894,0.082 0.3357291,0.0872 0.6112368,0.0282 z m -1.0934703,-0.5687 c 0.2198979,-0.23604 0.2599309,-0.69715 0.089524,-1.03119 -0.1625872,-0.3187 -0.2683737,-0.32628 -0.4120207,-0.0297 -0.15298833,0.31603 -0.11220682,0.7245 0.1055757,1.05744 0.074178,0.1134 0.1137573,0.11403 0.2169217,0.004 z m 2.0125172,-0.21394 c 0.2233548,-0.10399 0.2580173,-0.17094 0.1414217,-0.27318 -0.3110645,-0.27273 -0.8525268,-0.30154 -1.1919841,-0.0634 -0.1744772,0.12238 -0.1429112,0.20795 0.121219,0.3285 0.31141,0.14216 0.6352913,0.14494 0.9293436,0.007 z m -1.1890714,-0.66809 c 0.093836,-0.18287 0.1113686,-0.26158 0.099002,-0.44445 -0.01633,-0.24147 -0.1662903,-0.58906 -0.2805124,-0.65019 -0.099951,-0.0534 -0.2241085,0.0933 -0.30012,0.35473 -0.071971,0.24757 -0.033184,0.54994 0.1053893,0.82157 0.1191357,0.23353 0.2264741,0.21023 0.3762419,-0.0817 z m 0.8153137,-0.19994 c 0.2394481,-0.10389 0.4052873,-0.26134 0.5221394,-0.49584 0.1913939,-0.38407 0.1234794,-0.51337 -0.2166069,-0.41239 -0.3581009,0.10644 -0.7398998,0.54657 -0.7398998,0.85312 0,0.18724 0.1003409,0.19997 0.4343673,0.0551 z"
id="path7219"
inkscape:connector-curvature="0" />
<path
style="fill:#000000;stroke-width:1"
d="m 1.7447878,295.94036 c 0.045855,-0.0339 0.1006869,-0.0591 0.1217726,-0.0559 0.036257,0.005 0.1290298,0.08 0.2546866,0.20487 0.054308,0.0538 0.064066,0.0483 0.2893948,-0.16585 0.1282628,-0.12195 0.2341546,-0.22802 0.2353206,-0.23586 9.389e-4,-0.006 -0.1022529,-0.12641 -0.2298389,-0.26336 -0.1275755,-0.13701 -0.2368859,-0.27133 -0.2429178,-0.29846 -0.020274,-0.0911 0.00856,-0.183 0.070402,-0.22423 0.067253,-0.0447 0.2374462,-0.0326 0.2594315,0.0186 0.00763,0.0176 0.036265,0.0488 0.063697,0.0692 0.043579,0.0325 0.1872697,-0.0985 1.1368056,-1.03609 0.6320035,-0.62404 1.1196713,-1.08258 1.1652101,-1.09568 0.072981,-0.0209 0.1520957,-0.008 0.5933816,0.0986 l 0.1502722,0.0362 0.3425533,-0.31943 c 0.5188572,-0.48383 0.5228988,-0.47779 0.033984,0.0509 l -0.3137396,0.33915 0.054282,0.32464 c 0.029852,0.17855 0.048256,0.36511 0.040897,0.41452 -0.010717,0.072 -0.2331773,0.30697 -1.1109612,1.17397 l -1.0975694,1.08406 0.072152,0.0891 c 0.1025447,0.12641 0.110151,0.21547 0.025524,0.29981 -0.1262325,0.1259 -0.2159948,0.0904 -0.4703578,-0.18612 -0.1247047,-0.13556 -0.2389782,-0.2483 -0.2539588,-0.25053 -0.023077,-0.004 -0.3525114,0.30415 -0.4413341,0.41211 -0.019017,0.0232 0.011112,0.0849 0.088175,0.18164 0.1295798,0.16256 0.1350698,0.2336 0.025927,0.33656 -0.1228544,0.11584 -0.1873308,0.0785 -0.5615247,-0.32585 -0.1900316,-0.20532 -0.359072,-0.39647 -0.3756541,-0.42473 -0.047464,-0.0809 -0.016856,-0.18521 0.074045,-0.25255 z m 1.6134739,-0.0758 c 0.00647,9.6e-4 0.031614,0.0115 0.054535,0.0256 0.030596,0.0175 0.3342972,-0.26462 1.1087147,-1.02932 0.5865839,-0.57924 1.0699087,-1.07587 1.0740377,-1.10358 0.00412,-0.0277 -0.012297,-0.16808 -0.036562,-0.31187 -0.051866,-0.30785 -0.06302,-0.31771 -0.4186696,-0.37068 -0.2047842,-0.0305 -0.2548637,-0.0289 -0.305455,0.0131 -0.033179,0.0271 -0.054908,0.0624 -0.048178,0.0784 0.0067,0.0161 0.101129,0.12221 0.2096749,0.23693 0.1870314,0.1974 0.2231725,0.26394 0.1584402,0.29175 -0.015567,0.006 -0.1233883,-0.0919 -0.2395887,-0.21914 -0.2226198,-0.24376 -0.2515461,-0.25356 -0.351342,-0.1194 -0.030954,0.0417 -0.00387,0.0838 0.1731389,0.27025 0.1154151,0.12144 0.2074519,0.23679 0.2045603,0.2562 -0.012717,0.0854 -0.076923,0.0457 -0.2731067,-0.16745 -0.1152481,-0.12526 -0.2159517,-0.22873 -0.223782,-0.2299 -0.0081,-0.001 -0.048129,0.033 -0.089651,0.0762 l -0.075402,0.0784 0.2032737,0.21693 c 0.1118114,0.11915 0.2047997,0.23459 0.2066633,0.25614 0.0086,0.0989 -0.075141,0.0476 -0.2727854,-0.16727 l -0.2143087,-0.23299 -0.06513,0.0627 c -0.035862,0.0347 -0.066856,0.0726 -0.068968,0.084 -0.00224,0.0127 0.1222121,0.1574 0.2762448,0.324 0.1540505,0.16654 0.2820043,0.31196 0.2843527,0.32315 0.00255,0.0102 -0.2808487,0.29771 -0.6293242,0.63678 -0.5392686,0.52472 -0.7055582,0.71164 -0.641523,0.72117 z"
id="path825"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

View file

@ -0,0 +1,57 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg6582"
version="1.1"
viewBox="0 0 6.3499999 6.3500002"
height="24"
width="24"
sodipodi:docname="ic_ins_burnin_orig.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1017"
id="namedview7"
showgrid="false"
inkscape:zoom="9.8333334"
inkscape:cx="-16.577819"
inkscape:cy="-13.406881"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6582" />
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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>
<path
style="fill:#000000;stroke-width:1"
d="m 5.2032286,5.5871636 c -0.04934,-0.04934 -0.08964,-0.111011 -0.08957,-0.137051 1.52e-4,-0.04479 0.07357,-0.17029 0.201637,-0.344565 0.05534,-0.07532 0.04685,-0.08608 -0.252444,-0.319785 -0.170344,-0.133015 -0.317626,-0.241845 -0.327294,-0.241845 -0.0097,0 -0.134233,0.146285 -0.276812,0.325077 -0.14258,0.178792 -0.285173,0.33503 -0.316874,0.347195 -0.106583,0.0409 -0.222631,0.0226 -0.28355,-0.04472 -0.06622,-0.07318 -0.08206,-0.280988 -0.02413,-0.316785 0.01999,-0.01236 0.05248,-0.05261 0.0722,-0.08944 0.03132,-0.05851 -0.152744,-0.208523 -1.45636,-1.186943 -0.867679,-0.65123 -1.50947501,-1.157865 -1.53346701,-1.210523 -0.03847,-0.08443 -0.03669,-0.182385 0.01334,-0.734653 l 0.01703,-0.188057 -0.447569,-0.356365 c -0.677916,-0.53977105 -0.671352,-0.54573805 0.05517,-0.05015 l 0.46618901,0.318004 0.382456,-0.124018 c 0.210351,-0.06821 0.432408,-0.124018 0.49346,-0.124018 0.08878,0 0.412826,0.226458 1.618266,1.1309 l 1.507261,1.1309 0.09444,-0.1032 c 0.13419,-0.146644 0.240524,-0.171859 0.357656,-0.08481 0.174744,0.129864 0.147971,0.244692 -0.140308,0.601765 -0.141329,0.175055 -0.256962,0.333412 -0.256962,0.351903 0,0.02852 0.430933,0.371143 0.577336,0.459025 0.03126,0.01877 0.100589,-0.02865 0.203562,-0.139225 0.173028,-0.185803 0.257926,-0.205222 0.401944,-0.09194 0.162187,0.127576 0.128598,0.212191 -0.292577,0.737056 -0.21388,0.266535 -0.414377,0.505167 -0.445547,0.530293 -0.08919,0.07189 -0.220737,0.05371 -0.318466,-0.04402 z m -0.38208,-1.935654 c 0,-0.0084 0.0095,-0.04015 0.0212,-0.07054 0.0154,-0.04012 -0.379863,-0.35625 -1.443129,-1.154214 -0.805383,-0.604426 -1.492346,-1.098957 -1.526584,-1.098957 -0.03424,0 -0.200846,0.04514 -0.37024,0.100301 -0.362556,0.118072 -0.37248,0.133324 -0.37248,0.57253 0,0.252909 0.01163,0.313126 0.07079,0.36667 0.03893,0.03524 0.08535,0.05506 0.103151,0.04406 0.0178,-0.011 0.12963,-0.144179 0.248515,-0.295954 0.204828,-0.261494 0.278719,-0.31713 0.323961,-0.243927 0.01089,0.01762 -0.08884,0.165617 -0.221625,0.328891 -0.254408,0.312833 -0.261065,0.349543 -0.08088,0.445977 0.05584,0.02989 0.101998,-0.01041 0.295319,-0.257823 0.126023,-0.161285 0.248747,-0.293246 0.27272,-0.293246 0.1052,0 0.06917,0.08472 -0.153163,0.360085 -0.130623,0.161786 -0.237497,0.30207 -0.237497,0.311742 0,0.0097 0.04864,0.05222 0.108097,0.09456 l 0.108096,0.07697 0.225527,-0.284627 c 0.12404,-0.156545 0.246547,-0.28965 0.272238,-0.295788 0.118009,-0.0282 0.07105,0.08224 -0.152949,0.359672 l -0.242907,0.300856 2.0068089,1.5336611 z"
id="path825"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccscccccsccccccssscccsscccccccccsscsccscccsscsccsccccc" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -0,0 +1,56 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg6582"
version="1.1"
viewBox="0 0 6.3499999 6.3500002"
height="24"
width="24"
sodipodi:docname="ic_ins_orig.svg"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1301"
inkscape:window-height="764"
id="namedview7"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-24.10281"
inkscape:cy="-2.764539"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg6582" />
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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>
<path
style="fill:#000000;stroke-width:1"
d="m 5.2032286,5.5871636 c -0.04934,-0.04934 -0.08964,-0.111011 -0.08957,-0.137051 1.52e-4,-0.04479 0.07357,-0.17029 0.201637,-0.344565 0.05534,-0.07532 0.04685,-0.08608 -0.252444,-0.319785 -0.170344,-0.133015 -0.317626,-0.241845 -0.327294,-0.241845 -0.0097,0 -0.134233,0.146285 -0.276812,0.325077 -0.14258,0.178792 -0.285173,0.33503 -0.316874,0.347195 -0.106583,0.0409 -0.222631,0.0226 -0.28355,-0.04472 -0.06622,-0.07318 -0.08206,-0.280988 -0.02413,-0.316785 0.01999,-0.01236 0.05248,-0.05261 0.0722,-0.08944 0.03132,-0.05851 -0.152744,-0.208523 -1.45636,-1.186943 -0.867679,-0.65123 -1.50947501,-1.157865 -1.53346701,-1.210523 -0.03847,-0.08443 -0.03669,-0.182385 0.01334,-0.734653 l 0.01703,-0.188057 -0.447569,-0.356365 c -0.677916,-0.53977105 -0.671352,-0.54573805 0.05517,-0.05015 l 0.46618901,0.318004 0.382456,-0.124018 c 0.210351,-0.06821 0.432408,-0.124018 0.49346,-0.124018 0.08878,0 0.412826,0.226458 1.618266,1.1309 l 1.507261,1.1309 0.09444,-0.1032 c 0.13419,-0.146644 0.240524,-0.171859 0.357656,-0.08481 0.174744,0.129864 0.147971,0.244692 -0.140308,0.601765 -0.141329,0.175055 -0.256962,0.333412 -0.256962,0.351903 0,0.02852 0.430933,0.371143 0.577336,0.459025 0.03126,0.01877 0.100589,-0.02865 0.203562,-0.139225 0.173028,-0.185803 0.257926,-0.205222 0.401944,-0.09194 0.162187,0.127576 0.128598,0.212191 -0.292577,0.737056 -0.21388,0.266535 -0.414377,0.505167 -0.445547,0.530293 -0.08919,0.07189 -0.220737,0.05371 -0.318466,-0.04402 z m -0.38208,-1.935654 c 0,-0.0084 0.0095,-0.04015 0.0212,-0.07054 0.0154,-0.04012 -0.379863,-0.35625 -1.443129,-1.154214 -0.805383,-0.604426 -1.492346,-1.098957 -1.526584,-1.098957 -0.03424,0 -0.200846,0.04514 -0.37024,0.100301 -0.362556,0.118072 -0.37248,0.133324 -0.37248,0.57253 0,0.252909 0.01163,0.313126 0.07079,0.36667 0.03893,0.03524 0.08535,0.05506 0.103151,0.04406 0.0178,-0.011 0.12963,-0.144179 0.248515,-0.295954 0.204828,-0.261494 0.278719,-0.31713 0.323961,-0.243927 0.01089,0.01762 -0.08884,0.165617 -0.221625,0.328891 -0.254408,0.312833 -0.261065,0.349543 -0.08088,0.445977 0.05584,0.02989 0.101998,-0.01041 0.295319,-0.257823 0.126023,-0.161285 0.248747,-0.293246 0.27272,-0.293246 0.1052,0 0.06917,0.08472 -0.153163,0.360085 -0.130623,0.161786 -0.237497,0.30207 -0.237497,0.311742 0,0.0097 0.04864,0.05222 0.108097,0.09456 l 0.108096,0.07697 0.225527,-0.284627 c 0.12404,-0.156545 0.246547,-0.28965 0.272238,-0.295788 0.118009,-0.0282 0.07105,0.08224 -0.152949,0.359672 l -0.242907,0.300856 0.08764,0.06738 c 0.0482,0.03706 0.09946,0.06775 0.11391,0.06819 0.01445,4.42e-4 0.168222,-0.175983 0.341718,-0.392066 0.173497,-0.216083 0.326136,-0.396847 0.339198,-0.401698 0.01306,-0.0049 0.410233,0.285716 0.882601,0.645702 0.73098,0.557073 0.986764,0.72433 0.986764,0.645245 z"
id="path825"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1,88 @@
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
viewBox="0 0 6.3499999 6.3500002"
version="1.1"
id="svg6582"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
sodipodi:docname="ic_iob_detailed_orig.svg">
<defs
id="defs6576" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="10.24"
inkscape:cx="34.884913"
inkscape:cy="-12.499983"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-object-midpoints="true"
inkscape:snap-center="true"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="5.3485108,-2.2479248"
orientation="0,1"
id="guide7239"
inkscape:locked="false" />
<sodipodi:guide
position="7.4930827,-2.2479248"
orientation="0,1"
id="guide4515"
inkscape:locked="false" />
<sodipodi:guide
position="8.2940674,-11.575521"
orientation="0,1"
id="guide950"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata6579">
<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"
transform="translate(0,-290.64998)">
<path
style="fill:#000000;stroke-width:0.99999994"
d="m 0.10358636,294.55177 c 0.0493981,-0.0365 0.10846679,-0.0637 0.13118174,-0.0602 0.0390585,0.005 0.13899969,0.0862 0.27436575,0.2207 0.0585043,0.058 0.0690163,0.052 0.31175579,-0.17867 0.13817342,-0.13137 0.25224726,-0.24563 0.25350336,-0.25408 0.00101,-0.006 -0.11015378,-0.13618 -0.2475981,-0.28371 -0.13743302,-0.1476 -0.25518963,-0.29229 -0.2616876,-0.32152 -0.0218405,-0.0981 0.009221,-0.19714 0.0758418,-0.24156 0.0724495,-0.0481 0.25579322,-0.0351 0.27947728,0.02 0.00822,0.019 0.0390671,0.0526 0.0686187,0.0746 0.0469462,0.035 0.20173962,-0.10611 1.22464432,-1.11615 0.6808372,-0.67226 1.2061862,-1.16623 1.2552437,-1.18034 0.07862,-0.0225 0.1638478,-0.009 0.6392311,0.10622 l 0.1618834,0.039 0.3690218,-0.34412 c 0.5589482,-0.52121 0.563302,-0.5147 0.03661,0.0548 l -0.3379816,0.36535 0.058476,0.34973 c 0.032159,0.19234 0.051985,0.39332 0.044057,0.44655 -0.011545,0.0776 -0.2511945,0.33069 -1.1968031,1.26468 l -1.1823765,1.16782 0.077727,0.096 c 0.1104681,0.13618 0.1186621,0.23212 0.027496,0.32298 -0.1359863,0.13563 -0.2326844,0.0974 -0.5067015,-0.2005 -0.1343404,-0.14604 -0.2574436,-0.26749 -0.2735817,-0.26989 -0.02486,-0.004 -0.3797493,0.32765 -0.47543506,0.44395 -0.0204864,0.025 0.0119706,0.0915 0.0949881,0.19568 0.1395922,0.17512 0.1455064,0.25165 0.02793,0.36256 -0.13234709,0.12479 -0.20180545,0.0846 -0.60491261,-0.35102 -0.20471498,-0.22119 -0.38681681,-0.42711 -0.40468017,-0.45755 -0.05113146,-0.0871 -0.01815844,-0.19952 0.07976631,-0.27207 z m 1.73814394,-0.0817 c 0.00697,10e-4 0.034057,0.0124 0.058749,0.0276 0.03296,0.0189 0.3601277,-0.28507 1.194383,-1.10885 0.6319081,-0.624 1.1525785,-1.159 1.1570265,-1.18885 0.00444,-0.0299 -0.013247,-0.18107 -0.039387,-0.33597 -0.055874,-0.33164 -0.06789,-0.34226 -0.4510194,-0.39932 -0.2206075,-0.0329 -0.2745566,-0.0311 -0.329057,0.0141 -0.035743,0.0292 -0.059151,0.0672 -0.051901,0.0845 0.00722,0.0173 0.1089431,0.13165 0.2258761,0.25523 0.201483,0.21266 0.2404166,0.28434 0.1706826,0.3143 -0.01677,0.006 -0.1329223,-0.099 -0.2581013,-0.23608 -0.2398212,-0.26259 -0.2709826,-0.27315 -0.3784895,-0.12862 -0.033346,0.0449 -0.00417,0.0903 0.186517,0.29113 0.124333,0.13082 0.2234813,0.25509 0.2203663,0.276 -0.0137,0.092 -0.082867,0.0492 -0.2942092,-0.18039 -0.1241531,-0.13494 -0.2326378,-0.24641 -0.2410732,-0.24767 -0.00873,-10e-4 -0.051848,0.0356 -0.096578,0.0821 l -0.081228,0.0845 0.2189803,0.23369 c 0.1204508,0.12836 0.2206241,0.25272 0.2226317,0.27593 0.00926,0.10654 -0.080947,0.0513 -0.293863,-0.18019 l -0.2308679,-0.251 -0.070162,0.0675 c -0.038633,0.0374 -0.072022,0.0782 -0.074297,0.0905 -0.00241,0.0137 0.1316552,0.16956 0.2975897,0.34903 0.1659537,0.17941 0.3037943,0.33607 0.3063241,0.34812 0.00275,0.011 -0.3025493,0.32072 -0.6779509,0.68599 -0.5809368,0.56526 -0.7600753,0.76662 -0.6910922,0.77689 z"
id="path825"
inkscape:connector-curvature="0" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.42386249;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 2.9588068,295.12302 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 h 1.861385 a 0.21195244,0.21195244 0 1 0 0,-0.42374 h -1.861385 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z m 2.4784015,0 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 H 6.132256 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 5.4583956 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z m -2.4784015,0.72657 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 h 0.8030516 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 2.9799941 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z m 1.4273029,0 a 0.21218709,0.21218709 0 0 0 0.021704,0.42374 h 1.7244425 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 4.4078138 a 0.21195244,0.21195244 0 0 0 -0.021704,0 z m -1.4273029,0.72657 a 0.21218709,0.21218709 0 0 0 0.021187,0.42374 H 6.132256 a 0.21195244,0.21195244 0 1 0 0,-0.42374 H 2.9799941 a 0.21195244,0.21195244 0 0 0 -0.021187,0 z"
id="path819-9"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View file

@ -0,0 +1,36 @@
<?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"
id="svg4879"
version="1.1"
viewBox="-0.1 0 38.4175 38.4175"
height="38.4175mm"
width="38.4175mm">
<defs
id="defs4873" />
<metadata
id="metadata4876">
<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
transform="translate(267.81708,63.899226)"
id="layer1">
<path
id="path197"
transform="matrix(0.26458333,0,0,0.26458333,-267.91708,-63.899226)"
d="M 72.599609 0 C 62.799597 0 53.499969 1.9003894 45 5.4003906 C 27.099969 12.800392 12.800365 27.099999 5.4003906 45 C 1.9003591 53.499999 0 62.799608 0 72.599609 C 0 82.399611 1.9003591 91.69922 5.4003906 100.19922 C 12.800365 118.09922 27.099969 132.40078 45 139.80078 C 53.499969 143.30078 62.799597 145.19922 72.599609 145.19922 C 82.399584 145.19922 91.699212 143.30078 100.19922 139.80078 C 118.09921 132.40078 132.40077 118.09922 139.80078 100.19922 C 143.30077 91.69922 145.19922 82.399611 145.19922 72.599609 C 145.19922 62.799608 143.30077 53.499999 139.80078 45 C 132.40077 27.099999 118.09921 12.800392 100.19922 5.4003906 C 91.699212 1.9003894 82.399584 0 72.599609 0 z M 72.5 11.300781 C 106.29997 11.300781 133.69922 38.799997 133.69922 72.5 C 133.69922 84.099997 130.5004 94.899219 124.90039 104.19922 L 124.90039 72.699219 C 125.00055 62.899221 122.6996 53.900781 118.09961 45.800781 C 113.49958 37.700781 107.19963 31.39922 99.099609 26.699219 C 95.599616 24.699217 91.899584 23.100001 88.099609 22 C 83.899609 20.700001 79.599609 24.099999 79.599609 28.5 C 79.599609 31.5 81.600403 34.000391 84.400391 34.900391 C 87.000403 35.700392 89.400781 36.799221 91.800781 38.199219 C 97.600769 41.69922 102.19998 46.400391 105.5 52.400391 C 108.79998 58.400391 110.5 65.099609 110.5 72.599609 C 110.5 80.099609 108.79998 86.800781 105.5 92.800781 C 102.09997 98.800781 97.600769 103.50039 91.800781 106.90039 C 90.200756 107.80039 88.600384 108.60078 86.900391 109.30078 L 86.900391 106.09961 L 86.900391 98.900391 L 86.900391 92.900391 L 86.900391 82.400391 C 86.900391 80.300391 86.200794 78.499611 84.800781 77.099609 C 83.400806 75.699608 81.699987 75 79.5 75 C 77.499987 75 75.800762 75.699608 74.300781 77.099609 C 72.900769 78.499611 72.099609 80.200388 72.099609 82.400391 L 72.099609 92.900391 L 72.099609 98.900391 L 72.099609 106.5 L 72.099609 112.40039 L 72.099609 117.19922 C 72.099609 119.19922 72.800762 120.90039 74.300781 122.40039 C 75.700756 123.80039 77.499987 124.59961 79.5 124.59961 C 80.599994 124.59961 81.69959 124.39999 82.599609 124 C 86.299616 123.1 89.899238 121.89961 93.199219 120.09961 C 99.999231 116.59961 105.59963 111.90078 110.09961 105.80078 L 110.09961 117.19922 C 110.09961 118.39922 110.29916 119.40078 110.69922 120.30078 C 100.19924 128.70078 86.9 133.69922 72.5 133.69922 C 38.699987 133.69922 11.300781 106.2 11.300781 72.5 C 11.300781 38.799997 38.799994 11.300781 72.5 11.300781 z M 64.900391 20.300781 C 64.00041 20.300781 63.200365 20.499233 62.400391 20.699219 C 56.400391 21.699217 50.700384 23.699219 45.400391 26.699219 C 37.400378 31.299217 31.100384 37.700781 26.400391 45.800781 C 21.800365 53.900781 19.5 62.899221 19.5 72.699219 C 19.5 82.49922 21.6992 91.499999 26.199219 99.5 C 30.6992 107.5 36.799609 113.8 44.599609 118.5 C 48.199609 120.7 51.999616 122.30039 56.099609 123.40039 C 60.499622 124.60039 64.900391 121.40078 64.900391 116.80078 C 64.900391 113.70078 62.800384 111.19922 59.900391 110.19922 C 57.400384 109.39922 54.899603 108.30039 52.599609 106.90039 C 46.699616 103.50039 42.100762 98.800781 38.800781 92.800781 C 35.400794 86.800781 33.800781 80.099609 33.800781 72.599609 C 33.800781 65.099609 35.500762 58.400391 38.800781 52.400391 C 42.100762 46.400391 46.799622 41.69922 52.599609 38.199219 C 54.199597 37.299219 55.899578 36.500784 57.599609 35.800781 L 57.599609 38 L 57.599609 44 L 57.599609 51.599609 L 57.599609 57.5 L 57.599609 62.300781 C 57.599609 64.300779 58.300762 66 59.800781 67.5 C 61.200794 68.900001 63.000025 69.699219 65 69.699219 C 67.100019 69.699219 68.900806 69 70.300781 67.5 C 71.700794 66.099999 72.400391 64.300779 72.400391 62.300781 L 72.400391 57.5 L 72.400391 51.199219 L 72.400391 44 L 72.400391 38 L 72.400391 27.5 C 72.400391 25.4 71.700794 23.59922 70.300781 22.199219 C 68.8008 20.999219 67.100416 20.300781 64.900391 20.300781 z "
style="stroke-width:0.99999994;fill:#ffffff" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View file

@ -0,0 +1,35 @@
<?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"
id="svg6582"
version="1.1"
viewBox="0 0 6.3499999 6.3500002"
height="24"
width="24">
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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
transform="translate(0,-290.64998)"
id="layer1">
<path
id="path6563"
d="m 1.6933594,292.16016 v 2.80078 H 0 v 0.52929 h 2.2226562 v -2.80078 H 3.09375 v 1.35547 h 1.3125 v 1.44531 h 1.9433594 v -0.52929 H 4.9355469 v -1.44336 h -1.3125 v -1.35742 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.8 KiB

View file

@ -0,0 +1,35 @@
<?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"
id="svg6582"
version="1.1"
viewBox="0 0 6.3499999 6.3500002"
height="24"
width="24">
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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
transform="translate(0,-290.64998)"
id="layer1">
<path
id="path7219"
d="m 0.07295798,296.83173 c -0.1122387,-0.12403 -0.10912,-0.13361 0.1098377,-0.33755 0.123946,-0.11545 0.2399605,-0.2533 0.2578097,-0.30635 0.017849,-0.053 -0.072227,-0.28451 -0.2001711,-0.51436 -0.2216511,-0.3982 -0.232625,-0.44673 -0.232625,-1.02872 0,-0.55596 0.01701,-0.64151 0.1894393,-0.95278 0.2295216,-0.41433 0.5974781,-0.76138 0.699297,-0.65956 0.13093292,0.13093 0.21004832,0.0684 0.38036222,-0.30044 0.26666,-0.57755 0.4966683,-0.81559 0.7902781,-0.81787 0.2298957,-0.002 0.2496163,-0.0181 0.3361639,-0.27725 0.051087,-0.15301 0.2323105,-0.42442 0.4078375,-0.61081 l 0.3158958,-0.33544 0.2535776,0.28625 c 0.1394675,0.15744 0.3049613,0.38166 0.367764,0.49829 0.062802,0.11662 0.150967,0.21203 0.1959215,0.21203 0.044954,0 0.2481379,-0.12905 0.4515189,-0.28678 0.5138423,-0.3985 0.9479397,-0.53103 1.6161036,-0.49339 0.1488754,0.008 0.1524038,0.0212 0.1221769,0.44366 -0.038067,0.53204 -0.2122871,0.9432 -0.5590789,1.31942 -0.1446004,0.15688 -0.2629099,0.31727 -0.2629099,0.35643 0,0.0392 0.1518971,0.17085 0.3375495,0.29265 0.185652,0.1218 0.4191662,0.2894 0.5189208,0.37247 l 0.1813712,0.15102 -0.2456665,0.24913 c -0.1351167,0.13703 -0.4047968,0.32226 -0.5992897,0.41164 -0.4011153,0.18432 -0.4648215,0.2508 -0.3843851,0.40109 0.073206,0.13678 -0.2999593,0.50766 -0.708632,0.70428 -0.4873936,0.23449 -0.4833225,0.23068 -0.4632573,0.43341 0.015149,0.15308 -0.029439,0.23403 -0.222099,0.40318 -0.1325804,0.11641 -0.3972262,0.28315 -0.5881017,0.37054 -0.3044925,0.13941 -0.4133015,0.1554 -0.8873715,0.13052 -0.466717,-0.0245 -0.6018643,-0.0605 -0.9920655,-0.26433 l -0.45174132,-0.23597 -0.2783896,0.25662 c -0.1531142,0.14114 -0.2923695,0.25661 -0.309456,0.25661 -0.017086,0 -0.08305,-0.0574 -0.1465851,-0.12764 z M 3.046513,296.44094 c 0.1507077,-0.0649 0.2930096,-0.16746 0.3162261,-0.22796 0.1032308,-0.26902 -0.7725458,-0.65358 -1.3181185,-0.5788 -0.3753467,0.0515 -0.8473517,0.32482 -0.8473517,0.49076 0,0.24793 0.8400929,0.5377 1.3501978,0.46571 0.1237678,-0.0175 0.3483389,-0.0848 0.4990463,-0.14971 z m -1.9305252,-0.972 c 0.1526821,-0.23095 0.1774628,-0.33287 0.1758706,-0.72332 -0.00236,-0.57649 -0.2325739,-1.09745 -0.48498192,-1.09745 -0.3493751,0 -0.5780768,0.97634 -0.3705061,1.58171 0.1974871,0.57597 0.4079444,0.64999 0.67961742,0.23906 z m 2.7819869,-0.0587 c 0.3738715,-0.0802 0.6840596,-0.30762 0.625978,-0.45898 -0.074257,-0.19351 -0.719195,-0.44794 -1.1354468,-0.44794 -0.4126632,0 -0.858375,0.18827 -0.9959339,0.42069 -0.084486,0.14275 0.069181,0.27006 0.5327922,0.4414 0.3530742,0.1305 0.534218,0.13884 0.9726105,0.0448 z M 2.1580258,294.5053 c 0.3499054,-0.37558 0.4136063,-1.10931 0.1424518,-1.64082 -0.2587115,-0.50712 -0.4270412,-0.51919 -0.6556148,-0.047 -0.2434377,0.50288 -0.1785456,1.15285 0.1679929,1.68264 0.1180344,0.18046 0.1810123,0.18141 0.3451701,0.005 z m 3.2023524,-0.34041 c 0.355406,-0.16547 0.4105616,-0.27201 0.2250328,-0.43468 -0.4949714,-0.43399 -1.3565556,-0.47981 -1.896706,-0.10086 -0.277631,0.19477 -0.2274028,0.33089 0.1928854,0.52273 0.495521,0.22618 1.0108864,0.23064 1.4787878,0.0128 z m -1.8920711,-1.06321 c 0.1493138,-0.29099 0.1772115,-0.41624 0.157532,-0.70724 -0.025984,-0.38422 -0.264604,-0.93731 -0.4463561,-1.03458 -0.1590461,-0.0851 -0.3566052,0.14839 -0.4775562,0.56444 -0.114522,0.39395 -0.052801,0.87509 0.1676979,1.3073 0.1895712,0.3716 0.3603694,0.33453 0.5986824,-0.12992 z m 1.2973412,-0.31818 c 0.3810141,-0.16525 0.6449005,-0.41584 0.8308376,-0.78896 0.3045492,-0.61116 0.1964826,-0.81689 -0.3446688,-0.65619 -0.5698163,0.16922 -1.1773414,0.8697 -1.1773414,1.35748 0,0.29794 0.1596627,0.31819 0.6911726,0.0877 z"
style="fill:#ffffff;stroke-width:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.4 KiB

View file

@ -0,0 +1,31 @@
<?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"
width="24"
height="24"
viewBox="0 0 6.3499999 6.3500002"
version="1.1"
id="svg6582">
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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>
<path
id="path825"
d="m 5.2032286,5.5871636 c -0.04934,-0.04934 -0.08964,-0.111011 -0.08957,-0.137051 1.52e-4,-0.04479 0.07357,-0.17029 0.201637,-0.344565 0.05534,-0.07532 0.04685,-0.08608 -0.252444,-0.319785 -0.170344,-0.133015 -0.317626,-0.241845 -0.327294,-0.241845 -0.0097,0 -0.134233,0.146285 -0.276812,0.325077 -0.14258,0.178792 -0.285173,0.33503 -0.316874,0.347195 -0.106583,0.0409 -0.222631,0.0226 -0.28355,-0.04472 -0.06622,-0.07318 -0.08206,-0.280988 -0.02413,-0.316785 0.01999,-0.01236 0.05248,-0.05261 0.0722,-0.08944 0.03132,-0.05851 -0.152744,-0.208523 -1.45636,-1.186943 -0.867679,-0.65123 -1.50947501,-1.157865 -1.53346701,-1.210523 -0.03847,-0.08443 -0.03669,-0.182385 0.01334,-0.734653 l 0.01703,-0.188057 -0.447569,-0.356365 c -0.677916,-0.53977105 -0.671352,-0.54573805 0.05517,-0.05015 l 0.46618901,0.318004 0.382456,-0.124018 c 0.210351,-0.06821 0.432408,-0.124018 0.49346,-0.124018 0.08878,0 0.412826,0.226458 1.618266,1.1309 l 1.507261,1.1309 0.09444,-0.1032 c 0.13419,-0.146644 0.240524,-0.171859 0.357656,-0.08481 0.174744,0.129864 0.147971,0.244692 -0.140308,0.601765 -0.141329,0.175055 -0.256962,0.333412 -0.256962,0.351903 0,0.02852 0.430933,0.371143 0.577336,0.459025 0.03126,0.01877 0.100589,-0.02865 0.203562,-0.139225 0.173028,-0.185803 0.257926,-0.205222 0.401944,-0.09194 0.162187,0.127576 0.128598,0.212191 -0.292577,0.737056 -0.21388,0.266535 -0.414377,0.505167 -0.445547,0.530293 -0.08919,0.07189 -0.220737,0.05371 -0.318466,-0.04402 z m -0.38208,-1.935654 c 0,-0.0084 0.0095,-0.04015 0.0212,-0.07054 0.0154,-0.04012 -0.379863,-0.35625 -1.443129,-1.154214 -0.805383,-0.604426 -1.492346,-1.098957 -1.526584,-1.098957 -0.03424,0 -0.200846,0.04514 -0.37024,0.100301 -0.362556,0.118072 -0.37248,0.133324 -0.37248,0.57253 0,0.252909 0.01163,0.313126 0.07079,0.36667 0.03893,0.03524 0.08535,0.05506 0.103151,0.04406 0.0178,-0.011 0.12963,-0.144179 0.248515,-0.295954 0.204828,-0.261494 0.278719,-0.31713 0.323961,-0.243927 0.01089,0.01762 -0.08884,0.165617 -0.221625,0.328891 -0.254408,0.312833 -0.261065,0.349543 -0.08088,0.445977 0.05584,0.02989 0.101998,-0.01041 0.295319,-0.257823 0.126023,-0.161285 0.248747,-0.293246 0.27272,-0.293246 0.1052,0 0.06917,0.08472 -0.153163,0.360085 -0.130623,0.161786 -0.237497,0.30207 -0.237497,0.311742 0,0.0097 0.04864,0.05222 0.108097,0.09456 l 0.108096,0.07697 0.225527,-0.284627 c 0.12404,-0.156545 0.246547,-0.28965 0.272238,-0.295788 0.118009,-0.0282 0.07105,0.08224 -0.152949,0.359672 l -0.242907,0.300856 0.08764,0.06738 c 0.0482,0.03706 0.09946,0.06775 0.11391,0.06819 0.01445,4.42e-4 0.168222,-0.175983 0.341718,-0.392066 0.173497,-0.216083 0.326136,-0.396847 0.339198,-0.401698 0.01306,-0.0049 0.410233,0.285716 0.882601,0.645702 0.73098,0.557073 0.986764,0.72433 0.986764,0.645245 z"
style="fill:#ffffff;stroke-width:1" />
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1,31 @@
<?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"
width="24"
height="24"
viewBox="0 0 6.3499999 6.3500002"
version="1.1"
id="svg6582">
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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>
<path
id="path825"
d="m 5.2032286,5.5871636 c -0.04934,-0.04934 -0.08964,-0.111011 -0.08957,-0.137051 1.52e-4,-0.04479 0.07357,-0.17029 0.201637,-0.344565 0.05534,-0.07532 0.04685,-0.08608 -0.252444,-0.319785 -0.170344,-0.133015 -0.317626,-0.241845 -0.327294,-0.241845 -0.0097,0 -0.134233,0.146285 -0.276812,0.325077 -0.14258,0.178792 -0.285173,0.33503 -0.316874,0.347195 -0.106583,0.0409 -0.222631,0.0226 -0.28355,-0.04472 -0.06622,-0.07318 -0.08206,-0.280988 -0.02413,-0.316785 0.01999,-0.01236 0.05248,-0.05261 0.0722,-0.08944 0.03132,-0.05851 -0.152744,-0.208523 -1.45636,-1.186943 -0.867679,-0.65123 -1.50947501,-1.157865 -1.53346701,-1.210523 -0.03847,-0.08443 -0.03669,-0.182385 0.01334,-0.734653 l 0.01703,-0.188057 -0.447569,-0.356365 c -0.677916,-0.53977105 -0.671352,-0.54573805 0.05517,-0.05015 l 0.46618901,0.318004 0.382456,-0.124018 c 0.210351,-0.06821 0.432408,-0.124018 0.49346,-0.124018 0.08878,0 0.412826,0.226458 1.618266,1.1309 l 1.507261,1.1309 0.09444,-0.1032 c 0.13419,-0.146644 0.240524,-0.171859 0.357656,-0.08481 0.174744,0.129864 0.147971,0.244692 -0.140308,0.601765 -0.141329,0.175055 -0.256962,0.333412 -0.256962,0.351903 0,0.02852 0.430933,0.371143 0.577336,0.459025 0.03126,0.01877 0.100589,-0.02865 0.203562,-0.139225 0.173028,-0.185803 0.257926,-0.205222 0.401944,-0.09194 0.162187,0.127576 0.128598,0.212191 -0.292577,0.737056 -0.21388,0.266535 -0.414377,0.505167 -0.445547,0.530293 -0.08919,0.07189 -0.220737,0.05371 -0.318466,-0.04402 z m -0.38208,-1.935654 c 0,-0.0084 0.0095,-0.04015 0.0212,-0.07054 0.0154,-0.04012 -0.379863,-0.35625 -1.443129,-1.154214 -0.805383,-0.604426 -1.492346,-1.098957 -1.526584,-1.098957 -0.03424,0 -0.200846,0.04514 -0.37024,0.100301 -0.362556,0.118072 -0.37248,0.133324 -0.37248,0.57253 0,0.252909 0.01163,0.313126 0.07079,0.36667 0.03893,0.03524 0.08535,0.05506 0.103151,0.04406 0.0178,-0.011 0.12963,-0.144179 0.248515,-0.295954 0.204828,-0.261494 0.278719,-0.31713 0.323961,-0.243927 0.01089,0.01762 -0.08884,0.165617 -0.221625,0.328891 -0.254408,0.312833 -0.261065,0.349543 -0.08088,0.445977 0.05584,0.02989 0.101998,-0.01041 0.295319,-0.257823 0.126023,-0.161285 0.248747,-0.293246 0.27272,-0.293246 0.1052,0 0.06917,0.08472 -0.153163,0.360085 -0.130623,0.161786 -0.237497,0.30207 -0.237497,0.311742 0,0.0097 0.04864,0.05222 0.108097,0.09456 l 0.108096,0.07697 0.225527,-0.284627 c 0.12404,-0.156545 0.246547,-0.28965 0.272238,-0.295788 0.118009,-0.0282 0.07105,0.08224 -0.152949,0.359672 l -0.242907,0.300856 2.0068089,1.5336611 z"
style="fill:#ffffff;stroke-width:1" />
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,36 @@
<?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"
id="svg6582"
version="1.1"
viewBox="0 0 6.3499999 6.3500002"
height="24"
width="24">
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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
transform="translate(0,-290.64998)"
id="layer1">
<path
id="path825"
transform="matrix(0.26458333,0,0,0.26458333,0,290.64998)"
d="M 19.140625 0.001953125 C 19.121272 -0.027012229 18.589483 0.4583956 17.533203 1.4433594 L 16.138672 2.7441406 L 15.527344 2.5976562 C 13.730619 2.1621791 13.408475 2.1102731 13.111328 2.1953125 C 12.925914 2.2486416 10.94043 4.1154248 8.3671875 6.65625 C 4.501091 10.473724 3.9157157 11.007283 3.7382812 10.875 C 3.6265902 10.79185 3.5095833 10.665561 3.4785156 10.59375 C 3.3890011 10.385498 2.6956999 10.335783 2.421875 10.517578 C 2.1700799 10.685465 2.054172 11.058916 2.1367188 11.429688 C 2.161278 11.540163 2.6055681 12.088626 3.125 12.646484 C 3.6444746 13.204078 4.0643642 13.696073 4.0605469 13.71875 C 4.0557994 13.750687 3.6257459 14.181218 3.1035156 14.677734 C 2.186075 15.549558 2.1449467 15.572728 1.9238281 15.353516 C 1.4122084 14.845169 1.0343414 14.538429 0.88671875 14.519531 C 0.80121122 14.506356 0.57686699 14.608976 0.390625 14.746094 C 0.022338157 15.020354 -0.10299958 15.442985 0.08984375 15.771484 C 0.15735881 15.886533 0.84541472 16.665959 1.6191406 17.501953 C 3.1426952 19.148391 3.4060405 19.299772 3.90625 18.828125 C 4.3506332 18.408938 4.3283738 18.120855 3.8007812 17.458984 C 3.4870143 17.065233 3.3639773 16.813238 3.4414062 16.71875 C 3.8030532 16.279191 5.1443222 15.025898 5.2382812 15.041016 C 5.2992756 15.050086 5.7637411 15.508585 6.2714844 16.060547 C 7.3071396 17.186468 7.673536 17.330977 8.1875 16.818359 C 8.5320648 16.474952 8.5015016 16.112352 8.0839844 15.597656 L 7.7890625 15.234375 L 12.257812 10.820312 C 15.831766 7.2902716 16.737615 6.334307 16.78125 6.0410156 C 16.811214 5.8398314 16.73678 5.08047 16.615234 4.3535156 L 16.394531 3.03125 L 17.671875 1.6503906 C 18.667198 0.57417015 19.159978 0.030918479 19.140625 0.001953125 z M 13.359375 2.9960938 C 13.540323 2.9885819 13.799901 3.0179049 14.216797 3.0800781 C 15.664845 3.295738 15.710698 3.3344481 15.921875 4.5878906 C 16.020672 5.1733394 16.087094 5.744414 16.070312 5.8574219 C 16.053501 5.9702408 14.08558 7.9931373 11.697266 10.351562 C 8.5441747 13.465062 7.308167 14.614402 7.1835938 14.542969 C 7.0902697 14.48552 6.9872808 14.44128 6.9609375 14.4375 L 6.9609375 14.439453 C 6.700214 14.400637 7.376599 13.638369 9.5722656 11.501953 C 10.991106 10.121405 12.145159 8.9517311 12.134766 8.9101562 C 12.125204 8.8646129 11.603789 8.271835 10.976562 7.59375 C 10.349408 6.9154382 9.8424538 6.3271702 9.8515625 6.2753906 C 9.8601609 6.2289024 9.986798 6.0749481 10.132812 5.9335938 L 10.398438 5.6777344 L 11.271484 6.6269531 C 12.076206 7.501876 12.415858 7.7093115 12.380859 7.3066406 C 12.373272 7.2189178 11.99431 6.748812 11.539062 6.2636719 L 10.712891 5.3808594 L 11.019531 5.0625 C 11.18859 4.886752 11.35177 4.7481736 11.384766 4.7519531 C 11.416647 4.7567153 11.825682 5.1774906 12.294922 5.6875 C 13.093696 6.5552417 13.356424 6.7168572 13.408203 6.3691406 C 13.419976 6.2901107 13.044139 5.8206097 12.574219 5.3261719 C 11.853512 4.5671294 11.743108 4.3962633 11.869141 4.2265625 C 12.275466 3.6803074 12.39437 3.7204245 13.300781 4.7128906 C 13.773899 5.2309883 14.212008 5.6261928 14.275391 5.6035156 C 14.538952 5.490281 14.39237 5.21977 13.630859 4.4160156 C 13.188908 3.9489416 12.804632 3.5165577 12.777344 3.4511719 C 12.749942 3.385786 12.837565 3.2431747 12.972656 3.1328125 C 13.075649 3.0473952 13.178427 3.0036056 13.359375 2.9960938 z M 11.183594 16.90625 A 0.80196695 0.80196695 0 0 0 11.263672 18.507812 L 18.298828 18.507812 A 0.80108009 0.80108009 0 1 0 18.298828 16.90625 L 11.263672 16.90625 A 0.80108009 0.80108009 0 0 0 11.183594 16.90625 z M 20.550781 16.90625 A 0.80196695 0.80196695 0 0 0 20.630859 18.507812 L 23.177734 18.507812 A 0.80108009 0.80108009 0 1 0 23.177734 16.90625 L 20.630859 16.90625 A 0.80108009 0.80108009 0 0 0 20.550781 16.90625 z M 11.183594 19.652344 A 0.80196695 0.80196695 0 0 0 11.263672 21.253906 L 14.298828 21.253906 A 0.80108009 0.80108009 0 1 0 14.298828 19.652344 L 11.263672 19.652344 A 0.80108009 0.80108009 0 0 0 11.183594 19.652344 z M 16.578125 19.652344 A 0.80196695 0.80196695 0 0 0 16.660156 21.253906 L 23.177734 21.253906 A 0.80108009 0.80108009 0 1 0 23.177734 19.652344 L 16.660156 19.652344 A 0.80108009 0.80108009 0 0 0 16.578125 19.652344 z M 11.183594 22.398438 A 0.80196695 0.80196695 0 0 0 11.263672 24 L 23.177734 24 A 0.80108009 0.80108009 0 1 0 23.177734 22.398438 L 11.263672 22.398438 A 0.80108009 0.80108009 0 0 0 11.183594 22.398438 z "
style="fill:#ffffff;stroke-width:3.77952743" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -0,0 +1,35 @@
<?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"
id="svg6582"
version="1.1"
viewBox="0 0 6.3499999 6.3500002"
height="24"
width="24">
<defs
id="defs6576" />
<metadata
id="metadata6579">
<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
transform="translate(0,-290.64998)"
id="layer1">
<path
id="path7206"
d="m 2.6709439,296.94599 c -0.564202,-0.13292 -1.10932,-0.57834 -1.395458,-1.14023 -0.209976,-0.41234 -0.255,-1.03331 -0.115079,-1.58719 0.192881,-0.76352 1.199054,-2.58796 1.865321,-3.38228 l 0.156223,-0.18625 0.127394,0.15521 c 0.255954,0.31183 1.051728,1.53363 1.300101,1.99612 0.140327,0.2613 0.343099,0.70829 0.450605,0.99333 0.251656,0.66721 0.280223,1.46003 0.06928,1.9227 -0.424912,0.93195 -1.479804,1.45914 -2.458384,1.22859 z m 0.0041,-1.00028 c 0.121194,-0.12119 0.08718,-0.27576 -0.138214,-0.62811 -0.319446,-0.49937 -0.421499,-0.87437 -0.397534,-1.46074 0.01125,-0.27533 0.003,-0.48091 -0.01834,-0.45684 -0.120721,0.13615 -0.385751,0.96774 -0.411897,1.29242 -0.03899,0.4842 0.107815,0.95289 0.366713,1.17073 0.198622,0.16713 0.476417,0.2054 0.599268,0.0825 z"
style="fill:#ffffff;stroke-width:0.99999994" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -92,6 +92,10 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//implementation files("libs/hellocharts-library-1.5.5.jar")
//compile "com.ustwo.android:clockwise-wearable:1.0.2"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
compileOnly "com.google.android.wearable:wearable:${wearableVersion}"
implementation "com.google.android.support:wearable:${wearableVersion}"
implementation "com.google.android.gms:play-services-wearable:${playServicesWearable}"

View file

@ -10,6 +10,7 @@
<application
android:name=".aaps"
android:allowBackup="true"
android:icon="@drawable/ic_icon"
android:label="@string/app_name"
@ -231,6 +232,229 @@
</intent-filter>
</service>
<service
android:name=".complications.LongStatusComplication"
android:icon="@drawable/ic_aaps_full"
android:label="Full Status"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="LONG_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.LongStatusFlippedComplication"
android:icon="@drawable/ic_aaps_full"
android:label="Full Status (flipped)"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="LONG_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.SgvComplication"
android:icon="@drawable/ic_sgv"
android:label="Blood Glucose"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.BrCobIobComplication"
android:icon="@drawable/ic_br_cob_iob"
android:label="BR, CoB &amp; IoB"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.CobIobComplication"
android:icon="@drawable/ic_cob_iob"
android:label="CoB &amp; IoB"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.CobIconComplication"
android:icon="@drawable/ic_carbs"
android:label="CoB Icon"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.CobDetailedComplication"
android:icon="@drawable/ic_cob_detailed"
android:label="CoB Detailed"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.IobIconComplication"
android:icon="@drawable/ic_ins"
android:label="IoB Icon"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.IobDetailedComplication"
android:icon="@drawable/ic_iob_detailed"
android:label="IoB Detailed"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="SHORT_TEXT" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.UploaderBattery"
android:icon="@drawable/ic_battery_charging_wireless_50"
android:label="Uploader/Phone Battery"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="RANGED_VALUE,SHORT_TEXT,ICON" />
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="60" />
</service>
<service
android:name=".complications.WallpaperLightComplication"
android:icon="@drawable/ic_aaps_light"
android:label="Light Walpaper"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="LARGE_IMAGE"/>
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="0"/>
</service>
<service
android:name=".complications.WallpaperDarkComplication"
android:icon="@drawable/ic_aaps_dark"
android:label="Dark Walpaper"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="LARGE_IMAGE"/>
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="0"/>
</service>
<service
android:name=".complications.WallpaperGrayComplication"
android:icon="@drawable/ic_aaps_gray"
android:label="Gray Walpaper"
android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
<intent-filter>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent-filter>
<meta-data
android:name="android.support.wearable.complications.SUPPORTED_TYPES"
android:value="LARGE_IMAGE"/>
<meta-data
android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
android:value="0"/>
</service>
<receiver android:name=".complications.ComplicationTapBroadcastReceiver"/>
<activity
android:name=".interaction.menus.MainMenuActivity"
android:label="@string/label_actions_activity">

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,75 @@
package info.nightscout.androidaps;
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.preference.PreferenceManager;
import androidx.annotation.StringRes;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import info.nightscout.androidaps.interaction.utils.Persistence;
/**
* Created for xDrip+ by Emma Black on 3/21/15.
* Adapted for AAPS by dlvoy 2019-11-06.
*/
public class aaps extends Application implements SharedPreferences.OnSharedPreferenceChangeListener {
@SuppressLint("StaticFieldLeak")
private static Context context;
private static Boolean unicodeComplications = true;
private static String complicationTapAction = "default";
@Override
public void onCreate() {
aaps.context = getApplicationContext();
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.registerOnSharedPreferenceChangeListener(this);
updatePrefs(sharedPrefs);
super.onCreate();
}
private void updatePrefs(SharedPreferences sharedPrefs) {
unicodeComplications = sharedPrefs.getBoolean("complication_unicode", true);
complicationTapAction = sharedPrefs.getString("complication_tap_action", "default");
}
public static Context getAppContext() {
return aaps.context;
}
private static boolean isWear2OrAbove() {
return Build.VERSION.SDK_INT > 23;
}
public static String gs(@StringRes final int id) {
return getAppContext().getString(id);
}
public static String gs(@StringRes final int id, String... args) {
return getAppContext().getString(id, (Object[]) args);
}
public static Boolean areComplicationsUnicode() {
return unicodeComplications;
}
public static String getComplicationTapAction() {
return complicationTapAction;
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
updatePrefs(sharedPrefs);
// we trigger update on Complications
Intent messageIntent = new Intent();
messageIntent.setAction(Intent.ACTION_SEND);
LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
}
}

View file

@ -0,0 +1,415 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Icon;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationManager;
import android.support.wearable.complications.ComplicationProviderService;
import android.support.wearable.complications.ComplicationText;
import android.support.wearable.complications.ProviderUpdateRequester;
import android.util.Log;
import java.util.HashSet;
import java.util.Set;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.aaps;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.data.ListenerService;
import info.nightscout.androidaps.interaction.utils.Constants;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
import info.nightscout.androidaps.interaction.utils.Inevitable;
import info.nightscout.androidaps.interaction.utils.Persistence;
import info.nightscout.androidaps.interaction.utils.WearUtil;
/**
* Base class for all complications
*
* Created by dlvoy on 2019-11-12
*/
public abstract class BaseComplicationProviderService extends ComplicationProviderService {
private static final String TAG = BaseComplicationProviderService.class.getSimpleName();
private static final String KEY_COMPLICATIONS = "complications";
private static final String KEY_LAST_SINCE = "lastSince";
private static final String KEY_STALE_REPORTED = "staleReported";
private static final String TASK_ID_REFRESH_COMPLICATION = "refresh-complication";
private LocalBroadcastManager localBroadcastManager;
private MessageReceiver messageReceiver;
public static void turnOff() {
Log.d(TAG, "TURNING OFF all active complications");
final Persistence persistence = new Persistence();
persistence.putString(KEY_COMPLICATIONS, "");
}
//==============================================================================================
// ABSTRACT COMPLICATION INTERFACE
//==============================================================================================
public abstract ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent);
public abstract String getProviderCanonicalName();
public ComplicationAction getComplicationAction() { return ComplicationAction.MENU; };
//----------------------------------------------------------------------------------------------
// DEFAULT BEHAVIOURS
//----------------------------------------------------------------------------------------------
public ComplicationData buildNoSyncComplicationData(int dataType,
DisplayRawData raw,
PendingIntent complicationPendingIntent,
PendingIntent exceptionalPendingIntent,
long since) {
ComplicationData complicationData = null;
final ComplicationData.Builder builder = new ComplicationData.Builder(dataType);
if (dataType != ComplicationData.TYPE_LARGE_IMAGE) {
builder.setIcon(Icon.createWithResource(this, R.drawable.ic_sync_alert));
}
if (dataType == ComplicationData.TYPE_RANGED_VALUE) {
builder.setMinValue(0);
builder.setMaxValue(100);
builder.setValue(0);
}
switch (dataType) {
case ComplicationData.TYPE_ICON:
case ComplicationData.TYPE_SHORT_TEXT:
case ComplicationData.TYPE_RANGED_VALUE:
if (since > 0) {
builder.setShortText(ComplicationText.plainText(DisplayFormat.shortTimeSince(since) + " old"));
} else {
builder.setShortText(ComplicationText.plainText("!err!"));
}
break;
case ComplicationData.TYPE_LONG_TEXT:
builder.setLongTitle(ComplicationText.plainText(aaps.gs(R.string.label_warning_sync)));
if (since > 0) {
builder.setLongText(ComplicationText.plainText(String.format(aaps.gs(R.string.label_warning_since), DisplayFormat.shortTimeSince(since))));
} else {
builder.setLongText(ComplicationText.plainText(aaps.gs(R.string.label_warning_sync_aaps)));
}
break;
case ComplicationData.TYPE_LARGE_IMAGE:
return buildComplicationData(dataType, raw, complicationPendingIntent);
default:
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
break;
}
builder.setTapAction(exceptionalPendingIntent);
complicationData = builder.build();
return complicationData;
}
public ComplicationData buildOutdatedComplicationData(int dataType,
DisplayRawData raw,
PendingIntent complicationPendingIntent,
PendingIntent exceptionalPendingIntent,
long since) {
ComplicationData complicationData = null;
final ComplicationData.Builder builder = new ComplicationData.Builder(dataType);
if (dataType != ComplicationData.TYPE_LARGE_IMAGE) {
builder.setIcon(Icon.createWithResource(this, R.drawable.ic_alert));
builder.setBurnInProtectionIcon(Icon.createWithResource(this, R.drawable.ic_alert_burnin));
}
if (dataType == ComplicationData.TYPE_RANGED_VALUE) {
builder.setMinValue(0);
builder.setMaxValue(100);
builder.setValue(0);
}
switch (dataType) {
case ComplicationData.TYPE_ICON:
case ComplicationData.TYPE_SHORT_TEXT:
case ComplicationData.TYPE_RANGED_VALUE:
if (since > 0) {
builder.setShortText(ComplicationText.plainText(DisplayFormat.shortTimeSince(since) + " old"));
} else {
builder.setShortText(ComplicationText.plainText("!old!"));
}
break;
case ComplicationData.TYPE_LONG_TEXT:
builder.setLongTitle(ComplicationText.plainText(aaps.gs(R.string.label_warning_old)));
if (since > 0) {
builder.setLongText(ComplicationText.plainText(String.format(aaps.gs(R.string.label_warning_since), DisplayFormat.shortTimeSince(since))));
} else {
builder.setLongText(ComplicationText.plainText(aaps.gs(R.string.label_warning_sync_aaps)));
}
break;
case ComplicationData.TYPE_LARGE_IMAGE:
return buildComplicationData(dataType, raw, complicationPendingIntent);
default:
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
break;
}
builder.setTapAction(exceptionalPendingIntent);
complicationData = builder.build();
return complicationData;
}
/**
* If Complication depend on "since" field and need to be updated every minute or not
* and need only update when new DisplayRawData arrive
*/
protected boolean usesSinceField() {
return false;
}
//==============================================================================================
// COMPLICATION LIFECYCLE
//==============================================================================================
/*
* Called when a complication has been activated. The method is for any one-time
* (per complication) set-up.
*
* You can continue sending data for the active complicationId until onComplicationDeactivated()
* is called.
*/
@Override
public void onComplicationActivated(
int complicationId, int dataType, ComplicationManager complicationManager) {
Log.d(TAG, "onComplicationActivated(): " + complicationId + " of kind: "+getProviderCanonicalName());
Persistence persistence = new Persistence();
persistence.putString("complication_"+complicationId, getProviderCanonicalName());
persistence.putBoolean("complication_"+complicationId+"_since", usesSinceField());
persistence.addToSet(KEY_COMPLICATIONS, "complication_"+complicationId);
IntentFilter messageFilter = new IntentFilter(Intent.ACTION_SEND);
messageReceiver = new BaseComplicationProviderService.MessageReceiver();
localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.registerReceiver(messageReceiver, messageFilter);
ListenerService.requestData(this);
checkIfUpdateNeeded();
}
/*
* Called when the complication needs updated data from your provider. There are four scenarios
* when this will happen:
*
* 1. An active watch face complication is changed to use this provider
* 2. A complication using this provider becomes active
* 3. The period of time you specified in the manifest has elapsed (UPDATE_PERIOD_SECONDS)
* 4. You triggered an update from your own class via the
* ProviderUpdateRequester.requestUpdate() method.
*/
@Override
public void onComplicationUpdate(
int complicationId, int dataType, ComplicationManager complicationManager) {
Log.d(TAG, "onComplicationUpdate() id: " + complicationId + " of class: "+getProviderCanonicalName());
// Create Tap Action so that the user can checkIfUpdateNeeded an update by tapping the complication.
final ComponentName thisProvider = new ComponentName(this, getProviderCanonicalName());
// We pass the complication id, so we can only update the specific complication tapped.
final PendingIntent complicationPendingIntent =
ComplicationTapBroadcastReceiver.getTapActionIntent(
aaps.getAppContext(), thisProvider, complicationId, getComplicationAction());
final Persistence persistence = new Persistence();
final DisplayRawData raw = new DisplayRawData();
raw.partialUpdateFromPersistence(persistence);
Log.d(TAG, "Complication data: " + raw.toDebugString());
// store what is currently rendered since field, to detect it need update
persistence.putString(KEY_LAST_SINCE, DisplayFormat.shortTimeSince(raw.datetime));
// by each render we clear stale flag to ensure it is re-rendered at next refresh detection round
persistence.putBoolean(KEY_STALE_REPORTED, false);
ComplicationData complicationData;
if (WearUtil.msSince(persistence.whenDataUpdated()) > Constants.STALE_MS) {
// no new data arrived - probably configuration or connection error
final PendingIntent infoToast = ComplicationTapBroadcastReceiver.getTapWarningSinceIntent(
aaps.getAppContext(), thisProvider, complicationId, ComplicationAction.WARNING_SYNC, persistence.whenDataUpdated());
complicationData = buildNoSyncComplicationData(dataType, raw, complicationPendingIntent, infoToast, persistence.whenDataUpdated());
} else if (WearUtil.msSince(raw.datetime) > Constants.STALE_MS) {
// data arriving from phone AAPS, but it is outdated (uploader/NS/xDrip/Sensor error)
final PendingIntent infoToast = ComplicationTapBroadcastReceiver.getTapWarningSinceIntent(
aaps.getAppContext(), thisProvider, complicationId, ComplicationAction.WARNING_OLD, raw.datetime);
complicationData = buildOutdatedComplicationData(dataType, raw, complicationPendingIntent, infoToast, raw.datetime);
} else {
// data is up-to-date, we can render standard complication
complicationData = buildComplicationData(dataType, raw, complicationPendingIntent);
}
if (complicationData != null) {
complicationManager.updateComplicationData(complicationId, complicationData);
} else {
// If no data is sent, we still need to inform the ComplicationManager, so the update
// job can finish and the wake lock isn't held any longer than necessary.
complicationManager.noUpdateRequired(complicationId);
}
}
/*
* Called when the complication has been deactivated.
*/
@Override
public void onComplicationDeactivated(int complicationId) {
Log.d(TAG, "onComplicationDeactivated(): " + complicationId);
Persistence persistence = new Persistence();
persistence.removeFromSet(KEY_COMPLICATIONS, "complication_"+complicationId);
if (localBroadcastManager != null && messageReceiver != null) {
localBroadcastManager.unregisterReceiver(messageReceiver);
}
Inevitable.kill(TASK_ID_REFRESH_COMPLICATION);
}
//==============================================================================================
// UPDATE AND REFRESH LOGIC
//==============================================================================================
/*
* Schedule check for field update
*/
public static void checkIfUpdateNeeded() {
Persistence p = new Persistence();
Log.d(TAG, "Pending check if update needed - "+p.getString(KEY_COMPLICATIONS, ""));
Inevitable.task(TASK_ID_REFRESH_COMPLICATION, 15 * Constants.SECOND_IN_MS, () -> {
if (WearUtil.rateLimit("complication-checkIfUpdateNeeded", 5)) {
Log.d(TAG, "Checking if update needed");
requestUpdateIfSinceChanged();
// We reschedule need for check - to make sure next check will Inevitable go in next 15s
checkIfUpdateNeeded();
}
});
}
/*
* Check if displayed since field (field that shows how old, in minutes, is reading)
* is up-to-date or need to be changed (a minute or more elapsed)
*/
private static void requestUpdateIfSinceChanged() {
final Persistence persistence = new Persistence();
final DisplayRawData raw = new DisplayRawData();
raw.partialUpdateFromPersistence(persistence);
final String lastSince = persistence.getString(KEY_LAST_SINCE, "-");
final String calcSince = DisplayFormat.shortTimeSince(raw.datetime);
final boolean isStale = (WearUtil.msSince(persistence.whenDataUpdated()) > Constants.STALE_MS)
||(WearUtil.msSince(raw.datetime) > Constants.STALE_MS);
final boolean staleWasRefreshed = persistence.getBoolean(KEY_STALE_REPORTED, false);
final boolean sinceWasChanged = !lastSince.equals(calcSince);
if (sinceWasChanged|| (isStale && !staleWasRefreshed)) {
persistence.putString(KEY_LAST_SINCE, calcSince);
persistence.putBoolean(KEY_STALE_REPORTED, isStale);
Log.d(TAG, "Detected refresh of time needed! Reason: "
+ (isStale ? "- stale detected": "")
+ (sinceWasChanged ? "- since changed from: "+lastSince+" to: "+calcSince : ""));
if (isStale) {
// all complications should update to show offline/old warning
requestUpdate(getActiveProviderClasses());
} else {
// ... but only some require update due to 'since' field change
requestUpdate(getSinceDependingProviderClasses());
}
}
}
/*
* Request update for specified list of providers
*/
private static void requestUpdate(Set<String> providers) {
for (String provider: providers) {
Log.d(TAG, "Pending update of "+provider);
// We wait with updating allowing all request, from various sources, to arrive
Inevitable.task("update-req-"+provider, 700, () -> {
if (WearUtil.rateLimit("update-req-"+provider, 2)) {
Log.d(TAG, "Requesting update of "+provider);
final ComponentName componentName = new ComponentName(aaps.getAppContext(), provider);
final ProviderUpdateRequester providerUpdateRequester = new ProviderUpdateRequester(aaps.getAppContext(), componentName);
providerUpdateRequester.requestUpdateAll();
}
});
}
}
/*
* List all Complication providing classes that have active (registered) providers
*/
private static Set<String> getActiveProviderClasses() {
Persistence persistence = new Persistence();
Set<String> providers = new HashSet<>();
Set<String> complications = persistence.getSetOf(KEY_COMPLICATIONS);
for (String complication: complications) {
final String providerClass = persistence.getString(complication, "");
if (providerClass.length() > 0) {
providers.add(providerClass);
}
}
return providers;
}
/*
* List all Complication providing classes that have active (registered) providers
* and additionally they depend on "since" field
* == they need to be updated not only on data broadcasts, but every minute or so
*/
private static Set<String> getSinceDependingProviderClasses() {
Persistence persistence = new Persistence();
Set<String> providers = new HashSet<>();
Set<String> complications = persistence.getSetOf(KEY_COMPLICATIONS);
for (String complication: complications) {
final String providerClass = persistence.getString(complication, "");
final boolean dependOnSince = persistence.getBoolean(complication+"_since", false);
if ((providerClass.length() > 0)&&(dependOnSince)) {
providers.add(providerClass);
}
}
return providers;
}
/*
* Listen to broadcast --> new data was stored by ListenerService to Persistence
*/
public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Set<String> complications = Persistence.setOf(KEY_COMPLICATIONS);
if (complications.size() > 0) {
checkIfUpdateNeeded();
// We request all active providers
requestUpdate(getActiveProviderClasses());
}
}
}
}

View file

@ -0,0 +1,49 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
import info.nightscout.androidaps.interaction.utils.SmallestDoubleString;
import static info.nightscout.androidaps.interaction.utils.DisplayFormat.MAX_SHORT_FIELD;
import static info.nightscout.androidaps.interaction.utils.DisplayFormat.MIN_COB_FIELD;
import static info.nightscout.androidaps.interaction.utils.DisplayFormat.MIN_IOB_FIELD;
/*
* Created by dlvoy on 2019-11-12
*/
public class BrCobIobComplication extends BaseComplicationProviderService {
private static final String TAG = BrCobIobComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
final String cob = new SmallestDoubleString(raw.sCOB2, SmallestDoubleString.Units.USE).minimise(MIN_COB_FIELD);
final String iob = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(Math.max(MIN_IOB_FIELD, (MAX_SHORT_FIELD-1) - cob.length()));
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(DisplayFormat.basalRateSymbol()+raw.sBasalRate))
.setShortTitle(ComplicationText.plainText(cob + " " + iob))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return BrCobIobComplication.class.getCanonicalName();
}
}

View file

@ -0,0 +1,52 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import android.util.Pair;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
/*
* Created by dlvoy on 2019-11-12
*/
public class CobDetailedComplication extends BaseComplicationProviderService {
private static final String TAG = CobDetailedComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
Pair<String, String> cob = DisplayFormat.detailedCob(raw);
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(cob.first))
.setTapAction(complicationPendingIntent);
if (cob.second.length() > 0) {
builder.setShortTitle(ComplicationText.plainText(cob.second));
}
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return CobDetailedComplication.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.WIZARD;
};
}

View file

@ -0,0 +1,51 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.graphics.drawable.Icon;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DisplayRawData;
/*
* Created by dlvoy on 2019-11-12
*/
public class CobIconComplication extends BaseComplicationProviderService {
private static final String TAG = CobIconComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(raw.sCOB2))
.setIcon(
Icon.createWithResource(
this, R.drawable.ic_carbs))
.setBurnInProtectionIcon(
Icon.createWithResource(
this, R.drawable.ic_carbs))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return CobIconComplication.class.getCanonicalName();
}
public ComplicationAction getComplicationAction() {
return ComplicationAction.WIZARD;
};
}

View file

@ -0,0 +1,46 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.SmallestDoubleString;
import static info.nightscout.androidaps.interaction.utils.DisplayFormat.MAX_SHORT_FIELD;
/*
* Created by dlvoy on 2019-11-12
*/
public class CobIobComplication extends BaseComplicationProviderService {
private static final String TAG = CobIobComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
final String cob = raw.sCOB2;
final String iob = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(MAX_SHORT_FIELD);
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(cob))
.setShortTitle(ComplicationText.plainText(iob))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return CobIobComplication.class.getCanonicalName();
}
}

View file

@ -0,0 +1,12 @@
package info.nightscout.androidaps.complications;
public enum ComplicationAction {
NONE,
MENU,
WIZARD,
BOLUS,
ECARB,
STATUS,
WARNING_SYNC,
WARNING_OLD
}

View file

@ -0,0 +1,167 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.wearable.complications.ProviderUpdateRequester;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.StringRes;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.aaps;
import info.nightscout.androidaps.interaction.actions.BolusActivity;
import info.nightscout.androidaps.interaction.actions.ECarbActivity;
import info.nightscout.androidaps.interaction.actions.WizardActivity;
import info.nightscout.androidaps.interaction.menus.MainMenuActivity;
import info.nightscout.androidaps.interaction.menus.StatusMenuActivity;
import info.nightscout.androidaps.interaction.utils.Constants;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
import info.nightscout.androidaps.interaction.utils.WearUtil;
/*
* Created by dlvoy on 2019-11-12
*/
public class ComplicationTapBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = ComplicationTapBroadcastReceiver.class.getSimpleName();
private static final String EXTRA_PROVIDER_COMPONENT =
"info.nightscout.androidaps.complications.action.PROVIDER_COMPONENT";
private static final String EXTRA_COMPLICATION_ID =
"info.nightscout.androidaps.complications.action.COMPLICATION_ID";
private static final String EXTRA_COMPLICATION_ACTION =
"info.nightscout.androidaps.complications.action.COMPLICATION_ACTION";
private static final String EXTRA_COMPLICATION_SINCE =
"info.nightscout.androidaps.complications.action.COMPLICATION_SINCE";
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
ComponentName provider = extras.getParcelable(EXTRA_PROVIDER_COMPONENT);
int complicationId = extras.getInt(EXTRA_COMPLICATION_ID);
String complicationAction = extras.getString(EXTRA_COMPLICATION_ACTION, ComplicationAction.MENU.toString());
ComplicationAction action = ComplicationAction.MENU;
try {
action = ComplicationAction.valueOf(ComplicationAction.class, complicationAction);
} catch (IllegalArgumentException | NullPointerException ex) {
// but how?
Log.e(TAG, "Cannot interpret complication action: "+complicationAction);
}
action = remapActionWithUserPreferences(action);
// Request an update for the complication that has just been tapped.
ProviderUpdateRequester requester = new ProviderUpdateRequester(context, provider);
requester.requestUpdate(complicationId);
Intent intentOpen = null;
switch (action) {
case NONE:
// do nothing
return;
case WIZARD:
intentOpen = new Intent(aaps.getAppContext(), WizardActivity.class);
break;
case BOLUS:
intentOpen = new Intent(aaps.getAppContext(), BolusActivity.class);
break;
case ECARB:
intentOpen = new Intent(aaps.getAppContext(), ECarbActivity.class);
break;
case STATUS:
intentOpen = new Intent(aaps.getAppContext(), StatusMenuActivity.class);
break;
case WARNING_OLD:
case WARNING_SYNC:
long oneAndHalfMinuteAgo = WearUtil.timestamp() - (Constants.MINUTE_IN_MS+Constants.SECOND_IN_MS * 30);
long since = extras.getLong(EXTRA_COMPLICATION_SINCE, oneAndHalfMinuteAgo);
@StringRes int labelId = (action == ComplicationAction.WARNING_SYNC) ?
R.string.msg_warning_sync : R.string.msg_warning_old;
String msg = String.format(aaps.gs(labelId), DisplayFormat.shortTimeSince(since));
Toast.makeText(aaps.getAppContext(), msg, Toast.LENGTH_LONG).show();
break;
case MENU:
default:
intentOpen = new Intent(aaps.getAppContext(), MainMenuActivity.class);
}
if (intentOpen != null) {
// Perform intent - open dialog
intentOpen.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
aaps.getAppContext().startActivity(intentOpen);
}
}
private ComplicationAction remapActionWithUserPreferences(ComplicationAction originalAction) {
final String userPrefAction = aaps.getComplicationTapAction();
switch (originalAction) {
case WARNING_OLD:
case WARNING_SYNC:
// warnings cannot be reconfigured by user
return originalAction;
default:
switch (userPrefAction) {
case "menu":
return ComplicationAction.MENU;
case "wizard":
return ComplicationAction.WIZARD;
case "bolus":
return ComplicationAction.BOLUS;
case "ecarb":
return ComplicationAction.ECARB;
case "status":
return ComplicationAction.STATUS;
case "none":
return ComplicationAction.NONE;
case "default":
default:
return originalAction;
}
}
}
/**
* Returns a pending intent, suitable for use as a tap intent, that causes a complication to be
* toggled and updated.
*/
static PendingIntent getTapActionIntent(
Context context, ComponentName provider, int complicationId, ComplicationAction action) {
Intent intent = new Intent(context, ComplicationTapBroadcastReceiver.class);
intent.putExtra(EXTRA_PROVIDER_COMPONENT, provider);
intent.putExtra(EXTRA_COMPLICATION_ID, complicationId);
intent.putExtra(EXTRA_COMPLICATION_ACTION, action.toString());
// Pass complicationId as the requestCode to ensure that different complications get
// different intents.
return PendingIntent.getBroadcast(
context, complicationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
/**
* Returns a pending intent, suitable for use as a tap intent, that causes a complication to be
* toggled and updated.
*/
static PendingIntent getTapWarningSinceIntent(
Context context, ComponentName provider, int complicationId, ComplicationAction action, long since) {
Intent intent = new Intent(context, ComplicationTapBroadcastReceiver.class);
intent.putExtra(EXTRA_PROVIDER_COMPONENT, provider);
intent.putExtra(EXTRA_COMPLICATION_ID, complicationId);
intent.putExtra(EXTRA_COMPLICATION_ACTION, action.toString());
intent.putExtra(EXTRA_COMPLICATION_SINCE, since);
// Pass complicationId as the requestCode to ensure that different complications get
// different intents.
return PendingIntent.getBroadcast(
context, complicationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
}

View file

@ -0,0 +1,52 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import android.util.Pair;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
/*
* Created by dlvoy on 2019-11-12
*/
public class IobDetailedComplication extends BaseComplicationProviderService {
private static final String TAG = IobDetailedComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
Pair<String, String> iob = DisplayFormat.detailedIob(raw);
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(iob.first))
.setTapAction(complicationPendingIntent);
if (iob.second.length() > 0) {
builder.setShortTitle(ComplicationText.plainText(iob.second));
}
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return IobDetailedComplication.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.BOLUS;
};
}

View file

@ -0,0 +1,56 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.graphics.drawable.Icon;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.SmallestDoubleString;
import static info.nightscout.androidaps.interaction.utils.DisplayFormat.MAX_SHORT_FIELD;
/*
* Created by dlvoy on 2019-11-12
*/
public class IobIconComplication extends BaseComplicationProviderService {
private static final String TAG = IobIconComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
final String iob = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(MAX_SHORT_FIELD);
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(iob))
.setIcon(Icon.createWithResource(
this, R.drawable.ic_ins))
.setBurnInProtectionIcon(
Icon.createWithResource(
this, R.drawable.ic_ins_burnin))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return IobIconComplication.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.BOLUS;
};
}

View file

@ -0,0 +1,52 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
/*
* Created by dlvoy on 2019-11-12
*/
public class LongStatusComplication extends BaseComplicationProviderService {
private static final String TAG = LongStatusComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
switch (dataType) {
case ComplicationData.TYPE_LONG_TEXT:
final String glucoseLine = DisplayFormat.longGlucoseLine(raw);
final String detailsLine = DisplayFormat.longDetailsLine(raw);
final ComplicationData.Builder builderLong = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
.setLongTitle(ComplicationText.plainText(glucoseLine))
.setLongText(ComplicationText.plainText(detailsLine))
.setTapAction(complicationPendingIntent);
complicationData = builderLong.build();
break;
default:
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return LongStatusComplication.class.getCanonicalName();
}
@Override
protected boolean usesSinceField() {
return true;
}
}

View file

@ -0,0 +1,53 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
import info.nightscout.androidaps.interaction.utils.SmallestDoubleString;
/*
* Created by dlvoy on 2019-11-12
*/
public class LongStatusFlippedComplication extends BaseComplicationProviderService {
private static final String TAG = LongStatusFlippedComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
switch (dataType) {
case ComplicationData.TYPE_LONG_TEXT:
final String glucoseLine = DisplayFormat.longGlucoseLine(raw);
final String detailsLine = DisplayFormat.longDetailsLine(raw);
final ComplicationData.Builder builderLong = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
.setLongTitle(ComplicationText.plainText(detailsLine))
.setLongText(ComplicationText.plainText(glucoseLine))
.setTapAction(complicationPendingIntent);
complicationData = builderLong.build();
break;
default:
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return LongStatusFlippedComplication.class.getCanonicalName();
}
@Override
protected boolean usesSinceField() {
return true;
}
}

View file

@ -0,0 +1,48 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.interaction.utils.DisplayFormat;
/*
* Created by dlvoy on 2019-11-12
*/
public class SgvComplication extends BaseComplicationProviderService {
private static final String TAG = SgvComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
switch (dataType) {
case ComplicationData.TYPE_SHORT_TEXT:
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(raw.sSgv + raw.sDirection))
.setShortTitle(ComplicationText.plainText(DisplayFormat.shortTrend(raw)))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
break;
default:
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return SgvComplication.class.getCanonicalName();
}
@Override
protected boolean usesSinceField() {
return true;
}
}

View file

@ -0,0 +1,114 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.graphics.drawable.Icon;
import android.support.wearable.complications.ComplicationData;
import android.support.wearable.complications.ComplicationText;
import android.util.Log;
import androidx.annotation.DrawableRes;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.DisplayRawData;
/*
* Created by dlvoy on 2019-11-12
*/
public class UploaderBattery extends BaseComplicationProviderService {
private static final String TAG = UploaderBattery.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
@DrawableRes int batteryIcon = R.drawable.ic_battery_unknown;
@DrawableRes int burnInBatteryIcon = R.drawable.ic_battery_unknown_burnin;
int level = 0;
String levelStr = "???";
if (raw.sUploaderBattery.matches("^[0-9]+$")) {
try {
level = Integer.parseInt(raw.sUploaderBattery);
level = Math.max(Math.min(level, 100), 0);
levelStr = level + "%";
int iconNo = (int)Math.floor(level / 10.0);
if (level > 95) {
iconNo = 10;
}
switch (iconNo) {
case 10: batteryIcon = R.drawable.ic_battery_charging_wireless; break;
case 9: batteryIcon = R.drawable.ic_battery_charging_wireless_90; break;
case 8: batteryIcon = R.drawable.ic_battery_charging_wireless_80; break;
case 7: batteryIcon = R.drawable.ic_battery_charging_wireless_70; break;
case 6: batteryIcon = R.drawable.ic_battery_charging_wireless_60; break;
case 5: batteryIcon = R.drawable.ic_battery_charging_wireless_50; break;
case 4: batteryIcon = R.drawable.ic_battery_charging_wireless_40; break;
case 3: batteryIcon = R.drawable.ic_battery_charging_wireless_30; break;
case 2: batteryIcon = R.drawable.ic_battery_charging_wireless_20; break;
case 1: batteryIcon = R.drawable.ic_battery_charging_wireless_10; break;
case 0: batteryIcon = R.drawable.ic_battery_alert_variant_outline; break;
default: batteryIcon = R.drawable.ic_battery_charging_wireless_outline;
}
switch (iconNo) {
case 10: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_burnin; break;
case 9: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_90_burnin; break;
case 8: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_80_burnin; break;
case 7: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_70_burnin; break;
case 6: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_60_burnin; break;
case 5: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_50_burnin; break;
case 4: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_40_burnin; break;
case 3: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_30_burnin; break;
case 2: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_20_burnin; break;
case 1: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_10_burnin; break;
case 0: burnInBatteryIcon = R.drawable.ic_battery_alert_variant_outline; break;
default: burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_outline;
}
} catch (NumberFormatException ex){
Log.e(TAG, "Cannot parse battery level of: " + raw.sUploaderBattery);
}
}
if (dataType == ComplicationData.TYPE_RANGED_VALUE) {
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_RANGED_VALUE)
.setMinValue(0)
.setMaxValue(100)
.setValue(level)
.setShortText(ComplicationText.plainText(levelStr))
.setIcon(Icon.createWithResource(this, batteryIcon))
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
.setShortText(ComplicationText.plainText(levelStr))
.setIcon(Icon.createWithResource(this, batteryIcon))
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else if (dataType == ComplicationData.TYPE_ICON) {
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_ICON)
.setIcon(Icon.createWithResource(this, batteryIcon))
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
.setTapAction(complicationPendingIntent);
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
@Override
public String getProviderCanonicalName() {
return UploaderBattery.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.STATUS;
};
}

View file

@ -0,0 +1,62 @@
package info.nightscout.androidaps.complications;
import android.app.PendingIntent;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Icon;
import android.support.wearable.complications.ComplicationData;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;
import java.io.IOException;
import java.io.InputStream;
import info.nightscout.androidaps.aaps;
import info.nightscout.androidaps.data.DisplayRawData;
/*
* Created by dlvoy on 2019-11-12
*/
public abstract class WallpaperComplication extends BaseComplicationProviderService {
public abstract String getWallpaperAssetsFileName();
private static final String TAG = WallpaperComplication.class.getSimpleName();
public ComplicationData buildComplicationData(int dataType, DisplayRawData raw, PendingIntent complicationPendingIntent) {
ComplicationData complicationData = null;
if (dataType == ComplicationData.TYPE_LARGE_IMAGE) {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) aaps.getAppContext()
.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_LARGE_IMAGE);
AssetManager assetManager = getAssets();
try (InputStream istr = assetManager.open(getWallpaperAssetsFileName())) {
Bitmap bitmap = BitmapFactory.decodeStream(istr);
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, width, height, true);
builder.setLargeImage(Icon.createWithBitmap(scaled));
} catch (IOException e) {
Log.e(TAG, "Cannot read wallpaper asset: "+e.getMessage(), e);
e.printStackTrace();
}
complicationData = builder.build();
} else {
if (Log.isLoggable(TAG, Log.WARN)) {
Log.w(TAG, "Unexpected complication type " + dataType);
}
}
return complicationData;
}
}

View file

@ -0,0 +1,22 @@
package info.nightscout.androidaps.complications;
/*
* Created by dlvoy on 2019-11-12
*/
public class WallpaperDarkComplication extends WallpaperComplication {
@Override
public String getWallpaperAssetsFileName() {
return "watch_dark.jpg";
}
@Override
public String getProviderCanonicalName() {
return WallpaperDarkComplication.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.NONE;
};
}

View file

@ -0,0 +1,22 @@
package info.nightscout.androidaps.complications;
/*
* Created by dlvoy on 2019-11-12
*/
public class WallpaperGrayComplication extends WallpaperComplication {
@Override
public String getWallpaperAssetsFileName() {
return "watch_gray.jpg";
}
@Override
public String getProviderCanonicalName() {
return WallpaperGrayComplication.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.NONE;
};
}

View file

@ -0,0 +1,22 @@
package info.nightscout.androidaps.complications;
/*
* Created by dlvoy on 2019-11-12
*/
public class WallpaperLightComplication extends WallpaperComplication {
@Override
public String getWallpaperAssetsFileName() {
return "watch_light.jpg";
}
@Override
public String getProviderCanonicalName() {
return WallpaperLightComplication.class.getCanonicalName();
}
@Override
public ComplicationAction getComplicationAction() {
return ComplicationAction.NONE;
};
}

View file

@ -0,0 +1,269 @@
package info.nightscout.androidaps.data;
import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import com.google.android.gms.wearable.DataMap;
import java.util.ArrayList;
import info.nightscout.androidaps.interaction.utils.Constants;
import info.nightscout.androidaps.interaction.utils.Persistence;
import info.nightscout.androidaps.interaction.utils.WearUtil;
/**
* Holds bunch of data model variables and lists that arrive from phone app and are due to be
* displayed on watchface and complications. Keeping them together makes code cleaner and allows
* passing it to complications via persistence layer.
*
* Created by dlvoy on 2019-11-12
*/
public class DisplayRawData {
static final String DATA_PERSISTENCE_KEY = "raw_data";
static final String BASALS_PERSISTENCE_KEY = "raw_basals";
static final String STATUS_PERSISTENCE_KEY = "raw_status";
// data bundle
public long sgvLevel = 0;
public long datetime;
public String sSgv = "---";
public String sDirection = "--";
public String sDelta = "--";
public String sAvgDelta = "--";
public String sUnits = "-";
// status bundle
public String sBasalRate = "-.--U/h";
public String sUploaderBattery = "--";
public String sRigBattery = "--";
public boolean detailedIOB = false;
public String sIOB1 = "IOB";
public String sIOB2 = "-.--";
public String sCOB1 = "Carb";
public String sCOB2= "--g";
public String sBgi = "--";
public boolean showBGI = false;
public String externalStatusString = "no status";
public int batteryLevel = 1;
public long openApsStatus = -1;
// basals bundle
public ArrayList<BgWatchData> bgDataList = new ArrayList<>();
public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>();
public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>();
public ArrayList<BolusWatchData> bolusWatchDataList = new ArrayList<>();
public ArrayList<BgWatchData> predictionList = new ArrayList<>();
public String toDebugString() {
return "DisplayRawData{" +
"sgvLevel=" + sgvLevel +
", datetime=" + datetime +
", sSgv='" + sSgv + '\'' +
", sDirection='" + sDirection + '\'' +
", sDelta='" + sDelta + '\'' +
", sAvgDelta='" + sAvgDelta + '\'' +
", sUnits='" + sUnits + '\'' +
", sBasalRate='" + sBasalRate + '\'' +
", sUploaderBattery='" + sUploaderBattery + '\'' +
", sRigBattery='" + sRigBattery + '\'' +
", detailedIOB=" + detailedIOB +
", sIOB1='" + sIOB1 + '\'' +
", sIOB2='" + sIOB2 + '\'' +
", sCOB1='" + sCOB1 + '\'' +
", sCOB2='" + sCOB2 + '\'' +
", sBgi='" + sBgi + '\'' +
", showBGI=" + showBGI +
", externalStatusString='" + externalStatusString + '\'' +
", batteryLevel=" + batteryLevel +
", openApsStatus=" + openApsStatus +
", bgDataList size=" + bgDataList.size() +
", tempWatchDataList size=" + tempWatchDataList.size() +
", basalWatchDataList size=" + basalWatchDataList.size() +
", bolusWatchDataLis size=" + bolusWatchDataList.size() +
", predictionList size=" + predictionList.size() +
'}';
}
public void updateFromPersistence(Persistence persistence) {
DataMap dataMapData = persistence.getDataMap(DATA_PERSISTENCE_KEY);
if (dataMapData != null) {
updateData(dataMapData);
}
DataMap dataMapStatus = persistence.getDataMap(STATUS_PERSISTENCE_KEY);
if (dataMapStatus != null) {
updateStatus(dataMapStatus);
}
DataMap dataMapBasals = persistence.getDataMap(BASALS_PERSISTENCE_KEY);
if (dataMapBasals != null) {
updateBasals(dataMapBasals);
}
}
/*
* Since complications do not need Basals, we skip them for performance
*/
public void partialUpdateFromPersistence(Persistence persistence) {
DataMap dataMapData = persistence.getDataMap(DATA_PERSISTENCE_KEY);
if (dataMapData != null) {
updateData(dataMapData);
}
DataMap dataMapStatus = persistence.getDataMap(STATUS_PERSISTENCE_KEY);
if (dataMapStatus != null) {
updateStatus(dataMapStatus);
}
}
public DataMap updateDataFromMessage(Intent intent, PowerManager.WakeLock wakeLock) {
Bundle bundle = intent.getBundleExtra("data");
if (bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle);
updateData(dataMap);
return dataMap;
}
return null;
}
private void updateData(DataMap dataMap) {
WearUtil.getWakeLock("readingPrefs", 50);
sgvLevel = dataMap.getLong("sgvLevel");
datetime = dataMap.getLong("timestamp");
sSgv = dataMap.getString("sgvString");
sDirection = dataMap.getString("slopeArrow");
sDelta = dataMap.getString("delta");
sAvgDelta = dataMap.getString("avgDelta");
sUnits = dataMap.getString("glucoseUnits");
}
public DataMap updateStatusFromMessage(Intent intent, PowerManager.WakeLock wakeLock) {
Bundle bundle = intent.getBundleExtra("status");
if (bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle);
updateStatus(dataMap);
return dataMap;
}
return null;
}
private void updateStatus(DataMap dataMap) {
WearUtil.getWakeLock("readingPrefs", 50);
sBasalRate = dataMap.getString("currentBasal");
sUploaderBattery = dataMap.getString("battery");
sRigBattery = dataMap.getString("rigBattery");
detailedIOB = dataMap.getBoolean("detailedIob");
sIOB1 = dataMap.getString("iobSum") + "U";
sIOB2 = dataMap.getString("iobDetail");
sCOB1 = "Carb";
sCOB2 = dataMap.getString("cob");
sBgi = dataMap.getString("bgi");
showBGI = dataMap.getBoolean("showBgi");
externalStatusString = dataMap.getString("externalStatusString");
batteryLevel = dataMap.getInt("batteryLevel");
openApsStatus = dataMap.getLong("openApsStatus");
}
public DataMap updateBasalsFromMessage(Intent intent, PowerManager.WakeLock wakeLock) {
Bundle bundle = intent.getBundleExtra("basals");
if (bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle);
updateBasals(dataMap);
return dataMap;
}
return null;
}
private void updateBasals(DataMap dataMap) {
WearUtil.getWakeLock("readingPrefs", 500);
loadBasalsAndTemps(dataMap);
}
private void loadBasalsAndTemps(DataMap dataMap) {
ArrayList<DataMap> temps = dataMap.getDataMapArrayList("temps");
if (temps != null) {
tempWatchDataList = new ArrayList<>();
for (DataMap temp : temps) {
TempWatchData twd = new TempWatchData();
twd.startTime = temp.getLong("starttime");
twd.startBasal = temp.getDouble("startBasal");
twd.endTime = temp.getLong("endtime");
twd.endBasal = temp.getDouble("endbasal");
twd.amount = temp.getDouble("amount");
tempWatchDataList.add(twd);
}
}
ArrayList<DataMap> basals = dataMap.getDataMapArrayList("basals");
if (basals != null) {
basalWatchDataList = new ArrayList<>();
for (DataMap basal : basals) {
BasalWatchData bwd = new BasalWatchData();
bwd.startTime = basal.getLong("starttime");
bwd.endTime = basal.getLong("endtime");
bwd.amount = basal.getDouble("amount");
basalWatchDataList.add(bwd);
}
}
ArrayList<DataMap> boluses = dataMap.getDataMapArrayList("boluses");
if (boluses != null) {
bolusWatchDataList = new ArrayList<>();
for (DataMap bolus : boluses) {
BolusWatchData bwd = new BolusWatchData();
bwd.date = bolus.getLong("date");
bwd.bolus = bolus.getDouble("bolus");
bwd.carbs = bolus.getDouble("carbs");
bwd.isSMB = bolus.getBoolean("isSMB");
bwd.isValid = bolus.getBoolean("isValid");
bolusWatchDataList.add(bwd);
}
}
ArrayList<DataMap> predictions = dataMap.getDataMapArrayList("predictions");
if (boluses != null) {
predictionList = new ArrayList<>();
for (DataMap prediction : predictions) {
BgWatchData bwd = new BgWatchData();
bwd.timestamp = prediction.getLong("timestamp");
bwd.sgv = prediction.getDouble("sgv");
bwd.color = prediction.getInt("color");
predictionList.add(bwd);
}
}
}
public void addToWatchSet(DataMap dataMap) {
ArrayList<DataMap> entries = dataMap.getDataMapArrayList("entries");
if (entries != null) {
bgDataList = new ArrayList<>();
for (DataMap entry : entries) {
double sgv = entry.getDouble("sgvDouble");
double high = entry.getDouble("high");
double low = entry.getDouble("low");
long timestamp = entry.getLong("timestamp");
int color = entry.getInt("color", 0);
bgDataList.add(new BgWatchData(sgv, high, low, timestamp, color));
}
} else {
double sgv = dataMap.getDouble("sgvDouble");
double high = dataMap.getDouble("high");
double low = dataMap.getDouble("low");
long timestamp = dataMap.getLong("timestamp");
int color = dataMap.getInt("color", 0);
final int size = bgDataList.size();
if (size > 0) {
if (bgDataList.get(size - 1).timestamp == timestamp)
return; // Ignore duplicates.
}
bgDataList.add(new BgWatchData(sgv, high, low, timestamp, color));
}
for (int i = 0; i < bgDataList.size(); i++) {
if (bgDataList.get(i).timestamp < (System.currentTimeMillis() - (Constants.HOUR_IN_MS * 5))) {
bgDataList.remove(i); //Get rid of anything more than 5 hours old
break;
}
}
}
}

View file

@ -40,6 +40,7 @@ import info.nightscout.androidaps.interaction.AAPSPreferences;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interaction.actions.AcceptActivity;
import info.nightscout.androidaps.interaction.actions.CPPActivity;
import info.nightscout.androidaps.interaction.utils.Persistence;
import info.nightscout.androidaps.interaction.utils.SafeParse;
import info.nightscout.androidaps.interaction.utils.WearUtil;
@ -512,12 +513,14 @@ public class ListenerService extends WearableListenerService implements GoogleAp
Intent messageIntent = new Intent();
messageIntent.setAction(Intent.ACTION_SEND);
messageIntent.putExtra("status", dataMap.toBundle());
Persistence.storeDataMap(DisplayRawData.STATUS_PERSISTENCE_KEY, dataMap);
LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
} else if (path.equals(BASAL_DATA_PATH)){
dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
Intent messageIntent = new Intent();
messageIntent.setAction(Intent.ACTION_SEND);
messageIntent.putExtra("basals", dataMap.toBundle());
Persistence.storeDataMap(DisplayRawData.BASALS_PERSISTENCE_KEY, dataMap);
LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
} else if (path.equals(NEW_PREFERENCES_PATH)){
dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
@ -541,6 +544,7 @@ public class ListenerService extends WearableListenerService implements GoogleAp
Intent messageIntent = new Intent();
messageIntent.setAction(Intent.ACTION_SEND);
messageIntent.putExtra("data", dataMap.toBundle());
Persistence.storeDataMap(DisplayRawData.DATA_PERSISTENCE_KEY, dataMap);
LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);
}
}

View file

@ -0,0 +1,14 @@
package info.nightscout.androidaps.interaction.utils;
public class Constants {
public static final long SECOND_IN_MS = 1000;
public static final long MINUTE_IN_MS = 60000;
public static final long HOUR_IN_MS = 3600000;
public static final long DAY_IN_MS = 86400000;
public static final long WEEK_IN_MS = DAY_IN_MS * 7;
public static final long MONTH_IN_MS = DAY_IN_MS * 30;
public static final long STALE_MS = Constants.MINUTE_IN_MS * 12;
}

View file

@ -0,0 +1,129 @@
package info.nightscout.androidaps.interaction.utils;
import android.util.Pair;
import info.nightscout.androidaps.aaps;
import info.nightscout.androidaps.data.DisplayRawData;
public class DisplayFormat {
/**
* Maximal lengths of fields/labels shown in complications
*/
public static final int MAX_LONG_FIELD = 22; // this is empirical, above that many watch faces start to ellipsize
public static final int MAX_SHORT_FIELD = 7; // according to Wear OS docs for TYPE_SHORT_TEXT
public static final int MIN_COB_FIELD = 3; // since carbs are 0..99g
public static final int MIN_IOB_FIELD = 3; // IoB can range from like .1U to 99U
public static String deltaSymbol() {
return aaps.areComplicationsUnicode() ? "\u0394" : "";
}
public static String verticalSeparatorSymbol() {
return aaps.areComplicationsUnicode() ? "\u205E" : "|";
}
public static String basalRateSymbol() {
return aaps.areComplicationsUnicode() ? "\u238D\u2006" : "";
}
public static String shortTimeSince(final long refTime) {
long deltaTimeMs = WearUtil.msSince(refTime);
if (deltaTimeMs < Constants.MINUTE_IN_MS) {
return "0'";
} else if (deltaTimeMs < Constants.HOUR_IN_MS) {
int minutes = (int) (deltaTimeMs / Constants.MINUTE_IN_MS);
return minutes + "'";
} else if (deltaTimeMs < Constants.DAY_IN_MS) {
int hours = (int) (deltaTimeMs / Constants.HOUR_IN_MS);
return hours + "h";
} else {
int days = (int) (deltaTimeMs / Constants.DAY_IN_MS);
if (days < 7) {
return days + "d";
} else {
int weeks = days / 7;
return weeks + "d";
}
}
}
public static String shortTrend(final DisplayRawData raw) {
String minutes = shortTimeSince(raw.datetime);
String delta = (new SmallestDoubleString(raw.sDelta)).minimise(MAX_SHORT_FIELD-1);
if (minutes.length() + delta.length() + 1 < MAX_SHORT_FIELD) {
delta = deltaSymbol() + delta;
}
return minutes + " " + delta;
}
public static String longGlucoseLine(final DisplayRawData raw) {
return raw.sSgv + raw.sDirection + " " + deltaSymbol() + (new SmallestDoubleString(raw.sDelta)).minimise(8) + " (" + shortTimeSince(raw.datetime) + ")";
}
public static String longDetailsLine(final DisplayRawData raw) {
final String SEP_LONG = " " + verticalSeparatorSymbol() + " ";
final String SEP_SHORT = " " + verticalSeparatorSymbol() + " ";
final int SEP_SHORT_LEN = SEP_SHORT.length();
final String SEP_MIN = " ";
String line = raw.sCOB2 + SEP_LONG + raw.sIOB1 + SEP_LONG + basalRateSymbol()+raw.sBasalRate;
if (line.length() <= MAX_LONG_FIELD) {
return line;
}
line = raw.sCOB2 + SEP_SHORT + raw.sIOB1 + SEP_SHORT + raw.sBasalRate;
if (line.length() <= MAX_LONG_FIELD) {
return line;
}
int remainingMax = MAX_LONG_FIELD - (raw.sCOB2.length() + raw.sBasalRate.length() + SEP_SHORT_LEN*2);
final String smallestIoB = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(Math.max(MIN_IOB_FIELD, remainingMax));
line = raw.sCOB2 + SEP_SHORT + smallestIoB + SEP_SHORT + raw.sBasalRate;
if (line.length() <= MAX_LONG_FIELD) {
return line;
}
remainingMax = MAX_LONG_FIELD - (smallestIoB.length() + raw.sBasalRate.length() + SEP_SHORT_LEN*2);
final String simplifiedCob = new SmallestDoubleString(raw.sCOB2, SmallestDoubleString.Units.USE).minimise(Math.max(MIN_COB_FIELD, remainingMax));
line = simplifiedCob + SEP_SHORT + smallestIoB + SEP_SHORT + raw.sBasalRate;
if (line.length() <= MAX_LONG_FIELD) {
return line;
}
line = simplifiedCob + SEP_MIN + smallestIoB + SEP_MIN + raw.sBasalRate;
return line;
}
public static Pair<String, String> detailedIob(DisplayRawData raw) {
final String iob1 = new SmallestDoubleString(raw.sIOB1, SmallestDoubleString.Units.USE).minimise(MAX_SHORT_FIELD);
String iob2 = "";
if (raw.sIOB2.contains("|")) {
String[] iobs = raw.sIOB2.replace("(", "").replace(")", "").split("\\|");
if (iobs.length == 2) {
final String iobBolus = new SmallestDoubleString(iobs[0]).minimise(MIN_IOB_FIELD);
final String iobBasal = new SmallestDoubleString(iobs[1]).minimise((MAX_SHORT_FIELD-1) - Math.max(MIN_IOB_FIELD, iobBolus.length()));
iob2 = iobBolus+" "+iobBasal;
}
}
return Pair.create(iob1, iob2);
}
public static Pair<String, String> detailedCob(final DisplayRawData raw) {
SmallestDoubleString cobMini = new SmallestDoubleString(raw.sCOB2, SmallestDoubleString.Units.USE);
String cob2 = "";
if (cobMini.getExtra().length() > 0) {
cob2 = cobMini.getExtra() + cobMini.getUnits();
}
final String cob1 = cobMini.minimise(MAX_SHORT_FIELD);
return Pair.create(cob1, cob2);
}
}

View file

@ -0,0 +1,117 @@
package info.nightscout.androidaps.interaction.utils;
import android.os.PowerManager;
import android.util.Log;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created for xDrip by jamorham on 07/03/2018
* Adapted for AAPS by dlvoy on 2019-11-11
*
* Tasks which are fired from events can be scheduled here and only execute when they become idle
* and are not being rescheduled within their wait window.
*
*/
public class Inevitable {
private static final String TAG = Inevitable.class.getSimpleName();
private static final int MAX_QUEUE_TIME = (int) Constants.MINUTE_IN_MS * 6;
private static final boolean d = true;
private static final ConcurrentHashMap<String, Task> tasks = new ConcurrentHashMap<>();
public static synchronized void task(final String id, long idle_for, Runnable runnable) {
if (idle_for > MAX_QUEUE_TIME) {
throw new RuntimeException(id + " Requested time: " + idle_for + " beyond max queue time");
}
final Task task = tasks.get(id);
if (task != null) {
// if it already exists then extend the time
task.extendTime(idle_for);
if (d)
Log.d(TAG, "Extending time for: " + id + " to " + WearUtil.dateTimeText(task.when));
} else {
// otherwise create new task
if (runnable == null) return; // extension only if already exists
tasks.put(id, new Task(id, idle_for, runnable));
if (d) {
Log.d(TAG, "Creating task: " + id + " due: " + WearUtil.dateTimeText(tasks.get(id).when));
}
// create a thread to wait and execute in background
final Thread t = new Thread(() -> {
final PowerManager.WakeLock wl = WearUtil.getWakeLock(id, MAX_QUEUE_TIME + 5000);
try {
boolean running = true;
// wait for task to be due or killed
while (running) {
WearUtil.threadSleep(500);
final Task thisTask = tasks.get(id);
running = thisTask != null && !thisTask.poll();
}
} finally {
WearUtil.releaseWakeLock(wl);
}
});
t.setPriority(Thread.MIN_PRIORITY);
//t.setDaemon(true);
t.start();
}
}
public static synchronized void stackableTask(String id, long idle_for, Runnable runnable) {
int stack = 0;
while (tasks.get(id = id + "-" + stack) != null) {
stack++;
}
if (stack > 0) {
Log.d(TAG, "Task stacked to: " + id);
}
task(id, idle_for, runnable);
}
public static void kill(final String id) {
tasks.remove(id);
}
public static boolean waiting(final String id) {
return tasks.containsKey(id);
}
private static class Task {
private long when;
private final Runnable what;
private final String id;
Task(String id, long offset, Runnable what) {
this.what = what;
this.id = id;
extendTime(offset);
}
public void extendTime(long offset) {
this.when = WearUtil.timestamp() + offset;
}
public boolean poll() {
final long till = WearUtil.msTill(when);
if (till < 1) {
if (d) Log.d(TAG, "Executing task! " + this.id);
tasks.remove(this.id); // early remove to allow overlapping scheduling
what.run();
return true;
} else if (till > MAX_QUEUE_TIME) {
Log.wtf(TAG, "Task: " + this.id + " In queue too long: " + till);
tasks.remove(this.id);
return true;
}
return false;
}
}
}

View file

@ -0,0 +1,94 @@
package info.nightscout.androidaps.interaction.utils;
import android.content.SharedPreferences;
import android.util.Base64;
import com.google.android.gms.wearable.DataMap;
import java.util.Set;
import info.nightscout.androidaps.aaps;
/**
* Created by dlvoy on 2019-11-12
*/
public class Persistence {
final SharedPreferences preferences;
public static final String COMPLICATION_PROVIDER_PREFERENCES_FILE_KEY =
"info.nightscout.androidaps.complications.COMPLICATION_PROVIDER_PREFERENCES_FILE_KEY";
public Persistence() {
preferences = aaps.getAppContext().getSharedPreferences(COMPLICATION_PROVIDER_PREFERENCES_FILE_KEY, 0);
}
public DataMap getDataMap(String key) {
if (preferences.contains("raw_data")) {
final String rawB64Data = preferences.getString(key, null);
byte[] rawData = Base64.decode(rawB64Data, Base64.DEFAULT);
try {
DataMap dataMap = DataMap.fromByteArray(rawData);
return dataMap;
} catch (IllegalArgumentException ex) {
}
}
return null;
}
public void putDataMap(String key, DataMap dataMap) {
preferences.edit().putString(key, Base64.encodeToString(dataMap.toByteArray(), Base64.DEFAULT)).apply();
}
public String getString(String key, String defaultValue) {
return preferences.getString(key, defaultValue);
}
public void putString(String key, String value) {
preferences.edit().putString(key, value).apply();
}
public boolean getBoolean(String key, boolean defaultValue) {
return preferences.getBoolean(key, defaultValue);
}
public void putBoolean(String key, boolean value) {
preferences.edit().putBoolean(key, value).apply();
}
public long whenDataUpdated() {
return preferences.getLong("data_updated_at", 0);
}
private void markDataUpdated() {
preferences.edit().putLong("data_updated_at", WearUtil.timestamp()).apply();
}
public Set<String> getSetOf(String key) {
return WearUtil.explodeSet(getString(key, ""), "|");
}
public void addToSet(String key, String value) {
final Set<String> set = WearUtil.explodeSet(getString(key, ""), "|");
set.add(value);
putString(key, WearUtil.joinSet(set, "|"));
}
public void removeFromSet(String key, String value) {
final Set<String> set = WearUtil.explodeSet(getString(key, ""), "|");
set.remove(value);
putString(key, WearUtil.joinSet(set, "|"));
}
public static void storeDataMap(String key, DataMap dataMap) {
Persistence p = new Persistence();
p.putDataMap(key, dataMap);
p.markDataUpdated();
}
public static Set<String> setOf(String key) {
Persistence p = new Persistence();
return p.getSetOf(key);
}
}

View file

@ -0,0 +1,130 @@
package info.nightscout.androidaps.interaction.utils;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Helper to minimise various floating point values, with or without unit, to fit into specified
* and limited size, scarifying precision (rounding up) and extra characters like leading zero,
* following zero(s) in fractional part, extra plus sign etc.
*
* Created by dlvoy on 2019-11-12
*/
public class SmallestDoubleString {
private String sign = "";
private String decimal = "";
private String separator = "";
private String fractional = "";
private String extra = "";
private String units = "";
private final Units withUnits;
public enum Units {
SKIP,
USE
}
private static Pattern pattern = Pattern.compile("^([+-]?)([0-9]*)([,.]?)([0-9]*)(\\([^)]*\\))?(.*?)$", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE );
public SmallestDoubleString(String inputString) {
this(inputString, Units.SKIP);
}
public SmallestDoubleString(String inputString, Units withUnits) {
Matcher matcher = pattern.matcher(inputString);
matcher.matches();
sign = matcher.group(1);
decimal = matcher.group(2);
separator = matcher.group(3);
fractional = matcher.group(4);
units = matcher.group(6);
if (fractional == null || fractional.length() == 0) {
separator = "";
fractional = "";
}
if (decimal == null || decimal.length() == 0) {
decimal = "";
}
if (separator == null || separator.length() == 0) {
separator = "";
}
if (sign == null || sign.length() == 0) {
sign = "";
}
final String extraCandidate = matcher.group(5);
if (extraCandidate != null && extraCandidate.length() > 2) {
extra = extraCandidate.substring(1, extraCandidate.length()-1);
}
if (units != null) {
units = units.trim();
}
this.withUnits = withUnits;
}
public String minimise(int maxSize) {
if (Integer.parseInt("0"+fractional) == 0) {
separator = "";
fractional = "";
}
if (Integer.parseInt("0"+decimal) == 0 && (fractional.length() >0)) {
decimal = "";
}
if (currentLen() <= maxSize)
return toString();
if (sign.equals("+")) {
sign = "";
}
if (currentLen() <= maxSize) {
return toString();
}
while ((fractional.length() > 1)&&(fractional.charAt(fractional.length()-1) == '0')) {
fractional = fractional.substring(0, fractional.length()-1);
}
if (currentLen() <= maxSize) {
return toString();
}
if ((fractional.length() > 0)&&(decimal.length() > 0)) {
int remainingForFraction = maxSize-currentLen()+fractional.length();
String formatCandidate = "#";
if (remainingForFraction>=1) {
formatCandidate = "#."+("#######".substring(0, remainingForFraction));
}
DecimalFormat df = new DecimalFormat(formatCandidate);
df.setRoundingMode(RoundingMode.HALF_UP);
return sign + df.format(Double.parseDouble(decimal+"."+fractional)).replace(".", separator) +
((withUnits == Units.USE) ? units : "");
}
return toString();
}
private int currentLen() {
return sign.length() + decimal.length() + separator.length() + fractional.length() +
((withUnits == Units.USE) ? units.length() : 0);
}
public String toString() {
return sign+decimal+separator+fractional +
((withUnits == Units.USE) ? units : "");
}
public String getExtra() {
return extra;
}
public String getUnits() { return units; }
}

View file

@ -1,19 +1,127 @@
package info.nightscout.androidaps.interaction.utils;
import java.time.LocalDateTime;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.util.Log;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import info.nightscout.androidaps.aaps;
import info.nightscout.androidaps.data.DisplayRawData;
/**
* Created by andy on 3/5/19.
* Adapted by dlvoy on 2019-11-06 using code from jamorham JoH class
*/
public class WearUtil {
private final static boolean debug_wakelocks = false;
private static final Map<String, Long> rateLimits = new HashMap<String, Long>();
private static final String TAG = WearUtil.class.getName();
//==============================================================================================
// Time related util methods
//==============================================================================================
public static String dateTimeText(long timeInMs) {
Date d = new Date(timeInMs);
return "" + d.getDay() + "." + d.getMonth() + "." + d.getYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
}
public static long timestamp() {
return System.currentTimeMillis();
}
public static long msSince(long when) {
return (timestamp() - when);
}
public static long msTill(long when) {
return (when - timestamp());
}
//==============================================================================================
// Thread and power management utils
//==============================================================================================
// return true if below rate limit
public static synchronized boolean rateLimit(String name, int seconds) {
// check if over limit
if ((rateLimits.containsKey(name)) && (timestamp() - rateLimits.get(name) < (seconds * 1000))) {
Log.d(TAG, name + " rate limited: " + seconds + " seconds");
return false;
}
// not over limit
rateLimits.put(name, timestamp());
return true;
}
public static PowerManager.WakeLock getWakeLock(final String name, int millis) {
final PowerManager pm = (PowerManager) aaps.getAppContext().getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AAPS::"+name);
wl.acquire(millis);
if (debug_wakelocks) Log.d(TAG, "getWakeLock: " + name + " " + wl.toString());
return wl;
}
public static void releaseWakeLock(PowerManager.WakeLock wl) {
if (debug_wakelocks) Log.d(TAG, "releaseWakeLock: " + wl.toString());
if (wl == null) return;
if (wl.isHeld()) wl.release();
}
public static void startActivity(Class c) {
aaps.getAppContext().startActivity(getStartActivityIntent(c));
}
public static Intent getStartActivityIntent(Class c) {
return new Intent(aaps.getAppContext(), c).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
public static void threadSleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
//
}
}
public static String joinSet(Set<String> set, String separator) {
StringBuilder sb = new StringBuilder();
int i = 0;
for (String item : set) {
final String itemToAdd = item.trim();
if (itemToAdd.length() > 0) {
if (i > 0) {
sb.append(separator);
}
i++;
sb.append(itemToAdd);
}
}
return sb.toString();
}
public static Set<String> explodeSet(String joined, String separator) {
// special RegEx literal \\Q starts sequence we escape, \\E ends is
// we use it to escape separator for use in RegEx
String[] items = joined.split("\\Q"+separator+"\\E");
Set<String> set = new HashSet<>();
for (String item : items) {
final String itemToAdd = item.trim();
if (itemToAdd.length() > 0) {
set.add(itemToAdd);
}
}
return set;
}
}

View file

@ -10,7 +10,6 @@ import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.PowerManager;
import android.preference.PreferenceManager;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
@ -33,20 +32,18 @@ import com.ustwo.clockwise.common.WatchFaceTime;
import com.ustwo.clockwise.common.WatchShape;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import info.nightscout.androidaps.data.BasalWatchData;
import info.nightscout.androidaps.data.BgWatchData;
import info.nightscout.androidaps.data.BolusWatchData;
import info.nightscout.androidaps.complications.BaseComplicationProviderService;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.data.ListenerService;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.TempWatchData;
import lecho.lib.hellocharts.view.LineChartView;
/**
* Created by emmablack on 12/29/14.
* Updated by andrew-warrington on 02-Jan-2018.
* Refactored by dlvoy on 2019-11-2019
*/
public abstract class BaseWatchFace extends WatchFace implements SharedPreferences.OnSharedPreferenceChangeListener {
@ -54,13 +51,10 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
public static final long[] vibratePattern = {0,400,300,400,300,400};
public TextView mTime, mSgv, mDirection, mTimestamp, mUploaderBattery, mRigBattery, mDelta, mAvgDelta, mStatus, mBasalRate, mIOB1, mIOB2, mCOB1, mCOB2, mBgi, mLoop, mDay, mMonth, isAAPSv2, mHighLight, mLowLight;
public ImageView mGlucoseDial, mDeltaGauge, mHourHand, mMinuteHand;
public long datetime;
public RelativeLayout mRelativeLayout;
public LinearLayout mLinearLayout, mLinearLayout2, mDate, mChartTap, mMainMenuTap;
public long sgvLevel = 0;
public int ageLevel = 1;
public int loopLevel = 1;
public int batteryLevel = 1;
public int highColor = Color.YELLOW;
public int lowColor = Color.RED;
public int midColor = Color.WHITE;
@ -74,11 +68,9 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
public int pointSize = 2;
public BgGraphBuilder bgGraphBuilder;
public LineChartView chart;
public ArrayList<BgWatchData> bgDataList = new ArrayList<>();
public ArrayList<TempWatchData> tempWatchDataList = new ArrayList<>();
public ArrayList<BasalWatchData> basalWatchDataList = new ArrayList<>();
public ArrayList<BolusWatchData> bolusWatchDataList = new ArrayList<>();
public ArrayList<BgWatchData> predictionList = new ArrayList<>();
public DisplayRawData rawData = new DisplayRawData();
public PowerManager.WakeLock wakeLock;
// related endTime manual layout
@ -90,26 +82,9 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
protected SharedPreferences sharedPrefs;
public boolean detailedIOB = false;
public boolean showBGI = false;
public boolean forceSquareCanvas = false; //set to true by the Steampunk watch face.
public long openApsStatus;
public String externalStatusString = "no status";
public String sSgv = "---";
public String sDirection = "--";
public String sUploaderBattery = "--";
public String sRigBattery = "--";
public String sDelta = "--";
public String sAvgDelta = "--";
public String sBasalRate = "-.--U/h";
public String sIOB1 = "IOB";
public String sIOB2 = "-.--";
public String sCOB1 = "Carb";
public String sCOB2 = "--g";
public String sBgi = "--";
public String sMinute = "0";
public String sHour = "0";
public String sUnits = "-";
@Override
public void onCreate() {
@ -126,6 +101,8 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.registerOnSharedPreferenceChangeListener(this);
BaseComplicationProviderService.turnOff();
}
@Override
@ -197,11 +174,11 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
public double timeSince() {
return System.currentTimeMillis() - datetime;
return System.currentTimeMillis() - rawData.datetime;
}
public String readingAge(boolean shortString) {
if (datetime == 0) { return shortString?"--'":"-- Minute ago"; }
if (rawData.datetime == 0) { return shortString?"--'":"-- Minute ago"; }
int minutesAgo = (int) Math.floor(timeSince()/(1000*60));
if (minutesAgo == 1) {
return minutesAgo + (shortString?"'":" Minute ago");
@ -266,50 +243,20 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getBundleExtra("data");
if (layoutSet && bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle);
wakeLock.acquire(50);
sgvLevel = dataMap.getLong("sgvLevel");
datetime = dataMap.getLong("timestamp");
sSgv = dataMap.getString("sgvString");
sDirection = dataMap.getString("slopeArrow");
sDelta = dataMap.getString("delta");
sAvgDelta = dataMap.getString("avgDelta");
sUnits = dataMap.getString("glucoseUnits");
if (chart != null) {
addToWatchSet(dataMap);
if (layoutSet) {
final DataMap dataMap = rawData.updateDataFromMessage(intent, wakeLock);
if (chart != null && dataMap != null) {
rawData.addToWatchSet(dataMap);
setupCharts();
}
}
bundle = intent.getBundleExtra("status");
if (layoutSet && bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle);
wakeLock.acquire(50);
sBasalRate = dataMap.getString("currentBasal");
sUploaderBattery = dataMap.getString("battery");
sRigBattery = dataMap.getString("rigBattery");
detailedIOB = dataMap.getBoolean("detailedIob");
sIOB1 = dataMap.getString("iobSum") + "U";
sIOB2 = dataMap.getString("iobDetail");
sCOB1 = "Carb";
sCOB2 = dataMap.getString("cob");
sBgi = dataMap.getString("bgi");
showBGI = dataMap.getBoolean("showBgi");
externalStatusString = dataMap.getString("externalStatusString");
batteryLevel = dataMap.getInt("batteryLevel");
openApsStatus = dataMap.getLong("openApsStatus");
rawData.updateStatusFromMessage(intent, wakeLock);
}
setDataFields();
setColor();
bundle = intent.getBundleExtra("basals");
if (layoutSet && bundle != null) {
DataMap dataMap = DataMap.fromBundle(bundle);
wakeLock.acquire(500);
loadBasalsAndTemps(dataMap);
if (layoutSet) {
rawData.updateBasalsFromMessage(intent, wakeLock);
}
mRelativeLayout.measure(specW, specH);
@ -328,7 +275,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mSgv != null) {
if (sharedPrefs.getBoolean("showBG", true)) {
mSgv.setText(sSgv);
mSgv.setText(rawData.sSgv);
mSgv.setVisibility(View.VISIBLE);
} else {
//leave the textview there but invisible, as a height holder for the empty space above the white line
@ -341,7 +288,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mDirection != null) {
if (sharedPrefs.getBoolean("show_direction", true)) {
mDirection.setText(sDirection);
mDirection.setText(rawData.sDirection);
mDirection.setVisibility(View.VISIBLE);
} else {
mDirection.setVisibility(View.GONE);
@ -350,7 +297,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mDelta != null) {
if (sharedPrefs.getBoolean("showDelta", true)) {
mDelta.setText(sDelta);
mDelta.setText(rawData.sDelta);
mDelta.setVisibility(View.VISIBLE);
} else {
mDelta.setVisibility(View.GONE);
@ -359,7 +306,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mAvgDelta != null) {
if (sharedPrefs.getBoolean("showAvgDelta", true)) {
mAvgDelta.setText(sAvgDelta);
mAvgDelta.setText(rawData.sAvgDelta);
mAvgDelta.setVisibility(View.VISIBLE);
} else {
mAvgDelta.setVisibility(View.GONE);
@ -367,7 +314,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
if (mCOB1 != null && mCOB2 != null) {
mCOB2.setText(sCOB2);
mCOB2.setText(rawData.sCOB2);
if (sharedPrefs.getBoolean("show_cob", true)) {
mCOB1.setVisibility(View.VISIBLE);
mCOB2.setVisibility(View.VISIBLE);
@ -377,7 +324,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
//deal with cases where there is only the value shown for COB, and not the label
} else if (mCOB2 != null) {
mCOB2.setText(sCOB2);
mCOB2.setText(rawData.sCOB2);
if (sharedPrefs.getBoolean("show_cob", true)) {
mCOB2.setVisibility(View.VISIBLE);
} else {
@ -389,12 +336,12 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (sharedPrefs.getBoolean("show_iob", true)) {
mIOB1.setVisibility(View.VISIBLE);
mIOB2.setVisibility(View.VISIBLE);
if (detailedIOB) {
mIOB1.setText(sIOB1);
mIOB2.setText(sIOB2);
if (rawData.detailedIOB) {
mIOB1.setText(rawData.sIOB1);
mIOB2.setText(rawData.sIOB2);
} else {
mIOB1.setText("IOB");
mIOB2.setText(sIOB1);
mIOB2.setText(rawData.sIOB1);
}
} else {
mIOB1.setVisibility(View.GONE);
@ -404,10 +351,10 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
} else if (mIOB2 != null) {
if (sharedPrefs.getBoolean("show_iob", true)) {
mIOB2.setVisibility(View.VISIBLE);
if (detailedIOB) {
mIOB2.setText(sIOB2);
if (rawData.detailedIOB) {
mIOB2.setText(rawData.sIOB2);
} else {
mIOB2.setText(sIOB1);
mIOB2.setText(rawData.sIOB1);
}
} else {
mIOB2.setText("");
@ -434,13 +381,13 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mUploaderBattery != null) {
if (sharedPrefs.getBoolean("show_uploader_battery", true)) {
if (isAAPSv2 != null) {
mUploaderBattery.setText(sUploaderBattery + "%");
mUploaderBattery.setText(rawData.sUploaderBattery + "%");
mUploaderBattery.setVisibility(View.VISIBLE);
} else {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mUploaderBattery.setText("U: " + sUploaderBattery + "%");
mUploaderBattery.setText("U: " + rawData.sUploaderBattery + "%");
} else {
mUploaderBattery.setText("Uploader: " + sUploaderBattery + "%");
mUploaderBattery.setText("Uploader: " + rawData.sUploaderBattery + "%");
}
}
} else {
@ -450,7 +397,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mRigBattery != null) {
if (sharedPrefs.getBoolean("show_rig_battery", false)) {
mRigBattery.setText(sRigBattery);
mRigBattery.setText(rawData.sRigBattery);
mRigBattery.setVisibility(View.VISIBLE);
} else {
mRigBattery.setVisibility(View.GONE);
@ -459,7 +406,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mBasalRate != null) {
if (sharedPrefs.getBoolean("show_temp_basal", true)) {
mBasalRate.setText(sBasalRate);
mBasalRate.setText(rawData.sBasalRate);
mBasalRate.setVisibility(View.VISIBLE);
} else {
mBasalRate.setVisibility(View.GONE);
@ -467,8 +414,8 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
if (mBgi != null) {
if (showBGI) {
mBgi.setText(sBgi);
if (rawData.showBGI) {
mBgi.setText(rawData.sBgi);
mBgi.setVisibility(View.VISIBLE);
} else {
mBgi.setVisibility(View.GONE);
@ -477,7 +424,7 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mStatus != null) {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mStatus.setText(externalStatusString);
mStatus.setText(rawData.externalStatusString);
mStatus.setVisibility(View.VISIBLE);
} else {
mStatus.setVisibility(View.GONE);
@ -487,8 +434,8 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
if (mLoop != null) {
if (sharedPrefs.getBoolean("showExternalStatus", true)) {
mLoop.setVisibility(View.VISIBLE);
if (openApsStatus != -1) {
int mins = (int) ((System.currentTimeMillis() - openApsStatus) / 1000 / 60);
if (rawData.openApsStatus != -1) {
int mins = (int) ((System.currentTimeMillis() - rawData.openApsStatus) / 1000 / 60);
mLoop.setText(mins + "'");
if (mins > 14) {
loopLevel = 0;
@ -594,50 +541,13 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
}
public void addToWatchSet(DataMap dataMap) {
ArrayList<DataMap> entries = dataMap.getDataMapArrayList("entries");
if (entries != null) {
bgDataList = new ArrayList<BgWatchData>();
for (DataMap entry : entries) {
double sgv = entry.getDouble("sgvDouble");
double high = entry.getDouble("high");
double low = entry.getDouble("low");
long timestamp = entry.getLong("timestamp");
int color = entry.getInt("color", 0);
bgDataList.add(new BgWatchData(sgv, high, low, timestamp, color));
}
} else {
double sgv = dataMap.getDouble("sgvDouble");
double high = dataMap.getDouble("high");
double low = dataMap.getDouble("low");
long timestamp = dataMap.getLong("timestamp");
int color = dataMap.getInt("color", 0);
final int size = bgDataList.size();
if (size > 0) {
if (bgDataList.get(size - 1).timestamp == timestamp)
return; // Ignore duplicates.
}
bgDataList.add(new BgWatchData(sgv, high, low, timestamp, color));
}
for (int i = 0; i < bgDataList.size(); i++) {
if (bgDataList.get(i).timestamp < (System.currentTimeMillis() - (1000 * 60 * 60 * 5))) {
bgDataList.remove(i); //Get rid of anything more than 5 hours old
break;
}
}
}
public void setupCharts() {
if(bgDataList.size() > 0) { //Dont crash things just because we dont have values, people dont like crashy things
if(rawData.bgDataList.size() > 0) { //Dont crash things just because we dont have values, people dont like crashy things
int timeframe = Integer.parseInt(sharedPrefs.getString("chart_timeframe", "3"));
if (lowResMode) {
bgGraphBuilder = new BgGraphBuilder(getApplicationContext(), bgDataList, predictionList, tempWatchDataList, basalWatchDataList, bolusWatchDataList, pointSize, midColor, gridColor, basalBackgroundColor, basalCenterColor, bolusColor, Color.GREEN, timeframe);
bgGraphBuilder = new BgGraphBuilder(getApplicationContext(), rawData, pointSize, midColor, gridColor, basalBackgroundColor, basalCenterColor, bolusColor, Color.GREEN, timeframe);
} else {
bgGraphBuilder = new BgGraphBuilder(getApplicationContext(), bgDataList,predictionList, tempWatchDataList, basalWatchDataList, bolusWatchDataList, pointSize, highColor, lowColor, midColor, gridColor, basalBackgroundColor, basalCenterColor, bolusColor, Color.GREEN, timeframe);
bgGraphBuilder = new BgGraphBuilder(getApplicationContext(), rawData, pointSize, highColor, lowColor, midColor, gridColor, basalBackgroundColor, basalCenterColor, bolusColor, Color.GREEN, timeframe);
}
chart.setLineChartData(bgGraphBuilder.lineData());
@ -646,54 +556,4 @@ public abstract class BaseWatchFace extends WatchFace implements SharedPreferen
}
}
private void loadBasalsAndTemps(DataMap dataMap) {
ArrayList<DataMap> temps = dataMap.getDataMapArrayList("temps");
if (temps != null) {
tempWatchDataList = new ArrayList<>();
for (DataMap temp : temps) {
TempWatchData twd = new TempWatchData();
twd.startTime = temp.getLong("starttime");
twd.startBasal = temp.getDouble("startBasal");
twd.endTime = temp.getLong("endtime");
twd.endBasal = temp.getDouble("endbasal");
twd.amount = temp.getDouble("amount");
tempWatchDataList.add(twd);
}
}
ArrayList<DataMap> basals = dataMap.getDataMapArrayList("basals");
if (basals != null) {
basalWatchDataList = new ArrayList<>();
for (DataMap basal : basals) {
BasalWatchData bwd = new BasalWatchData();
bwd.startTime = basal.getLong("starttime");
bwd.endTime = basal.getLong("endtime");
bwd.amount = basal.getDouble("amount");
basalWatchDataList.add(bwd);
}
}
ArrayList<DataMap> boluses = dataMap.getDataMapArrayList("boluses");
if (boluses != null) {
bolusWatchDataList = new ArrayList<>();
for (DataMap bolus : boluses) {
BolusWatchData bwd = new BolusWatchData();
bwd.date = bolus.getLong("date");
bwd.bolus = bolus.getDouble("bolus");
bwd.carbs = bolus.getDouble("carbs");
bwd.isSMB = bolus.getBoolean("isSMB");
bwd.isValid = bolus.getBoolean("isValid");
bolusWatchDataList.add(bwd);
}
}
ArrayList<DataMap> predictions = dataMap.getDataMapArrayList("predictions");
if (boluses != null) {
predictionList = new ArrayList<>();
for (DataMap prediction : predictions) {
BgWatchData bwd = new BgWatchData();
bwd.timestamp = prediction.getLong("timestamp");
bwd.sgv = prediction.getDouble("sgv");
bwd.color = prediction.getInt("color");
predictionList.add(bwd);
}
}
}
}

View file

@ -18,6 +18,7 @@ import java.util.TimeZone;
import info.nightscout.androidaps.data.BasalWatchData;
import info.nightscout.androidaps.data.BgWatchData;
import info.nightscout.androidaps.data.BolusWatchData;
import info.nightscout.androidaps.data.DisplayRawData;
import info.nightscout.androidaps.data.TempWatchData;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
@ -115,6 +116,42 @@ public class BgGraphBuilder {
this.end_time = (predictionEndTime>end_time)?predictionEndTime:end_time;
}
public BgGraphBuilder(Context context, DisplayRawData raw, int aPointSize, int aHighColor, int aLowColor, int aMidColor, int gridColour, int basalBackgroundColor, int basalCenterColor, int bolusInvalidColor, int carbsColor, int timespan) {
this(context,
raw.bgDataList,
raw.predictionList,
raw.tempWatchDataList,
raw.basalWatchDataList,
raw.bolusWatchDataList,
aPointSize,
aHighColor,
aLowColor,
aMidColor,
gridColour,
basalBackgroundColor,
basalCenterColor,
bolusInvalidColor,
carbsColor,
timespan);
}
public BgGraphBuilder(Context context, DisplayRawData raw, int aPointSize, int aMidColor, int gridColour, int basalBackgroundColor, int basalCenterColor, int bolusInvalidColor, int carbsColor, int timespan) {
this(context,
raw.bgDataList,
raw.predictionList,
raw.tempWatchDataList,
raw.basalWatchDataList,
raw.bolusWatchDataList,
aPointSize,
aMidColor,
gridColour,
basalBackgroundColor,
basalCenterColor,
bolusInvalidColor,
carbsColor,
timespan);
}
public LineChartData lineData() {
LineChartData lineData = new LineChartData(defaultLines());
lineData.setAxisYLeft(yAxis());

View file

@ -48,13 +48,13 @@ public class Cockpit extends BaseWatchFace {
setTextSizes();
if (mHighLight != null && mLowLight != null) {
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mHighLight.setBackgroundResource(R.drawable.airplane_led_yellow_lit);
mLowLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mHighLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
mLowLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mHighLight.setBackgroundResource(R.drawable.airplane_led_grey_unlit);
mLowLight.setBackgroundResource(R.drawable.airplane_led_red_lit);
}
@ -82,7 +82,7 @@ public class Cockpit extends BaseWatchFace {
protected void setTextSizes() {
if (mIOB2 != null) {
if (detailedIOB) {
if (rawData.detailedIOB) {
if (bIsRound) {
mIOB2.setTextSize(10);
} else {

View file

@ -68,15 +68,15 @@ public class Home extends BaseWatchFace {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_statusView));
mTime.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_mTime));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_background));
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
@ -88,7 +88,7 @@ public class Home extends BaseWatchFace {
mTimestamp.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_TimestampOld));
}
if (batteryLevel == 1) {
if (rawData.batteryLevel == 1) {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBattery));
} else {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBatteryEmpty));
@ -133,15 +133,15 @@ public class Home extends BaseWatchFace {
if (getCurrentWatchMode() == WatchMode.INTERACTIVE) {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_stripe_background));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_background));
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
@ -153,7 +153,7 @@ public class Home extends BaseWatchFace {
mTimestamp.setTextColor(Color.RED);
}
if (batteryLevel == 1) {
if (rawData.batteryLevel == 1) {
mUploaderBattery.setTextColor(Color.WHITE);
} else {
mUploaderBattery.setTextColor(Color.RED);

View file

@ -78,13 +78,13 @@ public class Home2 extends BaseWatchFace {
setTextSizes();
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
}
@ -95,7 +95,7 @@ public class Home2 extends BaseWatchFace {
mTimestamp.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_TimestampOld));
}
if (batteryLevel == 1) {
if (rawData.batteryLevel == 1) {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBattery));
} else {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBatteryEmpty));
@ -176,13 +176,13 @@ public class Home2 extends BaseWatchFace {
setTextSizes();
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
}
@ -193,7 +193,7 @@ public class Home2 extends BaseWatchFace {
mTimestamp.setTextColor(Color.RED);
}
if (batteryLevel == 1) {
if (rawData.batteryLevel == 1) {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else {
mUploaderBattery.setTextColor(Color.RED);
@ -229,7 +229,7 @@ public class Home2 extends BaseWatchFace {
if (mIOB1 != null && mIOB2 != null) {
if (detailedIOB) {
if (rawData.detailedIOB) {
mIOB1.setTextSize(14);
mIOB2.setTextSize(10);
} else {

View file

@ -52,15 +52,15 @@ public class LargeHome extends BaseWatchFace {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_mLinearLayout));
mTime.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_mTime));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_background));
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_highColor));
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_midColor));
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_lowColor));
@ -72,7 +72,7 @@ public class LargeHome extends BaseWatchFace {
mTimestamp.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_TimestampOld));
}
if (batteryLevel == 1) {
if (rawData.batteryLevel == 1) {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBattery));
} else {
mUploaderBattery.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_uploaderBatteryEmpty));
@ -86,15 +86,15 @@ public class LargeHome extends BaseWatchFace {
if (getCurrentWatchMode() == WatchMode.INTERACTIVE) {
mLinearLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_stripe_background));
mRelativeLayout.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.light_background));
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_highColor));
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_midColor));
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
mDelta.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
mDirection.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.light_lowColor));
@ -106,7 +106,7 @@ public class LargeHome extends BaseWatchFace {
mTimestamp.setTextColor(Color.RED);
}
if (batteryLevel == 1) {
if (rawData.batteryLevel == 1) {
mUploaderBattery.setTextColor(Color.WHITE);
} else {
mUploaderBattery.setTextColor(Color.RED);
@ -116,15 +116,15 @@ public class LargeHome extends BaseWatchFace {
} else {
mRelativeLayout.setBackgroundColor(Color.BLACK);
mLinearLayout.setBackgroundColor(Color.LTGRAY);
if (sgvLevel == 1) {
if (rawData.sgvLevel == 1) {
mSgv.setTextColor(Color.YELLOW);
mDirection.setTextColor(Color.YELLOW);
mDelta.setTextColor(Color.YELLOW);
} else if (sgvLevel == 0) {
} else if (rawData.sgvLevel == 0) {
mSgv.setTextColor(Color.WHITE);
mDirection.setTextColor(Color.WHITE);
mDelta.setTextColor(Color.WHITE);
} else if (sgvLevel == -1) {
} else if (rawData.sgvLevel == -1) {
mSgv.setTextColor(Color.RED);
mDirection.setTextColor(Color.RED);
mDelta.setTextColor(Color.RED);

View file

@ -83,24 +83,24 @@ public class Steampunk extends BaseWatchFace {
}
}
if (!sSgv.equals("---")) {
if (!rawData.sSgv.equals("---")) {
float rotationAngle = 0f; //by default, show ? on the dial (? is at 0 degrees on the dial)
if (!sUnits.equals("-")) {
if (!rawData.sUnits.equals("-")) {
//ensure the glucose dial is the correct units
if (sUnits.equals("mmol")) {
if (rawData.sUnits.equals("mmol")) {
mGlucoseDial.setImageResource(R.drawable.steampunk_dial_mmol);
} else {
mGlucoseDial.setImageResource(R.drawable.steampunk_dial_mgdl);
}
//convert the Sgv to degrees of rotation
if (sUnits.equals("mmol")) {
rotationAngle = Float.valueOf(sSgv) * 18f; //convert to mg/dL, which is equivalent to degrees
if (rawData.sUnits.equals("mmol")) {
rotationAngle = Float.valueOf(rawData.sSgv) * 18f; //convert to mg/dL, which is equivalent to degrees
} else {
rotationAngle = Float.valueOf(sSgv); //if glucose a value is received, use it to determine the amount of rotation of the dial.
rotationAngle = Float.valueOf(rawData.sSgv); //if glucose a value is received, use it to determine the amount of rotation of the dial.
}
}
@ -122,36 +122,36 @@ public class Steampunk extends BaseWatchFace {
//set the delta gauge and rotate the delta pointer
float deltaIsNegative = 1f; //by default go clockwise
if (!sAvgDelta.equals("--")) { //if a legitimate delta value is received, then...
if (sAvgDelta.substring(0,1).equals("-")) deltaIsNegative = -1f; //if the delta is negative, go counter-clockwise
if (!rawData.sAvgDelta.equals("--")) { //if a legitimate delta value is received, then...
if (rawData.sAvgDelta.substring(0,1).equals("-")) deltaIsNegative = -1f; //if the delta is negative, go counter-clockwise
//ensure the delta gauge is the right units and granularity
if (!sUnits.equals("-")) {
if (sUnits.equals("mmol")) {
if (!rawData.sUnits.equals("-")) {
if (rawData.sUnits.equals("mmol")) {
if (sharedPrefs.getString("delta_granularity", "2").equals("1")) { //low
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mmol_10);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 30f); //get rid of the sign so it can be converted to float.
deltaRotationAngle = (Float.valueOf(rawData.sAvgDelta.substring(1)) * 30f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("2")) { //medium
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mmol_05);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 60f); //get rid of the sign so it can be converted to float.
deltaRotationAngle = (Float.valueOf(rawData.sAvgDelta.substring(1)) * 60f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("3")) { //high
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mmol_03);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 100f); //get rid of the sign so it can be converted to float.
deltaRotationAngle = (Float.valueOf(rawData.sAvgDelta.substring(1)) * 100f); //get rid of the sign so it can be converted to float.
}
} else {
if (sharedPrefs.getString("delta_granularity", "2").equals("1")) { //low
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mgdl_20);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 1.5f); //get rid of the sign so it can be converted to float.
deltaRotationAngle = (Float.valueOf(rawData.sAvgDelta.substring(1)) * 1.5f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("2")) { //medium
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mgdl_10);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 3f); //get rid of the sign so it can be converted to float.
deltaRotationAngle = (Float.valueOf(rawData.sAvgDelta.substring(1)) * 3f); //get rid of the sign so it can be converted to float.
}
if (sharedPrefs.getString("delta_granularity", "2").equals("3")) { //high
mLinearLayout.setBackgroundResource(R.drawable.steampunk_gauge_mgdl_5);
deltaRotationAngle = (Float.valueOf(sAvgDelta.substring(1)) * 6f); //get rid of the sign so it can be converted to float.
deltaRotationAngle = (Float.valueOf(rawData.sAvgDelta.substring(1)) * 6f); //get rid of the sign so it can be converted to float.
}
}
}
@ -213,7 +213,7 @@ public class Steampunk extends BaseWatchFace {
//top row. large font unless text too big (i.e. detailedIOB)
mCOB2.setTextSize(fontLarge);
mBasalRate.setTextSize(fontLarge);
if (sIOB2.length() < 7) {
if (rawData.sIOB2.length() < 7) {
mIOB2.setTextSize(fontLarge);
} else {
mIOB2.setTextSize(fontSmall);

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="38.4175"
android:viewportHeight="38.4175"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/black"
android:pathData="M19.2086,0C16.6157,0 14.1552,0.5028 11.9062,1.4289C7.1702,3.3868 3.3868,7.1702 1.4288,11.9062C0.5028,14.1552 -0,16.6157 -0,19.2086C-0,21.8016 0.5028,24.2621 1.4288,26.511C3.3868,31.2471 7.1702,35.031 11.9062,36.989C14.1552,37.915 16.6157,38.4173 19.2086,38.4173C21.8015,38.4173 24.2621,37.915 26.511,36.989C31.2471,35.031 35.031,31.2471 36.9889,26.511C37.915,24.2621 38.4173,21.8016 38.4173,19.2086C38.4173,16.6157 37.915,14.1552 36.9889,11.9062C35.031,7.1702 31.2471,3.3868 26.511,1.4289C24.2621,0.5028 21.8015,0 19.2086,0zM19.1823,2.99C28.1252,2.99 35.3746,10.2658 35.3746,19.1823C35.3746,22.2515 34.5282,25.1087 33.0466,27.5694L33.0466,19.235C33.0731,16.6421 32.4643,14.2612 31.2472,12.1181C30.0301,9.975 28.3632,8.3077 26.2201,7.0642C25.2941,6.535 24.3151,6.1119 23.3097,5.8208C22.1984,5.4769 21.0607,6.3765 21.0607,7.5406C21.0607,8.3344 21.5901,8.9959 22.3309,9.2341C23.0189,9.4457 23.6539,9.7365 24.2889,10.1069C25.8235,11.0329 27.0404,12.2768 27.9135,13.8643C28.7867,15.4518 29.2365,17.2243 29.2365,19.2086C29.2365,21.193 28.7867,22.966 27.9135,24.5535C27.0139,26.141 25.8235,27.3845 24.2889,28.2841C23.8656,28.5222 23.4422,28.734 22.9924,28.9192L22.9924,28.0722L22.9924,26.1674L22.9924,24.5799L22.9924,21.8018C22.9924,21.2461 22.8073,20.7697 22.4369,20.3993C22.0665,20.0289 21.6164,19.8437 21.0344,19.8437C20.5052,19.8437 20.0556,20.0289 19.6587,20.3993C19.2883,20.7697 19.0763,21.2197 19.0763,21.8018L19.0763,24.5799L19.0763,26.1674L19.0763,28.1781L19.0763,29.7393L19.0763,31.009C19.0763,31.5381 19.2619,31.9882 19.6587,32.3851C20.0292,32.7555 20.5052,32.967 21.0344,32.967C21.3254,32.967 21.6163,32.9142 21.8545,32.8083C22.8334,32.5702 23.7858,32.2526 24.659,31.7764C26.4581,30.8503 27.9399,29.6071 29.1305,27.9931L29.1305,31.009C29.1305,31.3265 29.1833,31.5915 29.2892,31.8296C26.511,34.0521 22.9923,35.3746 19.1823,35.3746C10.2394,35.3746 2.99,28.0987 2.99,19.1823C2.99,10.2658 10.2658,2.99 19.1823,2.99zM17.1716,5.3712C16.9334,5.3712 16.7218,5.4238 16.5101,5.4767C14.9226,5.7413 13.4145,6.2704 12.0122,7.0642C9.8955,8.2813 8.2286,9.975 6.9851,12.1181C5.768,14.2612 5.1594,16.6421 5.1594,19.235C5.1594,21.8279 5.7412,24.2094 6.9319,26.326C8.1225,28.4427 9.7366,30.1096 11.8003,31.3531C12.7528,31.9352 13.7582,32.3586 14.843,32.6497C16.0072,32.9672 17.1716,32.1206 17.1716,30.9035C17.1716,30.0833 16.6159,29.4215 15.8486,29.1569C15.1872,28.9452 14.5255,28.6545 13.917,28.2841C12.3559,27.3845 11.1392,26.141 10.266,24.5535C9.3665,22.966 8.9431,21.193 8.9431,19.2086C8.9431,17.2243 9.3929,15.4518 10.266,13.8643C11.1392,12.2768 12.3824,11.0329 13.917,10.1069C14.3403,9.8688 14.7901,9.6575 15.2399,9.4723L15.2399,10.0542L15.2399,11.6417L15.2399,13.6524L15.2399,15.2135L15.2399,16.4837C15.2399,17.0129 15.4254,17.4625 15.8223,17.8594C16.1927,18.2298 16.6688,18.4412 17.1979,18.4412C17.7535,18.4412 18.23,18.2562 18.6004,17.8594C18.9708,17.489 19.1559,17.0129 19.1559,16.4837L19.1559,15.2135L19.1559,13.5465L19.1559,11.6417L19.1559,10.0542L19.1559,7.276C19.1559,6.7204 18.9708,6.244 18.6004,5.8735C18.2035,5.556 17.7536,5.3712 17.1716,5.3712z"
android:strokeWidth="0.99999994" />
</vector>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="38.4175"
android:viewportHeight="38.4175"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M19.2086,0C16.6157,0 14.1552,0.5028 11.9062,1.4289C7.1702,3.3868 3.3868,7.1702 1.4288,11.9062C0.5028,14.1552 -0,16.6157 -0,19.2086C-0,21.8016 0.5028,24.2621 1.4288,26.511C3.3868,31.2471 7.1702,35.031 11.9062,36.989C14.1552,37.915 16.6157,38.4173 19.2086,38.4173C21.8015,38.4173 24.2621,37.915 26.511,36.989C31.2471,35.031 35.031,31.2471 36.9889,26.511C37.915,24.2621 38.4173,21.8016 38.4173,19.2086C38.4173,16.6157 37.915,14.1552 36.9889,11.9062C35.031,7.1702 31.2471,3.3868 26.511,1.4289C24.2621,0.5028 21.8015,0 19.2086,0zM19.1823,2.99C28.1252,2.99 35.3746,10.2658 35.3746,19.1823C35.3746,22.2515 34.5282,25.1087 33.0466,27.5694L33.0466,19.235C33.0731,16.6421 32.4643,14.2612 31.2472,12.1181C30.0301,9.975 28.3632,8.3077 26.2201,7.0642C25.2941,6.535 24.3151,6.1119 23.3097,5.8208C22.1984,5.4769 21.0607,6.3765 21.0607,7.5406C21.0607,8.3344 21.5901,8.9959 22.3309,9.2341C23.0189,9.4457 23.6539,9.7365 24.2889,10.1069C25.8235,11.0329 27.0404,12.2768 27.9135,13.8643C28.7867,15.4518 29.2365,17.2243 29.2365,19.2086C29.2365,21.193 28.7867,22.966 27.9135,24.5535C27.0139,26.141 25.8235,27.3845 24.2889,28.2841C23.8656,28.5222 23.4422,28.734 22.9924,28.9192L22.9924,28.0722L22.9924,26.1674L22.9924,24.5799L22.9924,21.8018C22.9924,21.2461 22.8073,20.7697 22.4369,20.3993C22.0665,20.0289 21.6164,19.8437 21.0344,19.8437C20.5052,19.8437 20.0556,20.0289 19.6587,20.3993C19.2883,20.7697 19.0763,21.2197 19.0763,21.8018L19.0763,24.5799L19.0763,26.1674L19.0763,28.1781L19.0763,29.7393L19.0763,31.009C19.0763,31.5381 19.2619,31.9882 19.6587,32.3851C20.0292,32.7555 20.5052,32.967 21.0344,32.967C21.3254,32.967 21.6163,32.9142 21.8545,32.8083C22.8334,32.5702 23.7858,32.2526 24.659,31.7764C26.4581,30.8503 27.9399,29.6071 29.1305,27.9931L29.1305,31.009C29.1305,31.3265 29.1833,31.5915 29.2892,31.8296C26.511,34.0521 22.9923,35.3746 19.1823,35.3746C10.2394,35.3746 2.99,28.0987 2.99,19.1823C2.99,10.2658 10.2658,2.99 19.1823,2.99zM17.1716,5.3712C16.9334,5.3712 16.7218,5.4238 16.5101,5.4767C14.9226,5.7413 13.4145,6.2704 12.0122,7.0642C9.8955,8.2813 8.2286,9.975 6.9851,12.1181C5.768,14.2612 5.1594,16.6421 5.1594,19.235C5.1594,21.8279 5.7412,24.2094 6.9319,26.326C8.1225,28.4427 9.7366,30.1096 11.8003,31.3531C12.7528,31.9352 13.7582,32.3586 14.843,32.6497C16.0072,32.9672 17.1716,32.1206 17.1716,30.9035C17.1716,30.0833 16.6159,29.4215 15.8486,29.1569C15.1872,28.9452 14.5255,28.6545 13.917,28.2841C12.3559,27.3845 11.1392,26.141 10.266,24.5535C9.3665,22.966 8.9431,21.193 8.9431,19.2086C8.9431,17.2243 9.3929,15.4518 10.266,13.8643C11.1392,12.2768 12.3824,11.0329 13.917,10.1069C14.3403,9.8688 14.7901,9.6575 15.2399,9.4723L15.2399,10.0542L15.2399,11.6417L15.2399,13.6524L15.2399,15.2135L15.2399,16.4837C15.2399,17.0129 15.4254,17.4625 15.8223,17.8594C16.1927,18.2298 16.6688,18.4412 17.1979,18.4412C17.7535,18.4412 18.23,18.2562 18.6004,17.8594C18.9708,17.489 19.1559,17.0129 19.1559,16.4837L19.1559,15.2135L19.1559,13.5465L19.1559,11.6417L19.1559,10.0542L19.1559,7.276C19.1559,6.7204 18.9708,6.244 18.6004,5.8735C18.2035,5.556 17.7536,5.3712 17.1716,5.3712z"
android:strokeWidth="0.99999994" />
</vector>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="38.4175"
android:viewportHeight="38.4175"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/darker_gray"
android:pathData="M19.2086,0C16.6157,0 14.1552,0.5028 11.9062,1.4289C7.1702,3.3868 3.3868,7.1702 1.4288,11.9062C0.5028,14.1552 -0,16.6157 -0,19.2086C-0,21.8016 0.5028,24.2621 1.4288,26.511C3.3868,31.2471 7.1702,35.031 11.9062,36.989C14.1552,37.915 16.6157,38.4173 19.2086,38.4173C21.8015,38.4173 24.2621,37.915 26.511,36.989C31.2471,35.031 35.031,31.2471 36.9889,26.511C37.915,24.2621 38.4173,21.8016 38.4173,19.2086C38.4173,16.6157 37.915,14.1552 36.9889,11.9062C35.031,7.1702 31.2471,3.3868 26.511,1.4289C24.2621,0.5028 21.8015,0 19.2086,0zM19.1823,2.99C28.1252,2.99 35.3746,10.2658 35.3746,19.1823C35.3746,22.2515 34.5282,25.1087 33.0466,27.5694L33.0466,19.235C33.0731,16.6421 32.4643,14.2612 31.2472,12.1181C30.0301,9.975 28.3632,8.3077 26.2201,7.0642C25.2941,6.535 24.3151,6.1119 23.3097,5.8208C22.1984,5.4769 21.0607,6.3765 21.0607,7.5406C21.0607,8.3344 21.5901,8.9959 22.3309,9.2341C23.0189,9.4457 23.6539,9.7365 24.2889,10.1069C25.8235,11.0329 27.0404,12.2768 27.9135,13.8643C28.7867,15.4518 29.2365,17.2243 29.2365,19.2086C29.2365,21.193 28.7867,22.966 27.9135,24.5535C27.0139,26.141 25.8235,27.3845 24.2889,28.2841C23.8656,28.5222 23.4422,28.734 22.9924,28.9192L22.9924,28.0722L22.9924,26.1674L22.9924,24.5799L22.9924,21.8018C22.9924,21.2461 22.8073,20.7697 22.4369,20.3993C22.0665,20.0289 21.6164,19.8437 21.0344,19.8437C20.5052,19.8437 20.0556,20.0289 19.6587,20.3993C19.2883,20.7697 19.0763,21.2197 19.0763,21.8018L19.0763,24.5799L19.0763,26.1674L19.0763,28.1781L19.0763,29.7393L19.0763,31.009C19.0763,31.5381 19.2619,31.9882 19.6587,32.3851C20.0292,32.7555 20.5052,32.967 21.0344,32.967C21.3254,32.967 21.6163,32.9142 21.8545,32.8083C22.8334,32.5702 23.7858,32.2526 24.659,31.7764C26.4581,30.8503 27.9399,29.6071 29.1305,27.9931L29.1305,31.009C29.1305,31.3265 29.1833,31.5915 29.2892,31.8296C26.511,34.0521 22.9923,35.3746 19.1823,35.3746C10.2394,35.3746 2.99,28.0987 2.99,19.1823C2.99,10.2658 10.2658,2.99 19.1823,2.99zM17.1716,5.3712C16.9334,5.3712 16.7218,5.4238 16.5101,5.4767C14.9226,5.7413 13.4145,6.2704 12.0122,7.0642C9.8955,8.2813 8.2286,9.975 6.9851,12.1181C5.768,14.2612 5.1594,16.6421 5.1594,19.235C5.1594,21.8279 5.7412,24.2094 6.9319,26.326C8.1225,28.4427 9.7366,30.1096 11.8003,31.3531C12.7528,31.9352 13.7582,32.3586 14.843,32.6497C16.0072,32.9672 17.1716,32.1206 17.1716,30.9035C17.1716,30.0833 16.6159,29.4215 15.8486,29.1569C15.1872,28.9452 14.5255,28.6545 13.917,28.2841C12.3559,27.3845 11.1392,26.141 10.266,24.5535C9.3665,22.966 8.9431,21.193 8.9431,19.2086C8.9431,17.2243 9.3929,15.4518 10.266,13.8643C11.1392,12.2768 12.3824,11.0329 13.917,10.1069C14.3403,9.8688 14.7901,9.6575 15.2399,9.4723L15.2399,10.0542L15.2399,11.6417L15.2399,13.6524L15.2399,15.2135L15.2399,16.4837C15.2399,17.0129 15.4254,17.4625 15.8223,17.8594C16.1927,18.2298 16.6688,18.4412 17.1979,18.4412C17.7535,18.4412 18.23,18.2562 18.6004,17.8594C18.9708,17.489 19.1559,17.0129 19.1559,16.4837L19.1559,15.2135L19.1559,13.5465L19.1559,11.6417L19.1559,10.0542L19.1559,7.276C19.1559,6.7204 18.9708,6.244 18.6004,5.8735C18.2035,5.556 17.7536,5.3712 17.1716,5.3712z"
android:strokeWidth="0.99999994" />
</vector>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="38.4175"
android:viewportHeight="38.4175"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M19.2086,0C16.6157,0 14.1552,0.5028 11.9062,1.4289C7.1702,3.3868 3.3868,7.1702 1.4288,11.9062C0.5028,14.1552 -0,16.6157 -0,19.2086C-0,21.8016 0.5028,24.2621 1.4288,26.511C3.3868,31.2471 7.1702,35.031 11.9062,36.989C14.1552,37.915 16.6157,38.4173 19.2086,38.4173C21.8015,38.4173 24.2621,37.915 26.511,36.989C31.2471,35.031 35.031,31.2471 36.9889,26.511C37.915,24.2621 38.4173,21.8016 38.4173,19.2086C38.4173,16.6157 37.915,14.1552 36.9889,11.9062C35.031,7.1702 31.2471,3.3868 26.511,1.4289C24.2621,0.5028 21.8015,0 19.2086,0zM19.1823,2.99C28.1252,2.99 35.3746,10.2658 35.3746,19.1823C35.3746,22.2515 34.5282,25.1087 33.0466,27.5694L33.0466,19.235C33.0731,16.6421 32.4643,14.2612 31.2472,12.1181C30.0301,9.975 28.3632,8.3077 26.2201,7.0642C25.2941,6.535 24.3151,6.1119 23.3097,5.8208C22.1984,5.4769 21.0607,6.3765 21.0607,7.5406C21.0607,8.3344 21.5901,8.9959 22.3309,9.2341C23.0189,9.4457 23.6539,9.7365 24.2889,10.1069C25.8235,11.0329 27.0404,12.2768 27.9135,13.8643C28.7867,15.4518 29.2365,17.2243 29.2365,19.2086C29.2365,21.193 28.7867,22.966 27.9135,24.5535C27.0139,26.141 25.8235,27.3845 24.2889,28.2841C23.8656,28.5222 23.4422,28.734 22.9924,28.9192L22.9924,28.0722L22.9924,26.1674L22.9924,24.5799L22.9924,21.8018C22.9924,21.2461 22.8073,20.7697 22.4369,20.3993C22.0665,20.0289 21.6164,19.8437 21.0344,19.8437C20.5052,19.8437 20.0556,20.0289 19.6587,20.3993C19.2883,20.7697 19.0763,21.2197 19.0763,21.8018L19.0763,24.5799L19.0763,26.1674L19.0763,28.1781L19.0763,29.7393L19.0763,31.009C19.0763,31.5381 19.2619,31.9882 19.6587,32.3851C20.0292,32.7555 20.5052,32.967 21.0344,32.967C21.3254,32.967 21.6163,32.9142 21.8545,32.8083C22.8334,32.5702 23.7858,32.2526 24.659,31.7764C26.4581,30.8503 27.9399,29.6071 29.1305,27.9931L29.1305,31.009C29.1305,31.3265 29.1833,31.5915 29.2892,31.8296C26.511,34.0521 22.9923,35.3746 19.1823,35.3746C10.2394,35.3746 2.99,28.0987 2.99,19.1823C2.99,10.2658 10.2658,2.99 19.1823,2.99zM17.1716,5.3712C16.9334,5.3712 16.7218,5.4238 16.5101,5.4767C14.9226,5.7413 13.4145,6.2704 12.0122,7.0642C9.8955,8.2813 8.2286,9.975 6.9851,12.1181C5.768,14.2612 5.1594,16.6421 5.1594,19.235C5.1594,21.8279 5.7412,24.2094 6.9319,26.326C8.1225,28.4427 9.7366,30.1096 11.8003,31.3531C12.7528,31.9352 13.7582,32.3586 14.843,32.6497C16.0072,32.9672 17.1716,32.1206 17.1716,30.9035C17.1716,30.0833 16.6159,29.4215 15.8486,29.1569C15.1872,28.9452 14.5255,28.6545 13.917,28.2841C12.3559,27.3845 11.1392,26.141 10.266,24.5535C9.3665,22.966 8.9431,21.193 8.9431,19.2086C8.9431,17.2243 9.3929,15.4518 10.266,13.8643C11.1392,12.2768 12.3824,11.0329 13.917,10.1069C14.3403,9.8688 14.7901,9.6575 15.2399,9.4723L15.2399,10.0542L15.2399,11.6417L15.2399,13.6524L15.2399,15.2135L15.2399,16.4837C15.2399,17.0129 15.4254,17.4625 15.8223,17.8594C16.1927,18.2298 16.6688,18.4412 17.1979,18.4412C17.7535,18.4412 18.23,18.2562 18.6004,17.8594C18.9708,17.489 19.1559,17.0129 19.1559,16.4837L19.1559,15.2135L19.1559,13.5465L19.1559,11.6417L19.1559,10.0542L19.1559,7.276C19.1559,6.7204 18.9708,6.244 18.6004,5.8735C18.2035,5.556 17.7536,5.3712 17.1716,5.3712z"
android:strokeWidth="0.99999994" />
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/alert.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z" />
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/alert_outline.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16" />
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_alert_variant_outline.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M14 20H6V6H14M14.67 4H13V2H7V4H5.33C4.6 4 4 4.6 4 5.33V20.67C4 21.4 4.6 22 5.33 22H14.67C15.4 22 16 21.4 16 20.67V5.33C16 4.6 15.4 4 14.67 4M21 8H19V13H21V8M21 15H19V17H21V15Z" />
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76Z" />
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_10.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,18.5H4V6H12V18.5Z" />
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="m5,2v2h-2c-0.5523,0 -1,0.4477 -1,1v16c0,0.5523 0.4477,1 1,1h10c0.5523,0 1,-0.4477 1,-1v-16c0,-0.5523 -0.4477,-1 -1,-1h-2v-2zM20.07,4.9297 L18.6598,6.3399c3.13,3.12 3.13,8.1903 0,11.32l1.4102,1.4102c3.9,-3.9 3.9,-10.231 0,-14.141zM4,6h8v14h-2v-1.5h-2v1.5h-2v-1.5h-2zM17.24,7.7598 L15.8298,9.17c1.56,1.56 1.56,4.0902 0,5.6602l1.4102,1.4102c2.34,-2.34 2.34,-6.1405 0,-8.4805z"/>
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_20.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,17H4V6H12V17Z" />
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="m5,2v2h-2c-0.5523,0 -1,0.4477 -1,1v16c0,0.5523 0.4477,1 1,1h10c0.5523,0 1,-0.4477 1,-1v-16c0,-0.5523 -0.4477,-1 -1,-1h-2v-2zM20.07,4.9297 L18.6598,6.3399c3.13,3.12 3.13,8.1903 0,11.32l1.4102,1.4102c3.9,-3.9 3.9,-10.231 0,-14.141zM4,6h8v11h-2v1h2v2h-2v-2h-2v2h-2v-2h-2zM6,18h2v-1h-2zM17.24,7.76 L15.8298,9.1702c1.56,1.56 1.56,4.0902 0,5.6602l1.4102,1.4102c2.34,-2.34 2.34,-6.1405 0,-8.4805z"/>
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_30.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,16H4V6H12V16Z" />
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="m5,2v2h-2c-0.5523,0 -1,0.4477 -1,1v16c0,0.5523 0.4477,1 1,1h10c0.5523,0 1,-0.4477 1,-1v-16c0,-0.5523 -0.4477,-1 -1,-1h-2v-2zM20.07,4.9297 L18.6598,6.3399c3.13,3.12 3.13,8.1903 0,11.32l1.4102,1.4102c3.9,-3.9 3.9,-10.231 0,-14.141zM4,6h8v10h-2v2h2v2h-2v-2h-2v2h-2v-2h-2zM6,18h2v-2h-2zM17.24,7.76 L15.8298,9.1702c1.56,1.56 1.56,4.0902 0,5.6602l1.4102,1.4102c2.34,-2.34 2.34,-6.1405 0,-8.4805z"/>
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_40.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,14.5H4V6H12V14.5Z" />
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="m5,2v2h-2c-0.5523,0 -1,0.4477 -1,1v16c0,0.5523 0.4477,1 1,1h10c0.5523,0 1,-0.4477 1,-1v-16c0,-0.5523 -0.4477,-1 -1,-1h-2v-2zM20.07,4.9297 L18.6598,6.3399c3.13,3.12 3.13,8.1903 0,11.32l1.4102,1.4102c3.9,-3.9 3.9,-10.231 0,-14.141zM4,6h8v10h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-1.5h-2zM6,16v2h2v-2zM8,16h2v-1.5h-2zM17.2402,7.7598 L15.83,9.17c1.56,1.56 1.56,4.0902 0,5.6602l1.4102,1.4102c2.34,-2.34 2.34,-6.1405 0,-8.4805z"/>
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_50.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,13H4V6H12V13Z" />
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="m5,2v2h-2c-0.5523,0 -1,0.4477 -1,1v16c0,0.5523 0.4477,1 1,1h10c0.5523,0 1,-0.4477 1,-1v-16c0,-0.5523 -0.4477,-1 -1,-1h-2v-2zM20.07,4.9297 L18.6598,6.3399c3.13,3.12 3.13,8.1903 0,11.32l1.4102,1.4102c3.9,-3.9 3.9,-10.231 0,-14.141zM4,6h8v7h-2v1h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2zM6,14h2v-1h-2zM8,14v2h2v-2zM8,16h-2v2h2zM17.2402,7.7598 L15.83,9.17c1.56,1.56 1.56,4.0902 0,5.6602l1.4102,1.4102c2.34,-2.34 2.34,-6.1405 0,-8.4805z"/>
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_60.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,11.6H4V6H12V11.6Z" />
</vector>

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="m5,2v2h-2c-0.5523,0 -1,0.4477 -1,1v16c0,0.5523 0.4477,1 1,1h10c0.5523,0 1,-0.4477 1,-1v-16c0,-0.5523 -0.4477,-1 -1,-1h-2v-2zM20.07,4.9297 L18.6598,6.3399c3.13,3.12 3.13,8.1903 0,11.32l1.4102,1.4102c3.9,-3.9 3.9,-10.231 0,-14.141zM4,6h8v6h-2v2h2v2h-2v2h2v2h-2v-2h-2v2h-2v-2h-2v-2h2v-2h-2v-2h2v-0.4004h-2zM6,12v2h2v-2zM8,12h2v-0.4004h-2zM8,14v2h2v-2zM8,16h-2v2h2zM17.2402,7.7598 L15.83,9.17c1.56,1.56 1.56,4.0902 0,5.6602l1.4102,1.4102c2.34,-2.34 2.34,-6.1405 0,-8.4805z"/>
</vector>

View file

@ -0,0 +1,9 @@
<!-- drawable/battery_charging_wireless_70.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path android:fillColor="@android:color/white" android:pathData="M20.07,4.93L18.66,6.34C21.79,9.46 21.79,14.53 18.66,17.66L20.07,19.07C23.97,15.17 23.97,8.84 20.07,4.93M17.24,7.76L15.83,9.17C17.39,10.73 17.39,13.26 15.83,14.83L17.24,16.24C19.58,13.9 19.58,10.1 17.24,7.76M13,4H11V2H5V4H3A1,1 0 0,0 2,5V21A1,1 0 0,0 3,22H13A1,1 0 0,0 14,21V5A1,1 0 0,0 13,4M12,10H4V6H12V10Z" />
</vector>

Some files were not shown because too many files have changed in this diff Show more