[gnome-maps] placeBubble: Use icons instead of labels
- From: Marcus Lundblad <mlundblad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps] placeBubble: Use icons instead of labels
- Date: Sun, 15 Nov 2020 21:43:12 +0000 (UTC)
commit 8be56ef470485c2593e32a1b1097723d34132b31
Author: James Westman <james flyingpimonster net>
Date: Fri Aug 7 18:43:29 2020 -0500
placeBubble: Use icons instead of labels
- Remove the "extended content" button. All data is shown.
- Use icons instead of labels. This makes it look nicer and makes it easier to
find the information you're looking for.
- Improve margins, alignment, etc. around the rows.
- Improve the strings for a couple tags. Instead of "Toilets: Yes", for example,
we now have "Toilets available". Same with wheelchair and internet_access.
- Some minor code cleanup.
.../hicolor/16x16/apps/map-marker-symbolic.svg | 74 +++++
.../hicolor/16x16/apps/mountain-symbolic.svg | 5 +
.../hicolor/16x16/apps/no-toilets-symbolic.svg | 44 +++
.../hicolor/16x16/apps/no-wheelchair-symbolic.svg | 43 +++
.../16x16/apps/phone-oldschool-symbolic.svg | 41 +++
.../hicolor/16x16/apps/toilets-symbolic.svg | 47 +++
.../16x16/apps/wheelchair-limited-symbolic.svg | 44 +++
.../hicolor/16x16/apps/wheelchair-symbolic.svg | 8 +
data/ui/place-bubble.ui | 78 +----
src/place.js | 53 ----
src/placeBubble.js | 325 +++++++++++++--------
src/translations.js | 45 ---
12 files changed, 524 insertions(+), 283 deletions(-)
---
diff --git a/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg
new file mode 100644
index 00000000..4d5a6b17
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ viewBox="0 0 16 16"
+ version="1.1"
+ id="svg7384"
+ height="16">
+ <metadata
+ id="metadata90">
+ <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>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <title
+ id="title9167">Gnome Symbolic Icon Theme</title>
+ <defs
+ id="defs7386">
+ <linearGradient
+ osb:paint="solid"
+ id="linearGradient7212">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop7214" />
+ </linearGradient>
+ </defs>
+ <g
+ transform="translate(-380.00852,79.9875)"
+ style="display:inline"
+ id="layer1" />
+ <g
+ transform="translate(-621.00872,446.9875)"
+ style="display:inline"
+ id="layer9" />
+ <g
+ transform="translate(-621.00872,446.9875)"
+ style="display:inline"
+ id="g7628" />
+ <g
+ transform="translate(-380.00852,-120.0125)"
+ id="layer13">
+ <path
+ d="m 388.00867,121.00914 c -2.76142,0 -5,2.23858 -5,5 0,0.17259 0.0142,0.33191 0.0312,0.5
0.0137,0.16725 0.0358,0.33617 0.0625,0.5 0.57248,3.51444 2.9063,6.00336 4.9063,8.00336 2,-2 4.33372,-4.48892
4.9062,-8.00336 0.0267,-0.16383 0.0488,-0.33275 0.0625,-0.5 0.0171,-0.16809 0.0312,-0.32741 0.0312,-0.5
0,-2.76142 -2.23858,-5 -5,-5 z m 0,3 c 1.10457,0 2,0.89543 2,2 0,1.10457 -0.89543,2 -2,2 -1.10457,0
-2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 z"
+ id="path5874-9"
+
style="color:#000000;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;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new"
/>
+ </g>
+ <g
+ transform="translate(-380.00852,79.9875)"
+ style="display:inline"
+ id="g6387" />
+ <g
+ transform="translate(-380.00852,79.9875)"
+ style="display:inline"
+ id="layer10" />
+ <g
+ transform="translate(-380.00852,79.9875)"
+ id="layer12" />
+ <g
+ transform="translate(-380.00852,79.9875)"
+ style="display:inline"
+ id="layer11" />
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg
new file mode 100644
index 00000000..ab3daf84
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
+ <g fill="#2e3436">
+ <path d="M0 14h10.286L4.747 5.297zM8.933 2.766L6.857 6.57 11.571 14H16z" style="marker:none"/>
+ </g>
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg
new file mode 100644
index 00000000..de9a2668
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/'
sodipodi:docname='no-toilets-symbolic.svg' height='16' id='svg7384'
xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'
xmlns:osb='http://www.openswatchbook.org/uri/2009/osb'
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg'
inkscape:version='1.0 (4035a4fb49, 2020-05-01)' version='1.1' viewBox='0 0 16.010088 16' width='16.010088'
xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <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>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666'
borderopacity='1' inkscape:current-layer='layer13' inkscape:cx='-487.48695' inkscape:cy='343.73006'
inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10'
id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='56,310.597' inkscape:object-nodes='true'
inkscape:object-paths='true' objecttolerance='10' pagecolor='#ebebeb' inkscape:pageopacity='1'
inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:snap-bbox='true'
inkscape:snap-bbox-edge-midpoints='true' inkscape:snap-bbox-midpoints='true' inkscape:snap-global='true'
inkscape:snap-grids='true' inkscape:snap-intersection-paths='true' inkscape:snap-nodes='true'
inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1205'
inkscape:window-maximized='0' inkscape:window-width='1558' inkscape:window-x='26' inkscape:window-y='23'
inkscape:zoom='16'>
+ <inkscape:grid empspacing='4' enabled='true' id='grid4866' originx='-680' originy='-100'
snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ <inkscape:grid dotted='true' empspacing='4' id='grid2980' originx='-680' originy='-100' spacingx='0.5'
spacingy='0.5' type='xygrid'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'>
+ <linearGradient id='linearGradient7212' osb:paint='solid'>
+ <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+ </linearGradient>
+ </defs>
+ <g inkscape:groupmode='layer' id='layer1' inkscape:label='ui' style='display:inline'
transform='translate(-680,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer21' inkscape:label='legacy' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='shapes' style='display:inline'
transform='translate(-921.0002,467)'/>
+ <g inkscape:groupmode='layer' id='g7628' inkscape:label='other' style='display:inline'
transform='translate(-921.0002,467)'/>
+ <g inkscape:groupmode='layer' id='layer19' inkscape:label='multimedia' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='layer13' inkscape:label='maps' transform='translate(-680,-100)'>
+ <path d='m 686,102.04474 a 1.9999999,1.9999999 0 0 1 -2,2 1.9999999,1.9999999 0 0 1 -2,-2
1.9999999,1.9999999 0 0 1 2,-2 1.9999999,1.9999999 0 0 1 2,2' id='circle5592'
style='color:#000000;display:inline;overflow:visible;visibility:visible;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.811746;marker:none;enable-background:accumulate'/>
+ <path d='m 695,102.04474 a 1.9999999,1.9999999 0 0 1 -2,2 1.9999999,1.9999999 0 0 1 -2,-2
1.9999999,1.9999999 0 0 1 2,-2 1.9999999,1.9999999 0 0 1 2,2' id='circle5594'
style='color:#000000;display:inline;overflow:visible;visibility:visible;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.811746;marker:none;enable-background:accumulate'/>
+
+ <path d='m 688,101 v 8.08594 l 1,1 V 101 Z m -4.08594,4 3.08594,3.08594 v -2.04688 C 687,105.46293
686.53706,105 685.96094,105 Z m 8.09375,0 c -0.57612,0 -0.94683,0.47036 -1.03906,1.03906 l -0.83984,5.17578
1.83789,1.83789 H 692 v 0.0332 l 1.70703,1.70703 a 1,1 0 0 1 0.084,0.0996 C 693.9152,114.79968 694,114.65755
694,114.49023 v -1.4375 h 0.96094 c 0.57612,0 1.13126,-0.47036 1.03906,-1.03906 l -0.96875,-5.97461 C
694.93902,105.47036 694.56831,105 693.99219,105 Z m -10.65429,0.26758 C 681.13938,105.45757 681,105.7286
681,106.03906 v 4.42188 c 0,0.56222 0.44328,1.00959 1,1.03125 v 2.51562 c 0,0.54955 0.44264,0.99219
0.99219,0.99219 h 2.01562 C 685.55736,115 686,114.55736 686,114.00781 v -2.51562 c 0.42311,-0.0165
0.77851,-0.28057 0.92578,-0.65235 z M 688,111.91406 V 115 h 1 v -2.08594 z' id='rect5598'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.683005;stroke-linecap:square;stop-color:#000000'/>
+ <path d='M 682.0293 101 A 1 1 0 0 0 681.29297 101.29297 A 1 1 0 0 0 681.29297 102.70703 L 693.29297
114.70703 A 1 1 0 0 0 694.70703 114.70703 A 1 1 0 0 0 694.70703 113.29297 L 682.70703 101.29297 A 1 1 0 0 0
682.0293 101 z ' id='path2282'
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-variant-east-asian:normal;font-feature-settings:normal;font-variation-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;shape-mar
gin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1'/>
+ </g>
+ <g inkscape:groupmode='layer' id='layer11' inkscape:label='graphics' style='display:inline'
transform='translate(-680,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer14' inkscape:label='food-drink' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='g6387' inkscape:label='devices' style='display:inline'
transform='translate(-680,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer18' inkscape:label='text' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='layer17' inkscape:label='weather' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='layer16' inkscape:label='camera' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='layer10' inkscape:label='body' style='display:inline'
transform='translate(-680,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer15' inkscape:label='animals' transform='translate(-680,-100)'/>
+ <g inkscape:groupmode='layer' id='layer12' inkscape:label='alert' transform='translate(-680,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer20' inkscape:label='accessibility'
transform='translate(-680,-100)'/>
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg
new file mode 100644
index 00000000..46f6ddd1
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/'
sodipodi:docname='no-wheelchair-symbolic.svg' height='16' id='svg7384'
xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'
xmlns:osb='http://www.openswatchbook.org/uri/2009/osb'
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg'
inkscape:version='1.0 (4035a4fb49, 2020-05-01)' version='1.1' viewBox='0 0 16 16' width='16'
xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <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>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666'
borderopacity='1' inkscape:current-layer='layer20' inkscape:cx='82.58603' inkscape:cy='21.619635'
inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10'
id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='56,310.597' inkscape:object-nodes='true'
inkscape:object-paths='true' objecttolerance='10' pagecolor='#ebebeb' inkscape:pageopacity='1'
inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='false' inkscape:snap-bbox='true'
inkscape:snap-bbox-edge-midpoints='true' inkscape:snap-bbox-midpoints='true' inkscape:snap-global='true'
inkscape:snap-grids='true' inkscape:snap-intersection-paths='true' inkscape:snap-nodes='true'
inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1205'
inkscape:window-maximized='0' inkscape:window-width='1558' inkscape:window-x='26' inkscape:window-y='23' i
nkscape:zoom='8'>
+ <inkscape:grid empspacing='4' enabled='true' id='grid4866' originx='-320' originy='-60.011276'
snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ <inkscape:grid dotted='true' empspacing='4' id='grid2980' originx='-320' originy='-60.011276'
spacingx='0.5' spacingy='0.5' type='xygrid'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'>
+ <linearGradient id='linearGradient7212' osb:paint='solid'>
+ <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+ </linearGradient>
+ </defs>
+ <g inkscape:groupmode='layer' id='layer1' inkscape:label='ui' style='display:inline'
transform='translate(-320,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer21' inkscape:label='legacy' transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='shapes' style='display:inline'
transform='translate(-561.0002,506.98872)'/>
+ <g inkscape:groupmode='layer' id='g7628' inkscape:label='other' style='display:inline'
transform='translate(-561.0002,506.98872)'/>
+ <g inkscape:groupmode='layer' id='layer19' inkscape:label='multimedia'
transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer13' inkscape:label='maps' transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer11' inkscape:label='graphics' style='display:inline'
transform='translate(-320,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer14' inkscape:label='food-drink'
transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='g6387' inkscape:label='devices' style='display:inline'
transform='translate(-320,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer18' inkscape:label='text' transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer17' inkscape:label='weather'
transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer16' inkscape:label='camera' transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer10' inkscape:label='body' style='display:inline'
transform='translate(-320,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer15' inkscape:label='animals'
transform='translate(-320,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer12' inkscape:label='alert' transform='translate(-320,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer20' inkscape:label='accessibility'
transform='translate(-320,-60.011276)'>
+
+ <path d='M 322.0293 61 A 1 1 0 0 0 321.29297 61.292969 A 1 1 0 0 0 321.29297 62.707031 L 333.29297
74.707031 A 1 1 0 0 0 334.70703 74.707031 A 1 1 0 0 0 334.70703 73.292969 L 322.70703 61.292969 A 1 1 0 0 0
322.0293 61 z ' id='path2259'
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-variant-east-asian:normal;font-feature-settings:normal;font-variation-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;shape-margi
n:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1'/>
+ <path d='m 325.95117,60.125 c -0.7546,0.01863 -1.43443,0.460522 -1.75781,1.142578 C 323.99013,61.45691
323.8748,61.722241 323.875,62 v 0.5 c 2.8e-4,0.127168 0.0248,0.253116 0.0723,0.371094 l 4.06946,6.236495 c
0.1517,0.379505 0.51904,0.628525 0.92773,0.628906 L 331.18164,71 l 2.04407,3.189545 c 0.14643,0.389846
0.40785,0.81017 0.82429,0.810455 h 0.825 c 0.55228,0 1,-0.447715 1,-1 0,-0.552285 -0.44772,-1 -1,-1 h
-0.80664 l -1.25781,-3.351562 C 332.66412,69.258592 332.29144,69.000285 331.875,69 h -3.32227 l -0.40039,-1 H
331 c 0.55228,0 1,-0.447715 1,-1 0,-0.552285 -0.44772,-1 -1,-1 h -3.64844 l -0.7832,-1.958984 C
327.41697,63.789489 327.99932,63.010098 328,62.125 c 0,-1.104569 -0.89543,-2 -2,-2 -0.0163,-1.99e-4
-0.0326,-1.99e-4 -0.0488,0 z' id='path5524' sodipodi:nodetypes='ccccccccccssscccccssscccccc'
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-variant-east-asian:normal;font-feature-settings:normal;font-variation-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;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;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;stop-color:#000000'/>
+ <path d='m 322.85352,66.671875 c -0.26143,0.246837 -0.49717,0.520341 -0.70508,0.814453 l
1.39844,1.398438 c 0.17837,-0.318524 0.3935,-0.613781 0.6621,-0.857422 z m -1.26954,1.839844 c
-0.16408,0.394345 -0.27846,0.812639 -0.34179,1.248047 l 2.20508,2.205078 c -0.21018,-0.441258
-0.33789,-0.930413 -0.33789,-1.455078 0,-0.147076 0.0268,-0.286105 0.0449,-0.427735 z m -0.32812,2.851562 c
0.36594,2.236262 2.13874,4.00906 4.375,4.375 z m 7.71094,1.421875 c -0.24323,0.26863 -0.53719,0.483808
-0.85547,0.66211 l 1.37305,1.373046 c 0.28889,-0.212878 0.55529,-0.454242 0.79687,-0.720703 z m
-3.9375,0.761719 2.20312,2.203125 c 0.43456,-0.06509 0.84868,-0.183193 1.23828,-0.351562 l -1.55859,-1.558594
c -0.14167,0.01812 -0.28062,0.04492 -0.42773,0.04492 -0.52468,-10e-7 -1.01382,-0.127709 -1.45508,-0.337891 z'
id='path7499-7'
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-li
gatures: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;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.92844;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:aut
o;text-rendering:auto;enable-background:accumulate'/>
+ </g>
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg
new file mode 100644
index 00000000..dcc3f2da
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/'
sodipodi:docname='phone-oldschool-symbolic.svg' height='16' id='svg7384'
xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'
xmlns:osb='http://www.openswatchbook.org/uri/2009/osb'
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg'
inkscape:version='1.0 (4035a4fb49, 2020-05-01)' version='1.1' viewBox='0 0 16 16' width='16'
xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <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>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666'
borderopacity='1' inkscape:current-layer='g6387' inkscape:cx='12.51305' inkscape:cy='5.73006'
inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10'
id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='56,310.597' inkscape:object-nodes='true'
inkscape:object-paths='true' objecttolerance='10' pagecolor='#ebebeb' inkscape:pageopacity='1'
inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:snap-bbox='true'
inkscape:snap-bbox-edge-midpoints='true' inkscape:snap-bbox-midpoints='true' inkscape:snap-global='true'
inkscape:snap-grids='true' inkscape:snap-intersection-paths='true' inkscape:snap-nodes='true'
inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1205'
inkscape:window-maximized='0' inkscape:window-width='1558' inkscape:window-x='26' inkscape:window-y='23'
inksca
pe:zoom='16'>
+ <inkscape:grid empspacing='4' enabled='true' id='grid4866' originx='-180' originy='-438'
snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ <inkscape:grid dotted='true' empspacing='4' id='grid2980' originx='-180' originy='-438' spacingx='0.5'
spacingy='0.5' type='xygrid'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'>
+ <linearGradient id='linearGradient7212' osb:paint='solid'>
+ <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+ </linearGradient>
+ </defs>
+ <g inkscape:groupmode='layer' id='layer1' inkscape:label='ui' style='display:inline'
transform='translate(-180,-238)'/>
+ <g inkscape:groupmode='layer' id='layer21' inkscape:label='legacy' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='shapes' style='display:inline'
transform='translate(-421.0002,129)'/>
+ <g inkscape:groupmode='layer' id='g7628' inkscape:label='other' style='display:inline'
transform='translate(-421.0002,129)'/>
+ <g inkscape:groupmode='layer' id='layer19' inkscape:label='multimedia' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer13' inkscape:label='maps' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer11' inkscape:label='graphics' style='display:inline'
transform='translate(-180,-238)'/>
+ <g inkscape:groupmode='layer' id='layer14' inkscape:label='food-drink' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='g6387' inkscape:label='devices' style='display:inline'
transform='translate(-180,-238)'>
+ <path inkscape:connector-curvature='0' d='m 190.99415,240 c -0.554,0 -1,0.446 -1,1 v 1.5 1.5 c 0,0.554
0.446,1 1,1 h 0.71094 c -0.66833,2.26605 -2.44489,4.04261 -4.71094,4.71094 V 249 c 0,-0.554 -0.446,-1 -1,-1 h
-1.5 -1.5 c -0.554,0 -1,0.446 -1,1 v 1.5 a 2.5,2.5 0 0 0 2.5,2.5 h 0.5 c 5.50508,0 10,-4.49492 10,-10 v -0.5
a 2.5,2.5 0 0 0 -2.5,-2.5 z' id='path1026'
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:baselin
e;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new'/>
+
+ </g>
+ <g inkscape:groupmode='layer' id='layer18' inkscape:label='text' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer17' inkscape:label='weather' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer16' inkscape:label='camera' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer10' inkscape:label='body' style='display:inline'
transform='translate(-180,-238)'/>
+ <g inkscape:groupmode='layer' id='layer15' inkscape:label='animals' transform='translate(-180,-438)'/>
+ <g inkscape:groupmode='layer' id='layer12' inkscape:label='alert' transform='translate(-180,-238)'/>
+ <g inkscape:groupmode='layer' id='layer20' inkscape:label='accessibility'
transform='translate(-180,-438)'/>
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg
new file mode 100644
index 00000000..06abf130
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg
@@ -0,0 +1,47 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/'
sodipodi:docname='toilets-symbolic.svg' height='16' id='svg7384'
xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'
xmlns:osb='http://www.openswatchbook.org/uri/2009/osb'
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg'
inkscape:version='1.0 (4035a4fb49, 2020-05-01)' version='1.1' viewBox='0 0 16.010075 16' width='16.010075'
xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <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>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666'
borderopacity='1' inkscape:current-layer='layer13' inkscape:cx='-467.48695' inkscape:cy='343.73006'
inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10'
id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='56,310.597' inkscape:object-nodes='true'
inkscape:object-paths='true' objecttolerance='10' pagecolor='#ebebeb' inkscape:pageopacity='1'
inkscape:pageshadow='2' showborder='false' showgrid='true' showguides='false' inkscape:snap-bbox='true'
inkscape:snap-bbox-edge-midpoints='true' inkscape:snap-bbox-midpoints='true' inkscape:snap-global='true'
inkscape:snap-grids='true' inkscape:snap-intersection-paths='true' inkscape:snap-nodes='true'
inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1205'
inkscape:window-maximized='0' inkscape:window-width='1558' inkscape:window-x='26' inkscape:window-y='23'
inkscape:zoom='16'>
+ <inkscape:grid empspacing='4' enabled='true' id='grid4866' originx='-660.00002' originy='-100'
snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ <inkscape:grid dotted='true' empspacing='4' id='grid2980' originx='-660.00002' originy='-100'
spacingx='0.5' spacingy='0.5' type='xygrid'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'>
+ <linearGradient id='linearGradient7212' osb:paint='solid'>
+ <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+ </linearGradient>
+ </defs>
+ <g inkscape:groupmode='layer' id='layer1' inkscape:label='ui' style='display:inline'
transform='translate(-660,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer21' inkscape:label='legacy' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='shapes' style='display:inline'
transform='translate(-901.0002,467)'/>
+ <g inkscape:groupmode='layer' id='g7628' inkscape:label='other' style='display:inline'
transform='translate(-901.0002,467)'/>
+ <g inkscape:groupmode='layer' id='layer19' inkscape:label='multimedia' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='layer13' inkscape:label='maps' transform='translate(-660,-100)'>
+ <path d='m 666,102.04474 a 1.9999999,1.9999999 0 0 1 -2,2 1.9999999,1.9999999 0 0 1 -2,-2
1.9999999,1.9999999 0 0 1 2,-2 1.9999999,1.9999999 0 0 1 2,2' id='circle5567'
style='color:#000000;display:inline;overflow:visible;visibility:visible;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.811746;marker:none;enable-background:accumulate'/>
+ <path d='m 675,102.04474 a 1.9999999,1.9999999 0 0 1 -2,2 1.9999999,1.9999999 0 0 1 -2,-2
1.9999999,1.9999999 0 0 1 2,-2 1.9999999,1.9999999 0 0 1 2,2' id='circle5575'
style='color:#000000;display:inline;overflow:visible;visibility:visible;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.811746;marker:none;enable-background:accumulate'/>
+
+ <path d='m 662.03994,105 h 3.92012 c 0.57612,0 1.03994,0.46382 1.03994,1.03994 v 4.42012 c 0,0.57612
-0.46382,1.03994 -1.03994,1.03994 h -3.92012 C 661.46382,111.5 661,111.03618 661,110.46006 v -4.42012 C
661,105.46382 661.46382,105 662.03994,105 Z' id='rect5577'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.683005;stroke-linecap:square;stop-color:#000000'/>
+ <path d='m 662.99197,108.5 h 2.01606 c 0.54955,0 0.99197,0.44242 0.99197,0.99197 v 4.51606 C
666,114.55758 665.55758,115 665.00803,115 h -2.01606 C 662.44242,115 662,114.55758 662,114.00803 v -4.51606 c
0,-0.54955 0.44242,-0.99197 0.99197,-0.99197 z' id='rect5579'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.557671;stroke-linecap:square;stop-color:#000000'/>
+ <path d='m 672.50887,108.5 h 0.98226 c 0.28191,0 0.50887,0.22696 0.50887,0.50887 v 5.48226 C
674,114.77304 673.77304,115 673.49113,115 h -0.98226 C 672.22696,115 672,114.77304 672,114.49113 v -5.48226 c
0,-0.28191 0.22696,-0.50887 0.50887,-0.50887 z' id='rect5581'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.557671;stroke-linecap:square;stop-color:#000000'/>
+ <path d='m 672.00869,105 h 1.98262 c 0.57612,0 0.94771,0.47125 1.03994,1.03994 L 676,112.01323 c
0.0922,0.5687 -0.46382,1.03994 -1.03994,1.03994 h -3.92012 c -0.57612,0 -1.13217,-0.47124 -1.03994,-1.03994 l
0.96875,-5.97329 C 671.06098,105.47125 671.43257,105 672.00869,105 Z' id='rect5583'
sodipodi:nodetypes='sssssssss'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.683005;stroke-linecap:square;stop-color:#000000'/>
+ <path d='m 668,101 h 1 v 14 h -1 z' id='rect5588'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.683005;stroke-linecap:square;stop-color:#000000'/>
+ </g>
+ <g inkscape:groupmode='layer' id='layer11' inkscape:label='graphics' style='display:inline'
transform='translate(-660,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer14' inkscape:label='food-drink' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='g6387' inkscape:label='devices' style='display:inline'
transform='translate(-660,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer18' inkscape:label='text' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='layer17' inkscape:label='weather' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='layer16' inkscape:label='camera' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='layer10' inkscape:label='body' style='display:inline'
transform='translate(-660,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer15' inkscape:label='animals' transform='translate(-660,-100)'/>
+ <g inkscape:groupmode='layer' id='layer12' inkscape:label='alert' transform='translate(-660,99.999998)'/>
+ <g inkscape:groupmode='layer' id='layer20' inkscape:label='accessibility'
transform='translate(-660,-100)'/>
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg
new file mode 100644
index 00000000..ae2fdd03
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/'
sodipodi:docname='wheelchair-limited-symbolic.svg' height='16' id='svg7384'
xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'
xmlns:osb='http://www.openswatchbook.org/uri/2009/osb'
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg'
inkscape:version='1.0 (4035a4fb49, 2020-05-01)' version='1.1' viewBox='0 0 16 16' width='16'
xmlns='http://www.w3.org/2000/svg'>
+ <metadata id='metadata90'>
+ <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>Gnome Symbolic Icon Theme</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666'
borderopacity='1' inkscape:current-layer='layer20' inkscape:cx='42.586335' inkscape:cy='21.619635'
inkscape:document-rotation='0' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10'
id='namedview88' inkscape:measure-end='0,0' inkscape:measure-start='56,310.597' inkscape:object-nodes='true'
inkscape:object-paths='true' objecttolerance='10' pagecolor='#ebebeb' inkscape:pageopacity='1'
inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='false' inkscape:snap-bbox='true'
inkscape:snap-bbox-edge-midpoints='true' inkscape:snap-bbox-midpoints='true' inkscape:snap-global='true'
inkscape:snap-grids='true' inkscape:snap-intersection-paths='true' inkscape:snap-nodes='true'
inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1205'
inkscape:window-maximized='0' inkscape:window-width='1558' inkscape:window-x='26' inkscape:window-y='23'
inkscape:zoom='8'>
+ <inkscape:grid empspacing='4' enabled='true' id='grid4866' originx='-359.99969' originy='-60.011276'
snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+ <inkscape:grid dotted='true' empspacing='4' id='grid2980' originx='-359.99969' originy='-60.011276'
spacingx='0.5' spacingy='0.5' type='xygrid'/>
+ </sodipodi:namedview>
+ <title id='title9167'>Gnome Symbolic Icon Theme</title>
+ <defs id='defs7386'>
+ <linearGradient id='linearGradient7212' osb:paint='solid'>
+ <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+ </linearGradient>
+ </defs>
+ <g inkscape:groupmode='layer' id='layer1' inkscape:label='ui' style='display:inline'
transform='translate(-359.99969,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer21' inkscape:label='legacy'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer9' inkscape:label='shapes' style='display:inline'
transform='translate(-600.99989,506.98872)'/>
+ <g inkscape:groupmode='layer' id='g7628' inkscape:label='other' style='display:inline'
transform='translate(-600.99989,506.98872)'/>
+ <g inkscape:groupmode='layer' id='layer19' inkscape:label='multimedia'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer13' inkscape:label='maps'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer11' inkscape:label='graphics' style='display:inline'
transform='translate(-359.99969,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer14' inkscape:label='food-drink'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='g6387' inkscape:label='devices' style='display:inline'
transform='translate(-359.99969,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer18' inkscape:label='text'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer17' inkscape:label='weather'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer16' inkscape:label='camera'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer10' inkscape:label='body' style='display:inline'
transform='translate(-359.99969,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer15' inkscape:label='animals'
transform='translate(-359.99969,-60.011276)'/>
+ <g inkscape:groupmode='layer' id='layer12' inkscape:label='alert'
transform='translate(-359.99969,139.98872)'/>
+ <g inkscape:groupmode='layer' id='layer20' inkscape:label='accessibility'
transform='translate(-359.99969,-60.011276)'>
+
+ <path d='M 364.875 61 A 1 1 0 0 0 363.875 62 L 363.875 62.5 A 1.0001 1.0001 0 0 0 363.94727 62.871094 L
366.94727 70.371094 A 1.0001 1.0001 0 0 0 367.875 71 L 371.18164 71 L 372.43945 74.351562 A 1.0001 1.0001 0 0
0 373.375 75 L 374.875 75 A 1 1 0 0 0 375.875 74 A 1 1 0 0 0 374.875 73 L 374.06836 73 L 372.81055 69.648438
A 1.0001 1.0001 0 0 0 371.875 69 L 368.55273 69 L 365.875 62.306641 L 365.875 62 A 1 1 0 0 0 364.875 61 z '
id='path2261'
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-variant-east-asian:normal;font-feature-settings:normal;font-variation-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;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;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;stop-color:#000000;stop-opacity:1;opacity:1'/>
+ <path d='m 368,62.125 a 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 2,2 0 0 1 2,-2 2,2 0 0 1 2,2' id='circle5478'
style='fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1'/>
+ <path inkscape:connector-curvature='0' d='m 364.25139,65.707031 c -1.8082,0.847059 -3.06968,2.682233
-3.06968,4.802263 0,2.917436 2.38578,5.303205 5.3032,5.303206 1.93137,-10e-7 3.58118,-1.067756
4.48963,-2.627121 l -0.49153,-1.229755 h -0.95666 c -0.5392,1.140537 -1.68743,1.928437 -3.04144,1.928438
-1.87524,-10e-7 -3.37478,-1.499537 -3.37478,-3.374768 0,-1.31102 0.74115,-2.42521 1.82297,-2.984936 z'
id='path5481'
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-orientatio
n: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;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:0.3;fill-rule:nonzero;stroke:none;stroke-width:1.92844;stroke-linecap:round;stroke-linejoin:round;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'/>
+ <path d='M 367 66 A 1 1 0 0 0 366 67 A 1 1 0 0 0 367 68 L 371 68 A 1 1 0 0 0 372 67 A 1 1 0 0 0 371 66 L
367 66 z ' id='path2265'
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-variant-east-asian:normal;font-feature-settings:normal;font-variation-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;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-b
lend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;opacity:1'/>
+ </g>
+</svg>
diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg
b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg
new file mode 100644
index 00000000..be789b79
--- /dev/null
+++ b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16.012">
+ <g fill="#2e3436">
+ <path d="M5 7.037a4.5 4.5 0 00-3.658 2.74 4.506 4.506 0 00.977 4.905 4.506 4.506 0 004.904.976A4.5
4.5 0 009.963 12h-2.02a2.494 2.494 0 01-4.21 1.268A2.494 2.494 0 015 9.057z"
style="line-height:normal;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-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1"
color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/>
+ <path d="M10 7L9 5H7S6 5 6 6v3c0 2 2 2 2 2h2z"/>
+ <path d="M9 9a1 1 0 100 2h1.434l2.709 4.514a1 1 0 101.715-1.028L11.567 9zM8.99 4.99a1 1 0 00-.697
1.717L9.586 8H13a1 1 0 100-2h-2.586l-.707-.707a1 1 0 00-.716-.303z"
style="line-height:normal;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-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1"
color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill-rule="evenodd"/>
+ <path d="M10 2a2 2 0 01-2 2 2 2 0 01-2-2 2 2 0 012-2 2 2 0 012 2z"/>
+ </g>
+</svg>
diff --git a/data/ui/place-bubble.ui b/data/ui/place-bubble.ui
index 5d0d2cce..0704a78d 100644
--- a/data/ui/place-bubble.ui
+++ b/data/ui/place-bubble.ui
@@ -2,10 +2,11 @@
<!-- Generated with glade 3.18.1 -->
<interface>
<requires lib="gtk+" version="3.12"/>
- <object class="GtkGrid" id="grid-content">
+ <object class="GtkGrid" id="main-grid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column-spacing">12</property>
+ <property name="row-spacing">6</property>
<child>
<object class="HdyAvatar" id="contact-avatar">
<property name="visible">False</property>
@@ -19,85 +20,30 @@
</packing>
</child>
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <child>
- <object class="GtkLabel" id="label-title">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="expand">True</property>
- <property name="use_markup">True</property>
- <style>
- <class name="bubble-title"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkToggleButton" id="expand-button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="valign">GTK_ALIGN_START</property>
- <property name="halign">GTK_ALIGN_CENTER</property>
- <property name="tooltip-text" translatable="yes" comments="Translators: This is a tooltip">Show
more information</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon-name">view-more-symbolic</property>
- <property name="pixel_size">16</property>
- </object>
- </child>
- <style>
- <class name="image-button"/>
- <class name="circular"/>
- <class name="flat"/>
- </style>
- </object>
- </child>
- </object>
- <packing>
- <property name="left-attach">1</property>
- <property name="top-attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="box-content">
+ <object class="GtkLabel" id="label-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="orientation">vertical</property>
+ <property name="halign">start</property>
+ <property name="expand">True</property>
<style>
- <class name="bubble-content"/>
+ <class name="bubble-title"/>
</style>
</object>
<packing>
<property name="left-attach">1</property>
- <property name="top-attach">1</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
- <object class="GtkRevealer" id="content-revealer">
+ <object class="GtkBox" id="place-details">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="vexpand">True</property>
- <property name="margin-top">5</property>
- <child>
- <object class="GtkGrid" id="expanded-content">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="vexpand">True</property>
- <property name="column-spacing">5</property>
- <style>
- <class name="bubble-content"/>
- </style>
- </object>
- </child>
+ <property name="orientation">vertical</property>
</object>
<packing>
- <property name="left-attach">1</property>
- <property name="top-attach">2</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
</packing>
</child>
</object>
diff --git a/src/place.js b/src/place.js
index 675e3320..f9134363 100644
--- a/src/place.js
+++ b/src/place.js
@@ -27,7 +27,6 @@ const GObject = imports.gi.GObject;
const Location = imports.location;
const Overpass = imports.overpass;
-const Translations = imports.translations;
const Utils = imports.utils;
// Matches coordinates string in 'Decimal Degrees' format
@@ -192,18 +191,10 @@ class Place extends Geocode.Place {
this._internetAccess = v;
}
- get openingHoursTranslated() {
- return Translations.translateOpeningHours(this._openingHours);
- }
-
get internetAccess() {
return this._internetAccess;
}
- get internetAccessTranslated() {
- return Translations.translateInternetAccess(this._internetAccess);
- }
-
set religion(v) {
this._religion = v;
}
@@ -212,10 +203,6 @@ class Place extends Geocode.Place {
return this._religion;
}
- get religionTranslated() {
- return Translations.translateReligion(this._religion);
- }
-
set toilets(v) {
this._toilets = v;
}
@@ -224,10 +211,6 @@ class Place extends Geocode.Place {
return this._toilets;
}
- get toiletsTranslated() {
- return Translations.translateYesNo(this._toilets);
- }
-
set note(v) {
this._note = v;
}
@@ -244,10 +227,6 @@ class Place extends Geocode.Place {
return this._wheelchair;
}
- get wheelchairTranslated() {
- return this._translateWheelchair(this._wheelchair);
- }
-
get initialZoom() {
return this._initialZoom;
}
@@ -260,38 +239,6 @@ class Place extends Geocode.Place {
this._prefilled = prefilled;
}
- _translateWheelchair(string) {
- switch(string) {
- /* Translators:
- * This means wheelchairs have full unrestricted access.
- */
- case 'yes': return _("yes");
-
- /* Translators:
- * This means wheelchairs have partial access (e.g some areas
- * can be accessed and others not, areas requiring assistance
- * by someone pushing up a steep gradient).
- */
- case 'limited': return _("limited");
-
- /* Translators:
- * This means wheelchairs have no unrestricted access
- * (e.g. stair only access).
- */
- case 'no': return _("no");
-
- /* Translators:
- * This means that the way or area is designated or purpose built
- * for wheelchairs (e.g. elevators designed for wheelchair access
- * only). This is rarely used.
- */
- case 'designated': return _("designated");
-
- default: return null;
- }
- }
-
-
toJSON() {
let bounding_box = null;
diff --git a/src/placeBubble.js b/src/placeBubble.js
index 5d44139c..bab3e4bf 100644
--- a/src/placeBubble.js
+++ b/src/placeBubble.js
@@ -34,6 +34,7 @@ const Place = imports.place;
const PlaceBubbleImage = imports.placeBubbleImage;
const PlaceFormatter = imports.placeFormatter;
const PlaceStore = imports.placeStore;
+const Translations = imports.translations;
const Utils = imports.utils;
const Wikipedia = imports.wikipedia;
@@ -52,13 +53,10 @@ var PlaceBubble = GObject.registerClass({
}, class PlaceBubble extends MapBubble.MapBubble {
_init(params) {
- let ui = Utils.getUIObject('place-bubble', [ 'box-content',
- 'grid-content',
+ let ui = Utils.getUIObject('place-bubble', [ 'main-grid',
+ 'place-details',
'contact-avatar',
- 'label-title',
- 'expand-button',
- 'expanded-content',
- 'content-revealer']);
+ 'label-title']);
params.buttons = (MapBubble.Button.ROUTE |
MapBubble.Button.SEND_TO);
@@ -73,11 +71,8 @@ var PlaceBubble = GObject.registerClass({
this.loading = true;
this._title = ui.labelTitle;
- this._boxContent = ui.boxContent;
- this._expandButton = ui.expandButton;
- this._expandedContent = ui.expandedContent;
- this._revealer = ui.contentRevealer;
this._contactAvatar = ui.contactAvatar;
+ this._placeDetails = ui.placeDetails;
/* Set up contact avatar */
if (this.place instanceof ContactPlace.ContactPlace) {
@@ -110,9 +105,7 @@ var PlaceBubble = GObject.registerClass({
} else {
this._populate(this.place);
}
- this.content.add(ui.gridContent);
-
- this._initExpandButton();
+ this.content.add(ui.mainGrid);
}
_onInfoAdded() {
@@ -130,117 +123,233 @@ var PlaceBubble = GObject.registerClass({
return Format.vprintf('https://%s.wikipedia.org/wiki/%s', [ lang, article ]);
}
- /*
- * Create an array of all content to be showed when expanding the place
- * bubble
- */
- _createExpandedContent(place) {
- let expandedContent = [];
+ _createContent(formatter, place) {
+ let content = [];
- if (place.population) {
- /* TODO: this is a bit of a work-around to re-interpret the population,
- * stored as a string into an integer to convert back to a locale-
- * formatted string. Ideally it should be kept as an integer value
- * in the Place class. But this will also need to be handled by the
- * PlaceStore, possible in a backwards-compatible way
- */
- expandedContent.push({ label: _("Population:"),
- info: parseInt(place.population).toLocaleString() });
+ let address = formatter.rows.map((row) => {
+ row = row.map(function(prop) {
+ return GLib.markup_escape_text(place[prop], -1);
+ });
+ return row.join(', ');
+ });
+ if (address.length > 0) {
+ content.push({ label: _("Address"),
+ icon: 'map-marker-symbolic',
+ info: address.join('\n') });
}
- if (place.location.altitude > 0) {
- let alt = place.location.altitude;
- expandedContent.push({ label: _("Altitude:"),
- info: Utils.prettyDistance(alt, true) });
+ if (place.website) {
+ content.push({ label: _("Website"),
+ icon: 'web-browser-symbolic',
+ info: GLib.markup_escape_text(place.website, -1),
+ linkUrl: place.website });
+ }
+
+ if (place.phone) {
+ let phone = { label: _("Phone number"),
+ icon: 'phone-oldschool-symbolic',
+ info: GLib.markup_escape_text(place.phone, -1) };
+
+ if (Utils.uriSchemeSupported('tel')) {
+ phone.linkUrl = 'tel:%s'.format(place.phone);
+ }
+
+ content.push(phone);
}
if (place.openingHours) {
- expandedContent.push({ label: _("Opening hours:"),
- info: place.openingHoursTranslated });
+ content.push({ label: _("Opening hours"),
+ icon: 'emoji-recent-symbolic',
+ info: Translations.translateOpeningHours(place.openingHours) });
}
- if (place.internetAccess) {
- expandedContent.push({ label: _("Internet access:"),
- info: place.internetAccessTranslated });
+ switch(place.internetAccess) {
+ case 'yes':
+ /* Translators:
+ * There is public internet access but the particular kind is unknown.
+ */
+ content.push({ info: _("Public internet access"),
+ icon: 'network-wireless-signal-excellent-symbolic' });
+ break;
+
+ case 'no':
+ /* Translators:
+ * no internet access is offered in a place where
+ * someone might expect it.
+ */
+ content.push({ info: _("No internet access"),
+ icon: 'network-wireless-offline-symbolic' });
+ break;
+
+ case 'wlan':
+ /* Translators:
+ * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi.
+ */
+ content.push({ info: _("Public Wi-Fi"),
+ icon: 'network-wireless-signal-excellent-symbolic' });
+ break;
+
+ case 'wired':
+ /* Translators:
+ * This means a a place where you can plug in your laptop with ethernet.
+ */
+ content.push({ info: _("Wired internet access"),
+ icon: 'network-wired-symbolic' });
+ break;
+
+ case 'terminal':
+ /* Translators:
+ * Like internet cafe or library where the computer is given.
+ */
+ content.push({ info: _("Computers available for use"),
+ icon: 'computer-symbolic' });
+ break;
+
+ case 'service':
+ /* Translators:
+ * This means there is personnel which helps you in case of problems.
+ */
+ content.push({ info: _("Internet assistance available"),
+ icon: 'computer-symbolic' });
+ break;
}
- if (place.religion) {
- expandedContent.push({ label: _("Religion:"),
- info: place.religionTranslated });
+ if (place.toilets === 'no') {
+ content.push({ info: _("No toilets available"),
+ icon: 'no-toilets-symbolic' });
+ } else if (place.toilets === 'yes') {
+ content.push({ info: _("Toilets available"),
+ icon: 'toilets-symbolic' });
}
- if (place.toilets) {
- expandedContent.push({ label: _("Toilets:"),
- info: place.toiletsTranslated });
+ switch(place.wheelchair) {
+ case 'yes':
+ /* Translators:
+ * This means wheelchairs have full unrestricted access.
+ */
+ content.push({ info: _("Wheelchair accessible"),
+ icon: 'wheelchair-symbolic' });
+ break;
+
+ case 'limited':
+ /* Translators:
+ * This means wheelchairs have partial access (e.g some areas
+ * can be accessed and others not, areas requiring assistance
+ * by someone pushing up a steep gradient).
+ */
+ content.push({ info: _("Limited wheelchair accessibility"),
+ icon: 'wheelchair-limited-symbolic' });
+ break;
+
+ case 'no':
+ /* Translators:
+ * This means wheelchairs have no unrestricted access
+ * (e.g. stair only access).
+ */
+ content.push({ info: _("Not wheelchair accessible"),
+ icon: 'no-wheelchair-symbolic' });
+ break;
+
+ case 'designated':
+ /* Translators:
+ * This means that the way or area is designated or purpose built
+ * for wheelchairs (e.g. elevators designed for wheelchair access
+ * only). This is rarely used.
+ */
+ content.push({ info: _("Designated for wheelchair users"),
+ icon: 'wheelchair-symbolic' });
+ break;
}
- if (place.wheelchair) {
- expandedContent.push({ label: _("Wheelchair access:"),
- info: place.wheelchairTranslated });
+ if (place.population) {
+ /* TODO: this is a bit of a work-around to re-interpret the population,
+ * stored as a string into an integer to convert back to a locale-
+ * formatted string. Ideally it should be kept as an integer value
+ * in the Place class. But this will also need to be handled by the
+ * PlaceStore, possible in a backwards-compatible way
+ */
+ content.push({ label: _("Population"),
+ icon: 'system-users-symbolic',
+ info: parseInt(place.population).toLocaleString() });
}
- if (place.phone) {
- if (Utils.uriSchemeSupported('tel')) {
- expandedContent.push({ label: _("Phone:"),
- linkText: place.phone,
- linkUrl: 'tel:%s'.format(place.phone) });
- } else {
- expandedContent.push({ label: _("Phone:"),
- info: place.phone });
- }
+ if (place.location.altitude > 0) {
+ let alt = place.location.altitude;
+ content.push({ label: _("Altitude"),
+ icon: 'mountain-symbolic',
+ info: Utils.prettyDistance(alt, true) });
+ }
+
+ if (place.religion) {
+ content.push({ label: _("Religion:"),
+ info: Translations.translateReligion(place.religion) });
}
if (place.wiki) {
let link = this._formatWikiLink(place.wiki);
- expandedContent.push({ linkText: _("Wikipedia"),
- linkUrl: link});
+ content.push({ info: _("Wikipedia"),
+ linkUrl: link});
}
- return expandedContent;
+ return content;
}
- _attachContent(content, expandedContent) {
- content.forEach((info) => {
- let label = new Gtk.Label({ label: info,
- visible: true,
- use_markup: true,
- halign: Gtk.Align.START });
- this._boxContent.pack_start(label, false, true, 0);
- });
-
- expandedContent.forEach(({ label, linkUrl, linkText, info }, row) => {
- let widget;
-
- if (label) {
- widget = new Gtk.Label({ label: label.italics(),
- visible: true,
- use_markup: true,
- yalign: 0,
- halign: Gtk.Align.START });
- this._expandedContent.attach(widget, 0, row, 1, 1);
+ _attachContent(content) {
+ content.forEach(({ label, icon, linkUrl, info }) => {
+ let separator = new Gtk.Separator({ visible: true });
+ separator.get_style_context().add_class('no-margin-separator');
+ this._placeDetails.add(separator);
+
+ let box = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL,
+ visible: true,
+ marginStart: 18,
+ marginEnd: 18,
+ marginTop: 6,
+ marginBottom: 6,
+ spacing: 12 });
+
+ if (icon) {
+ let widget = new Gtk.Image({ icon_name: icon,
+ visible: true,
+ xalign: 1,
+ valign: Gtk.Align.START,
+ halign: Gtk.Align.END });
+
+ if (label) {
+ widget.tooltip_markup = label;
+ }
+
+ box.add(widget);
+ } else if (label) {
+ let widget = new Gtk.Label({ label: label.italics(),
+ visible: true,
+ use_markup: true,
+ yalign: 0,
+ halign: Gtk.Align.END });
+ box.add(widget);
}
if (linkUrl) {
let uri = GLib.markup_escape_text(linkUrl, -1);
- /* double-escape the tooltip text, as GTK+ treats it as markup */
+ /* double-escape the tooltip text, as GTK treats it as markup */
let tooltipText = GLib.markup_escape_text(uri, -1);
info = '<a href="%s" title="%s">%s</a>'.format(uri,
tooltipText,
- linkText);
+ info);
}
- widget = new Gtk.Label({ label: info,
- visible: true,
- use_markup: true,
- max_width_chars: 25,
- wrap: true,
- halign: Gtk.Align.START });
-
- if(label)
- this._expandedContent.attach(widget, 1, row, 1, 1);
- else
- // Expand over both columns if this row has no label
- this._expandedContent.attach(widget, 0, row, 2, 1);
+ let widget = new Gtk.Label({ label: info,
+ visible: true,
+ use_markup: true,
+ max_width_chars: 30,
+ wrap: true,
+ xalign: 0,
+ hexpand: true,
+ halign: Gtk.Align.FILL });
+
+ box.add(widget);
+
+ this._placeDetails.add(box);
});
}
@@ -250,30 +359,17 @@ var PlaceBubble = GObject.registerClass({
// refresh place view
this._clearView();
- let content = formatter.rows.map((row) => {
- row = row.map(function(prop) {
- return GLib.markup_escape_text(place[prop], -1);
- });
- return row.join(', ');
- });
- let expandedContent = this._createExpandedContent(place);
-
- this._attachContent(content, expandedContent);
+ let content = this._createContent(formatter, place);
+ this._attachContent(content);
this._contactAvatar.text = formatter.title;
- let title = GLib.markup_escape_text(formatter.title, -1);
- if (place.website) {
- let uri = GLib.markup_escape_text(place.website, -1);
- this._title.label = '<a href="%s">%s</a>'.format(uri, title);
- } else {
- this._title.label = title;
- }
- this._expandButton.visible = expandedContent.length > 0;
- this.loading = false;
+ this._title.label = formatter.title;
if (place.wiki)
this._requestWikipediaThumbnail(place.wiki);
+
+ this.loading = false;
}
_requestWikipediaThumbnail(wiki) {
@@ -287,16 +383,7 @@ var PlaceBubble = GObject.registerClass({
// clear the view widgets to be able to re-populate an updated place
_clearView() {
- this._boxContent.get_children().forEach((child) => child.destroy());
- this._expandedContent.get_children().forEach((child) => child.destroy());
- }
-
- _initExpandButton() {
- let image = this._expandButton.get_child();
-
- this._expandButton.connect('clicked', (function() {
- this._revealer.reveal_child = !this._revealer.child_revealed;
- }).bind(this));
+ this._placeDetails.get_children().forEach((child) => child.destroy());
}
// Loads the HdyAvatar image for contact places
diff --git a/src/translations.js b/src/translations.js
index 73c0c7ce..ee44cf0c 100644
--- a/src/translations.js
+++ b/src/translations.js
@@ -321,43 +321,6 @@ function _translateOpeningHoursTime(string) {
}
}
-function translateInternetAccess(string) {
- switch(string) {
- /* Translators:
- * There is public internet access but the particular kind is unknown.
- */
- case 'yes': return _("yes");
-
- /* Translators:
- * no internet access is offered in a place where
- * someone might expect it.
- */
- case 'no': return _("no");
-
- /* Translators:
- * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi.
- */
- case 'wlan': return _("Wi-Fi");
-
- /* Translators:
- * This means a a place where you can plug in your laptop with ethernet.
- */
- case 'wired': return _("wired");
-
- /* Translators:
- * Like internet cafe or library where the computer is given.
- */
- case 'terminal': return _("terminal");
-
- /* Translators:
- * This means there is personnel which helps you in case of problems.
- */
- case 'service': return _("service");
-
- default: return null;
- }
-}
-
function translateReligion(string) {
switch(string) {
case 'animist': return _("Animism");
@@ -385,11 +348,3 @@ function translateReligion(string) {
default: return null;
}
}
-
-function translateYesNo(string) {
- switch(string) {
- case 'yes': return _("yes");
- case 'no': return _("no");
- default: return null;
- }
-}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]