~aleteoryx/muditaos

fed0508bb8d4d2e3b83945f1e3806d1171969412 — tomaszkrosnowski 4 years ago 38bc935
[EGD-5371] Fixed UI for calls

Calllog window and call details UI and layout fixes. Replaced icons.
Other UI changes.
38 files changed, 119 insertions(+), 310 deletions(-)

A art/phone/application_call/call_mute_W_M.png
A art/phone/application_call/call_mute_on_W_M.png
A art/phone/application_call/call_speaker_W_M.png
A art/phone/application_call/call_speaker_on_W_M.png
A art/phone/application_call/calllog_arrow_den_W_G.png
A art/phone/application_call/calllog_arrow_in_W_G.png
A art/phone/application_call/calllog_arrow_out_W_G.png
A art/phone/application_call/callog_empty_W_G.png
D art/phone/application_call/microphone_off.png
D art/phone/application_call/microphone_on.png
D art/phone/application_call/mute.png
D art/phone/application_call/mute.svg
D art/phone/application_call/speaker.svg
D art/phone/application_call/speaker_off.png
D art/phone/application_call/speaker_on.png
R image/assets/images/{mail => call_message_W_M}.vpi
A image/assets/images/call_mute_W_M.vpi
A image/assets/images/call_mute_on_W_M.vpi
R image/assets/images/{speaker_off => call_speaker_W_M}.vpi
A image/assets/images/call_speaker_on_W_M.vpi
A image/assets/images/calllog_arrow_den_W_G.vpi
A image/assets/images/calllog_arrow_in_W_G.vpi
A image/assets/images/calllog_arrow_out_W_G.vpi
A image/assets/images/callog_empty_W_G.vpi
A image/assets/images/cross_W_M.vpi
D image/assets/images/microphone_off.vpi
D image/assets/images/microphone_on.vpi
D image/assets/images/mute.vpi
D image/assets/images/speaker.vpi
D image/assets/images/speaker_on.vpi
M image/assets/lang/English.json
M module-apps/application-call/widgets/StateIcon.hpp
M module-apps/application-call/widgets/StateIcons.cpp
M module-apps/application-calllog/data/CallLogStyle.hpp
M module-apps/application-calllog/windows/CallLogDetailsWindow.cpp
M module-apps/application-calllog/windows/CallLogMainWindow.cpp
M module-apps/application-calllog/windows/CallLogMainWindow.hpp
M module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp
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
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/English.json => image/assets/lang/English.json +3 -0
@@ 153,6 153,9 @@
  "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": "Delete this call from the list?",

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-calllog/data/CallLogStyle.hpp => module-apps/application-calllog/data/CallLogStyle.hpp +15 -0
@@ 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

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, gui::ImageTypeSpecifier::W_M);
            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::nav_bar::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-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;