gnome: main window layout
Refs #66715
Change-Id: I7bc09ae7c46aca1a80a18adb3b811c968c52eaaf
diff --git a/CMakeLists.txt b/CMakeLists.txt
index afa2371..fed02e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -108,12 +108,15 @@
src/ring_client.cpp
src/ring_client_options.h
src/ring_client_options.c
+ src/ringmainwindow.h
+ src/ringmainwindow.cpp
)
# compile glib resource files to c code
GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING
SOURCE
pixmaps/pixmaps.gresource.xml
+ ui/ui.gresource.xml
)
# IF(${ENABLE_TEST} MATCHES true)
diff --git a/pixmaps/addressbook.svg b/pixmaps/addressbook.svg
new file mode 100644
index 0000000..9d74bd5
--- /dev/null
+++ b/pixmaps/addressbook.svg
@@ -0,0 +1,259 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="24"
+ height="24"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.4 r9939"
+ version="1.0"
+ sodipodi:docname="addressbook.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="true">
+ <title
+ id="title3009">addressbook.svg</title>
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2433">
+ <stop
+ style="stop-color:#008000;stop-opacity:1;"
+ offset="0"
+ id="stop2435" />
+ <stop
+ style="stop-color:#008000;stop-opacity:0;"
+ offset="1"
+ id="stop2437" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="24 : 12 : 1"
+ inkscape:persp3d-origin="12 : 8 : 1"
+ id="perspective32" />
+ <linearGradient
+ id="linearGradient4269">
+ <stop
+ style="stop-color:#26b000;stop-opacity:1;"
+ offset="0"
+ id="stop4271" />
+ <stop
+ style="stop-color:#26b000;stop-opacity:0;"
+ offset="1"
+ id="stop4273" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4183">
+ <stop
+ id="stop4185"
+ offset="0"
+ style="stop-color:#26b000;stop-opacity:1;" />
+ <stop
+ id="stop4187"
+ offset="1"
+ style="stop-color:#145f00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4167">
+ <stop
+ style="stop-color:#80000e;stop-opacity:1;"
+ offset="0"
+ id="stop4169" />
+ <stop
+ style="stop-color:#b00014;stop-opacity:0;"
+ offset="1"
+ id="stop4171" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2433"
+ id="linearGradient2439"
+ x1="2.965755"
+ y1="-0.80084854"
+ x2="32.578228"
+ y2="16.739393"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="-10.260191"
+ inkscape:cy="15.638715"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="32px"
+ height="32px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1313"
+ inkscape:window-height="744"
+ inkscape:window-x="337"
+ inkscape:window-y="1224"
+ showgrid="false"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <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>addressbook.svg</dc:title>
+ <dc:date>2014/06/24</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Gabrielle Maheux-Leclerc <gabrielle.maheux@savoirfairelinux.com></dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Savoir-faire Linux Inc.</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>Savoir-faire Linux Inc.</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://sflphone.org/download/source-code</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>gnome</rdf:li>
+ <rdf:li>voip</rdf:li>
+ <rdf:li>sip</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:coverage>SFLphone project</dc:coverage>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0-2"
+ width="27.25"
+ height="27.25"
+ x="-25.687498"
+ y="-27.12499"
+ inkscape:label="a"
+ transform="scale(-1,-1)" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0"
+ width="27.357903"
+ height="27.357903"
+ x="-1.6802465"
+ y="-4.3527112"
+ inkscape:label="a" />
+ <rect
+ inkscape:label="a"
+ y="-18.073694"
+ x="-1.6802227"
+ height="27.402094"
+ width="27.402094"
+ id="rect44122-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:label="a"
+ y="-24.857332"
+ x="-2.7434559"
+ height="26.103628"
+ width="26.103628"
+ id="rect43299-7-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(-0.25881905,0.96592583,-0.96592583,-0.25881905,0,0)" />
+ <rect
+ y="2.2499964"
+ x="-1.8749943"
+ height="27.875"
+ width="27.875"
+ id="rect3246-4-3-8-3-7"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="fill:#545454;fill-opacity:1;stroke:none"
+ d="m 6.7792966,0.18749996 c -2.0666797,0 -3.7304688,1.66378904 -3.7304688,3.73046874 l 0,16.4140623 c 0,2.06668 1.6637891,3.730469 3.7304688,3.730469 l 11.9375004,0 c 2.066679,0 3.730468,-1.663789 3.730468,-3.730469 l 0,-16.4140623 c 0,-2.0666797 -1.663789,-3.73046874 -3.730468,-3.73046874 l -11.9375004,0 z M 12.93457,5.3635254 c 1.732206,0 3.077637,1.5201305 3.077637,3.310791 0,1.7906606 -1.345431,3.1708986 -3.077637,3.1708986 -1.732206,0 -3.1708984,-1.380238 -3.1708984,-3.1708986 0,-1.7906605 1.4386924,-3.310791 3.1708984,-3.310791 z m -2.657959,6.5749516 c 0.737514,0.673885 1.596268,0.979248 2.657959,0.979248 1.061691,0 1.920445,-0.305363 2.657959,-0.979248 1.404044,0.378752 2.611328,1.71882 2.611328,3.217529 l 0,3.217529 c 0,0.598742 -0.539918,1.025879 -1.119141,1.025879 l -8.3469233,0 c -0.5791777,0 -1.0732559,-0.427137 -1.0725098,-1.025879 l 0,-3.217529 c 0.00149,-1.744982 1.4515254,-2.824912 2.6113281,-3.217529 z"
+ id="rect8463-2-7-7"
+ inkscape:connector-curvature="0" />
+ <g
+ inkscape:label="accessories-calculator"
+ id="g40867-7-0-5"
+ transform="matrix(0,-1.4921875,1.4921875,0,-593.45313,95.6875)">
+ <rect
+ style="opacity:0.51464431;color:#bebebe;fill:none;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect40869-8-3-9"
+ width="16"
+ height="16"
+ x="48"
+ y="398" />
+ </g>
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20566-4-6-4-5-4-1-8-4"
+ width="9.0690622"
+ height="9.0690622"
+ x="4.1474762"
+ y="7.854094"
+ inkscape:label="a" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3601-2-3-3-9-6-5-6-9-6-9"
+ d="m 1.2498418,17.647545 4.3466118,0"
+ style="fill:none;stroke:#545454;stroke-width:1.62472236;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3601-2-3-3-9-3-5-6-2-1-1-9"
+ d="m 1.2498418,14.00371 4.3466118,0"
+ style="fill:none;stroke:#545454;stroke-width:1.62472236;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3601-2-3-3-9-3-3-8-3-5-1-0-0"
+ d="m 1.2498418,10.359875 4.3466118,0"
+ style="fill:none;stroke:#545454;stroke-width:1.62472236;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3601-2-3-3-9-3-3-7-0-6-5-6-3-1"
+ d="m 1.2498418,6.7160399 4.3466118,0"
+ style="fill:none;stroke:#545454;stroke-width:1.62472236;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/pixmaps/dial.svg b/pixmaps/dial.svg
new file mode 100644
index 0000000..4e5f68d
--- /dev/null
+++ b/pixmaps/dial.svg
@@ -0,0 +1,243 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="24"
+ height="24"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.4 r9939"
+ version="1.0"
+ sodipodi:docname="current.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="true">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2433">
+ <stop
+ style="stop-color:#008000;stop-opacity:1;"
+ offset="0"
+ id="stop2435" />
+ <stop
+ style="stop-color:#008000;stop-opacity:0;"
+ offset="1"
+ id="stop2437" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="24 : 12 : 1"
+ inkscape:persp3d-origin="12 : 8 : 1"
+ id="perspective32" />
+ <linearGradient
+ id="linearGradient4269">
+ <stop
+ style="stop-color:#26b000;stop-opacity:1;"
+ offset="0"
+ id="stop4271" />
+ <stop
+ style="stop-color:#26b000;stop-opacity:0;"
+ offset="1"
+ id="stop4273" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4183">
+ <stop
+ id="stop4185"
+ offset="0"
+ style="stop-color:#26b000;stop-opacity:1;" />
+ <stop
+ id="stop4187"
+ offset="1"
+ style="stop-color:#145f00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4167">
+ <stop
+ style="stop-color:#80000e;stop-opacity:1;"
+ offset="0"
+ id="stop4169" />
+ <stop
+ style="stop-color:#b00014;stop-opacity:0;"
+ offset="1"
+ id="stop4171" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2433"
+ id="linearGradient2439"
+ x1="2.965755"
+ y1="-0.80084854"
+ x2="32.578228"
+ y2="16.739393"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="10.302309"
+ inkscape:cy="16.452644"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="32px"
+ height="32px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1301"
+ inkscape:window-height="744"
+ inkscape:window-x="65"
+ inkscape:window-y="456"
+ showgrid="false"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <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="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0-2"
+ width="27.25"
+ height="27.25"
+ x="-25.687498"
+ y="-27.12499"
+ inkscape:label="a"
+ transform="scale(-1,-1)" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0"
+ width="27.357903"
+ height="27.357903"
+ x="-1.6802465"
+ y="-4.3527112"
+ inkscape:label="a" />
+ <rect
+ inkscape:label="a"
+ y="-18.073694"
+ x="-1.6802227"
+ height="27.402094"
+ width="27.402094"
+ id="rect44122-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:label="a"
+ y="-24.857332"
+ x="-2.7434559"
+ height="26.103628"
+ width="26.103628"
+ id="rect43299-7-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(-0.25881905,0.96592583,-0.96592583,-0.25881905,0,0)" />
+ <g
+ transform="matrix(2.1681981,0,0,2.1681981,-280.4028,-1203.9792)"
+ id="g4148"
+ style="fill:#545454;fill-opacity:1">
+ <rect
+ y="555.31415"
+ x="130.90933"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-557.35272"
+ x="133.89476"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-557.35107"
+ x="136.87463"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-560.33374"
+ x="136.87463"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-560.2973"
+ x="133.92836"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8-1"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-560.37006"
+ x="130.87296"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8-2"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-563.35278"
+ x="130.87296"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8-16"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-563.35272"
+ x="133.89197"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8-6"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-563.31641"
+ x="136.87463"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8-67"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <rect
+ transform="scale(1,-1)"
+ y="-566.33539"
+ x="133.92834"
+ height="2.0369332"
+ width="2.0369332"
+ id="rect4039-1-6-8-3"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ </g>
+ </g>
+</svg>
diff --git a/pixmaps/history.svg b/pixmaps/history.svg
new file mode 100644
index 0000000..87b4b6c
--- /dev/null
+++ b/pixmaps/history.svg
@@ -0,0 +1,257 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="24"
+ height="24"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.4 r9939"
+ version="1.0"
+ sodipodi:docname="history.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="true">
+ <title
+ id="title3008">history.svg</title>
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2433">
+ <stop
+ style="stop-color:#008000;stop-opacity:1;"
+ offset="0"
+ id="stop2435" />
+ <stop
+ style="stop-color:#008000;stop-opacity:0;"
+ offset="1"
+ id="stop2437" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="24 : 12 : 1"
+ inkscape:persp3d-origin="12 : 8 : 1"
+ id="perspective32" />
+ <linearGradient
+ id="linearGradient4269">
+ <stop
+ style="stop-color:#26b000;stop-opacity:1;"
+ offset="0"
+ id="stop4271" />
+ <stop
+ style="stop-color:#26b000;stop-opacity:0;"
+ offset="1"
+ id="stop4273" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4183">
+ <stop
+ id="stop4185"
+ offset="0"
+ style="stop-color:#26b000;stop-opacity:1;" />
+ <stop
+ id="stop4187"
+ offset="1"
+ style="stop-color:#145f00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4167">
+ <stop
+ style="stop-color:#80000e;stop-opacity:1;"
+ offset="0"
+ id="stop4169" />
+ <stop
+ style="stop-color:#b00014;stop-opacity:0;"
+ offset="1"
+ id="stop4171" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2433"
+ id="linearGradient2439"
+ x1="2.965755"
+ y1="-0.80084854"
+ x2="32.578228"
+ y2="16.739393"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="-9.322691"
+ inkscape:cy="15.638715"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="32px"
+ height="32px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1313"
+ inkscape:window-height="744"
+ inkscape:window-x="337"
+ inkscape:window-y="1224"
+ showgrid="false"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <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>history.svg</dc:title>
+ <dc:date>2014/06/24</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Gabrielle Maheux-Leclerc <gabrielle.maheux@savoirfairelinux.com></dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Savoir-faire Linux Inc.</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>Savoir-faire Linux Inc.</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://sflphone.org/download/source-code</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>gnome</rdf:li>
+ <rdf:li>voip</rdf:li>
+ <rdf:li>sip</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:coverage>SFLphone project</dc:coverage>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0-2"
+ width="27.25"
+ height="27.25"
+ x="-25.687498"
+ y="-27.12499"
+ inkscape:label="a"
+ transform="scale(-1,-1)" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0"
+ width="27.357903"
+ height="27.357903"
+ x="-1.6802465"
+ y="-4.3527112"
+ inkscape:label="a" />
+ <rect
+ inkscape:label="a"
+ y="-18.073694"
+ x="-1.6802227"
+ height="27.402094"
+ width="27.402094"
+ id="rect44122-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:label="a"
+ y="-24.857332"
+ x="-2.7434559"
+ height="26.103628"
+ width="26.103628"
+ id="rect43299-7-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(-0.25881905,0.96592583,-0.96592583,-0.25881905,0,0)" />
+ <rect
+ y="2.2499964"
+ x="-1.8749943"
+ height="27.875"
+ width="27.875"
+ id="rect3246-4-3-8-3-7"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ inkscape:label="accessories-calculator"
+ id="g40867-7-0-5"
+ transform="matrix(0,-1.4921875,1.4921875,0,-593.45313,95.6875)">
+ <rect
+ style="opacity:0.51464431;color:#bebebe;fill:none;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect40869-8-3-9"
+ width="16"
+ height="16"
+ x="48"
+ y="398" />
+ </g>
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20566-4-6-4-5-4-1-8-4"
+ width="9.0690622"
+ height="9.0690622"
+ x="4.1474762"
+ y="7.854094"
+ inkscape:label="a" />
+ <rect
+ inkscape:label="audio-volume-high"
+ y="-0.1875"
+ x="0.062504999"
+ height="24"
+ width="24"
+ id="rect16155-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect10837-3-3"
+ y="-0.12497"
+ x="-0.87500161"
+ ry="0.15129246"
+ rx="0.14408804"
+ height="16"
+ width="16" />
+ <path
+ inkscape:connector-curvature="0"
+ d="M 12.017863,0.08247 C 5.4222054,0.08247 0.0625,5.4421594 0.0625,12.037833 c 0,6.595658 5.3597054,11.955347 11.955363,11.955347 6.595658,0 11.955347,-5.359689 11.955347,-11.955347 0,-6.5956736 -5.359689,-11.955363 -11.955347,-11.955363 z m 0,3.1510179 c 4.869601,0 8.804329,3.9347441 8.804329,8.8043451 0,4.869601 -3.934728,8.804329 -8.804329,8.804329 -4.869601,0 -8.8043451,-3.934728 -8.8043451,-8.804329 0,-4.869601 3.9347441,-8.8043451 8.8043451,-8.8043451 z"
+ id="path3869-0"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#545454;fill-opacity:1;stroke:none;stroke-width:2.15384625999999990;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
+ <path
+ inkscape:connector-curvature="0"
+ d="M 16.658852,6.4486691 A 0.79852954,0.79852954 0 0 0 16.259627,6.6981847 L 12.017863,10.939949 9.3729984,8.2950841 A 0.79852954,0.79852954 0 1 0 8.27513,9.3929524 l 3.193799,3.1937986 a 0.79852954,0.79852954 0 0 0 1.097868,0 L 17.357495,7.796053 A 0.79852954,0.79852954 0 0 0 16.658852,6.4486691 z"
+ id="path4639-6"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#545454;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
+ </g>
+</svg>
diff --git a/pixmaps/pixmaps.gresource.xml b/pixmaps/pixmaps.gresource.xml
index f52242c..977d2c3 100644
--- a/pixmaps/pixmaps.gresource.xml
+++ b/pixmaps/pixmaps.gresource.xml
@@ -3,5 +3,9 @@
<gresource prefix="/cx/ring/RingGnome">
<file alias="ring-symbol-blue">symbole-ring-coul.svg</file>
<file alias="ring-logo-blue">logo-ring-standard-coul.svg</file>
+ <file alias="addressbook_small">addressbook.svg</file>
+ <file alias="history_small">history.svg</file>
+ <file alias="users_small">users.svg</file>
+ <file alias="dial">dial.svg</file>
</gresource>
</gresources>
\ No newline at end of file
diff --git a/pixmaps/users.svg b/pixmaps/users.svg
new file mode 100644
index 0000000..9719e66
--- /dev/null
+++ b/pixmaps/users.svg
@@ -0,0 +1,325 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="24"
+ height="24"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.4 r9939"
+ version="1.0"
+ sodipodi:docname="users.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="true">
+ <title
+ id="title3017">users.svg</title>
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2433">
+ <stop
+ style="stop-color:#008000;stop-opacity:1;"
+ offset="0"
+ id="stop2435" />
+ <stop
+ style="stop-color:#008000;stop-opacity:0;"
+ offset="1"
+ id="stop2437" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 12 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="24 : 12 : 1"
+ inkscape:persp3d-origin="12 : 8 : 1"
+ id="perspective32" />
+ <linearGradient
+ id="linearGradient4269">
+ <stop
+ style="stop-color:#26b000;stop-opacity:1;"
+ offset="0"
+ id="stop4271" />
+ <stop
+ style="stop-color:#26b000;stop-opacity:0;"
+ offset="1"
+ id="stop4273" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4183">
+ <stop
+ id="stop4185"
+ offset="0"
+ style="stop-color:#26b000;stop-opacity:1;" />
+ <stop
+ id="stop4187"
+ offset="1"
+ style="stop-color:#145f00;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4167">
+ <stop
+ style="stop-color:#80000e;stop-opacity:1;"
+ offset="0"
+ id="stop4169" />
+ <stop
+ style="stop-color:#b00014;stop-opacity:0;"
+ offset="1"
+ id="stop4171" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2433"
+ id="linearGradient2439"
+ x1="2.965755"
+ y1="-0.80084854"
+ x2="32.578228"
+ y2="16.739393"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="16"
+ inkscape:cx="-9.322691"
+ inkscape:cy="12.889047"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="32px"
+ height="32px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1313"
+ inkscape:window-height="744"
+ inkscape:window-x="337"
+ inkscape:window-y="1224"
+ showgrid="false"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <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>users.svg</dc:title>
+ <dc:date>2014/06/24</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Gabrielle Maheux-Leclerc <gabrielle.maheux@savoirfairelinux.com></dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Savoir-faire Linux Inc.</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>Savoir-faire Linux Inc.</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://sflphone.org/download/source-code</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>gnome</rdf:li>
+ <rdf:li>voip</rdf:li>
+ <rdf:li>sip</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:coverage>SFLphone project</dc:coverage>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0-2"
+ width="27.25"
+ height="27.25"
+ x="-25.687498"
+ y="-27.12499"
+ inkscape:label="a"
+ transform="scale(-1,-1)" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect44095-0"
+ width="27.357903"
+ height="27.357903"
+ x="-1.6802465"
+ y="-4.3527112"
+ inkscape:label="a" />
+ <rect
+ inkscape:label="a"
+ y="-18.073694"
+ x="-1.6802227"
+ height="27.402094"
+ width="27.402094"
+ id="rect44122-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:label="a"
+ y="-24.857332"
+ x="-2.7434559"
+ height="26.103628"
+ width="26.103628"
+ id="rect43299-7-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(-0.25881905,0.96592583,-0.96592583,-0.25881905,0,0)" />
+ <rect
+ y="2.2499964"
+ x="-1.8749943"
+ height="27.875"
+ width="27.875"
+ id="rect3246-4-3-8-3-7"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ inkscape:label="accessories-calculator"
+ id="g40867-7-0-5"
+ transform="matrix(0,-1.4921875,1.4921875,0,-593.45313,95.6875)">
+ <rect
+ style="opacity:0.51464431;color:#bebebe;fill:none;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect40869-8-3-9"
+ width="16"
+ height="16"
+ x="48"
+ y="398" />
+ </g>
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20566-4-6-4-5-4-1-8-4"
+ width="9.0690622"
+ height="9.0690622"
+ x="4.1474762"
+ y="7.854094"
+ inkscape:label="a" />
+ <rect
+ inkscape:label="audio-volume-high"
+ y="-0.1875"
+ x="0.062504999"
+ height="24"
+ width="24"
+ id="rect16155-0"
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new"
+ id="rect10837-3-3"
+ y="-0.12497"
+ x="-0.87500161"
+ ry="0.15129246"
+ rx="0.14408804"
+ height="16"
+ width="16" />
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect35598-3"
+ width="16"
+ height="16"
+ x="3.3125002"
+ y="1.125" />
+ <rect
+ style="fill:none;stroke:none;display:inline"
+ id="rect13555-9-9-6"
+ width="25.125002"
+ height="25.124998"
+ x="-0.56250727"
+ y="-0.68749839" />
+ <g
+ style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+ transform="matrix(1.5820312,0,0,1.5820312,-32.828097,-436.89061)"
+ inkscape:label="lock"
+ id="g4053-3-8-5-5">
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect4055-9-7-2-4"
+ width="16"
+ height="16"
+ x="20"
+ y="276"
+ inkscape:label="a" />
+ </g>
+ <rect
+ style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20566-4"
+ width="29.1875"
+ height="29.1875"
+ x="-2.6875024"
+ y="-3.4375181"
+ inkscape:label="a" />
+ <g
+ id="g9172-6"
+ transform="matrix(1.7187503,0,0,1.7187503,30.015297,-1117.2502)"
+ style="fill:#545454;fill-opacity:1">
+ <path
+ style="fill:#545454;fill-opacity:1;stroke:none"
+ d="m -5.2115283,658.6875 c -0.4937891,0.47964 -1.0774305,0.69712 -1.7882906,0.69712 -0.7108599,0 -1.2972314,-0.22349 -1.7910205,-0.70313 -0.7765701,0.27945 -1.7052286,0.99058 -1.7062566,2.23257 l -0.0027,2.3167 c -5.15e-4,0.42615 0.31219,0.76924 0.6999914,0.76924 l 5.600024,0 c 0.3878016,0 0.7000029,-0.34309 0.7000029,-0.76924 l 0,-2.30769 c 0,-1.0667 -0.7716202,-1.96599 -1.7117243,-2.23557 z"
+ id="path9137-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csccsssscc" />
+ <path
+ transform="matrix(0.92307481,0,0,0.92307481,-52.69199,340.15457)"
+ d="m 52,342.5 c 0,1.38071 -1.119288,2.5 -2.5,2.5 -1.380712,0 -2.5,-1.11929 -2.5,-2.5 0,-1.38071 1.119288,-2.5 2.5,-2.5 1.380712,0 2.5,1.11929 2.5,2.5 z"
+ sodipodi:ry="2.5"
+ sodipodi:rx="2.5"
+ sodipodi:cy="342.5"
+ sodipodi:cx="49.5"
+ id="path9139-1"
+ style="color:#bebebe;fill:#545454;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g9176-2"
+ transform="matrix(1.7187503,0,0,1.7187503,30.015297,-1117.2502)"
+ style="fill:#545454;fill-opacity:1">
+ <path
+ sodipodi:nodetypes="csccssccccc"
+ inkscape:connector-curvature="0"
+ id="path9178-7"
+ d="m -12.21155,654.6875 c -0.493789,0.47964 -1.077431,0.69712 -1.788291,0.69712 -0.71086,0 -1.297231,-0.22349 -1.79102,-0.70313 -0.77657,0.27945 -1.705229,0.99058 -1.706257,2.23257 l -0.0027,2.3167 c -5.15e-4,0.42615 0.31219,0.76924 0.699991,0.76924 l 5.735381,0 c 0.06219,-0.3952 0.261624,-0.72266 0.564646,-1 l 0,-2.07693 c 0,-1.0667 -0.77162,-1.96599 -1.711724,-2.23557 z"
+ style="fill:#545454;fill-opacity:1;stroke:none" />
+ <path
+ sodipodi:type="arc"
+ style="color:#bebebe;fill:#545454;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path9180-7"
+ sodipodi:cx="49.5"
+ sodipodi:cy="342.5"
+ sodipodi:rx="2.5"
+ sodipodi:ry="2.5"
+ d="m 52,342.5 c 0,1.38071 -1.119288,2.5 -2.5,2.5 -1.380712,0 -2.5,-1.11929 -2.5,-2.5 0,-1.38071 1.119288,-2.5 2.5,-2.5 1.380712,0 2.5,1.11929 2.5,2.5 z"
+ transform="matrix(0.92307481,0,0,0.92307481,-59.692012,336.15457)" />
+ </g>
+ </g>
+</svg>
diff --git a/src/ring_client.cpp b/src/ring_client.cpp
index b354c69..d234b5b 100644
--- a/src/ring_client.cpp
+++ b/src/ring_client.cpp
@@ -38,6 +38,19 @@
#include <callmodel.h>
#include "ring_client_options.h"
+#include "ringmainwindow.h"
+
+struct _RingClientClass
+{
+ GtkApplicationClass parent_class;
+};
+
+struct _RingClient
+{
+ GtkApplication parent;
+};
+
+typedef struct _RingClientPrivate RingClientPrivate;
struct _RingClientPrivate {
/* main window */
@@ -46,7 +59,7 @@
QCoreApplication *qtapp;
};
-G_DEFINE_TYPE(RingClient, ring_client, GTK_TYPE_APPLICATION);
+G_DEFINE_TYPE_WITH_PRIVATE(RingClient, ring_client, GTK_TYPE_APPLICATION);
#define RING_CLIENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), RING_CLIENT_TYPE, RingClientPrivate))
@@ -88,6 +101,9 @@
GtkSettings *gtk_settings = gtk_settings_get_default();
g_object_set(G_OBJECT(gtk_settings), "gtk-application-prefer-dark-theme",
FALSE, NULL);
+ /* enable button icons */
+ g_object_set(G_OBJECT(gtk_settings), "gtk-button-images",
+ TRUE, NULL);
/* init libRingClient and make sure its connected to the dbus */
try {
@@ -106,15 +122,9 @@
}
/* create an empty window */
- priv->win = gtk_application_window_new(GTK_APPLICATION(app));
-
- /* test gresources */
- GdkPixbuf* icon = gdk_pixbuf_new_from_resource("/cx/ring/RingGnome/ring-symbol-blue", &error);
- if (icon == NULL) {
- g_debug("Could not load icon: %s", error->message);
- g_error_free(error);
- } else
- gtk_window_set_icon(GTK_WINDOW(priv->win), icon);
+ if (priv->win == NULL) {
+ priv->win = ring_main_window_new(GTK_APPLICATION(app));
+ }
gtk_window_present(GTK_WINDOW(priv->win));
@@ -148,10 +158,6 @@
static void
ring_client_class_init(RingClientClass *klass)
{
- g_debug("ring_client_class_init()");
-
- g_type_class_add_private(klass, sizeof(RingClientPrivate));
-
G_APPLICATION_CLASS(klass)->command_line = ring_client_command_line;
G_APPLICATION_CLASS(klass)->shutdown = ring_client_shutdown;
}
@@ -160,6 +166,6 @@
ring_client_new()
{
return (RingClient *)g_object_new(ring_client_get_type(),
- "application-id", "cx.ring.RingGnome",
- "flags", G_APPLICATION_HANDLES_COMMAND_LINE, NULL);
+ "application-id", "cx.ring.RingGnome",
+ "flags", G_APPLICATION_HANDLES_COMMAND_LINE, NULL);
}
diff --git a/src/ring_client.h b/src/ring_client.h
index 95d85b3..5ec5623 100644
--- a/src/ring_client.h
+++ b/src/ring_client.h
@@ -33,28 +33,19 @@
#include <gtk/gtk.h>
+G_BEGIN_DECLS
+
// #define RING_GSETTINGS_SCHEMA "cx.ring.RingGnome"
#define RING_CLIENT_TYPE (ring_client_get_type())
#define RING_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), RING_CLIENT_TYPE, RingClient))
-typedef struct _RingClientPrivate RingClientPrivate;
-typedef struct _RingClientClass RingClientClass;
-typedef struct _RingClient RingClient;
-
-struct _RingClientClass
-{
- GtkApplicationClass parent_class;
-};
-
-struct _RingClient
-{
- GtkApplication parent;
- /* Private */
- RingClientPrivate *priv;
-};
+typedef struct _RingClientClass RingClientClass;
+typedef struct _RingClient RingClient;
/* Public interface */
-GType ring_client_get_type(void) G_GNUC_CONST;
-RingClient *ring_client_new(void);
+GType ring_client_get_type (void) G_GNUC_CONST;
+RingClient *ring_client_new (void);
+
+G_END_DECLS
#endif /* RING_CLIENT_H_ */
diff --git a/src/ring_client_options.h b/src/ring_client_options.h
index e05e9bc..db6881e 100644
--- a/src/ring_client_options.h
+++ b/src/ring_client_options.h
@@ -33,14 +33,10 @@
#include <glib.h>
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+G_BEGIN_DECLS
GOptionContext *ring_client_options_get_context(void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
#endif /* RING_CLIENT_OPTIONS_H_ */
diff --git a/src/ringmainwindow.cpp b/src/ringmainwindow.cpp
new file mode 100644
index 0000000..c3869df
--- /dev/null
+++ b/src/ringmainwindow.cpp
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2015 Savoir-Faire Linux Inc.
+ * Author: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Additional permission under GNU GPL version 3 section 7:
+ *
+ * If you modify this program, or any covered work, by linking or
+ * combining it with the OpenSSL project's OpenSSL library (or a
+ * modified version of that library), containing parts covered by the
+ * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+ * grants you additional permission to convey the resulting work.
+ * Corresponding Source for a non-source form of such a combination
+ * shall include the source code for the parts of OpenSSL used as well
+ * as that of the covered work.
+ */
+
+#include "ringmainwindow.h"
+
+#include <gtk/gtk.h>
+
+struct _RingMainWindow
+{
+ GtkApplicationWindow parent;
+};
+
+struct _RingMainWindowClass
+{
+ GtkApplicationWindowClass parent_class;
+};
+
+typedef struct _RingMainWindowPrivate RingMainWindowPrivate;
+
+struct _RingMainWindowPrivate
+{
+ GtkWidget *gears;
+ GtkWidget *gears_image;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(RingMainWindow, ring_main_window, GTK_TYPE_APPLICATION_WINDOW);
+
+#define RING_MAIN_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), RING_MAIN_WINDOW_TYPE, RingMainWindowPrivate))
+
+static void
+ring_main_window_init(RingMainWindow *win)
+{
+ RingMainWindowPrivate *priv = RING_MAIN_WINDOW_GET_PRIVATE(win);
+ gtk_widget_init_template(GTK_WIDGET(win));
+
+ /* set window icon */
+ GError *error = NULL;
+ GdkPixbuf* icon = gdk_pixbuf_new_from_resource("/cx/ring/RingGnome/ring-symbol-blue", &error);
+ if (icon == NULL) {
+ g_debug("Could not load icon: %s", error->message);
+ g_error_free(error);
+ } else
+ gtk_window_set_icon(GTK_WINDOW(win), icon);
+
+ /* set menu icon */
+ GdkPixbuf* ring_gears = gdk_pixbuf_new_from_resource_at_scale("/cx/ring/RingGnome/ring-logo-blue",
+ -1, 22, TRUE, &error);
+ if (ring_gears == NULL) {
+ g_debug("Could not load icon: %s", error->message);
+ g_error_free(error);
+ } else
+ gtk_image_set_from_pixbuf(GTK_IMAGE(priv->gears_image), ring_gears);
+
+ /* gears menu */
+ GtkBuilder *builder = gtk_builder_new_from_resource("/cx/ring/RingGnome/ringgearsmenu.ui");
+ GMenuModel *menu = G_MENU_MODEL(gtk_builder_get_object(builder, "menu"));
+ gtk_menu_button_set_menu_model(GTK_MENU_BUTTON(priv->gears), menu);
+ g_object_unref(builder);
+}
+
+static void
+ring_main_window_class_init(RingMainWindowClass *klass)
+{
+ gtk_widget_class_set_template_from_resource(GTK_WIDGET_CLASS (klass),
+ "/cx/ring/RingGnome/ringmainwindow.ui");
+
+ gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), RingMainWindow, gears);
+ gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), RingMainWindow, gears_image);
+}
+
+GtkWidget *
+ring_main_window_new (GtkApplication *app)
+{
+ return (GtkWidget *)g_object_new(RING_MAIN_WINDOW_TYPE, "application", app, NULL);
+}
diff --git a/src/ringmainwindow.h b/src/ringmainwindow.h
new file mode 100644
index 0000000..ba7e124
--- /dev/null
+++ b/src/ringmainwindow.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2015 Savoir-Faire Linux Inc.
+ * Author: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Additional permission under GNU GPL version 3 section 7:
+ *
+ * If you modify this program, or any covered work, by linking or
+ * combining it with the OpenSSL project's OpenSSL library (or a
+ * modified version of that library), containing parts covered by the
+ * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+ * grants you additional permission to convey the resulting work.
+ * Corresponding Source for a non-source form of such a combination
+ * shall include the source code for the parts of OpenSSL used as well
+ * as that of the covered work.
+ */
+
+#ifndef _RINGMAINWINDOW_H
+#define _RINGMAINWINDOW_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define RING_MAIN_WINDOW_TYPE (ring_main_window_get_type ())
+#define RING_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RING_MAIN_WINDOW_TYPE, RingMainWindow))
+
+
+typedef struct _RingMainWindow RingMainWindow;
+typedef struct _RingMainWindowClass RingMainWindowClass;
+
+
+GType ring_main_window_get_type (void) G_GNUC_CONST;
+GtkWidget *ring_main_window_new (GtkApplication *app);
+
+G_END_DECLS
+
+#endif /* _RINGMAINWINDOW_H */
diff --git a/ui/ringgearsmenu.ui b/ui/ringgearsmenu.ui
new file mode 100644
index 0000000..c6e3e88
--- /dev/null
+++ b/ui/ringgearsmenu.ui
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <menu id="menu">
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Preferences</attribute>
+ <attribute name="action">app.preferences</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Account Settings</attribute>
+ <attribute name="action">app.accountsettings</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <attribute name="action">app.help</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_About</attribute>
+ <attribute name="action">app.about</attribute>
+ </item>
+ </section>
+ </menu>
+</interface>
diff --git a/ui/ringmainwindow.ui b/ui/ringmainwindow.ui
new file mode 100644
index 0000000..f2a3ca2
--- /dev/null
+++ b/ui/ringmainwindow.ui
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- not recommended to open in Glade as it might not support some wdigets and delete them -->
+<interface>
+ <requires lib="gtk+" version="3.10"/>
+ <template class="RingMainWindow" parent="GtkApplicationWindow">
+ <property name="can_focus">False</property>
+ <property name="show_menubar">False</property>
+ <property name="default-width">840</property>
+ <property name="default-height">640</property>
+ <property name="border_width">5</property>
+ <!-- header definition -->
+ <child type="titlebar">
+ <object class="GtkHeaderBar" id="header">
+ <property name="visible">True</property>
+ <property name="show-close-button">True</property>
+ <!-- main menu button -->
+ <child>
+ <object class="GtkMenuButton" id="gears">
+ <property name="visible">True</property>
+ <property name="direction">none</property>
+ <!-- <property name="use-popover">True</property> -->
+ <property name="tooltip_text" translatable="yes">Menu`</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child>
+ <object class="GtkImage" id="gears_image">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="pack-type">start</property>
+ </packing>
+ </child>
+ <!-- end main menu button -->
+ <!-- new call button -->
+ <child>
+ <object class="GtkButton" id="button_dial">
+ <property name="visible">True</property>
+ <property name="tooltip_text" translatable="yes">Place a new call</property>
+ <property name="image">image_dial</property>
+ <property name="label" translatable="yes">New Call</property>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ <!-- end new call button -->
+ </object>
+ </child>
+ <!-- end header definition -->
+ <child>
+ <object class="GtkBox" id="vbox_main">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <!-- <property name="border_width">5</property> -->
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- start of Paned container -->
+ <object class="GtkPaned" id="paned_main">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">250</property>
+ <child>
+ <object class="GtkBox" id="vbox_navigation">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <!-- current calls view -->
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow_calls">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <!-- <property name="shadow_type">in</property> -->
+ <child>
+ <object class="GtkTreeView" id="treeview_call">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <!-- end current calls view -->
+ <!-- contacts/history/presence view -->
+ <child>
+ <object class="GtkTreeView" id="treeview_placeholder">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection-placehodler"/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <!-- end contacts/history/presence view -->
+ <!-- nav buttons -->
+ <child>
+ <object class="GtkBox" id="hbox_navbuttons">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="homogeneous">True</property>
+ <style>
+ <class name="linked"/>
+ <class name="raised"/>
+ </style>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_contacts">
+ <property name="label" translatable="yes">contacts</property>
+ <property name="visible">True</property>
+ <property name="image">image_contacts</property>
+ <property name="draw_indicator">False</property>
+ </object>
+ <packing></packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_history">
+ <property name="label" translatable="yes">history</property>
+ <property name="visible">True</property>
+ <property name="image">image_history</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">radiobutton_contacts</property>
+ </object>
+ <packing></packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="radiobutton_presence">
+ <property name="label" translatable="yes">online</property>
+ <property name="visible">True</property>
+ <property name="image">image_presence</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">radiobutton_contacts</property>
+ </object>
+ <packing></packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <!-- end nav buttons -->
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTreeView" id="placeholder">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection2"/>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <!-- end of Paned container -->
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </template>
+ <!-- some images -->
+ <object class="GtkImage" id="image_contacts">
+ <property name="visible">True</property>
+ <property name="resource">/cx/ring/RingGnome/addressbook_small</property>
+ </object>
+ <object class="GtkImage" id="image_history">
+ <property name="visible">True</property>
+ <property name="resource">/cx/ring/RingGnome/history_small</property>
+ </object>
+ <object class="GtkImage" id="image_presence">
+ <property name="visible">True</property>
+ <property name="resource">/cx/ring/RingGnome/users_small</property>
+ </object>
+ <object class="GtkImage" id="image_dial">
+ <property name="visible">True</property>
+ <property name="resource">/cx/ring/RingGnome/dial</property>
+ </object>
+</interface>
diff --git a/ui/ui.gresource.xml b/ui/ui.gresource.xml
new file mode 100644
index 0000000..b9f178c
--- /dev/null
+++ b/ui/ui.gresource.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/cx/ring/RingGnome">
+ <file preprocess="xml-stripblanks">ringmainwindow.ui</file>
+ <file preprocess="xml-stripblanks">ringgearsmenu.ui</file>
+ </gresource>
+</gresources>
\ No newline at end of file