A art/phone/application_call/call_mute_W_M.png => art/phone/application_call/call_mute_W_M.png +0 -0
A art/phone/application_call/call_mute_on_W_M.png => art/phone/application_call/call_mute_on_W_M.png +0 -0
A art/phone/application_call/call_speaker_W_M.png => art/phone/application_call/call_speaker_W_M.png +0 -0
A art/phone/application_call/call_speaker_on_W_M.png => art/phone/application_call/call_speaker_on_W_M.png +0 -0
A art/phone/application_call/calllog_arrow_den_W_G.png => art/phone/application_call/calllog_arrow_den_W_G.png +0 -0
A art/phone/application_call/calllog_arrow_in_W_G.png => art/phone/application_call/calllog_arrow_in_W_G.png +0 -0
A art/phone/application_call/calllog_arrow_out_W_G.png => art/phone/application_call/calllog_arrow_out_W_G.png +0 -0
A art/phone/application_call/callog_empty_W_G.png => art/phone/application_call/callog_empty_W_G.png +0 -0
D art/phone/application_call/microphone_off.png => art/phone/application_call/microphone_off.png +0 -0
D art/phone/application_call/microphone_on.png => art/phone/application_call/microphone_on.png +0 -0
D art/phone/application_call/mute.png => art/phone/application_call/mute.png +0 -0
D art/phone/application_call/mute.svg => art/phone/application_call/mute.svg +0 -170
@@ 1,170 0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="40"
- height="40"
- viewBox="0 0 10.583333 10.583334"
- version="1.1"
- id="svg3333"
- inkscape:version="0.92.3 (2405546, 2018-03-11)"
- sodipodi:docname="mute.svg"
- inkscape:export-filename="/home/robert/git/PurePhone/art/phone/application_call/microphone_on.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs3327" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.839192"
- inkscape:cx="8.5471826"
- inkscape:cy="25.550921"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1853"
- inkscape:window-height="1145"
- inkscape:window-x="67"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <sodipodi:guide
- position="4.6302082,5.2621376"
- orientation="0,1"
- id="guide3956"
- inkscape:locked="false" />
- <sodipodi:guide
- position="4.0176017,7.9952839"
- orientation="1,0"
- id="guide3958"
- inkscape:locked="false" />
- </sodipodi:namedview>
- <metadata
- id="metadata3330">
- <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,-286.41666)">
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- id="rect3983"
- width="10.583332"
- height="10.583332"
- x="1.4531367e-06"
- y="286.41666" />
- <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.52916658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 5.2089844,286.73633 c -0.8323323,0 -1.4550791,0.79807 -1.4550782,1.71875 a 0.26460975,0.26460975 0 1 0 0.5273438,0 c -7e-7,-0.6867 0.4449367,-1.18946 0.9277344,-1.18946 0.4827977,0 0.9257822,0.50276 0.9257812,1.18946 a 0.26464845,0.26464845 0 1 0 0.5292969,0 c 1.3e-6,-0.92069 -0.6227458,-1.71875 -1.4550781,-1.71875 z"
- id="path3225"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.52916694;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 2.8269168,292.64068 c -2e-6,1.05207 1.0661119,1.90494 2.3812242,1.90494 0.8373189,0 1.573698,-0.3457 1.9982458,-0.86844 0.2422551,-0.29833 0.3829761,-0.65428 0.3829761,-1.0365"
- id="path3225-2-9"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cssc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2.8269158,290.81712 v 1.82356"
- id="path3274"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7.5893608,290.81712 v 1.82356"
- id="path3276"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4.0176019,296.32164 H 6.398852"
- id="path3280"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5.210291,294.62665 v 1.69499"
- id="path3282"
- inkscape:connector-curvature="0" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer8"
- inkscape:label="mic on"
- style="display:inline"
- sodipodi:insensitive="true">
- <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.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"
- d="M 3.7539062,2.0390625 V 5.5917969 H 4.28125 V 2.0390625 Z"
- id="path3904"
- 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.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"
- d="M 6.1347656,2.0390625 V 5.5917969 H 6.6640625 V 2.0390625 Z"
- id="path3906"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 4.0278088,3.7679501 4.1104911,1.7363281 4.3821616,1.0276228 4.996373,0.7205171 5.6578314,0.7677641 6.1421133,1.3583519 6.342913,2.5631511 6.2247956,6.1539251 5.6696429,6.8508186 4.9609376,6.9571245 4.3467262,6.5319012 4.0136719,5.32162 Z"
- id="path3934"
- inkscape:connector-curvature="0" />
- <path
- transform="translate(0,-286.41665)"
- 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.52916658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 4.0136719,291.73828 a 0.26460975,0.26460975 0 0 0 -0.2597657,0.26953 c -9e-7,0.92069 0.6227459,1.71875 1.4550782,1.71875 0.5299365,0 0.9833218,-0.33413 1.2324218,-0.80273 0.1421466,-0.2674 0.2226563,-0.58152 0.2226563,-0.91602 a 0.26464845,0.26464845 0 1 0 -0.5292969,0 c 0,0.24949 -0.060039,0.47963 -0.1601562,0.66797 -0.175452,0.33006 -0.4582352,0.52149 -0.765625,0.52149 -0.4827977,0 -0.9277351,-0.50276 -0.9277344,-1.18946 a 0.26460975,0.26460975 0 0 0 -0.2675781,-0.26953 z"
- id="path3225-2"
- inkscape:connector-curvature="0" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer7"
- inkscape:label="mic muted"
- style="display:none"
- sodipodi:insensitive="true">
- <path
- transform="translate(0,-286.41665)"
- style="fill:none;stroke:#000000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4.0176019,288.45573 v 0.54897 l 2.3812501,2.38538 v -2.93435"
- id="path3232"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.52916658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 4.0176017,5.5854419 c -1e-6,0.80369 0.53306,1.45521 1.190625,1.45521 0.418663,0 0.786856,-0.26411 0.999132,-0.66344"
- id="path3225-2-98"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csc" />
- <path
- transform="translate(0,-286.41665)"
- style="display:inline;fill:none;stroke:#000000;stroke-width:0.52916676;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1.1995777,287.64831 c 8.2786722,8.34883 8.2786722,8.34883 8.2786722,8.34883"
- id="path3308"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4.0176017,5.5854419 V 4.0455264"
- id="path3981"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
D art/phone/application_call/speaker.svg => art/phone/application_call/speaker.svg +0 -116
@@ 1,116 0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="40"
- height="40"
- viewBox="0 0 10.583333 10.583334"
- version="1.1"
- id="svg2623"
- inkscape:version="0.92.3 (2405546, 2018-03-11)"
- sodipodi:docname="speaker.svg"
- inkscape:export-filename="/home/robert/git/PurePhone/art/phone/application_call/speaker_off.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs2617" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="13.995623"
- inkscape:cy="22.561386"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1853"
- inkscape:window-height="1145"
- inkscape:window-x="67"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata2620">
- <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="speaker common"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-286.41666)">
- <rect
- style="opacity:0.93000034;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- id="rect3222"
- x="-2.7755576e-17"
- y="286.41666"
- width="10.583334"
- height="10.583334"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96" />
- <rect
- style="display:inline;opacity:0.93000034;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.52890205;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- id="rect2513"
- width="1.852348"
- height="3.4398482"
- x="0.85079437"
- y="290.01236"
- rx="0.52916664"
- ry="0.52916664" />
- <path
- style="display:inline;fill:none;stroke:#000000;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2.7503894,290.22563 2.892715,-2.05292 v 7.09564 l -2.892715,-2.06518"
- id="path2536"
- inkscape:connector-curvature="0" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="speaker on"
- style="display:inline">
- <path
- transform="translate(0,-286.41665)"
- style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 2.7503894,290.22563 2.892716,-2.05292 v 7.09564 l -2.892716,-2.06518 z"
- id="path2601"
- inkscape:connector-curvature="0" />
- <path
- transform="translate(0,-286.41665)"
- style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 0.85079162,290.01235 H 2.7031424 l 0.04725,3.19082 -1.89959778,0.24903 v -3.43985"
- id="path2603"
- inkscape:connector-curvature="0" />
- <path
- transform="translate(0,-286.41665)"
- style="display:inline;opacity:0.93000034;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.52916658;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 7.0514724,290.17007 c 0.282672,0.42102 0.447589,0.92773 0.447588,1.47296 -1e-6,0.55172 -0.168872,1.064 -0.457747,1.48797"
- id="path2595"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- transform="translate(0,-286.41665)"
- style="display:inline;opacity:0.93000034;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.52916664;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
- d="m 8.7855294,289.27189 c 0.533229,0.64169 0.853875,1.46634 0.853873,2.36588 2e-6,0.90571 -0.325054,1.73549 -0.86487,2.37906"
- id="path2597"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
D art/phone/application_call/speaker_off.png => art/phone/application_call/speaker_off.png +0 -0
D art/phone/application_call/speaker_on.png => art/phone/application_call/speaker_on.png +0 -0
D image/assets/audio/bell/alarm/Atumnal_Sea.mp3 => image/assets/audio/bell/alarm/Atumnal_Sea.mp3 +0 -0
A image/assets/audio/bell/alarm/Autumnal_Sea.mp3 => image/assets/audio/bell/alarm/Autumnal_Sea.mp3 +0 -0
M image/assets/audio/bell/alarm/Brand_New_Morning.mp3 => image/assets/audio/bell/alarm/Brand_New_Morning.mp3 +0 -0
A image/assets/audio/bell/alarm/Bubbling_Brook.mp3 => image/assets/audio/bell/alarm/Bubbling_Brook.mp3 +0 -0
M image/assets/audio/bell/alarm/Delightful_Morning.mp3 => image/assets/audio/bell/alarm/Delightful_Morning.mp3 +0 -0
D image/assets/audio/bell/alarm/Dymiter-Morning_Dew.mp3 => image/assets/audio/bell/alarm/Dymiter-Morning_Dew.mp3 +0 -0
M image/assets/audio/bell/alarm/Gentle_Daybreak.mp3 => image/assets/audio/bell/alarm/Gentle_Daybreak.mp3 +0 -0
M image/assets/audio/bell/alarm/Joyous_Morning.mp3 => image/assets/audio/bell/alarm/Joyous_Morning.mp3 +0 -0
M image/assets/audio/bell/alarm/Koshi_Bells.mp3 => image/assets/audio/bell/alarm/Koshi_Bells.mp3 +0 -0
M image/assets/audio/bell/alarm/Melodious_Chords.mp3 => image/assets/audio/bell/alarm/Melodious_Chords.mp3 +0 -0
M image/assets/audio/bell/alarm/Morning_Dew.mp3 => image/assets/audio/bell/alarm/Morning_Dew.mp3 +0 -0
M image/assets/audio/bell/alarm/Natures_Harmony.mp3 => image/assets/audio/bell/alarm/Natures_Harmony.mp3 +0 -0
D image/assets/audio/bell/alarm/Rhytmical_Hang_Drum.mp3 => image/assets/audio/bell/alarm/Rhytmical_Hang_Drum.mp3 +0 -0
A image/assets/audio/bell/alarm/Rhytmical_Hangdrum.mp3 => image/assets/audio/bell/alarm/Rhytmical_Hangdrum.mp3 +0 -0
M image/assets/audio/bell/alarm/Sunrise_Guitar.mp3 => image/assets/audio/bell/alarm/Sunrise_Guitar.mp3 +0 -0
A image/assets/audio/bell/bg_sounds/Ancient_Greek.mp3 => image/assets/audio/bell/bg_sounds/Ancient_Greek.mp3 +0 -0
D image/assets/audio/bell/bg_sounds/Ancient_Greek_Reading.mp3 => image/assets/audio/bell/bg_sounds/Ancient_Greek_Reading.mp3 +0 -0
D image/assets/audio/bell/bg_sounds/Atumnal_Sea.mp3 => image/assets/audio/bell/bg_sounds/Atumnal_Sea.mp3 +0 -0
A image/assets/audio/bell/bg_sounds/Autumnal_Sea.mp3 => image/assets/audio/bell/bg_sounds/Autumnal_Sea.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Bubbling_Brook.mp3 => image/assets/audio/bell/bg_sounds/Bubbling_Brook.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Charming_Bells.mp3 => image/assets/audio/bell/bg_sounds/Charming_Bells.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Forest_Creek.mp3 => image/assets/audio/bell/bg_sounds/Forest_Creek.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Mountain_Lagoon.mp3 => image/assets/audio/bell/bg_sounds/Mountain_Lagoon.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Mystic_Nature.mp3 => image/assets/audio/bell/bg_sounds/Mystic_Nature.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Natures_Harmony.mp3 => image/assets/audio/bell/bg_sounds/Natures_Harmony.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Rhythmic_Lullaby.mp3 => image/assets/audio/bell/bg_sounds/Rhythmic_Lullaby.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Seaside_Symphony.mp3 => image/assets/audio/bell/bg_sounds/Seaside_Symphony.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Under_the_Water.mp3 => image/assets/audio/bell/bg_sounds/Under_the_Water.mp3 +0 -0
M image/assets/audio/bell/bg_sounds/Woodland_Ambiance.mp3 => image/assets/audio/bell/bg_sounds/Woodland_Ambiance.mp3 +0 -0
D image/assets/audio/bell/bg_sounds/test_440Hz_16B_44k1_PCM.wav => image/assets/audio/bell/bg_sounds/test_440Hz_16B_44k1_PCM.wav +0 -0
M image/assets/audio/bell/chimes/Blissful_Dream.mp3 => image/assets/audio/bell/chimes/Blissful_Dream.mp3 +0 -0
M image/assets/audio/bell/chimes/Gentle_Chime.mp3 => image/assets/audio/bell/chimes/Gentle_Chime.mp3 +0 -0
M image/assets/audio/bell/chimes/Rise_&_Shine.mp3 => image/assets/audio/bell/chimes/Rise_&_Shine.mp3 +0 -0
M image/assets/audio/bell/chimes/Twinkle_Chime.mp3 => image/assets/audio/bell/chimes/Twinkle_Chime.mp3 +0 -0
M image/assets/audio/bell/evening_reminder/Evening_Horizon.mp3 => image/assets/audio/bell/evening_reminder/Evening_Horizon.mp3 +0 -0
M image/assets/audio/bell/evening_reminder/Evolving_Dusk.mp3 => image/assets/audio/bell/evening_reminder/Evolving_Dusk.mp3 +0 -0
M image/assets/audio/bell/evening_reminder/Melodic_Mirth.mp3 => image/assets/audio/bell/evening_reminder/Melodic_Mirth.mp3 +0 -0
M image/assets/audio/bell/evening_reminder/Twilight_Gleam.mp3 => image/assets/audio/bell/evening_reminder/Twilight_Gleam.mp3 +0 -0
M image/assets/audio/bell/meditation/Meditation_Gong.mp3 => image/assets/audio/bell/meditation/Meditation_Gong.mp3 +0 -0
M image/assets/audio/bell/prewakeup/Joyful_Awakening.mp3 => image/assets/audio/bell/prewakeup/Joyful_Awakening.mp3 +0 -0
M image/assets/audio/bell/prewakeup/Morning_Spirit.mp3 => image/assets/audio/bell/prewakeup/Morning_Spirit.mp3 +0 -0
M image/assets/audio/bell/prewakeup/Radiant_Morning.mp3 => image/assets/audio/bell/prewakeup/Radiant_Morning.mp3 +0 -0
M image/assets/audio/bell/prewakeup/Spring_Sunrise.mp3 => image/assets/audio/bell/prewakeup/Spring_Sunrise.mp3 +0 -0
R image/assets/images/mail.vpi => image/assets/images/call_message_W_M.vpi +0 -0
A image/assets/images/call_mute_W_M.vpi => image/assets/images/call_mute_W_M.vpi +0 -0
A image/assets/images/call_mute_on_W_M.vpi => image/assets/images/call_mute_on_W_M.vpi +0 -0
R image/assets/images/speaker_off.vpi => image/assets/images/call_speaker_W_M.vpi +0 -0
A image/assets/images/call_speaker_on_W_M.vpi => image/assets/images/call_speaker_on_W_M.vpi +0 -0
A image/assets/images/calllog_arrow_den_W_G.vpi => image/assets/images/calllog_arrow_den_W_G.vpi +0 -0
A image/assets/images/calllog_arrow_in_W_G.vpi => image/assets/images/calllog_arrow_in_W_G.vpi +0 -0
A image/assets/images/calllog_arrow_out_W_G.vpi => image/assets/images/calllog_arrow_out_W_G.vpi +0 -0
A image/assets/images/callog_empty_W_G.vpi => image/assets/images/callog_empty_W_G.vpi +0 -0
A image/assets/images/cross_W_M.vpi => image/assets/images/cross_W_M.vpi +0 -0
D image/assets/images/microphone_off.vpi => image/assets/images/microphone_off.vpi +0 -0
D image/assets/images/microphone_on.vpi => image/assets/images/microphone_on.vpi +0 -0
D image/assets/images/mute.vpi => image/assets/images/mute.vpi +0 -0
D image/assets/images/speaker.vpi => image/assets/images/speaker.vpi +0 -0
D image/assets/images/speaker_on.vpi => image/assets/images/speaker_on.vpi +0 -0
M image/assets/lang/Deutsch.json => image/assets/lang/Deutsch.json +6 -6
@@ 100,7 100,7 @@
"app_alarm_clock_repeat_everyday": "Täglich",
"app_alarm_clock_repeat_week_days": "Wochentags",
"app_alarm_clock_repeat_custom": "Benutzerdefiniert",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='9'>Noch kein Alarm.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Noch kein Alarm.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_alarm_clock_options_edit": "Ändern",
"app_alarm_clock_options_delete": "Löschen",
"app_alarm_clock_options_turn_off_all_alarms": "Alle Alarme ausschalten",
@@ 124,7 124,7 @@
"app_calendar_event_detail": "Ereignis",
"app_calendar_event_detail_repeat": "Wiederholen",
"app_calendar_event_detail_reminder": "Erinnerung",
- "app_calendar_no_events_information": "<text align='center' color='9'>Noch kein Ereignis.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_calendar_no_events_information": "<text align='center' color='5'>Noch kein Ereignis.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_calendar_repeat_never": "Niemals",
"app_calendar_repeat_daily": "Täglich",
"app_calendar_repeat_weekly": "Wöchentlich",
@@ 169,7 169,7 @@
"app_notes_edited": "Geändert",
"app_notes_delete_note": "Löschen",
"app_notes_note_delete_confirmation": "Diese Notiz wirklich löschen?",
- "app_notes_no_notes": "<text align='center' color='9'>Noch keine Notiz.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='5'>Noch keine Notiz.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_notes_search_no_results": "Keine Notizen gefunden.",
"app_calllog_title_main": "Anrufe",
"app_calllog_type": "Anruf",
@@ 306,7 306,7 @@
"app_call_emergency_text": "Notruf",
"app_call_wrong_emergency": "Anruf nicht möglich.\n$NUMBER ist keine Notrufnummer.",
"app_messages_title_main": "Nachrichten",
- "app_messages_no_messages": "<text align='center' color='9'>Noch keine Nachrichten.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='5'>Noch keine Nachrichten.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_messages_thread_delete_confirmation": "Dieses Gespräch löschen?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Diese Nachricht wirklich <text weight='bold'>löschen</text></p>?</text>",
"app_messages_thread_no_result": "Keine Ergebnisse",
@@ 460,7 460,7 @@
"phone_lock_invalid_retry": "<text>Falscher Sicherheitscode. <br></br> Sicherheitscode nochmals konfigurieren.</text>",
"phone_lock_configure": "Sicherheitscode konfigurieren",
"app_settings_security_usb_passcode": "USB-Sicherheit",
- "app_settings_apn_settings_no_apns": "<text align='center' color='9'>Noch keine APN.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
+ "app_settings_apn_settings_no_apns": "<text align='center' color='5'>Noch keine APN.<p>Zum Hinzufügen <b>linken Pfeil</b> drücken.</p></text>",
"app_settings_apn_options_delete": "Löschen",
"app_settings_apn_options_edit": "Ändern",
"app_settings_apn_options_set_as_default": "Als Standard festlegen",
@@ 574,7 574,7 @@
"app_call_private_number": "Private Nummer",
"tethering": "Tethering",
"tethering_turn_off_question": "Tethering ausschalten?",
- "tethering_enable_question": "<text>Sie sind mit dem Computer verbunden.<br />Tethering einschalten?<br /><text color='9'>(einige Funktionen können deaktiviert sein)</text></text>",
+ "tethering_enable_question": "<text>Sie sind mit dem Computer verbunden.<br />Tethering einschalten?<br /><text color='5'>(einige Funktionen können deaktiviert sein)</text></text>",
"tethering_phone_mode_change_prohibited": "<text>Tethering ist eingeschaltet.<br /><br />Andere Betriebsarten (Verbunden, DND,<br />Offline) werden von dieser Betriebsart überlagert<br />und funktionieren nicht.</text>",
"tethering_menu_access_decline": "<text>Tethering ist eingeschaltet.<br /><br />Schalten Sie Tethering aus,<br />um auf das Menü zuzugreifen</text>",
"app_bell_turn_off_question": "Schalten Sie das Gerät aus?",
M image/assets/lang/English.json => image/assets/lang/English.json +11 -8
@@ 109,7 109,7 @@
"app_alarm_clock_repeat_everyday": "Everyday",
"app_alarm_clock_repeat_week_days": "Weekdays",
"app_alarm_clock_repeat_custom": "Custom",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='9'>No alarms yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>No alarms yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_alarm_clock_options_edit": "Edit",
"app_alarm_clock_options_delete": "Delete",
"app_alarm_clock_options_turn_off_all_alarms": "Turn off all alarms",
@@ 143,19 143,22 @@
"app_notes_edited": "Edited",
"app_notes_delete_note": "Delete",
"app_notes_note_delete_confirmation": "Do you really want to delete this note?",
- "app_notes_no_notes": "<text align='center' color='9'>No notes yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='5'>No notes yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_notes_search_no_results": "No notes found.",
"app_calllog_title_main": "Calls",
- "app_calllog_no_calls": "<text align='center' color='9'>No calls yet.</text>",
+ "app_calllog_no_calls": "<text align='center' color='5'>No calls yet.</text>",
"app_calllog_type": "Call",
"app_calllog_duration": "Duration",
"app_calllog_incoming_call": "Incoming call",
"app_calllog_outgoing_call": "Outgoing call",
"app_calllog_missed_call": "Missed call",
"app_calllog_rejected_call": "Rejected call",
+ "app_calllog_empty_incoming": "<text color='5'>Incoming</text>",
+ "app_calllog_empty_outgoing": "<text color='5'>Outgoing</text>",
+ "app_calllog_empty_missed": "<text color='5'>Missed</text>",
"app_calllog_date": "Date",
"app_calllog_options_delete_call": "Delete call",
- "app_calllog_delete_call_confirmation": "Do you really want to delete this call from the list?",
+ "app_calllog_delete_call_confirmation": "Delete this call from the list?",
"app_desktop_unlock": "UNLOCK",
"app_desktop_menu": "MENU",
"app_desktop_emergency": "SOS",
@@ 286,7 289,7 @@
"app_call_emergency_text": "Emergency call",
"app_call_wrong_emergency": "Can't make a call.\n$NUMBER is not an emergency number.",
"app_messages_title_main": "Messages",
- "app_messages_no_messages": "<text align='center' color='9'>No messages yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='5'>No messages yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_messages_thread_delete_confirmation": "Delete this conversation?",
"app_messages_message_delete_confirmation": "Delete this message?",
"app_messages_thread_no_result": "There are no results",
@@ 452,7 455,7 @@
"phone_lock_invalid_retry": "<text>Wrong passcode. <br></br> Configure passcode again.</text>",
"phone_lock_configure": "Configure passcode",
"app_settings_security_usb_passcode": "USB security",
- "app_settings_apn_settings_no_apns": "<text align='center' color='9'>No APNs yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_settings_apn_settings_no_apns": "<text align='center' color='5'>No APNs yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_settings_apn_options_delete": "Delete",
"app_settings_apn_options_edit": "Edit",
"app_settings_apn_options_set_as_default": "Set as default",
@@ 488,7 491,7 @@
"common_search_uc": "Search",
"common_search_results": "Search results",
"app_phonebook_search_no_results": "No contacts found.",
- "app_phonebook_no_contacts": "<text align='center' color='9'>No contacts yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_phonebook_no_contacts": "<text align='center' color='5'>No contacts yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_phonebook_contact_title": "Add contact",
"app_phonebook_contact_no_name": "no name",
"app_phonebook_contact_information": "Information",
@@ 578,7 581,7 @@
"app_call_private_number": "Private number",
"tethering": "Tethering",
"tethering_turn_off_question": "Turn tethering off?",
- "tethering_enable_question": "<text>You're connected to the computer.<br />Turn tethering on?<br /><text color='9'>(some functions may be disabled)</text></text>",
+ "tethering_enable_question": "<text>You're connected to the computer.<br />Turn tethering on?<br /><text color='5'>(some functions may be disabled)</text></text>",
"tethering_phone_mode_change_prohibited": "<text>Tethering is on.<br /><br />Other modes (Connected, DND,<br />Offline) are overriden by this mode<br />and are not working.</text>",
"tethering_menu_access_decline": "<text>Tethering is on.<br /><br />To access menu,<br />turn tethering off.</text>",
"app_bell_settings_time_units_time_fmt_top_message": "Time format",
M image/assets/lang/Espanol.json => image/assets/lang/Espanol.json +6 -6
@@ 100,7 100,7 @@
"app_alarm_clock_repeat_everyday": "Todos los días",
"app_alarm_clock_repeat_week_days": "Días laborables",
"app_alarm_clock_repeat_custom": "Personalizado",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='9'>No hay alarmas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>No hay alarmas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
"app_alarm_clock_options_edit": "Editar",
"app_alarm_clock_options_delete": "Eliminar",
"app_alarm_clock_options_turn_off_all_alarms": "Apagar todas las alarmas",
@@ 124,7 124,7 @@
"app_calendar_event_detail": "Evento",
"app_calendar_event_detail_repeat": "Repetir",
"app_calendar_event_detail_reminder": "Recordatorio",
- "app_calendar_no_events_information": "<text align='center' color='9'>No hay eventos.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
+ "app_calendar_no_events_information": "<text align='center' color='5'>No hay eventos.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
"app_calendar_repeat_never": "Nunca",
"app_calendar_repeat_daily": "Diario",
"app_calendar_repeat_weekly": "Semanal",
@@ 169,7 169,7 @@
"app_notes_edited": "Editado",
"app_notes_delete_note": "Eliminar",
"app_notes_note_delete_confirmation": "¿Seguro que quieres eliminar esta nota?",
- "app_notes_no_notes": "<text align='center' color='9'>No hay notas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='5'>No hay notas.<p>Pulsa la <b>flecha izquierda</b> para añadir una.</p></text>",
"app_notes_search_no_results": "No se encontraron notas.",
"app_calllog_title_main": "Llamadas",
"app_calllog_type": "Llamada",
@@ 306,7 306,7 @@
"app_call_emergency_text": "Llamada de emergencia",
"app_call_wrong_emergency": "No es posible realizar la llamada.\n$NUMBER no es un número de emergencias.",
"app_messages_title_main": "Mensajes",
- "app_messages_no_messages": "<text align='center' color='9'>No hay mensajes.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='5'>No hay mensajes.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
"app_messages_thread_delete_confirmation": "¿Eliminar esta conversación?",
"app_messages_message_delete_confirmation": "<text align='center'><p>¿Seguro que quieres <text weight='bold'>eliminar</text></p> este mensaje?</text>",
"app_messages_thread_no_result": "No hay resultados",
@@ 460,7 460,7 @@
"phone_lock_invalid_retry": "<text>Código de acceso incorrecto. <br></br> Vuelve a configurar el código de acceso.</text>",
"phone_lock_configure": "Configura el código de acceso:",
"app_settings_security_usb_passcode": "Seguridad USB",
- "app_settings_apn_settings_no_apns": "<text align='center' color='9'>No hay ningún APN.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
+ "app_settings_apn_settings_no_apns": "<text align='center' color='5'>No hay ningún APN.<p>Pulsa la <b>flecha izquierda</b> para añadir uno.</p></text>",
"app_settings_apn_options_delete": "Eliminar",
"app_settings_apn_options_edit": "Editar",
"app_settings_apn_options_set_as_default": "Establecer como predeterminado",
@@ 574,7 574,7 @@
"app_call_private_number": "Número privado",
"tethering": "Anclaje de red",
"tethering_turn_off_question": "¿Desactivar el anclaje de red?",
- "tethering_enable_question": "<text>Estás conectado al ordenador.<br />¿Activar el anclaje de red?<br /><text color='9'>(algunas funciones podrían desactivarse)</text></text>",
+ "tethering_enable_question": "<text>Estás conectado al ordenador.<br />¿Activar el anclaje de red?<br /><text color='5'>(algunas funciones podrían desactivarse)</text></text>",
"tethering_phone_mode_change_prohibited": "<text>El anclaje de red está activado.<br /><br />Este modo anula otros modos (Conectado, No molestar,<br />Desconectado) <br />y hace que dejen de funcionar.</text>",
"tethering_menu_access_decline": "<text>El anclaje de red está activado.<br /><br />Para acceder al menú,<br />desactiva el tethering.</text>",
"app_bellmain_home_screen_bottom_desc": "La siguiente alarma sonará",
M image/assets/lang/Francais.json => image/assets/lang/Francais.json +5 -5
@@ 104,7 104,7 @@
"app_alarm_clock_repeat_everyday": "Tous les jours",
"app_alarm_clock_repeat_week_days": "Jours de la semaine",
"app_alarm_clock_repeat_custom": "Personnalisé",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='9'>Aucune alarme pour le moment.<p> Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Aucune alarme pour le moment.<p> Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
"app_alarm_clock_options_edit": "Modifier",
"app_alarm_clock_options_delete": "Supprimer",
"app_alarm_clock_options_turn_off_all_alarms": "Éteignez toutes les alarmes",
@@ 138,7 138,7 @@
"app_notes_edited": "Modifiée",
"app_notes_delete_note": "Supprimer",
"app_notes_note_delete_confirmation": "Voulez-vous vraiment supprimer cette note?",
- "app_notes_no_notes": "<text align = 'center' color = '9'> Pas encore de notes.<p>Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
+ "app_notes_no_notes": "<text align = 'center' color = '5'> Pas encore de notes.<p>Appuyez sur la <b>flèche gauche</b> pour en ajouter une nouvelle.</p></text>",
"app_notes_search_no_results": "Aucune note trouvée.",
"app_calllog_title_main": "Appels",
"app_calllog_type": "Appel",
@@ 276,7 276,7 @@
"app_call_emergency_text": "Appel d'urgence",
"app_call_wrong_emergency": "Impossible de faire un appel.\n$NUMBER n'est pas un numéro d'urgence.",
"app_messages_title_main": "Messages",
- "app_messages_no_messages": "<text align = 'center' color = '9'>Aucun message.<p>Appuyez sur la <b>flèche gauche</b> pour en composer un nouveau.</p></text>",
+ "app_messages_no_messages": "<text align = 'center' color = '5'>Aucun message.<p>Appuyez sur la <b>flèche gauche</b> pour en composer un nouveau.</p></text>",
"app_messages_thread_delete_confirmation": "Supprimer cette conversation ?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Do you really want to <text weight='bold'>delete</text></p>this message?</text>",
"app_messages_thread_no_result": "Aucun résultat",
@@ 429,7 429,7 @@
"phone_lock_invalid_retry": "<text>Mauvais code d'accès. <br></br> Veuillez configurer le code d'accès à nouveau.</text>",
"phone_lock_configure": "Configurer le code d'accès",
"app_settings_security_usb_passcode": "Sécurité USBS",
- "app_settings_apn_settings_no_apns": "<text align='center' color='9'>No APNs yet.<p>Press <b>left arrow</b> to add new.</p></text>",
+ "app_settings_apn_settings_no_apns": "<text align='center' color='5'>No APNs yet.<p>Press <b>left arrow</b> to add new.</p></text>",
"app_settings_apn_options_delete": "Delete",
"app_settings_apn_options_edit": "Edit",
"app_settings_apn_options_set_as_default": "Set as default",
@@ 543,7 543,7 @@
"app_call_private_number": "Numéro privé",
"tethering": "Partage de connexion",
"tethering_turn_off_question": "Voulez-vous désactiver le partage de connexion?",
- "tethering_enable_question": "<text>Vous êtes connecté à l'ordinateur<br />Voulez-vous activer le partage de connexion?<br /><text color='9'>(certaines fonctions peuvent être désactivées)</text></text>",
+ "tethering_enable_question": "<text>Vous êtes connecté à l'ordinateur<br />Voulez-vous activer le partage de connexion?<br /><text color='5'>(certaines fonctions peuvent être désactivées)</text></text>",
"tethering_phone_mode_change_prohibited": "<text>Le partage de connexion est activé.<br /><br />Ce mode-ci remplace et désactive les autres modes<br />(Connecté, NPD, Hors ligne)</text>",
"tethering_menu_access_decline": "<text>Le partage de connexion est activé.<br /><br />Pour accéder au menu, veuillez<br />désactiver le partage de connextion.</text>",
"app_bellmain_next_alarm": "Prochaine alarme",
M image/assets/lang/Polski.json => image/assets/lang/Polski.json +9 -9
@@ 101,7 101,7 @@
"app_alarm_clock_repeat_everyday": "Codziennie",
"app_alarm_clock_repeat_week_days": "Dni powszednie",
"app_alarm_clock_repeat_custom": "Własne",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='9'>Nie ma jeszcze żadnego alarmu.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowy.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Nie ma jeszcze żadnego alarmu.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowy.</p></text>",
"app_alarm_clock_options_edit": "Edytuj",
"app_alarm_clock_options_delete": "Usuń",
"app_alarm_clock_options_turn_off_all_alarms": "Wyłącz wszystkie alarmy",
@@ 125,7 125,7 @@
"app_calendar_event_detail": "Wydarzenie",
"app_calendar_event_detail_repeat": "Powtarzaj",
"app_calendar_event_detail_reminder": "Przypomnienie",
- "app_calendar_no_events_information": "<text align='center' color='9'>Nie ma jeszcze żadnych wydarzeń.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowe.</p></text>",
+ "app_calendar_no_events_information": "<text align='center' color='5'>Nie ma jeszcze żadnych wydarzeń.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowe.</p></text>",
"app_calendar_repeat_never": "Nigdy",
"app_calendar_repeat_daily": "Codziennie",
"app_calendar_repeat_weekly": "Co tydzień",
@@ 170,10 170,10 @@
"app_notes_edited": "Edytowano",
"app_notes_delete_note": "Usuń",
"app_notes_note_delete_confirmation": "Czy na pewno chcesz usunąć tę notatkę?",
- "app_notes_no_notes": "<text align='center' color='9'>Nie ma jeszcze żadnych notatek.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='5'>Nie ma jeszcze żadnych notatek.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
"app_notes_search_no_results": "Nie znaleziono notatek",
"app_calllog_title_main": "Połączenia",
- "app_calllog_no_calls": "<text align='center' color='9'>Brak połączeń.</text>",
+ "app_calllog_no_calls": "<text align='center' color='5'>Brak połączeń.</text>",
"app_calllog_type": "Połączenie",
"app_calllog_duration": "Czas trwania",
"app_calllog_incoming_call": "Połączenie odebrane",
@@ 309,7 309,7 @@
"app_call_emergency_text": "Połączenie alarmowe",
"app_call_wrong_emergency": "Nie można wykonać połączenia.\n$NUMBER nie jest numerem alarmowym.",
"app_messages_title_main": "Wiadomości",
- "app_messages_no_messages": "<text align='center' color='9'>Nie ma jeszcze żadnych wiadomości.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='5'>Nie ma jeszcze żadnych wiadomości.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nową.</p></text>",
"app_messages_thread_delete_confirmation": "Usunąć tę rozmowę?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Czy na pewno chcesz <text weight='bold'>usunąć</text></p>tę wiadomość?</text>",
"app_messages_thread_no_result": "Brak wyników",
@@ 473,7 473,7 @@
"phone_lock_invalid_retry": "<text>Błędny kod. <br></br> Ponownie skonfiguruj kod.</text>",
"phone_lock_configure": "Skonfiguruj kod",
"app_settings_security_usb_passcode": "Zabezpieczenie USB",
- "app_settings_apn_settings_no_apns": "<text align='center' color='9'>Nie ma jeszcze żadnego APN.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowy.</p></text>",
+ "app_settings_apn_settings_no_apns": "<text align='center' color='5'>Nie ma jeszcze żadnego APN.<p>Wciśnij <b>lewą strzałkę</b>, by dodać nowy.</p></text>",
"app_settings_apn_options_delete": "Usuń",
"app_settings_apn_options_edit": "Edytuj",
"app_settings_apn_options_set_as_default": "Ustaw jako domyślne",
@@ 506,7 506,7 @@
"common_search_uc": "Szukaj",
"common_search_results": "Wyniki wyszukiwania",
"app_phonebook_search_no_results": "Nie znaleziono kontaktów",
- "app_phonebook_no_contacts": "<text align='center' color='9'>Brak kontaktów.<p>Naciśnij <b>'w lewo'</b> by dodać kontakt.</p></text>",
+ "app_phonebook_no_contacts": "<text align='center' color='5'>Brak kontaktów.<p>Naciśnij <b>'w lewo'</b> by dodać kontakt.</p></text>",
"app_phonebook_contact_title": "Dodaj kontakt",
"app_phonebook_contact_no_name": "brak nazwy",
"app_phonebook_contact_information": "Informacje",
@@ 589,7 589,7 @@
"app_call_private_number": "Numer prywatny",
"tethering": "Tethering",
"tethering_turn_off_question": "Wyłączyć tethering?",
- "tethering_enable_question": "<text>Połączono z komputerem.<br />Włączyć tethering?<br /><text color='9'>(Niektóre funkcje mogą być niedostępne)</text></text>",
+ "tethering_enable_question": "<text>Połączono z komputerem.<br />Włączyć tethering?<br /><text color='5'>(Niektóre funkcje mogą być niedostępne)</text></text>",
"tethering_phone_mode_change_prohibited": "<text>Tethering włączony.<br /><br />Inne tryby (Połączony, Nie przeszkadzać,<br />Offline) zostały unieważnione przez ten tryb<br />i nie działają.</text>",
"tethering_menu_access_decline": "<text>Tethering włączony.<br /><br />Aby przejść do menu,<br />wyłącz tethering.</text>",
"app_bell_settings_time_units_time_fmt_top_message": "Format czasu",
@@ 604,7 604,7 @@
"app_bellmain_background_sounds": "Biblioteka",
"app_bellmain_settings": "Ustawienia",
"app_bellmain_main_window_title": "Bell Hybrid+",
- "app_bell_onboarding_finalize": "<text>Dobra robota!<br />Obudź się z radością</text>",
+ "app_bell_onboarding_finalize": "Dobra robota!",
"app_bell_settings_advanced": "Zaawansowane",
"app_bell_settings_advanced_time_units": "Czas i jednostki",
"app_bell_settings_advanced_temp_scale": "Skala temperatury",
M image/assets/lang/Svenska.json => image/assets/lang/Svenska.json +4 -4
@@ 89,7 89,7 @@
"app_alarm_clock_repeat_everyday": "Varje dag",
"app_alarm_clock_repeat_week_days": "Vardagar",
"app_alarm_clock_repeat_custom": "Eget val",
- "app_alarm_clock_no_alarms_information": "<text align='center' color='9'>Inga larmtider än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
+ "app_alarm_clock_no_alarms_information": "<text align='center' color='5'>Inga larmtider än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
"app_alarm_clock_options_edit": "Redigera",
"app_alarm_clock_options_delete": "Radera",
"app_alarm_clock_options_turn_off_all_alarms": "Stäng av alla larm",
@@ 123,7 123,7 @@
"app_notes_edited": "Redigerad",
"app_notes_delete_note": "Radera",
"app_notes_note_delete_confirmation": "Vill du radera den här anteckningen?",
- "app_notes_no_notes": "<text align='center' color='9'>Inga anteckningar än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
+ "app_notes_no_notes": "<text align='center' color='5'>Inga anteckningar än.<p>Tryck <b>vänsterpil</b> för att lägga till en.</p></text>",
"app_notes_search_no_results": "Inga anteckningar hittade.",
"app_calllog_title_main": "Samtal",
"app_calllog_type": "Samtal",
@@ 248,7 248,7 @@
"app_call_emergency_text": "Nödsamtal",
"app_call_wrong_emergency": "Kan inte ringa..\n$NUMBER är inte ett nödnummer.",
"app_messages_title_main": "Meddelanden",
- "app_messages_no_messages": "<text align='center' color='9'>Inga meddelanden än.<p>Tryck <b>vänsterpil</b> för att börja skriva ett.</p></text>",
+ "app_messages_no_messages": "<text align='center' color='5'>Inga meddelanden än.<p>Tryck <b>vänsterpil</b> för att börja skriva ett.</p></text>",
"app_messages_thread_delete_confirmation": "Radera konversation?",
"app_messages_message_delete_confirmation": "<text align='center'><p>Vill du <text weight='bold'>radera</text></p>konversationen?</text>",
"app_messages_thread_no_result": "Inga resultat",
@@ 357,7 357,7 @@
"phone_lock_invalid": "Fel lösenord!",
"phone_lock_changed_successfully": "Lösenordet bytt!",
"phone_lock_disabled": "Lösenordet avstängt!",
- "app_settings_apn_settings_no_apns": "<text align='center' color='9'>Inga APN-inställningar än.<p>Tryck <b>vänsterpil</b> för att lägga till.</p></text>",
+ "app_settings_apn_settings_no_apns": "<text align='center' color='5'>Inga APN-inställningar än.<p>Tryck <b>vänsterpil</b> för att lägga till.</p></text>",
"app_settings_apn_options_delete": "Radera",
"app_settings_apn_options_edit": "Redigera",
"app_settings_apn_options_set_as_default": "Välj som förval",
M image/user/db/settings_bell_002.sql => image/user/db/settings_bell_002.sql +1 -1
@@ 40,7 40,7 @@ INSERT OR IGNORE INTO settings_tab (path, value) VALUES
('prewake_up_tone','Joyful Awakening'),
('prewake_up_volume','5'),
('prewake_up_light_duration','10'),
- ('alarm_tone','Atumnal Sea'),
+ ('alarm_tone','Autumnal Sea'),
('alarm_volume','5'),
('alarm_light_active','1'),
('alarm_duration','10000'),
M module-apps/application-alarm-clock/widgets/AlarmClockStyle.hpp => module-apps/application-alarm-clock/widgets/AlarmClockStyle.hpp +1 -1
@@ 15,7 15,7 @@ namespace style::alarmClock
inline constexpr auto listView_x = style::window::default_left_margin;
inline constexpr auto listView_y = style::window::default_vertical_pos;
inline constexpr auto listView_w = style::listview::body_width_with_scroll;
- inline constexpr auto listView_h = style::window_height - listView_y - style::footer::height;
+ inline constexpr auto listView_h = style::window_height - listView_y - style::nav_bar::height;
namespace name
{
M module-apps/application-alarm-clock/windows/AlarmClockMainWindow.cpp => module-apps/application-alarm-clock/windows/AlarmClockMainWindow.cpp +1 -1
@@ 59,7 59,7 @@ namespace app::alarmClock
0,
style::window::default_vertical_pos,
style::window_width,
- style::window_height - ::style::window::default_vertical_pos - ::style::footer::height,
+ style::window_height - ::style::window::default_vertical_pos - ::style::nav_bar::height,
"empty_list_add_W_G",
utils::translate("app_alarm_clock_no_alarms_information"));
emptyListIcon->setVisible(false);
M module-apps/application-calendar/include/application-calendar/widgets/CalendarStyle.hpp => module-apps/application-calendar/include/application-calendar/widgets/CalendarStyle.hpp +1 -1
@@ 17,7 17,7 @@ namespace style::window::calendar
inline constexpr auto listView_x = style::window::default_left_margin;
inline constexpr auto listView_y = style::window::default_vertical_pos;
inline constexpr auto listView_w = style::listview::body_width_with_scroll;
- inline constexpr auto listView_h = style::window_height - listView_y - style::footer::height;
+ inline constexpr auto listView_h = style::window_height - listView_y - style::nav_bar::height;
namespace item
{
M module-apps/application-calendar/windows/CalendarMainWindow.cpp => module-apps/application-calendar/windows/CalendarMainWindow.cpp +1 -1
@@ 44,7 44,7 @@ namespace gui
offsetFromTop = style::window::default_vertical_pos + style::window::calendar::month_year_height;
monthWidth = style::window::default_body_width;
- monthHeight = style::window_height - style::window::default_vertical_pos - style::footer::height;
+ monthHeight = style::window_height - style::window::default_vertical_pos - style::nav_bar::height;
dayWidth = style::window::calendar::day_cell_width;
dayHeight = style::window::calendar::day_cell_height;
M module-apps/application-call/widgets/StateIcon.hpp => module-apps/application-call/widgets/StateIcon.hpp +1 -1
@@ 75,7 75,7 @@ namespace gui
virtual void set(const T &state)
{
this->state = state;
- img->set(data.at(state).first);
+ img->set(data.at(state).first, ImageTypeSpecifier::W_M);
label->setText(utils::translate(data.at(state).second));
using namespace style::window;
label->setFont(data.find(state) != data.begin() ? font::verysmallbold : font::verysmall);
M module-apps/application-call/widgets/StateIcons.cpp => module-apps/application-call/widgets/StateIcons.cpp +5 -5
@@ 10,14 10,14 @@ namespace gui
{
constexpr auto crossImg = "cross";
constexpr auto addContactStr = "app_call_contact";
- constexpr auto messageImg = "mail";
+ constexpr auto messageImg = "call_message";
constexpr auto sendSmstStr = "app_call_message";
- constexpr auto muteImg = "microphone_on";
- constexpr auto mutedImg = "microphone_off";
+ constexpr auto muteImg = "call_mute";
+ constexpr auto mutedImg = "call_mute_on";
constexpr auto muteStr = "app_call_mute";
constexpr auto mutedStr = "app_call_muted";
- constexpr auto speakerImg = "speaker_off";
- constexpr auto speakerOnImg = "speaker_on";
+ constexpr auto speakerImg = "call_speaker";
+ constexpr auto speakerOnImg = "call_speaker_on";
constexpr auto speakerStr = "app_call_speaker";
constexpr auto speakerOnStr = "app_call_speaker_on";
M module-apps/application-call/windows/CallWindow.cpp => module-apps/application-call/windows/CallWindow.cpp +2 -2
@@ 79,7 79,7 @@ namespace gui
speakerIcon = new SpeakerIcon(this, speakerIcon::x, speakerIcon::y);
speakerIcon->focusChangedCallback = [=](gui::Item &item) {
LOG_DEBUG("speakerIcon get/lost focus");
- navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::Switch), false);
+ navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::Switch), item.focus);
return true;
};
speakerIcon->activatedCallback = [=](gui::Item &item) {
@@ 107,7 107,7 @@ namespace gui
microphoneIcon = new MicrophoneIcon(this, microphoneIcon::x, microphoneIcon::y);
microphoneIcon->focusChangedCallback = [=](gui::Item &item) {
LOG_DEBUG("microphoneIcon get/lost focus");
- navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::Switch), false);
+ navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::Switch), item.focus);
return true;
};
microphoneIcon->activatedCallback = [=](gui::Item &item) {
M module-apps/application-calllog/data/CallLogStyle.hpp => module-apps/application-calllog/data/CallLogStyle.hpp +17 -2
@@ 14,7 14,7 @@ namespace callLogStyle
// DETAILS WINDOW
namespace detailsWindow
{
- constexpr inline auto x = style::window::navBar::leftMargin;
+ constexpr inline auto x = style::nav_bar::left_margin;
constexpr inline auto y = style::window::default_vertical_pos;
constexpr inline auto w = style::window_width - 2 * x;
constexpr inline auto h = style::window::default_body_height;
@@ 37,6 37,21 @@ namespace callLogStyle
constexpr inline auto rows = 2;
constexpr inline auto h = rows * widget::smallH;
} // namespace date
+
+ namespace noCalls
+ {
+ constexpr inline auto infoHeight = 33;
+ constexpr inline auto infoTopMargin = 195;
+ constexpr inline auto divLineTopMargin = 90;
+ constexpr inline auto bottomBoxWidth = 332;
+ constexpr inline auto bottomBoxHeight = 132;
+ constexpr inline auto bottomBoxMargin = 72;
+ constexpr inline auto infoIconMargin = 2;
+ constexpr inline auto descriptionSize = 32;
+ constexpr inline auto descriptionLeftMargin = 55;
+ constexpr inline auto descriptionInternalMargin = 5;
+ constexpr inline auto descriptionTextWidth = 105;
+ } // namespace noCalls
} // namespace detailsWindow
// MAIN WINDOW
@@ 45,7 60,7 @@ namespace callLogStyle
constexpr inline uint32_t x = style::window::default_left_margin;
constexpr inline uint32_t y = style::window::default_vertical_pos;
constexpr inline uint32_t w = style::listview::body_width_with_scroll;
- constexpr inline uint32_t h = style::window_height - y - style::footer::height;
+ constexpr inline uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace mainWindow
} // namespace callLogStyle
M module-apps/application-calllog/windows/CallLogDetailsWindow.cpp => module-apps/application-calllog/windows/CallLogDetailsWindow.cpp +1 -1
@@ 63,7 63,7 @@ namespace gui
textHBox->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
const auto font = style::window::font::medium;
- auto imageWidget = new gui::Image(image);
+ auto imageWidget = new gui::Image(image, ImageTypeSpecifier::W_M);
imageWidget->setMargins(margins);
textHBox->addWidget(imageWidget);
textHBox->addWidget(createText(text, font));
M module-apps/application-calllog/windows/CallLogMainWindow.cpp => module-apps/application-calllog/windows/CallLogMainWindow.cpp +83 -11
@@ 59,20 59,92 @@ namespace gui
setFocusItem(list);
- emptyListIcon =
- new gui::Icon(this,
- 0,
- ::style::window::default_vertical_pos,
- ::style::window_width,
- ::style::window_height - ::style::window::default_vertical_pos - ::style::footer::height,
- "info_icon_W_G",
- utils::translate("app_calllog_no_calls"));
- emptyListIcon->setVisible(false);
+ buildInterfaceForEmptyState();
list->emptyListCallback = [this]() { onEmptyList(); };
list->notEmptyListCallback = [this]() { onListFilled(); };
}
+ void CallLogMainWindow::buildInterfaceForEmptyState()
+ {
+ namespace MyStyle = callLogStyle::detailsWindow::noCalls;
+ emptyLayout = new VBox(this, 0, 0, style::window_width, style::window_height);
+ emptyLayout->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
+
+ Text *noCallsInfo = new Text(emptyLayout, 0, 0, 0, 0);
+ noCallsInfo->setMinimumSize(mainWindow::w, MyStyle::infoHeight);
+ noCallsInfo->setTextType(TextType::SingleLine);
+ noCallsInfo->setEditMode(EditMode::Browse);
+ noCallsInfo->setEdges(RectangleEdge::None);
+ noCallsInfo->setFont(style::window::font::medium);
+ noCallsInfo->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
+ noCallsInfo->setRichText(utils::translate("app_calllog_no_calls"));
+ noCallsInfo->setMargins(gui::Margins(0, MyStyle::infoTopMargin, 0, 0));
+
+ Rect *divLine = new Rect(emptyLayout, 0, 0, style::window_width, 1);
+ divLine->setBorderColor(ColorGrey);
+ divLine->setEdges(RectangleEdge::Top);
+ divLine->setMargins(gui::Margins(0, MyStyle::divLineTopMargin, 0, 0));
+
+ HBox *noCallsBottom = new HBox(emptyLayout);
+ noCallsBottom->setMinimumSize(MyStyle::bottomBoxWidth, MyStyle::bottomBoxHeight);
+ noCallsBottom->setEdges(RectangleEdge::None);
+ noCallsBottom->setMargins(gui::Margins(0, MyStyle::bottomBoxMargin, 0, 0));
+ noCallsBottom->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+
+ ImageBox *noCallsImg = new ImageBox(noCallsBottom, new Image("callog_empty_W_G"));
+ noCallsImg->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ noCallsImg->setMinimumSizeToFitImage();
+ noCallsImg->setMargins(Margins(MyStyle::infoIconMargin, 0, 0, 0));
+
+ VThreeBox<VBox, VBox, VBox> *noCallsIcons = new VThreeBox<VBox, VBox, VBox>(noCallsBottom);
+ noCallsIcons->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
+ noCallsIcons->setEdges(RectangleEdge::None);
+ noCallsIcons->setMinimumSize(MyStyle::descriptionSize, MyStyle::bottomBoxHeight);
+ noCallsIcons->setMargins(Margins(MyStyle::descriptionLeftMargin, 0, 0, 0));
+ auto imgLambda = [&](const UTF8 imageName) {
+ VBox *box = new VBox(noCallsIcons);
+ box->setEdges(RectangleEdge::None);
+ box->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
+ box->setMinimumSize(MyStyle::descriptionSize, MyStyle::descriptionSize);
+ box->setMargins(Margins(0, MyStyle::descriptionInternalMargin, 0, MyStyle::descriptionInternalMargin));
+
+ ImageBox *image = new ImageBox(box, new Image(imageName, gui::ImageTypeSpecifier::W_G));
+ image->setMinimumSizeToFitImage();
+ return box;
+ };
+ noCallsIcons->firstBox = imgLambda("calllog_arrow_in");
+ noCallsIcons->centerBox = imgLambda("calllog_arrow_out");
+ noCallsIcons->lastBox = imgLambda("calllog_arrow_den");
+
+ VThreeBox<VBox, VBox, VBox> *noCallsDescriptions = new VThreeBox<VBox, VBox, VBox>(noCallsBottom);
+ noCallsDescriptions->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
+ noCallsDescriptions->setEdges(RectangleEdge::None);
+ noCallsDescriptions->setMinimumSize(MyStyle::descriptionTextWidth, MyStyle::bottomBoxHeight);
+ auto descLambda = [&](const UTF8 descText) {
+ VBox *box = new VBox(noCallsDescriptions);
+ box->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
+ box->setEdges(RectangleEdge::None);
+ box->setMinimumSize(MyStyle::descriptionTextWidth, MyStyle::descriptionSize);
+ box->setMargins(Margins(0, MyStyle::descriptionInternalMargin, 0, MyStyle::descriptionInternalMargin));
+
+ Text *desc = new Text(box, 0, 0, 0, 0);
+ desc->setMaximumSize(MyStyle::descriptionTextWidth, MyStyle::descriptionSize);
+ desc->setEditMode(EditMode::Browse);
+ desc->setEdges(RectangleEdge::None);
+ desc->setFont(style::window::font::small);
+ desc->setRichText(descText);
+
+ return box;
+ };
+ noCallsDescriptions->firstBox = descLambda(utils::translate("app_calllog_empty_incoming"));
+ noCallsDescriptions->centerBox = descLambda(utils::translate("app_calllog_empty_outgoing"));
+ noCallsDescriptions->lastBox = descLambda(utils::translate("app_calllog_empty_missed"));
+
+ emptyLayout->setVisible(false);
+ emptyLayout->resizeItems();
+ }
+
void CallLogMainWindow::destroyInterface()
{
erase();
@@ 104,7 176,7 @@ namespace gui
{
navBar->setActive(gui::nav_bar::Side::Left, false);
navBar->setActive(gui::nav_bar::Side::Center, false);
- emptyListIcon->setVisible(true);
+ emptyLayout->setVisible(true);
application->refreshWindow(gui::RefreshModes::GUI_REFRESH_DEEP);
}
@@ 112,7 184,7 @@ namespace gui
{
navBar->setActive(gui::nav_bar::Side::Left, true);
navBar->setActive(gui::nav_bar::Side::Center, true);
- emptyListIcon->setVisible(false);
+ emptyLayout->setVisible(false);
application->refreshWindow(gui::RefreshModes::GUI_REFRESH_DEEP);
}
} /* namespace gui */
M module-apps/application-calllog/windows/CallLogMainWindow.hpp => module-apps/application-calllog/windows/CallLogMainWindow.hpp +4 -1
@@ 16,7 16,8 @@ namespace gui
{
std::shared_ptr<CalllogModel> calllogModel = nullptr;
gui::ListView *list = nullptr;
- gui::Icon *emptyListIcon = nullptr;
+
+ gui::VBox *emptyLayout = nullptr;
public:
explicit CallLogMainWindow(app::ApplicationCommon *app);
@@ 29,6 30,8 @@ namespace gui
void destroyInterface() override;
private:
+ void buildInterfaceForEmptyState();
+
bool onDatabaseMessage(sys::Message *msg) override;
void onEmptyList();
void onListFilled();
M module-apps/application-meditation/data/Style.hpp => module-apps/application-meditation/data/Style.hpp +16 -25
@@ 8,40 8,31 @@
namespace style::meditation
{
constexpr auto VerticalWidgetGap = 20;
- namespace body
- {
- constexpr auto Width = style::window_width;
- constexpr auto Height = style::window_height - style::window::default_vertical_pos - style::footer::height - 1;
- constexpr auto X = 1;
- constexpr auto Y = style::window::default_vertical_pos;
- } // namespace body
namespace timer
{
- constexpr auto Radius = 150;
- constexpr auto X = body::X + (body::Width / 2) - Radius;
- constexpr auto Y = body::Y + 20;
- constexpr auto Width = 2 * Radius;
- constexpr auto Height = Width;
+ constexpr auto Radius = 142;
+ constexpr auto X = style::window_width / 2 - Radius;
+ constexpr auto Y = style::window::default_vertical_pos + 18;
- constexpr auto BorderColor = gui::ColorGrey;
- constexpr auto BorderColorOnFocused = gui::ColorFullBlack;
- constexpr auto PenWidth = 3;
+ constexpr auto BorderColor = gui::ColorFullBlack;
+ constexpr auto PenWidth = 1;
+ constexpr auto FocusPenWidth = 3;
namespace setterValueLabel
{
- constexpr auto X = 100;
- constexpr auto Y = 100;
- constexpr auto Width = timer::Width - 2 * X;
- constexpr auto Height = timer::Height - 2 * Y;
+ constexpr auto Width = 140;
+ constexpr auto Height = 96;
+ constexpr auto TopMargin = 80;
+ constexpr auto BottomLineWidth = 100;
+ constexpr auto BottomLinePen = 2;
} // namespace setterValueLabel
namespace setterUnitLabel
{
- constexpr auto X = 0;
- constexpr auto Y = setterValueLabel::Y + setterValueLabel::Height;
- constexpr auto Width = timer::Width;
- constexpr auto Height = 40;
+ constexpr auto Width = 220;
+ constexpr auto Height = 20;
+ constexpr auto TopMargin = 15;
} // namespace setterUnitLabel
namespace infoText
@@ 57,7 48,7 @@ namespace style::meditation
namespace intervalBox
{
constexpr auto X = style::window::default_left_margin;
- constexpr auto Y = style::meditation::timer::Y + style::meditation::timer::Height + VerticalWidgetGap;
+ constexpr auto Y = style::meditation::timer::Y + 2 * style::meditation::timer::Radius + VerticalWidgetGap;
constexpr auto Width = style::window::default_body_width;
constexpr auto Height = 60;
@@ 116,7 107,7 @@ namespace style::meditation
constexpr auto X = style::window::default_left_margin;
constexpr auto Y = style::window::default_vertical_pos;
constexpr auto Width = style::listview::body_width_with_scroll;
- constexpr auto Height = style::window_height - Y - style::footer::height;
+ constexpr auto Height = style::window_height - Y - style::nav_bar::height;
} // namespace window
} // namespace listView
M module-apps/application-meditation/widgets/TimerProperty.cpp => module-apps/application-meditation/widgets/TimerProperty.cpp +23 -17
@@ 17,49 17,55 @@ TimerProperty::TimerProperty(Item *parent, const uint32_t x, const uint32_t y, c
void TimerProperty::build()
{
- const Point boxCenter(getX() + (getWidth() / 2), getY() + (getHeight() / 2));
-
namespace timerStyle = style::meditation::timer;
+
+ const Point boxCenter(getX() + (getWidth() / 2), getY() + (getHeight() / 2));
Circle::ShapeParams params;
params.setCenterPoint(boxCenter)
.setRadius(timerStyle::Radius)
.setBorderColor(timerStyle::BorderColor)
- .setFocusBorderColor(timerStyle::BorderColorOnFocused)
+ .setFocusBorderColor(timerStyle::BorderColor)
.setPenWidth(timerStyle::PenWidth)
- .setFocusPenWidth(timerStyle::PenWidth);
+ .setFocusPenWidth(timerStyle::FocusPenWidth);
circle = new Circle(this, params);
- namespace timerStyle = style::meditation::timer;
- timeLabel = new Label(this,
- timerStyle::setterValueLabel::X,
- timerStyle::setterValueLabel::Y,
- timerStyle::setterValueLabel::Width,
- timerStyle::setterValueLabel::Height);
+ centerBody = new VBox(this, 0, 0, 2 * timerStyle::Radius, 2 * timerStyle::Radius);
+ centerBody->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
+ centerBody->setMinimumSize(2 * timerStyle::Radius, 2 * timerStyle::Radius);
+ centerBody->setEdges(RectangleEdge::None);
+ centerBody->activeItem = false;
+
+ timeLabel = new Label(centerBody);
+ timeLabel->setMargins(gui::Margins(0, timerStyle::setterValueLabel::TopMargin, 0, 0));
timeLabel->setEdges(RectangleEdge::None);
+ timeLabel->setMinimumSize(timerStyle::setterValueLabel::Width, timerStyle::setterValueLabel::Height);
timeLabel->setFont(style::window::font::supersizemelight);
timeLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
timeLabel->setPenWidth(timerStyle::PenWidth);
timeLabel->setText(std::to_string(static_cast<int>(state.getTime().count())));
- timeUnitLabel = new Label(this,
- timerStyle::setterUnitLabel::X,
- timerStyle::setterUnitLabel::Y,
- timerStyle::setterUnitLabel::Width,
- timerStyle::setterUnitLabel::Height);
+ divRect = new Rect(centerBody, 0, 0, timerStyle::setterValueLabel::BottomLineWidth, 1);
+ divRect->setPenWidth(timerStyle::setterValueLabel::BottomLinePen);
+
+ timeUnitLabel = new Label(centerBody);
+ timeUnitLabel->setMinimumSize(timerStyle::setterUnitLabel::Width, timerStyle::setterUnitLabel::Height);
+ timeUnitLabel->setMargins(gui::Margins(0, timerStyle::setterUnitLabel::TopMargin, 0, 0));
timeUnitLabel->setFont(style::window::font::verysmall);
timeUnitLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
timeUnitLabel->setEdges(RectangleEdge::None);
timeUnitLabel->setText(utils::translate("app_meditation_minutes"));
+
+ centerBody->resizeItems();
}
bool TimerProperty::onFocus(bool isFocused)
{
circle->setFocus(isFocused);
if (isFocused) {
- timeLabel->setEdges(RectangleEdge::Bottom);
+ divRect->setEdges(RectangleEdge::Top);
}
else {
- timeLabel->setEdges(RectangleEdge::None);
+ divRect->setEdges(RectangleEdge::None);
}
state.onFocus();
return true;
M module-apps/application-meditation/widgets/TimerProperty.hpp => module-apps/application-meditation/widgets/TimerProperty.hpp +2 -0
@@ 42,7 42,9 @@ namespace gui
} state;
Circle *circle = nullptr;
+ VBox *centerBody = nullptr;
Label *timeLabel = nullptr;
+ Rect *divRect = nullptr;
Label *timeUnitLabel = nullptr;
void build();
M module-apps/application-meditation/windows/MeditationTimerWindow.cpp => module-apps/application-meditation/windows/MeditationTimerWindow.cpp +2 -2
@@ 47,8 47,8 @@ void MeditationTimerWindow::buildInterface()
timer = new MeditationTimer(style::meditation::timer::X,
style::meditation::timer::Y,
- style::meditation::timer::Width,
- style::meditation::timer::Height,
+ 2 * style::meditation::timer::Radius,
+ 2 * style::meditation::timer::Radius,
app,
this);
M module-apps/application-meditation/windows/MeditationWindow.cpp => module-apps/application-meditation/windows/MeditationWindow.cpp +2 -2
@@ 42,8 42,8 @@ namespace gui
timeSetter = new TimerProperty(this,
style::meditation::timer::X,
style::meditation::timer::Y,
- style::meditation::timer::Width,
- style::meditation::timer::Height);
+ 2 * style::meditation::timer::Radius,
+ 2 * style::meditation::timer::Radius);
timeSetter->setEdges(RectangleEdge::None);
setFocusItem(timeSetter);
M module-apps/application-messages/data/MessagesStyle.hpp => module-apps/application-messages/data/MessagesStyle.hpp +2 -2
@@ 18,7 18,7 @@ namespace style
inline constexpr uint32_t ListPositionY = style::window::default_vertical_pos - 1;
// Bottom margin need to be added to fit all elements.
inline constexpr uint32_t listHeight =
- style::window_height - ListPositionY - style::footer::height + style::margins::small;
+ style::window_height - ListPositionY - style::nav_bar::height + style::margins::small;
inline constexpr uint32_t listWidth = style::listview::body_width_with_scroll;
} // namespace threads
@@ 111,7 111,7 @@ namespace style
{
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
} // namespace list
M module-apps/application-messages/windows/MessagesMainWindow.cpp => module-apps/application-messages/windows/MessagesMainWindow.cpp +1 -1
@@ 73,7 73,7 @@ namespace gui
0,
style::window::default_vertical_pos,
style::window_width,
- style::window_height - style::window::default_vertical_pos - style::footer::height,
+ style::window_height - style::window::default_vertical_pos - style::nav_bar::height,
"empty_list_add_W_G",
utils::translate("app_messages_no_messages"));
emptyListIcon->setVisible(false);
M module-apps/application-music-player/data/MusicPlayerStyle.hpp => module-apps/application-music-player/data/MusicPlayerStyle.hpp +1 -1
@@ 87,7 87,7 @@ namespace musicPlayerStyle
constexpr uint32_t y = style::window::default_vertical_pos - 1;
constexpr uint32_t w = style::listview::body_width_with_scroll;
// Bottom margin need to be added to fit all elements.
- constexpr uint32_t h = style::window_height - y - style::footer::height + style::margins::small;
+ constexpr uint32_t h = style::window_height - y - style::nav_bar::height + style::margins::small;
} // namespace allSongsWindow
namespace songItem
M module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp => module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp +7 -5
@@ 520,16 520,18 @@ namespace gui
snprintf(timeToDisplay,
maxTimeToDisplaySize,
- "%d:%02d",
- static_cast<int>(currentTotalTime) / utils::time::secondsInMinute,
+ "%d:%02d:%02d",
+ static_cast<int>(currentTotalTime) / utils::time::secondsInHour,
+ static_cast<int>((currentTotalTime) % utils::time::secondsInHour) / 60,
static_cast<int>(currentTotalTime) % utils::time::secondsInMinute);
currentTotalTimeString = timeToDisplay;
- auto elapsedTime = currentTotalTime * currentProgress;
+ auto elapsedTime = static_cast<uint32_t>(currentTotalTime * currentProgress);
snprintf(timeToDisplay,
maxTimeToDisplaySize,
- "%d:%02d",
- static_cast<int>(elapsedTime) / utils::time::secondsInMinute,
+ "%d:%02d:%02d",
+ static_cast<int>(elapsedTime) / utils::time::secondsInHour,
+ static_cast<int>((elapsedTime) % utils::time::secondsInHour) / 60,
static_cast<int>(elapsedTime) % utils::time::secondsInMinute);
currentTimeString = timeToDisplay;
M module-apps/application-notes/windows/NoteMainWindow.cpp => module-apps/application-notes/windows/NoteMainWindow.cpp +1 -1
@@ 75,7 75,7 @@ namespace app::notes
0,
::style::window::default_vertical_pos,
::style::window_width,
- ::style::window_height - ::style::window::default_vertical_pos - ::style::footer::height,
+ ::style::window_height - ::style::window::default_vertical_pos - ::style::nav_bar::height,
"empty_list_add_W_G",
utils::translate("app_notes_no_notes"));
emptyListIcon->setVisible(false);
M module-apps/application-phonebook/data/PhonebookStyle.hpp => module-apps/application-phonebook/data/PhonebookStyle.hpp +6 -6
@@ 18,7 18,7 @@ namespace phonebookStyle
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace contactsList
} // namespace mainWindow
@@ 29,7 29,7 @@ namespace phonebookStyle
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace newContactsList
} // namespace newContactWindow
@@ 40,14 40,14 @@ namespace phonebookStyle
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos + 74;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace contactDetailsList
namespace contactDetailsListNoFlags
{
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace contactDetailsListNoFlags
} // namespace contactDetailsWindow
@@ 59,7 59,7 @@ namespace phonebookStyle
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace searchResultList
} // namespace searchResultsWindow
@@ 70,7 70,7 @@ namespace phonebookStyle
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace contactsListIce
} // namespace iceContactsWindow
M module-apps/application-phonebook/windows/PhonebookMainWindow.cpp => module-apps/application-phonebook/windows/PhonebookMainWindow.cpp +1 -1
@@ 53,7 53,7 @@ namespace gui
0,
::style::window::default_vertical_pos,
::style::window_width,
- ::style::window_height - ::style::window::default_vertical_pos - ::style::footer::height,
+ ::style::window_height - ::style::window::default_vertical_pos - ::style::nav_bar::height,
"empty_list_add_W_G",
utils::translate("app_phonebook_no_contacts"));
emptyListIcon->setVisible(false);
M module-apps/application-settings/models/apps/SoundsModel.cpp => module-apps/application-settings/models/apps/SoundsModel.cpp +0 -2
@@ 185,8 185,6 @@ void SoundsModel::applyItems(const std::vector<std::filesystem::path> &sounds,
utils::translate(style::strings::common::play), gui::nav_bar::Side::Left, false);
return true;
}
-
- return false;
};
break;
M module-apps/application-settings/widgets/SettingsStyle.hpp => module-apps/application-settings/widgets/SettingsStyle.hpp +2 -2
@@ 47,7 47,7 @@ namespace style
inline constexpr uint32_t x = style::window::default_left_margin;
inline constexpr uint32_t y = style::window::default_vertical_pos;
inline constexpr uint32_t w = style::listview::body_width_with_scroll;
- inline constexpr uint32_t h = style::window_height - y - style::footer::height;
+ inline constexpr uint32_t h = style::window_height - y - style::nav_bar::height;
} // namespace newApn
namespace bluetooth
@@ 115,7 115,7 @@ namespace style
inline constexpr auto X = style::window::default_left_margin;
inline constexpr auto Y = style::window::default_vertical_pos;
inline constexpr auto Width = style::listview::body_width_with_scroll;
- inline constexpr auto Height = style::window_height - Y - style::footer::height;
+ inline constexpr auto Height = style::window_height - Y - style::nav_bar::height;
} // namespace list
} // namespace quotes::categories
M module-apps/application-settings/widgets/advanced/ColorTestListStyle.hpp => module-apps/application-settings/widgets/advanced/ColorTestListStyle.hpp +1 -1
@@ 12,7 12,7 @@ namespace style::colorTest
inline constexpr auto x = style::window::default_left_margin;
inline constexpr auto y = style::window::default_vertical_pos;
inline constexpr auto width = style::listview::body_width_with_scroll;
- inline constexpr auto height = style::window_height - y - style::footer::height;
+ inline constexpr auto height = style::window_height - y - style::nav_bar::height;
} // namespace listview
namespace item
M module-apps/application-settings/windows/apps/SoundSelectWindow.cpp => module-apps/application-settings/windows/apps/SoundSelectWindow.cpp +1 -1
@@ 36,7 36,7 @@ namespace gui
style::window::default_vertical_pos - 1,
style::listview::body_width_with_scroll,
style::window_height - style::window::default_vertical_pos + 1 -
- style::footer::height + style::margins::small,
+ style::nav_bar::height + style::margins::small,
mSoundsModel,
listview::ScrollBarType::Proportional);
M module-apps/application-settings/windows/display-keypad/QuotesMainWindow.cpp => module-apps/application-settings/windows/display-keypad/QuotesMainWindow.cpp +1 -1
@@ 16,7 16,7 @@ namespace style::quotes
constexpr auto X = style::window::default_left_margin;
constexpr auto Y = style::window::default_vertical_pos;
constexpr auto Width = style::listview::body_width_with_scroll;
- constexpr auto Height = style::window_height - Y - style::footer::height;
+ constexpr auto Height = style::window_height - Y - style::nav_bar::height;
} // namespace list
} // namespace style::quotes
M module-apps/application-settings/windows/network/ApnSettingsWindow.cpp => module-apps/application-settings/windows/network/ApnSettingsWindow.cpp +1 -1
@@ 28,7 28,7 @@ namespace gui
0,
style::window::default_vertical_pos,
style::window_width,
- style::window_height - style::window::default_vertical_pos - style::footer::height,
+ style::window_height - style::window::default_vertical_pos - style::nav_bar::height,
"empty_list_add_W_G",
utils::translate("app_settings_apn_settings_no_apns"));
emptyListIcon->setVisible(false);
M module-apps/apps-common/audio/AbstractSoundsPlayer.hpp => module-apps/apps-common/audio/AbstractSoundsPlayer.hpp +2 -2
@@ 17,9 17,9 @@ class AbstractSoundsPlayer
Stopped
};
- using AudioEofCallback = std::function<void()>;
+ using AudioStoppedCallback = std::function<void()>;
- virtual bool play(const std::string &path, AudioEofCallback cb = nullptr) = 0;
+ virtual bool play(const std::string &path, AudioStoppedCallback cb = nullptr) = 0;
virtual bool pause() = 0;
virtual bool resume() = 0;
virtual bool stop() = 0;
M module-apps/apps-common/audio/SoundsPlayer.cpp => module-apps/apps-common/audio/SoundsPlayer.cpp +6 -6
@@ 7,9 7,9 @@ SoundsPlayer::SoundsPlayer(app::ApplicationCommon *app)
: audioOperations{std::make_unique<app::AsyncAudioOperations>(app)}
{}
-bool SoundsPlayer::play(const std::string &path, AudioEofCallback cb)
+bool SoundsPlayer::play(const std::string &path, AudioStoppedCallback cb)
{
- eofCallback = nullptr;
+ audioStoppedCallback = nullptr;
return audioOperations->play(path, [this, path, cb](audio::RetCode retCode, audio::Token token) {
if (retCode != audio::RetCode::Success || !token.IsValid()) {
LOG_ERROR("Audio preview callback failed with retcode = %s. Token validity: %d",
@@ 20,7 20,7 @@ bool SoundsPlayer::play(const std::string &path, AudioEofCallback cb)
currentState = State::Playing;
currentToken = token;
currentPath = path;
- eofCallback = cb;
+ audioStoppedCallback = cb;
});
}
@@ 62,7 62,7 @@ bool SoundsPlayer::resume()
bool SoundsPlayer::stop()
{
- eofCallback = nullptr;
+ audioStoppedCallback = nullptr;
if (currentToken.IsValid()) {
return audioOperations->stop(currentToken,
@@ 75,8 75,8 @@ bool SoundsPlayer::stop(audio::Token token)
{
if (currentToken.IsValid() && currentToken == token) {
currentState = State::Stopped;
- if (eofCallback != nullptr) {
- eofCallback();
+ if (audioStoppedCallback != nullptr) {
+ audioStoppedCallback();
}
return true;
}
M module-apps/apps-common/audio/SoundsPlayer.hpp => module-apps/apps-common/audio/SoundsPlayer.hpp +2 -2
@@ 11,7 11,7 @@ class SoundsPlayer : public AbstractSoundsPlayer
explicit SoundsPlayer(app::ApplicationCommon *app);
virtual ~SoundsPlayer() = default;
- bool play(const std::string &path, AudioEofCallback cb = nullptr) override;
+ bool play(const std::string &path, AudioStoppedCallback cb = nullptr) override;
bool pause() override;
bool resume() override;
bool stop() override;
@@ 25,5 25,5 @@ class SoundsPlayer : public AbstractSoundsPlayer
audio::Token currentToken;
std::string currentPath;
- AudioEofCallback eofCallback{nullptr};
+ AudioStoppedCallback audioStoppedCallback{nullptr};
};
M => +0 -3
@@ 28,9 28,6 @@ namespace gui
metadata.icon = "turn_off_W_G";
auto msg = std::make_unique<DialogMetadataMessage>(std::move(metadata));
DialogYesNo::onBeforeShow(mode, msg.get());
navBar->setActive(nav_bar::Side::Center, false);
navBar->setActive(nav_bar::Side::Right, false);
}
} /* namespace gui */
M module-apps/apps-common/widgets/BellSideListItem.cpp => module-apps/apps-common/widgets/BellSideListItem.cpp +1 -1
@@ 32,7 32,7 @@ namespace gui
bottomText->setEdges(RectangleEdge::None);
bottomText->activeItem = false;
bottomText->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
- bottomText->setText(description);
+ bottomText->setRichText(description);
bottomText->drawUnderline(false);
}
M module-apps/apps-common/widgets/DateAndTimeStyle.hpp => module-apps/apps-common/widgets/DateAndTimeStyle.hpp +1 -1
@@ 15,5 15,5 @@ namespace style::window::date_and_time
inline constexpr auto listView_x = style::window::default_left_margin;
inline constexpr auto listView_y = style::window::default_vertical_pos;
inline constexpr auto listView_w = style::listview::body_width_with_scroll;
- inline constexpr auto listView_h = style::window_height - listView_y - style::footer::height;
+ inline constexpr auto listView_h = style::window_height - listView_y - style::nav_bar::height;
} // namespace style::window::date_and_time
M module-apps/apps-common/windows/AppWindow.cpp => module-apps/apps-common/windows/AppWindow.cpp +5 -1
@@ 51,7 51,11 @@ namespace gui
style::header::width,
style::header::height);
- navBar = new gui::nav_bar::NavBar(this, 0, style::window_height - 51, style::window_width, 50);
+ navBar = new gui::nav_bar::NavBar(this,
+ style::nav_bar::default_horizontal_pos,
+ style::nav_bar::default_vertical_pos,
+ style::nav_bar::width,
+ style::nav_bar::height);
navBar->setActive(nav_bar::Side::Left, false);
navBar->setActive(nav_bar::Side::Center, false);
navBar->setActive(nav_bar::Side::Right, false);
M module-bluetooth/Bluetooth/interface/BluetoothDriverImpl.cpp => module-bluetooth/Bluetooth/interface/BluetoothDriverImpl.cpp +1 -1
@@ 215,7 215,7 @@ namespace bluetooth
}
auto Driver::pair(Devicei device, std::uint8_t protectionLevel) -> bool
{
- LOG_FATAL("Device: %s, addr: %s", device.name.c_str(), device.address_str());
+ LOG_INFO("Device: %s, addr: %s", device.name.c_str(), device.address_str());
return gap->pair(device, protectionLevel);
}
auto Driver::unpair(Devicei device) -> bool
M module-bluetooth/Bluetooth/interface/profiles/HFP/HFP.cpp => module-bluetooth/Bluetooth/interface/profiles/HFP/HFP.cpp +1 -0
@@ 276,6 276,7 @@ namespace bluetooth
scoHandle = HCI_CON_HANDLE_INVALID;
isAudioRouted = false;
isAudioConnectionEstablished = false;
+ sendAudioEvent(audio::EventType::BlutoothHFPDeviceState, audio::Event::DeviceState::Disconnected);
break;
case HFP_SUBEVENT_START_RINGING:
LOG_DEBUG("Start Ringing\n");
M module-bluetooth/Bluetooth/interface/profiles/HSP/HSP.cpp => module-bluetooth/Bluetooth/interface/profiles/HSP/HSP.cpp +1 -0
@@ 215,6 215,7 @@ namespace bluetooth
LOG_DEBUG("Audio connection released.\n\n");
scoHandle = HCI_CON_HANDLE_INVALID;
callAnswered = false;
+ sendAudioEvent(audio::EventType::BlutoothHSPDeviceState, audio::Event::DeviceState::Disconnected);
break;
case HSP_SUBEVENT_MICROPHONE_GAIN_CHANGED:
LOG_DEBUG("Received microphone gain change %d\n", hsp_subevent_microphone_gain_changed_get_gain(event));
M module-bluetooth/Bluetooth/interface/profiles/SCO/SCO.cpp => module-bluetooth/Bluetooth/interface/profiles/SCO/SCO.cpp +1 -4
@@ 127,10 127,7 @@ auto SCO::SCOImpl::audioInitialize(int sampleRate) -> Error
metadata.channels = 1;
metadata.samplesPerFrame = audioSamplesPerPacket;
- if (sourceQueue != nullptr && sinkQueue != nullptr) {
- sendEvent(audio::EventType::BlutoothHSPDeviceState, audio::Event::DeviceState::Connected);
- }
- else {
+ if (sourceQueue == nullptr || sinkQueue == nullptr) {
LOG_ERROR("failed to create queue!");
return Error(Error::SystemError);
}
M module-bsp/board/rt1051/bellpx/board/BoardDefinitions.hpp => module-bsp/board/rt1051/bellpx/board/BoardDefinitions.hpp +2 -2
@@ 147,8 147,8 @@ enum class BoardDefinitions
BELL_SWITCHES_GPIO = static_cast<int>(drivers::GPIOInstances ::GPIO_2),
BELL_SWITCHES_CENTER = 16, // GPIO_B1_00
- BELL_SWITCHES_LEFT = 24, // GPIO_B1_08
- BELL_SWITCHES_RIGHT = 25, // GPIO_B1_09
+ BELL_SWITCHES_RIGHT = 24, // GPIO_B1_08
+ BELL_SWITCHES_LEFT = 25, // GPIO_B1_09
BELL_SWITCHES_LATCH = 26, // GPIO_B1_10
BELL_SWITCHES_DOME = 27, // GPIO_B1_11
M module-gui/gui/core/FontManager.cpp => module-gui/gui/core/FontManager.cpp +2 -0
@@ 142,7 142,9 @@ namespace gui
auto font = find(name);
// default return first font
if (font == nullptr && fonts.size() > 0) {
+#if DEBUG_MISSING_ASSETS == 1
LOG_ERROR("=> font not found: %s using default", name.data());
+#endif
return fonts[0];
}
return font;
M module-gui/gui/core/ImageManager.cpp => module-gui/gui/core/ImageManager.cpp +4 -0
@@ 240,7 240,9 @@ namespace gui
ImageMap *ImageManager::getImageMap(uint32_t id)
{
if (id >= imageMaps.size()) {
+#if DEBUG_MISSING_ASSETS == 1
LOG_ERROR("Unable to find an image by id: %" PRIu32, id);
+#endif
return imageMaps[fallbackImageId];
}
return imageMaps[id];
@@ 254,7 256,9 @@ namespace gui
return i;
}
}
+#if DEBUG_MISSING_ASSETS == 1
LOG_ERROR("Unable to find an image: %s , using deafult fallback image instead.", name.c_str());
+#endif
return fallbackImageId;
}
M module-gui/gui/widgets/Label.cpp => module-gui/gui/widgets/Label.cpp +3 -2
@@ 271,12 271,13 @@ namespace gui
textColor = color;
}
- uint32_t Label::getTextNeedSpace() const noexcept
+ uint32_t Label::getTextNeedSpace(const UTF8 &_text) const noexcept
{
if (font == nullptr) {
return 0;
}
- return font->getPixelWidth(text);
+
+ return _text.empty() ? font->getPixelWidth(text) : font->getPixelWidth(_text);
}
uint32_t Label::getTextHeight() const noexcept
M module-gui/gui/widgets/Label.hpp => module-gui/gui/widgets/Label.hpp +1 -1
@@ 126,7 126,7 @@ namespace gui
RawFont *getFont() const noexcept;
// virtual methods
void buildDrawListImplementation(std::list<Command> &commands) override;
- uint32_t getTextNeedSpace() const noexcept;
+ uint32_t getTextNeedSpace(const UTF8 &text = "") const noexcept;
/// line: height
uint32_t getTextHeight() const noexcept;
uint32_t getTextWidth() const noexcept;
M module-gui/gui/widgets/NavBar.cpp => module-gui/gui/widgets/NavBar.cpp +123 -71
@@ 10,74 10,62 @@
namespace gui::nav_bar
{
- NavBar::NavBar()
+ NavBar::NavBar(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+ : HThreeBox<HBox, HBox, HBox>(parent, x, y, w, h)
{
+ setEdges(RectangleEdge::None);
- Padding margins{style::window::navBar::leftMargin, 0, style::window::navBar::rightMargin, 0};
- left = prepareLabel(Side::Left);
- center = prepareLabel(Side::Center);
- right = prepareLabel(Side::Right);
+ firstBox = new HBox(this);
+ firstBox->setMinimumHeight(h);
+ firstBox->setAlignment(Alignment(Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ firstBox->setMargins({style::nav_bar::left_margin, 0, 0, 0});
+ firstBox->setEdges(RectangleEdge::None);
- left->setPadding(margins);
- center->setPadding(margins);
- right->setPadding(margins);
+ centerBox = new HBox(this);
+ centerBox->setEdges(RectangleEdge::None);
+ centerBox->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
+ centerBox->setMaximumSize(w, h);
- addWidget(left);
- addWidget(center);
- addWidget(right);
+ lastBox = new HBox(this);
+ lastBox->setMinimumHeight(h);
+ lastBox->setAlignment(Alignment(Alignment::Horizontal::Right, gui::Alignment::Vertical::Center));
+ lastBox->setMargins({0, 0, style::nav_bar::right_margin, 0});
+ lastBox->setEdges(RectangleEdge::None);
- setFillColor(ColorFullWhite);
- setBorderColor(ColorNoColor);
- setFilled(true);
- setSize(style::window::navBar::w, style::window::navBar::h);
- }
- NavBar::NavBar(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h) : Rect{parent, x, y, w, h}
- {
-
- Padding margins{style::window::navBar::leftMargin, 0, style::window::navBar::rightMargin, 0};
- left = prepareLabel(Side::Left);
- center = prepareLabel(Side::Center);
- right = prepareLabel(Side::Right);
+ createLabels();
- left->setPadding(margins);
- center->setPadding(margins);
- right->setPadding(margins);
-
- addWidget(left);
- addWidget(center);
- addWidget(right);
-
- setFillColor(ColorFullWhite);
- setBorderColor(ColorNoColor);
- setFilled(true);
- setSize(style::window::navBar::w, style::window::navBar::h);
- updateDrawArea();
+ resizeItems();
}
- NavBar::~NavBar()
- {}
- gui::Label *NavBar::prepareLabel(nav_bar::Side side)
+ void NavBar::createLabels()
{
- Label *label = new Label(this, 0, 0, 0, 0);
- label->setBorderColor(Color{15, 15});
- switch (side) {
- case Side::Left:
- label->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
- label->setFont(style::footer::font::medium);
- break;
- case Side::Center:
- label->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
- label->setFont(style::footer::font::bold);
- break;
- case Side::Right:
- label->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Center));
- label->setFont(style::footer::font::medium);
- break;
- };
-
- label->setFilled(false);
-
- return label;
+ left = new Label(firstBox);
+ left->setAlignment(Alignment(Alignment::Horizontal::Left, gui::Alignment::Vertical::Bottom));
+ left->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
+ left->setMinimumHeight(widgetArea.h);
+ left->setFont(style::nav_bar::font::medium);
+ left->setEllipsis(Ellipsis::Right);
+ left->setVisible(true);
+ left->setEdges(RectangleEdge::None);
+
+ center = new Label(centerBox);
+ center->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
+ center->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
+ center->setMinimumHeight(widgetArea.h);
+ center->setMaximumWidth(widgetArea.w);
+ center->setFont(style::nav_bar::font::bold);
+ center->setEllipsis(Ellipsis::Right);
+ center->setVisible(true);
+ center->setEdges(RectangleEdge::None);
+
+ right = new Label(lastBox);
+ right->setAlignment(Alignment(Alignment::Horizontal::Right, gui::Alignment::Vertical::Center));
+ right->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
+ right->setMinimumHeight(widgetArea.h);
+ right->setFont(style::nav_bar::font::medium);
+ right->setEllipsis(Ellipsis::Right);
+ right->setVisible(true);
+ right->setEdges(RectangleEdge::None);
}
Label *NavBar::getSide(nav_bar::Side side)
@@ 93,9 81,78 @@ namespace gui::nav_bar
return nullptr;
}
+ bool NavBar::checkSideOccupied(nav_bar::Side side)
+ {
+ return getSide(side)->visible && !getSide(side)->getText().empty();
+ }
+
+ Length NavBar::outerSideUsedWidth(nav_bar::Side side)
+ {
+ return getSide(side)->visible ? getSide(side)->getTextNeedSpace() : 0;
+ }
+
+ void NavBar::setLeftSideWidth(Length width)
+ {
+ left->setMinimumWidth(width);
+ firstBox->setMinimumWidth(width);
+ firstBox->setMaximumWidth(width);
+ }
+
+ void NavBar::setRightSideWidth(Length width)
+ {
+ right->setMinimumWidth(width);
+ lastBox->setMinimumWidth(width);
+ lastBox->setMaximumWidth(width);
+ }
+
+ void NavBar::applyOuterSidesWidth(nav_bar::Side side, const UTF8 &str)
+ {
+ Length widthToSet = 0U;
+ if (side == Side::Left) {
+ widthToSet = std::max(outerSideUsedWidth(Side::Right), left->visible ? left->getTextNeedSpace(str) : 0);
+ }
+ else if (side == Side::Right) {
+ widthToSet = std::max(outerSideUsedWidth(Side::Left), right->visible ? right->getTextNeedSpace(str) : 0);
+ }
+ else {
+ widthToSet = std::max(outerSideUsedWidth(Side::Left), outerSideUsedWidth(Side::Right));
+ }
+
+ // If other side active set maximum for side to print into
+ auto widthReduced = false;
+ if ((side == Side::Left && !str.empty() &&
+ (checkSideOccupied(Side::Right) || checkSideOccupied(Side::Center))) ||
+ (side == Side::Right && !str.empty() &&
+ (checkSideOccupied(Side::Left) || checkSideOccupied(Side::Center))) ||
+ (side == Side::Center && !str.empty() &&
+ (checkSideOccupied(Side::Left) || checkSideOccupied(Side::Right)))) {
+
+ widthReduced = true;
+ widthToSet =
+ std::min(widthToSet, (widgetArea.w - (style::nav_bar::left_margin + style::nav_bar::right_margin)) / 3);
+ }
+
+ if (widthReduced) {
+ setLeftSideWidth(widthToSet);
+ setRightSideWidth(widthToSet);
+ }
+ else if (side == Side::Left && !str.empty()) {
+ setLeftSideWidth(widthToSet);
+ setRightSideWidth(0);
+ }
+ else if (side == Side::Right && !str.empty()) {
+ setRightSideWidth(widthToSet);
+ setLeftSideWidth(0);
+ }
+ }
+
void NavBar::setActive(nav_bar::Side side, bool active)
{
- getSide(side)->setVisible(active);
+ auto selectedSide = getSide(side);
+
+ selectedSide->setVisible(active);
+ applyOuterSidesWidth(side, selectedSide->getText());
+ selectedSide->informContentChanged();
}
bool NavBar::isActive(nav_bar::Side side)
@@ 105,8 162,12 @@ namespace gui::nav_bar
void NavBar::setText(nav_bar::Side side, const UTF8 &str, bool active)
{
- getSide(side)->setText(str);
- setActive(side, active);
+ auto selectedSide = getSide(side);
+ selectedSide->setVisible(active);
+
+ applyOuterSidesWidth(side, str);
+ selectedSide->setText(str);
+ selectedSide->informContentChanged();
}
UTF8 NavBar::getText(nav_bar::Side side)
@@ 114,15 175,6 @@ namespace gui::nav_bar
return getSide(side)->getText();
}
- bool NavBar::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim)
- {
- Rect::onDimensionChanged(oldDim, newDim);
- left->setSize(newDim.w, newDim.h);
- center->setSize(newDim.w, newDim.h);
- right->setSize(newDim.w, newDim.h);
- return true;
- }
-
void NavBar::store()
{
store(Side::Left);
M module-gui/gui/widgets/NavBar.hpp => module-gui/gui/widgets/NavBar.hpp +9 -7
@@ 23,7 23,7 @@ namespace gui::nav_bar
/// left is left action key, center describes center (enter) key, and right right action key
/// depending on screen selected elements will be visible
/// @note when in Text widget it will show input mode if enabled in [ left ] area
- class NavBar : public Rect
+ class NavBar : public HThreeBox<HBox, HBox, HBox>
{
protected:
struct Cache
@@ 54,27 54,29 @@ namespace gui::nav_bar
Label *left = nullptr;
Label *center = nullptr;
Label *right = nullptr;
- gui::Label *prepareLabel(nav_bar::Side side);
+ void createLabels();
+
+ void setLeftSideWidth(Length width);
+ void setRightSideWidth(Length width);
+ bool checkSideOccupied(nav_bar::Side side);
+ Length outerSideUsedWidth(nav_bar::Side side);
+ void applyOuterSidesWidth(nav_bar::Side side, const UTF8 &str);
Label *getSide(nav_bar::Side side);
public:
- NavBar();
NavBar(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h);
- virtual ~NavBar();
void setActive(nav_bar::Side side, bool active);
bool isActive(nav_bar::Side side);
void setText(nav_bar::Side side, const UTF8 &str, bool active = true);
UTF8 getText(nav_bar::Side side);
+ void setFont(Side side, const UTF8 &fontName);
void store();
void store(Side side);
void restore();
void restore(Side side);
- void setFont(Side side, const UTF8 &fontName);
-
- bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override;
void accept(GuiVisitor &visitor) override;
};
M module-gui/gui/widgets/Style.hpp => module-gui/gui/widgets/Style.hpp +22 -23
@@ 27,16 27,16 @@ namespace style
inline constexpr auto default_horizontal_pos = 20U;
inline constexpr auto default_vertical_pos = 0U;
inline constexpr unsigned status_bar_margin_w = default_horizontal_pos * 2;
- inline constexpr auto height = 46U;
inline constexpr auto width = window_width - status_bar_margin_w;
+ inline constexpr auto height = 46U;
} // namespace status_bar
namespace header
{
inline constexpr auto default_horizontal_pos = 0U;
inline constexpr auto default_vertical_pos = status_bar::height;
- inline constexpr auto height = 59U;
inline constexpr auto width = window_width;
+ inline constexpr auto height = 59U;
namespace font
{
@@ 44,16 44,6 @@ namespace style
} // namespace font
} // namespace header
- namespace footer
- {
- inline constexpr auto height = 54U;
- namespace font
- {
- inline constexpr auto bold = "gt_pressura_bold_24";
- inline constexpr auto medium = "gt_pressura_regular_24";
- }; // namespace font
- }; // namespace footer
-
namespace window
{
inline constexpr auto default_vertical_pos = header::default_vertical_pos + header::height;
@@ 61,8 51,7 @@ namespace style
inline constexpr auto default_right_margin = 20U;
inline constexpr auto default_body_width =
style::window_width - style::window::default_right_margin - style::window::default_left_margin;
- inline constexpr auto default_body_height =
- style::window_height - style::window::default_vertical_pos - style::footer::height;
+ inline constexpr auto default_body_height = 441U;
inline constexpr auto default_border_focus_w = 2U;
inline constexpr auto default_border_rect_no_focus = 1U;
inline constexpr auto default_border_no_focus_w = 0U;
@@ 103,15 92,6 @@ namespace style
/// minimal label decoration for Option
void decorateOption(gui::Label *el);
- namespace navBar
- {
- inline constexpr auto leftMargin = 30U;
- inline constexpr auto rightMargin = 30U;
-
- inline constexpr auto h = 54U;
- inline constexpr auto w = window_width;
- } // namespace navBar
-
namespace progressBar
{
inline constexpr auto x = style::window::default_left_margin;
@@ 122,6 102,25 @@ namespace style
}; // namespace progressBar
}; // namespace window
+ namespace nav_bar
+ {
+ inline constexpr auto default_horizontal_pos = 0U;
+ inline constexpr auto default_vertical_pos = window::default_vertical_pos + window::default_body_width;
+ inline constexpr auto width = window_width;
+ inline constexpr auto height = 54U;
+
+ inline constexpr auto bottom_padding = 16U;
+ inline constexpr auto left_margin = 30U;
+ inline constexpr auto right_margin = 30U;
+
+ namespace font
+ {
+ inline constexpr auto bold = "gt_pressura_bold_24";
+ inline constexpr auto medium = "gt_pressura_regular_24";
+ }; // namespace font
+
+ } // namespace nav_bar
+
namespace settings
{
namespace date
M module-services/service-evtmgr/EventManager.cpp => module-services/service-evtmgr/EventManager.cpp +5 -0
@@ 118,6 118,11 @@ sys::MessagePointer EventManagerCommon::DataReceivedHandler(sys::DataMessage *ms
bluetooth::AudioProfile::HSP, (event->getDeviceState() == audio::Event::DeviceState::Connected));
bus.sendUnicast(message, app::name_settings);
} break;
+ case audio::EventType::BlutoothHFPDeviceState: {
+ auto message = std::make_shared<message::bluetooth::ProfileStatus>(
+ bluetooth::AudioProfile::HFP, (event->getDeviceState() == audio::Event::DeviceState::Connected));
+ bus.sendUnicast(message, app::name_settings);
+ } break;
default:
break;
}
M module-utils/log/api/log/debug.hpp => module-utils/log/api/log/debug.hpp +1 -0
@@ 18,3 18,4 @@
#define DEBUG_TIMER 0 /// debug timers system utility
#define DEBUG_SETTINGS_DB 0 /// show extensive settings logs for all applications
#define DEBUG_SERVICE_CELLULAR 0 /// show various logs in cellular service
+#define DEBUG_MISSING_ASSETS 1 /// show debug concerning missing assets
M products/BellHybrid/apps/application-bell-alarm/windows/BellAlarmSetWindow.cpp => products/BellHybrid/apps/application-bell-alarm/windows/BellAlarmSetWindow.cpp +2 -1
@@ 14,7 14,8 @@ namespace gui
{
BellAlarmSetWindow::BellAlarmSetWindow(app::ApplicationCommon *app,
std::shared_ptr<app::bell_alarm::BellAlarmSetContract::Presenter> presenter)
- : WindowWithTimer(app, gui::window::name::bellAlarmSet), presenter{std::move(presenter)}
+ : WindowWithTimer(app, gui::window::name::bellAlarmSet, alarmSummaryDisplayDuration), presenter{
+ std::move(presenter)}
{
buildInterface();
}
M products/BellHybrid/apps/application-bell-alarm/windows/BellAlarmSetWindow.hpp => products/BellHybrid/apps/application-bell-alarm/windows/BellAlarmSetWindow.hpp +1 -0
@@ 24,6 24,7 @@ namespace gui
void onBeforeShow(ShowMode mode, SwitchData *data) override;
private:
+ constexpr static auto alarmSummaryDisplayDuration = std::chrono::seconds{5};
std::shared_ptr<app::bell_alarm::BellAlarmSetContract::Presenter> presenter;
Icon *icon{};
};
M products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp => products/BellHybrid/apps/application-bell-onboarding/ApplicationBellOnBoarding.cpp +1 -1
@@ 135,7 135,7 @@ namespace app
{
auto [icon, text] = getDisplayDataFromState();
switchWindow(gui::window::name::informationOnBoardingWindow,
- gui::BellFinishedWindowData::Factory::create(icon, windowToReturn));
+ gui::BellFinishedWindowData::Factory::create(icon, windowToReturn, utils::translate(text)));
}
OnBoarding::InformationDisplay ApplicationBellOnBoarding::getDisplayDataFromState()
M products/BellHybrid/apps/application-bell-onboarding/windows/OnBoardingFinalizeWindow.cpp => products/BellHybrid/apps/application-bell-onboarding/windows/OnBoardingFinalizeWindow.cpp +2 -1
@@ 39,6 39,7 @@ namespace gui
BellFinishedWindow::onBeforeShow(mode, data);
icon->image->set("bell_big_logo", ImageTypeSpecifier::W_G);
- icon->text->setRichText(utils::translate("app_bell_onboarding_finalize"));
+ icon->text->setFont(style::window::font::verybiglight);
+ icon->text->setText(utils::translate("app_bell_onboarding_finalize"));
}
} // namespace gui
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp +11 -11
@@ 25,11 25,7 @@ namespace app::bell_settings
auto onOff =
new OnOffListItem(model.getSnoozeOnOff(), utils::translate("app_bell_settings_alarm_settings_snooze"));
- onOff->onExit = [onOff, this]() {
- if (not onOff->isActive()) {
- this->onExit();
- }
- };
+
internalData.emplace_back(onOff);
constexpr auto snoozeLengthStep = 1U;
constexpr auto snoozeLengthMin = 1U;
@@ 51,6 47,11 @@ namespace app::bell_settings
chimeLength->setBottomDescribtionText(utils::translate("common_minutes_lower"));
}
});
+ chimeLength->onEnter = [onOff, this]() {
+ if (not onOff->isActive()) {
+ this->onExit();
+ }
+ };
internalData.emplace_back(chimeLength);
@@ 66,11 67,6 @@ namespace app::bell_settings
range,
utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval"),
utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc"));
- chimeInterval->onExit = [chimeInterval, this] {
- if (chimeInterval->isOff()) {
- this->onExit();
- }
- };
internalData.emplace_back(chimeInterval);
auto snoozeChimeTone = new UTF8ListItem(model.getSnoozeChimeTone(),
@@ 81,7 77,11 @@ namespace app::bell_settings
onToneChange(val);
}
});
- snoozeChimeTone->onEnter = [this, snoozeChimeTone]() {
+ snoozeChimeTone->onEnter = [this, snoozeChimeTone, chimeInterval]() {
+ if (chimeInterval->isOff()) {
+ this->onExit();
+ return;
+ }
if (onToneEnter) {
onToneEnter(snoozeChimeTone->getCurrentValue());
}
M products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp => products/BellHybrid/apps/common/include/common/data/BellFinishedWindowSwitchData.hpp +6 -4
@@ 14,20 14,22 @@ namespace gui
struct Factory
{
static std::unique_ptr<BellFinishedWindowData> create(const UTF8 &icon,
- const std::string &windowToReturn)
+ const std::string &windowToReturn,
+ const UTF8 &text = "")
{
- return std::unique_ptr<BellFinishedWindowData>(new BellFinishedWindowData(icon, windowToReturn));
+ return std::unique_ptr<BellFinishedWindowData>(new BellFinishedWindowData(icon, windowToReturn, text));
}
};
UTF8 icon{};
std::string windowToReturn;
+ UTF8 text{};
private:
BellFinishedWindowData() = default;
- BellFinishedWindowData(const UTF8 &icon, const std::string &windowToReturn)
- : icon{icon}, windowToReturn{windowToReturn}
+ BellFinishedWindowData(const UTF8 &icon, const std::string &windowToReturn, const UTF8 &text = "")
+ : icon{icon}, windowToReturn{windowToReturn}, text{text}
{}
};
} // namespace gui
M products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp => products/BellHybrid/apps/common/src/windows/BellFinishedWindow.cpp +2 -0
@@ 30,6 30,7 @@ namespace gui
if (icon == nullptr) {
icon = new Icon(this, 0, 0, style::window_width, style::window_height, {}, {});
icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
+ icon->text->setFont(style::window::font::verybiglight);
}
}
@@ 48,6 49,7 @@ namespace gui
if (auto metadata = dynamic_cast<BellFinishedWindowData *>(data)) {
icon->image->set(metadata->icon);
+ icon->text->setRichText(metadata->text);
icon->resizeItems();
windowToReturn = metadata->windowToReturn;
}
M products/BellHybrid/apps/common/src/windows/BellWelcomeWindow.cpp => products/BellHybrid/apps/common/src/windows/BellWelcomeWindow.cpp +0 -1
@@ 53,7 53,6 @@ namespace gui
auto instructionText = new TextFixedSize(informationBody);
instructionText->setMargins(Margins(0, sun_logo_margin_top, 0, 0));
- instructionText->setFont(style::window::font::largelight);
instructionText->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
instructionText->drawUnderline(false);
instructionText->setFont(style::window::font::verybiglight);
M products/BellHybrid/services/evtmgr/internal/key_sequences/AlarmActivateSequence.hpp => products/BellHybrid/services/evtmgr/internal/key_sequences/AlarmActivateSequence.hpp +3 -3
@@ 3,11 3,11 @@
#pragma once
-#include "ReleaseSequence.hpp"
+#include "MovedSequence.hpp"
-class AlarmActivateSequence : public ReleaseSequence
+class AlarmActivateSequence : public MovedSequence
{
public:
- AlarmActivateSequence() : ReleaseSequence(KeyMap::DeepPressUp)
+ AlarmActivateSequence() : MovedSequence(KeyMap::DeepPressUp)
{}
};
M products/BellHybrid/services/evtmgr/internal/key_sequences/AlarmDeactivateSequence.hpp => products/BellHybrid/services/evtmgr/internal/key_sequences/AlarmDeactivateSequence.hpp +3 -3
@@ 3,11 3,11 @@
#pragma once
-#include "ReleaseSequence.hpp"
+#include "MovedSequence.hpp"
-class AlarmDeactivateSequence : public ReleaseSequence
+class AlarmDeactivateSequence : public MovedSequence
{
public:
- AlarmDeactivateSequence() : ReleaseSequence(KeyMap::DeepPressDown)
+ AlarmDeactivateSequence() : MovedSequence(KeyMap::DeepPressDown)
{}
};
A products/BellHybrid/services/evtmgr/internal/key_sequences/MovedSequence.hpp => products/BellHybrid/services/evtmgr/internal/key_sequences/MovedSequence.hpp +28 -0
@@ 0,0 1,28 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include "AbstractKeySequence.hpp"
+#include <keymap/KeyMap.hpp>
+
+class MovedSequence : public AbstractKeySequence
+{
+ public:
+ explicit MovedSequence(KeyMap key) : mappedKey{key}
+ {}
+ void process(const RawKey &key) override
+ {
+ if (mapKey(static_cast<gui::KeyCode>(key.keyCode)) != mappedKey) {
+ return;
+ }
+
+ if (key.state == RawKey::State::Moved) {
+ trigger();
+ ready();
+ }
+ }
+
+ private:
+ KeyMap mappedKey;
+};