Commit 8ca63e09 authored by Ronan Abhamon's avatar Ronan Abhamon

refactoring (in progress)

parent 6a66fd18
......@@ -32,7 +32,6 @@ set(SOURCES
src/components/contacts/ContactsListModel.cpp
src/components/contacts/ContactsListProxyModel.cpp
src/components/notification/Notification.cpp
src/components/settings/AccountSettingsListModel.cpp
src/components/settings/AccountSettingsModel.cpp
src/components/settings/SettingsModel.cpp
src/logger.cpp
......@@ -46,7 +45,6 @@ set(HEADERS
src/components/contacts/ContactsListProxyModel.hpp
src/components/notification/Notification.hpp
src/components/presence/Presence.hpp
src/components/settings/AccountSettingsListModel.hpp
src/components/settings/AccountSettingsModel.hpp
src/components/settings/SettingsModel.hpp
src/logger.hpp
......@@ -56,7 +54,7 @@ set(QRC_RESOURCES
resources.qrc
)
set(LANGUAGES_DIRECTORY languages)
set(LANGUAGES_DIRECTORY assets/languages)
set(I18N_FILENAME i18n.qrc)
set(LANGUAGES en fr)
......
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>auto_answer_active</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="auto_answer_active" stroke="#828282">
<path d="M0.797365543,2.49263511 C-0.109836641,5.04855335 1.161449,8.70129794 3.21892643,10.7501941 L3.26206927,10.7928576 C5.31909573,12.8413047 8.98804084,14.1072881 11.5537619,13.2038696 L13.5,10.6632204 L10.8490455,8.02362183 L8.42387683,10.0659313 L6.20750748,7.85910537 L6.16496594,7.81644186 L3.94889724,5.60961588 L5.99930947,3.19366387 L3.34940721,0.554364667 L0.797365543,2.49263511 L0.797365543,2.49263511 Z"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>auto_answer_inactive</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="auto_answer_inactive" stroke="#CBCBCB">
<path d="M0.797365543,2.49263511 C-0.109836641,5.04855335 1.161449,8.70129794 3.21892643,10.7501941 L3.26206927,10.7928576 C5.31909573,12.8413047 8.98804084,14.1072881 11.5537619,13.2038696 L13.5,10.6632204 L10.8490455,8.02362183 L8.42387683,10.0659313 L6.20750748,7.85910537 L6.16496594,7.81644186 L3.94889724,5.60961588 L5.99930947,3.19366387 L3.34940721,0.554364667 L0.797365543,2.49263511 L0.797365543,2.49263511 Z"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>call_over</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="call_over">
<circle fill="#4B5964" cx="20" cy="20" r="20"></circle>
<g id="call_icon" transform="translate(9.000000, 9.000000)" stroke-width="1.5" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
<path d="M0.797831313,3.39639949 C-0.629468455,7.43554002 1.37064325,13.2080051 4.60766925,16.445894 L4.67554581,16.5133156 C7.9118623,19.7504948 13.6842079,21.7511398 17.7208528,20.3234595 L20.7828661,16.3084488 L16.6121235,12.1370674 L12.7966095,15.3645475 L9.30959911,11.8770806 L9.24266856,11.8096591 L5.75613117,8.32219216 L8.98204149,4.50424154 L4.81295445,0.333333333 L0.797831313,3.39639949 L0.797831313,3.39639949 Z"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>call_default</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="call_default">
<circle fill="#96A6B1" cx="20" cy="20" r="20"></circle>
<g id="call_icon" transform="translate(9.000000, 9.000000)" stroke-width="1.5" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
<path d="M0.797831313,3.39639949 C-0.629468455,7.43554002 1.37064325,13.2080051 4.60766925,16.445894 L4.67554581,16.5133156 C7.9118623,19.7504948 13.6842079,21.7511398 17.7208528,20.3234595 L20.7828661,16.3084488 L16.6121235,12.1370674 L12.7966095,15.3645475 L9.30959911,11.8770806 L9.24266856,11.8096591 L5.75613117,8.32219216 L8.98204149,4.50424154 L4.81295445,0.333333333 L0.797831313,3.39639949 L0.797831313,3.39639949 Z"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>call_clic</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="call_clic">
<circle fill="#FF5E00" cx="20" cy="20" r="20"></circle>
<g id="call_icon" transform="translate(9.000000, 9.000000)" stroke-width="1.5" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
<path d="M0.797831313,3.39639949 C-0.629468455,7.43554002 1.37064325,13.2080051 4.60766925,16.445894 L4.67554581,16.5133156 C7.9118623,19.7504948 13.6842079,21.7511398 17.7208528,20.3234595 L20.7828661,16.3084488 L16.6121235,12.1370674 L12.7966095,15.3645475 L9.30959911,11.8770806 L9.24266856,11.8096591 L5.75613117,8.32219216 L8.98204149,4.50424154 L4.81295445,0.333333333 L0.797831313,3.39639949 L0.797831313,3.39639949 Z"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>status_username_available</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="status_username_available">
<circle fill="#9ECD1D" transform="translate(8.000000, 8.000000) rotate(-180.000000) translate(-8.000000, -8.000000) " cx="8" cy="8" r="8"></circle>
<path d="M6.28571429,12 L9.71428571,8.57142857 M6.28859181,5.14285714 L9.71428571,8.57142857" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(8.000000, 8.571429) rotate(-270.000000) translate(-8.000000, -8.571429) "></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>status_username_absent</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="status_username_absent">
<circle fill="#EFAE00" transform="translate(8.000000, 8.000000) rotate(-180.000000) translate(-8.000000, -8.000000) " cx="8" cy="8" r="8"></circle>
<path d="M6.28571429,12 L9.71428571,8.57142857 M6.28859181,5.14285714 L9.71428571,8.57142857" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(8.000000, 8.571429) rotate(-270.000000) translate(-8.000000, -8.571429) "></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>status_username_busy</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="status_username_busy">
<circle fill="#DC4100" transform="translate(8.000000, 8.000000) rotate(-180.000000) translate(-8.000000, -8.000000) " cx="8" cy="8" r="8"></circle>
<path d="M6.28571429,12 L9.71428571,8.57142857 M6.28859181,5.14285714 L9.71428571,8.57142857" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(8.000000, 8.571429) rotate(-270.000000) translate(-8.000000, -8.571429) "></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>status_username_disconnected</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="status_username_disconnected">
<circle fill="#B1B1B1" transform="translate(8.000000, 8.000000) rotate(-180.000000) translate(-8.000000, -8.000000) " cx="8" cy="8" r="8"></circle>
<path d="M6.28571429,12 L9.71428571,8.57142857 M6.28859181,5.14285714 L9.71428571,8.57142857" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(8.000000, 8.571429) rotate(-270.000000) translate(-8.000000, -8.571429) "></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>window_close</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="window_close" fill="#6B7A86">
<path d="M8.8817842e-16,6.76811594 C8.8817842e-16,6.64251145 0.0467597194,6.53140145 0.140280561,6.43478261 L0.841683367,5.71014493 C0.935204208,5.61352609 1.04275156,5.56521739 1.16432866,5.56521739 C1.28590575,5.56521739 1.39345311,5.61352609 1.48697395,5.71014493 L7,11.4057971 L12.5130261,5.71014493 C12.6065469,5.61352609 12.7140942,5.56521739 12.8356713,5.56521739 C12.9572484,5.56521739 13.0647958,5.61352609 13.1583166,5.71014493 L13.8597194,6.43478261 C13.9532403,6.53140145 14,6.64251145 14,6.76811594 C14,6.89372043 13.9532403,7.00483043 13.8597194,7.10144928 L7.32264529,13.8550725 C7.22912445,13.9516913 7.12157709,14 7,14 C6.87842291,14 6.77087555,13.9516913 6.67735471,13.8550725 L0.140280561,7.10144928 C0.0467597194,7.00483043 8.8817842e-16,6.89372043 8.8817842e-16,6.76811594 L8.8817842e-16,6.76811594 Z M8.8817842e-16,1.20289855 C8.8817842e-16,1.07729406 0.0467597194,0.966184058 0.140280561,0.869565217 L0.841683367,0.144927536 C0.935204208,0.0483086957 1.04275156,-1.15463195e-14 1.16432866,-1.15463195e-14 C1.28590575,-1.15463195e-14 1.39345311,0.0483086957 1.48697395,0.144927536 L7,5.84057971 L12.5130261,0.144927536 C12.6065469,0.0483086957 12.7140942,-1.15463195e-14 12.8356713,-1.15463195e-14 C12.9572484,-1.15463195e-14 13.0647958,0.0483086957 13.1583166,0.144927536 L13.8597194,0.869565217 C13.9532403,0.966184058 14,1.07729406 14,1.20289855 C14,1.32850304 13.9532403,1.43961304 13.8597194,1.53623188 L7.32264529,8.28985507 C7.22912445,8.38647391 7.12157709,8.43478261 7,8.43478261 C6.87842291,8.43478261 6.77087555,8.38647391 6.67735471,8.28985507 L0.140280561,1.53623188 C0.0467597194,1.43961304 8.8817842e-16,1.32850304 8.8817842e-16,1.20289855 L8.8817842e-16,1.20289855 Z" transform="translate(7.000000, 7.000000) rotate(-180.000000) translate(-7.000000, -7.000000) "></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>contact_default</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="contact_default" stroke-width="2" stroke="#FFFFFF">
<path d="M12.0554009,1 C15.2314768,1 17.8061559,3.60010197 17.8061559,6.80739857 C17.8061559,8.34243497 17.2167979,9.73804761 16.2536873,10.7767134 C16.1185235,10.9227371 16.1718776,10.8971623 16.0222125,11.0283362 L16.2621693,11.1916847 C24.9780461,15.0229508 22.7431919,21.4633938 22.7431919,21.4633938 C17.1300632,23.2613278 12.0644301,22.9846803 12.0644301,22.9846803 L11.9358329,22.9846803 C11.9358329,22.9844053 6.86965253,23.2613278 1.25679748,21.4633938 C1.25679748,21.4633938 -0.978056771,15.0229508 7.73809369,11.1916847 L7.97805049,11.0283362 C7.8283853,10.8971623 7.88173944,10.9227371 7.74657563,10.7767134 C6.78373869,9.73804761 6.19410709,8.34243497 6.19410709,6.80739857 C6.19410709,3.60010197 8.76878614,1 11.9448621,1 L12.0554009,1 L12.0554009,1 Z"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>contact_selected</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="contact_selected" stroke-width="2" stroke="#FFFFFF">
<path d="M12.0554009,1 C15.2314768,1 17.8061559,3.60010197 17.8061559,6.80739857 C17.8061559,8.34243497 17.2167979,9.73804761 16.2536873,10.7767134 C16.1185235,10.9227371 16.1718776,10.8971623 16.0222125,11.0283362 L16.2621693,11.1916847 C24.9780461,15.0229508 22.7431919,21.4633938 22.7431919,21.4633938 C17.1300632,23.2613278 12.0644301,22.9846803 12.0644301,22.9846803 L11.9358329,22.9846803 C11.9358329,22.9844053 6.86965253,23.2613278 1.25679748,21.4633938 C1.25679748,21.4633938 -0.978056771,15.0229508 7.73809369,11.1916847 L7.97805049,11.0283362 C7.8283853,10.8971623 7.88173944,10.9227371 7.74657563,10.7767134 C6.78373869,9.73804761 6.19410709,8.34243497 6.19410709,6.80739857 C6.19410709,3.60010197 8.76878614,1 11.9448621,1 L12.0554009,1 L12.0554009,1 Z"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>history</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="history" stroke="#FFFFFF">
<path d="M9.5,5 C9.5,7.485125 7.485575,9.5 5,9.5 C2.514875,9.5 0.5,7.485125 0.5,5 C0.5,2.5147625 2.514875,0.5 5,0.5 C7.485575,0.5 9.5,2.5147625 9.5,5 L9.5,5 Z M4.998875,2.5679625 L4.998875,5.0349875 L7.5806375,5.0349875"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>home_icon_default</title>
<desc>Created with Sketch.</desc>
<defs>
<polygon id="path-1" points="11.6533805 22 4.20958624 22 4.20958624 11.769531 2 11.769531 11.8075425 2 21.9872183 11.816648 19.9060871 11.816648 19.9060865 22"></polygon>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="23.9872183" height="24">
<rect x="0" y="0" width="23.9872183" height="24" fill="white"></rect>
<use xlink:href="#path-1" fill="black"></use>
</mask>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" opacity="0.5" stroke-linejoin="round">
<g id="home_icon_default" stroke="#FFFFFF" stroke-width="4">
<use mask="url(#mask-2)" xlink:href="#path-1"></use>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>home_icon_selected</title>
<desc>Created with Sketch.</desc>
<defs>
<polygon id="path-1" points="11.6533805 22 4.20958624 22 4.20958624 11.769531 2 11.769531 11.8075425 2 21.9872183 11.816648 19.9060871 11.816648 19.9060865 22"></polygon>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="23.9872183" height="24">
<rect x="0" y="0" width="23.9872183" height="24" fill="white"></rect>
<use xlink:href="#path-1" fill="black"></use>
</mask>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="home_icon_selected" stroke-width="4" stroke="#FFFFFF">
<use mask="url(#mask-2)" xlink:href="#path-1"></use>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>statut_avatar_available_l</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" id="path-1"></path>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="16" height="16" fill="white">
<use xlink:href="#path-1"></use>
</mask>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="statut_avatar_available_l">
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" fill="#9ECD1D"></path>
<use stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>statut_avatar_absent_l</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" id="path-1"></path>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="16" height="16" fill="white">
<use xlink:href="#path-1"></use>
</mask>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="statut_avatar_absent_l">
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" fill="#EFAE00"></path>
<use stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>statut_avatar_busy_l</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" id="path-1"></path>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="16" height="16" fill="white">
<use xlink:href="#path-1"></use>
</mask>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="statut_avatar_busy_l">
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" id="statut_avatar_busy_s" fill="#DC4100"></path>
<use id="statut_avatar_busy_s" stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>statut_avatar_disconnected_l</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" id="path-1"></path>
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="16" height="16" fill="white">
<use xlink:href="#path-1"></use>
</mask>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="statut_avatar_disconnected_l">
<path d="M7.9995,16 C3.581,16 0,12.4185 0,8 C0,3.582 3.581,0 7.9995,0 C12.418,0 16,3.582 16,8 C16,12.4185 12.418,16 7.9995,16 Z" fill="#B1B1B1"></path>
<use stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="15px" height="15px" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>search</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="search" fill="#CBCBCB">
<path d="M0.0714285714,6.31428571 C0.0714285714,5.46309098 0.236605491,4.64911102 0.566964286,3.87232142 C0.89732308,3.09553182 1.34374719,2.42589566 1.90625,1.86339285 C2.46875281,1.30089004 3.13838897,0.854465932 3.91517857,0.524107137 C4.69196817,0.193748342 5.50594812,0.0285714226 6.35714286,0.0285714226 C7.20833759,0.0285714226 8.02231754,0.193748342 8.79910714,0.524107137 C9.57589674,0.854465932 10.2455329,1.30089004 10.8080357,1.86339285 C11.3705385,2.42589566 11.8169626,3.09553182 12.1473214,3.87232142 C12.4776802,4.64911102 12.6428571,5.46309098 12.6428571,6.31428571 C12.6428571,7.62381607 12.2738132,8.81130419 11.5357143,9.87678571 L14.5982143,12.9392857 C14.8184535,13.1595249 14.9285714,13.4273794 14.9285714,13.7428571 C14.9285714,14.0523825 14.8154773,14.320237 14.5892857,14.5464286 C14.3630941,14.7726202 14.0952396,14.8857143 13.7857143,14.8857143 C13.4642841,14.8857143 13.1964296,14.7726202 12.9821429,14.5464286 L9.91964286,11.4928571 C8.85416134,12.2309561 7.66667321,12.6 6.35714286,12.6 C5.50594812,12.6 4.69196817,12.4348231 3.91517857,12.1044643 C3.13838897,11.7741055 2.46875281,11.3276814 1.90625,10.7651786 C1.34374719,10.2026758 0.89732308,9.53303959 0.566964286,8.75624999 C0.236605491,7.9794604 0.0714285714,7.16548044 0.0714285714,6.31428571 L0.0714285714,6.31428571 Z M2.35714286,6.31428571 C2.35714286,7.41548169 2.74850799,8.35743656 3.53125,9.14017857 C4.31399201,9.92292057 5.25594687,10.3142857 6.35714286,10.3142857 C7.45833884,10.3142857 8.40029371,9.92292057 9.18303571,9.14017857 C9.96577772,8.35743656 10.3571429,7.41548169 10.3571429,6.31428571 C10.3571429,5.21308973 9.96577772,4.27113486 9.18303571,3.48839285 C8.40029371,2.70565084 7.45833884,2.31428571 6.35714286,2.31428571 C5.25594687,2.31428571 4.31399201,2.70565084 3.53125,3.48839285 C2.74850799,4.27113486 2.35714286,5.21308973 2.35714286,6.31428571 L2.35714286,6.31428571 Z"></path>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>video_call_over</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="video_call_over">
<path d="M20,40 C31.045695,40 40,31.045695 40,20 C40,8.954305 31.045695,0 20,0 C8.954305,0 0,8.954305 0,20 C0,31.045695 8.954305,40 20,40 Z" fill="#4B5964"></path>
<g id="videocall_icon" transform="translate(9.000000, 13.000000)" stroke-linecap="round" stroke-width="1.5" stroke="#FFFFFF" stroke-linejoin="round">
<polygon points="21.9033897 6.53341215 21.9033897 0.673601511 16.1289093 5.25958769 16.1289093 0.333333333 0.333333333 0.333333333 0.333333333 12.9483398 16.1289093 12.9483398 16.1289093 8.02208543 21.9033897 12.6080716"></polygon>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>video_call_default</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="video_call_default">
<path d="M20,40 C31.045695,40 40,31.045695 40,20 C40,8.954305 31.045695,0 20,0 C8.954305,0 0,8.954305 0,20 C0,31.045695 8.954305,40 20,40 Z" fill="#96A6B1"></path>
<g id="videocall_icon" transform="translate(9.000000, 13.000000)" stroke-linecap="round" stroke-width="1.5" stroke="#FFFFFF" stroke-linejoin="round">
<polygon points="21.9033897 6.53341215 21.9033897 0.673601511 16.1289093 5.25958769 16.1289093 0.333333333 0.333333333 0.333333333 0.333333333 12.9483398 16.1289093 12.9483398 16.1289093 8.02208543 21.9033897 12.6080716"></polygon>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>video_call_clic</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="video_call_clic">
<path d="M20,40 C31.045695,40 40,31.045695 40,20 C40,8.954305 31.045695,0 20,0 C8.954305,0 0,8.954305 0,20 C0,31.045695 8.954305,40 20,40 Z" fill="#FF5E00"></path>
<g id="videocall_icon" transform="translate(9.000000, 13.000000)" stroke-linecap="round" stroke-width="1.5" stroke="#FFFFFF" stroke-linejoin="round">
<polygon points="21.9033897 6.53341215 21.9033897 0.673601511 16.1289093 5.25958769 16.1289093 0.333333333 0.333333333 0.333333333 0.333333333 12.9483398 16.1289093 12.9483398 16.1289093 8.02208543 21.9033897 12.6080716"></polygon>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="70px" height="70px" viewBox="0 0 70 70" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>avatar_L</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M5,35 C5,51.568 18.4315,65 35,65 C51.568,65 65,51.568 65,35 C65,18.431 51.568,5 35,5 C18.4315,5 5,18.431 5,35 Z" id="path-1"></path>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="1" dy="-1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.795413478 0 0 0 0 0.795413478 0 0 0 0 0.795413478 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="avatar_L">
<g>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill-opacity="0" fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>avatar_s</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M5,20 C5,28.284 11.71575,35 20,35 C28.284,35 35,28.284 35,20 C35,11.7155 28.284,5 20,5 C11.71575,5 5,11.7155 5,20 Z" id="path-1"></path>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="1" dy="-1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.795413478 0 0 0 0 0.795413478 0 0 0 0 0.795413478 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="avatar_s">
<g>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill-opacity="0" fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>avatar_xs</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M5,15 C5,20.5226667 9.47716667,25 15,25 C20.5226667,25 25,20.5226667 25,15 C25,9.477 20.5226667,5 15,5 C9.47716667,5 5,9.477 5,15 Z" id="path-1"></path>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="1" dy="-1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.795413478 0 0 0 0 0.795413478 0 0 0 0 0.795413478 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="avatar_xs">
<g>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill-opacity="0" fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>chat_clic</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="chat_clic">
<path d="M20,40 C31.045695,40 40,31.045695 40,20 C40,8.954305 31.045695,0 20,0 C8.954305,0 0,8.954305 0,20 C0,31.045695 8.954305,40 20,40 Z" fill="#FF5E00"></path>
<g id="chat_icon" transform="translate(11.000000, 11.000000)" stroke-width="1.5" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
<path d="M6.45514411,16.6653354 C6.45490676,16.6653354 3.61717822,19.6701782 0,18.8619676 C0,18.8619676 3.54193902,17.8269451 2.73827987,14.6957526 L2.71240897,14.5508779 C1.03459842,13.0064191 0,10.8924366 0,8.55995464 C0,3.83252839 4.25137115,1.77635684e-15 9.49414345,1.77635684e-15 C14.7371531,1.77635684e-15 18.9880496,3.83252839 18.9880496,8.55995464 C18.9880496,13.2873809 14.7371531,17.1196718 9.49414345,17.1196718 C8.43082597,17.1196718 7.40904432,16.9626847 6.45466941,16.6719854 L6.45514411,16.6653354 L6.45514411,16.6653354 Z M5.07378077,7.04494575 L13.889822,7.04494575 L5.07378077,7.04494575 Z M5.07378077,10.0749635 L13.889822,10.0749635 L5.07378077,10.0749635 Z"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>chat_default</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="chat_default">
<path d="M20,40 C31.045695,40 40,31.045695 40,20 C40,8.954305 31.045695,0 20,0 C8.954305,0 0,8.954305 0,20 C0,31.045695 8.954305,40 20,40 Z" fill="#96A6B1"></path>
<g id="chat_icon" transform="translate(11.000000, 10.000000)" stroke-width="1.5" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
<path d="M6.45514411,16.6653354 C6.45490676,16.6653354 3.61717822,19.6701782 0,18.8619676 C0,18.8619676 3.54193902,17.8269451 2.73827987,14.6957526 L2.71240897,14.5508779 C1.03459842,13.0064191 0,10.8924366 0,8.55995464 C0,3.83252839 4.25137115,1.77635684e-15 9.49414345,1.77635684e-15 C14.7371531,1.77635684e-15 18.9880496,3.83252839 18.9880496,8.55995464 C18.9880496,13.2873809 14.7371531,17.1196718 9.49414345,17.1196718 C8.43082597,17.1196718 7.40904432,16.9626847 6.45466941,16.6719854 L6.45514411,16.6653354 L6.45514411,16.6653354 Z M5.07378077,7.04494575 L13.889822,7.04494575 L5.07378077,7.04494575 Z M5.07378077,10.0749635 L13.889822,10.0749635 L5.07378077,10.0749635 Z"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
<title>chat_over</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="chat_over">
<path d="M20,40 C31.045695,40 40,31.045695 40,20 C40,8.954305 31.045695,0 20,0 C8.954305,0 0,8.954305 0,20 C0,31.045695 8.954305,40 20,40 Z" fill="#4B5964"></path>
<g id="chat_icon" transform="translate(11.000000, 11.000000)" stroke-width="1.5" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round">
<path d="M6.45514411,16.6653354 C6.45490676,16.6653354 3.61717822,19.6701782 0,18.8619676 C0,18.8619676 3.54193902,17.8269451 2.73827987,14.6957526 L2.71240897,14.5508779 C1.03459842,13.0064191 0,10.8924366 0,8.55995464 C0,3.83252839 4.25137115,1.77635684e-15 9.49414345,1.77635684e-15 C14.7371531,1.77635684e-15 18.9880496,3.83252839 18.9880496,8.55995464 C18.9880496,13.2873809 14.7371531,17.1196718 9.49414345,17.1196718 C8.43082597,17.1196718 7.40904432,16.9626847 6.45466941,16.6719854 L6.45514411,16.6653354 L6.45514411,16.6653354 Z M5.07378077,7.04494575 L13.889822,7.04494575 L5.07378077,7.04494575 Z M5.07378077,10.0749635 L13.889822,10.0749635 L5.07378077,10.0749635 Z"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/">
<file>imgs/add_field.svg</file>
<file>imgs/call.svg</file>
<file>imgs/cam.svg</file>
<file>imgs/cat_contact.jpg</file>
<file>imgs/chat_attachment.svg</file>
<file>imgs/chat.svg</file>
<file>imgs/collapse.svg</file>
<file>imgs/conference.svg</file>
<file>imgs/contacts_list.svg</file>
<file>imgs/contact.svg</file>
<file>imgs/delete.svg</file>
<file>imgs/hangup.svg</file>
<file>imgs/history.svg</file>
<file>imgs/home.svg</file>
<file>imgs/incoming_call.svg</file>
<file>imgs/led_green.svg</file>
<file>imgs/led_orange.svg</file>
<file>imgs/led_red.svg</file>
<file>imgs/led_white.svg</file>
<file>imgs/linphone.png</file>
<file>imgs/lost_incoming_call.svg</file>
<file>imgs/lost_outgoing_call.svg</file>
<file>imgs/micro.svg</file>
<file>imgs/right_arrow.svg</file>
<file>imgs/speaker.svg</file>
<file>imgs/valid.svg</file>
<file>assets/images/auto_answer_active.svg</file>
<file>assets/images/auto_answer_inactive.svg</file>
<file>assets/images/call_hovered.svg</file>
<file>assets/images/call_normal.svg</file>
<file>assets/images/call_pressed.svg</file>
<file>assets/images/chevron_green.svg</file>
<file>assets/images/chevron_orange.svg</file>
<file>assets/images/chevron_red.svg</file>
<file>assets/images/chevron_white.svg</file>
<file>assets/images/collapse.svg</file>
<file>assets/images/contact_normal.svg</file>
<file>assets/images/contact_selected.svg</file>
<file>assets/images/history.svg</file>
<file>assets/images/home_normal.svg</file>
<file>assets/images/home_selected.svg</file>
<file>assets/images/led_green.svg</file>
<file>assets/images/led_orange.svg</file>
<file>assets/images/led_red.svg</file>
<file>assets/images/led_white.svg</file>
<file>assets/images/linphone.png</file>
<file>assets/images/search.svg</file>
<file>assets/images/video_call_hovered.svg</file>
<file>assets/images/video_call_normal.svg</file>
<file>assets/images/video_call_pressed.svg</file>
<file>assets/old_images/add_field.svg</file>
<file>assets/old_images/call.svg</file>
<file>assets/old_images/cam.svg</file>
<file>assets/old_images/cat_contact.jpg</file>
<file>assets/old_images/chat_attachment.svg</file>
<file>assets/old_images/chat.svg</file>
<file>assets/old_images/collapse.svg</file>
<file>assets/old_images/conference.svg</file>
<file>assets/old_images/contacts_list.svg</file>
<file>assets/old_images/contact.svg</file>
<file>assets/old_images/delete.svg</file>
<file>assets/old_images/hangup.svg</file>
<file>assets/old_images/history.svg</file>
<file>assets/old_images/home.svg</file>
<file>assets/old_images/incoming_call.svg</file>
<file>assets/old_images/led_green.svg</file>
<file>assets/old_images/led_orange.svg</file>
<file>assets/old_images/led_red.svg</file>
<file>assets/old_images/led_white.svg</file>
<file>assets/old_images/lost_incoming_call.svg</file>
<file>assets/old_images/lost_outgoing_call.svg</file>
<file>assets/old_images/micro.svg</file>
<file>assets/old_images/right_arrow.svg</file>
<file>assets/old_images/speaker.svg</file>
<file>assets/old_images/valid.svg</file>
<file>assets/ressources_svg/avatar_L.svg</file>
<file>assets/ressources_svg/avatar_s.svg</file>
<file>assets/ressources_svg/avatar_xs.svg</file>
<file>assets/ressources_svg/chat_clic.svg</file>
<file>assets/ressources_svg/chat_default.svg</file>
<file>assets/ressources_svg/chat_over.svg</file>
<file>ui/modules/Common/Animations/CaterpillarAnimation.qml</file>
<file>ui/modules/Common/Borders.qml</file>
<file>ui/modules/Common/Collapse.qml</file>
......@@ -81,6 +110,7 @@
<file>ui/modules/Common/Styles/qmldir</file>
<file>ui/modules/Common/Styles/SearchBoxStyle.qml</file>
<file>ui/modules/Common/View/ScrollableListView.qml</file>
<file>ui/modules/Linphone/Account/AccountStatus.qml</file>
<file>ui/modules/Linphone/Call/CallControls.qml</file>
<file>ui/modules/Linphone/Chat/Chat.qml</file>
<file>ui/modules/Linphone/Chat/Event.qml</file>
......@@ -93,6 +123,7 @@
<file>ui/modules/Linphone/Contact/PresenceLevel.qml</file>
<file>ui/modules/Linphone/qmldir</file>
<file>ui/modules/Linphone/Select/SelectContact.qml</file>
<file>ui/modules/Linphone/Styles/Account/AccountStatusStyle.qml</file>
<file>ui/modules/Linphone/Styles/Contact/AvatarStyle.qml</file>
<file>ui/modules/Linphone/Styles/Contact/ContactDescriptionStyle.qml</file>
<file>ui/modules/Linphone/Styles/Contact/ContactStyle.qml</file>
......@@ -101,16 +132,19 @@
<file>ui/modules/Linphone/Timeline.qml</file>
<file>ui/scripts/Utils/qmldir</file>
<file>ui/scripts/Utils/utils.js</file>
<file>ui/views/Calls/Calls.qml</file>
<file>ui/views/Calls/StartingCall.qml</file>
<file>ui/views/Calls/StartingIncomingCall.qml</file>
<file>ui/views/Calls/StartingOutgoingCall.qml</file>
<file>ui/views/MainWindow/Contact.qml</file>
<file>ui/views/MainWindow/Contacts.qml</file>
<file>ui/views/MainWindow/Conversation.qml</file>
<file>ui/views/MainWindow/Home.qml</file>
<file>ui/views/MainWindow/MainWindow.qml</file>
<file>ui/views/ManageAccounts.qml</file>
<file>ui/views/NewCall.qml</file>
<file>ui/views/App/Calls/Calls.qml</file>
<file>ui/views/App/Calls/StartingCall.qml</file>
<file>ui/views/App/Calls/StartingIncomingCall.qml</file>
<file>ui/views/App/Calls/StartingOutgoingCall.qml</file>
<file>ui/views/App/MainWindow/Contact.qml</file>
<file>ui/views/App/MainWindow/Contacts.qml</file>
<file>ui/views/App/MainWindow/Conversation.qml</file>
<file>ui/views/App/MainWindow/Home.qml</file>
<file>ui/views/App/MainWindow/MainWindow.qml</file>
<file>ui/views/App/ManageAccounts.qml</file>
<file>ui/views/App/NewCall.qml</file>
<file>ui/views/App/qmldir</file>
<file>ui/views/App/Styles/MainWindow/MainWindowStyle.qml</file>
<file>ui/views/App/Styles/qmldir</file>
</qresource>
</RCC>
......@@ -18,5 +18,5 @@ App::App (int &argc, char **argv) : QApplication(argc, argv) {
qWarning() << "No translation found.";
}
this->setWindowIcon(QIcon(":/imgs/linphone.png"));
this->setWindowIcon(QIcon(":/assets/images/linphone.png"));
}
#include "AccountSettingsListModel.hpp"
// ===================================================================
AccountSettingsListModel::AccountSettingsListModel (QObject *parent) :
QObject(parent) {
}
int AccountSettingsListModel::getDefaultAccount () const {
return 1;
}
void AccountSettingsListModel::setDefaultAccount (int index) {
// NOTHING TODO.
(void)index;
}
#ifndef ACCOUNT_SETTINGS_LIST_MODEL_H_
#define ACCOUNT_SETTINGS_LIST_MODEL_H_
#include <QObject>
// ===================================================================
class AccountSettingsListModel : public QObject {
Q_OBJECT
Q_PROPERTY(int index
READ getDefaultAccount
WRITE setDefaultAccount);
public:
AccountSettingsListModel (QObject *parent = Q_NULLPTR);
private:
int getDefaultAccount () const;
void setDefaultAccount (int index);
};
#endif
#include "AccountSettingsModel.hpp"
typedef AccountSettingsModel::Presence Presence;
// ===================================================================
AccountSettingsModel::AccountSettingsModel (QObject *parent) :
......@@ -9,7 +7,7 @@ AccountSettingsModel::AccountSettingsModel (QObject *parent) :
}
QString AccountSettingsModel::getUsername () const {
return "Toto";
return "Edward Miller ";
}
void AccountSettingsModel::setUsername (const QString &username) {
......@@ -17,12 +15,14 @@ void AccountSettingsModel::setUsername (const QString &username) {
(void)username;
}
Presence::PresenceLevel AccountSettingsModel::getPresenceLevel () const {
return Presence::Green;
}
Presence AccountSettingsModel::getPresence () const {
return Presence::Away;
Presence::PresenceStatus AccountSettingsModel::getPresenceStatus () const {
return Presence::Online;
}
void AccountSettingsModel::setPresence (Presence presence) {
// NOTHING TODO.
(void)presence;
QString AccountSettingsModel::getSipAddress () const {
return QString("e.miller@sip-linphone.org");
}
......@@ -3,6 +3,8 @@
#include <QObject>
#include "../presence/Presence.hpp"
// ===================================================================
class AccountSettingsModel : public QObject {
......@@ -15,35 +17,34 @@ class AccountSettingsModel : public QObject {
);
Q_PROPERTY(
Presence presence
READ getPresence
WRITE setPresence
QString sipAddress
READ getSipAddress
CONSTANT
);
public:
// See: https://tools.ietf.org/html/rfc4480#section-3.2
// Activities, section 3.2 of RFC 4480
enum Presence {
Away,
BeRightBack,
Busy,
DoNotDisturb,
Moved,
Offline,
OnThePhone,
Online,
OutToLunch,
UsingAnotherMessagingService
};
Q_PROPERTY(
Presence::PresenceLevel presenceLevel
READ getPresenceLevel
CONSTANT
);
Q_PROPERTY(
Presence::PresenceStatus presenceStatus
READ getPresenceStatus
CONSTANT
);
public:
AccountSettingsModel (QObject *parent = Q_NULLPTR);
private:
QString getUsername () const;
void setUsername (const QString &username);
Presence getPresence () const;
void setPresence (Presence presence);
Presence::PresenceLevel getPresenceLevel () const;
Presence::PresenceStatus getPresenceStatus () const;
QString getSipAddress () const;
};
#endif // ACCOUNT_SETTINGS_MODEL_H_
......@@ -10,6 +10,7 @@
#include "app.hpp"
#include "components/contacts/ContactsListProxyModel.hpp"
#include "components/notification/Notification.hpp"
#include "components/settings/AccountSettingsModel.hpp"
#include "logger.hpp"
// ===================================================================
......@@ -42,7 +43,7 @@ void setTrayIcon (QQmlApplicationEngine &engine) {
menu->addAction(quit_action);
tray_icon->setContextMenu(menu);
tray_icon->setIcon(QIcon(":/imgs/linphone.png"));
tray_icon->setIcon(QIcon(":/assets/images/linphone.png"));
tray_icon->setToolTip("Linphone");
tray_icon->show();
}
......@@ -58,15 +59,20 @@ void registerTypes () {
void addContextProperties (QQmlApplicationEngine &engine) {
QQmlContext *context = engine.rootContext();
QQmlComponent component(&engine, QUrl("qrc:/ui/views/Calls/Calls.qml"));
context->setContextProperty("Notification", new Notification());
QQmlComponent component(&engine, QUrl("qrc:/ui/views/App/Calls/Calls.qml"));
// Windows.
if (component.isError()) {
qWarning() << component.errors();
} else {
context->setContextProperty("CallsWindow", component.create());
}
// Models.
context->setContextProperty("AccountSettingsModel", new AccountSettingsModel());
// Other.
context->setContextProperty("Notification", new Notification());
}
// ===================================================================
......@@ -87,8 +93,13 @@ int main (int argc, char *argv[]) {
// Set modules paths.
engine.addImportPath(":/ui/modules");
engine.addImportPath(":/ui/scripts");
engine.addImportPath(":/ui/views");
engine.load(QUrl("qrc:/ui/views/MainWindow/MainWindow.qml"));
// Load context properties.
addContextProperties(engine);
// Load main view.
engine.load(QUrl("qrc:/ui/views/App/MainWindow/MainWindow.qml"));
if (engine.rootObjects().isEmpty()) {
qWarning() << "Unable to open main window.";
return EXIT_FAILURE;
......@@ -100,8 +111,6 @@ int main (int argc, char *argv[]) {
else
setTrayIcon(engine);
addContextProperties(engine);
// Run!
return app.exec();
}
......@@ -18,7 +18,7 @@ cd $SCRIPT_DIR/..
echo '<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/">' > $RESOURCES_FILE
for filename in $(find ui/ imgs/ -type f | sort)
for filename in $(find ui/ assets/ -type f | sort)
do
basename="${filename##*/}"
extension="${filename##*.}"
......
......@@ -25,6 +25,9 @@ Item {
// -----------------------------------------------------------------
implicitWidth: button.iconSize
implicitHeight: button.iconSize
ActionButton {
id: button
......@@ -32,6 +35,7 @@ Item {
background: CollapseStyle.background
icon: 'collapse'
iconSize: CollapseStyle.iconSize
useStates: false
onClicked: _collapsed = !_collapsed
}
......
......@@ -12,12 +12,8 @@ QtObject {
property color f: '#808080' // Popup shadow.
property color g: '#8E8E8E' // MenuEntry Normal.
property color h: '#707070' // MenuEntry Hovered.
property color i: '#FE5E00' // MenuEntry Pressed.
property color j: '#434343' // MenuEntry Selected.
property color k: '#FFFFFF' // Text color.
property color l: '#000000' // Text color.
property color m: '#D1D1D1' // SmallButton Normal.
......@@ -33,4 +29,17 @@ QtObject {
property color s: '#D64D00'
property color t: '#FF8600'
// -----------------------------------------------------------------
// OK.
// -----------------------------------------------------------------
property color g: '#6B7A86'
property color h: '#687680'
property color i: '#FE5E00'
property color j: '#4B5964'
property color j75: '#BF4B5964'
property color k: '#FFFFFF'
property color k50: '#32FFFFFF'
property color u: '#B1B1B1'
}
......@@ -7,4 +7,7 @@ QtObject {
property int zPopup: 999
property int zMax: 999999
property int sizeMax: 999999
property string imagesFormat: '.svg'
property string imagesPath: 'qrc:/assets/images/'
}
......@@ -4,14 +4,35 @@ import QtQuick.Controls 2.0
import Common 1.0
// ===================================================================
// An animated small button with an image.
// An animated (or not) button with image(s).
// ===================================================================
Button {
property alias icon: icon.icon
id: button
property bool useStates: true
property int iconSize
flat: true
// If `useStates` = true, the used icons are:
// `icon`_pressed, `icon`_hovered and `icon`_normal.
property string icon
function _getIcon () {
if (!useStates) {
return button.icon
}
return button.icon + (
button.down
? '_pressed'
: (button.hovered ? '_hovered' : '_normal')
)
}
background: Rectangle {
color: 'transparent'
}
hoverEnabled: true
// Ugly hack, use current size, ActionBar size,
// or other parent height.
......@@ -22,5 +43,6 @@ Button {
id: icon
anchors.fill: parent
icon: _getIcon()
}
}
import QtQuick 2.7
import Common 1.0
// ===================================================================
// An icon image properly resized.
// ===================================================================
......@@ -13,6 +15,6 @@ Image {
fillMode: Image.PreserveAspectFit
source: icon
? 'qrc:/imgs/' + icon + '.svg'
? Constants.imagesPath + icon + Constants.imagesFormat
: ''
}
......@@ -51,26 +51,35 @@ ColumnLayout {
Icon {
Layout.preferredHeight: MenuStyle.entry.iconSize
Layout.preferredWidth: MenuStyle.entry.iconSize
icon: modelData.icon
icon: modelData.icon + (
_selectedEntry === index
? '_selected'
: '_normal'
)
}
Text {
Layout.fillWidth: true
color: MenuStyle.entry.text.color
color: _selectedEntry === index
? MenuStyle.entry.text.color.selected
: MenuStyle.entry.text.color.normal
font.pointSize: MenuStyle.entry.text.fontSize
height: parent.height
text: modelData.entryName
verticalAlignment: Text.AlignVCenter
}
}
Icon {
Layout.alignment: Qt.AlignRight
Layout.preferredHeight: MenuStyle.entry.selectionIconSize
Layout.preferredWidth: MenuStyle.entry.selectionIconSize
icon: _selectedEntry === index
? 'right_arrow'
: ''
Rectangle {
anchors {
left: parent.left
}
height: parent.height
color: _selectedEntry === index
? MenuStyle.entry.indicator.color
: 'transparent'
width: MenuStyle.entry.indicator.width
}
MouseArea {
......
import Utils 1.0
// ===================================================================
// Menu which supports `ListView`.
// ===================================================================
......@@ -7,8 +9,16 @@ AbstractDropDownMenu {
property int maxMenuHeight
function _computeHeight () {
var model = _content[0].model
var height = model.count * entryHeight
var list = _content[0]
Utils.assert(list != null, 'No list found.')
Utils.assert(
Utils.qmlTypeof(list, 'QQuickListView'),
'No list view parameter.'
)
var height = list.count * entryHeight
return (maxMenuHeight !== undefined && height > maxMenuHeight)
? maxMenuHeight
: height
......
......@@ -77,6 +77,18 @@ Item {
onActiveFocusChanged: activeFocus && searchBox.showMenu()
onTextChanged: _filter()
Icon {
anchors {
right: parent.right
rightMargin: parent.rightPadding
verticalCenter: parent.verticalCenter
}
icon: 'search'
iconSize: parent.contentHeight
visible: !parent.text
}
}
// Wrap the search box menu in a window.
......
......@@ -5,7 +5,7 @@ import QtQuick 2.7
QtObject {
property int animationDuration: 200
property int iconSize: 32
property int iconSize: 14
property Rectangle background: Rectangle {
// Do not use `Colors` singleton.
......
......@@ -6,13 +6,12 @@ import Common 1.0
// ===================================================================
QtObject {
property int spacing: 2
property int spacing: 0
property QtObject entry: QtObject {
property int iconSize: 24
property int leftMargin: 20
property int rightMargin: 20
property int selectionIconSize: 12
property int spacing: 18
property QtObject color: QtObject {
......@@ -22,9 +21,18 @@ QtObject {
property color selected: Colors.j
}
property QtObject indicator: QtObject {
property color color: Colors.i
property int width: 5
}
property QtObject text: QtObject {
property color color: Colors.k
property int fontSize: 13
property QtObject color: QtObject {
property color normal: Colors.k50
property color selected: Colors.k
}
}
}
}
......@@ -2,7 +2,8 @@
module Common.Styles
# Components styles.
# Components styles --------------------------------------------------
singleton CaterpillarAnimationStyle 1.0 Animations/CaterpillarAnimationStyle.qml
singleton CollapseStyle 1.0 CollapseStyle.qml
......
import QtQuick 2.7
import Linphone.Styles 1.0
import Utils 1.0
// ===================================================================
Item {
Column {
anchors.fill: parent
Text {
clip: true
color: AccountStatusStyle.username.color
elide: Text.ElideRight
font.bold: true
font.pointSize: AccountStatusStyle.username.fontSize
height: parent.height / 2
text: AccountSettingsModel.username
verticalAlignment: Text.AlignBottom
width: parent.width
}
Text {
color: AccountStatusStyle.sipAddress.color
elide: Text.ElideRight
font.pointSize: AccountStatusStyle.sipAddress.fontSize
height: parent.height / 2
text: AccountSettingsModel.sipAddress
verticalAlignment: Text.AlignTop
width: parent.width
}
}
MouseArea {
anchors.fill: parent
onClicked: Utils.openWindow('ManageAccounts', this)
}
}
......@@ -18,10 +18,7 @@ RowLayout {
id: contact
anchors.fill: parent
presenceLevel: Presence.Green
sipAddress: 'math.hart@sip-linphone.org'
sipAddressColor: '#FFFFFF'
username: 'Mathilda Hart'
usernameColor: '#FFFFFF'
}
}
......
......@@ -9,13 +9,11 @@ import Linphone.Styles 1.0
Item {
property alias actions: actionBar.data
property alias image: avatar.image
property alias presenceLevel: avatar.presenceLevel
property alias sipAddress: description.sipAddress
property alias sipAddressColor: description.sipAddressColor
property alias username: avatar.username
property alias usernameColor: description.usernameColor
property var contact
height: ContactStyle.height
RowLayout {
......@@ -29,6 +27,9 @@ Item {
Layout.preferredHeight: ContactStyle.contentHeight
Layout.preferredWidth: ContactStyle.contentHeight
image: contact.image
presenceLevel: contact.presenceLevel
username: contact.username
}
ContactDescription {
......@@ -36,6 +37,7 @@ Item {
Layout.fillHeight: true
Layout.fillWidth: true
sipAddress: contact.sipAddress
username: avatar.username
}
......
pragma Singleton
import QtQuick 2.7
import Common 1.0
QtObject {
property QtObject sipAddress: QtObject {
property color color: Colors.j75
property int fontSize: 10
}
property QtObject username: QtObject {
property color color: Colors.j
property int fontSize: 11
}
}
......@@ -5,19 +5,14 @@ import Common 1.0
QtObject {
property QtObject legend: QtObject {
property color color: Colors.d
property color backgroundColor: Colors.u
property color color: Colors.k
property int bottomMargin: 10
property int fontSize: 13
property int iconSize: 26
property int leftMargin: 18
property int spacing: 16
property int topMargin: 10
}
property QtObject separator: QtObject {
property color color: Colors.e
property int height: 1
property int fontSize: 12
property int height: 30
property int iconSize: 10
property int leftMargin: 17
property int rightMargin: 17
property int spacing: 8
}
}
......@@ -2,9 +2,11 @@
module Linphone.Style
# Components styles.
singleton TimelineStyle 1.0 TimelineStyle.qml
# Components styles --------------------------------------------------
singleton AvatarStyle 1.0 Contact/AvatarStyle.qml
singleton ContactDescriptionStyle 1.0 Contact/ContactDescriptionStyle.qml
singleton ContactStyle 1.0 Contact/ContactStyle.qml
singleton AccountStatusStyle 1.0 Account/AccountStatusStyle.qml
singleton AvatarStyle 1.0 Contact/AvatarStyle.qml
singleton ContactDescriptionStyle 1.0 Contact/ContactDescriptionStyle.qml
singleton ContactStyle 1.0 Contact/ContactStyle.qml
singleton TimelineStyle 1.0 TimelineStyle.qml
......@@ -9,32 +9,35 @@ import Linphone.Styles 1.0
ColumnLayout {
property alias model: view.model
// Legend.
Row {
Layout.bottomMargin: TimelineStyle.legend.bottomMargin
Layout.leftMargin: TimelineStyle.legend.leftMargin
Layout.topMargin: TimelineStyle.legend.topMargin
spacing: TimelineStyle.legend.spacing
Icon {
icon: 'history'
iconSize: TimelineStyle.legend.iconSize
}
Text {
color: TimelineStyle.legend.color
font.pointSize: TimelineStyle.legend.fontSize
height: parent.height
text: qsTr('timelineTitle')
verticalAlignment: Text.AlignVCenter
}
}
// Separator.
Rectangle {
Layout.bottomMargin: TimelineStyle.legend.bottomMargin
Layout.fillWidth: true
Layout.preferredHeight: TimelineStyle.separator.height
color: TimelineStyle.separator.color
Layout.preferredHeight: TimelineStyle.legend.height
color: TimelineStyle.legend.backgroundColor
// Legend.
Row {
anchors {
fill: parent
leftMargin: TimelineStyle.legend.leftMargin
rightMargin: TimelineStyle.legend.rightMargin
}
spacing: TimelineStyle.legend.spacing
Icon {
icon: 'history'
iconSize: TimelineStyle.legend.iconSize
anchors.verticalCenter: parent.verticalCenter
}
Text {
color: TimelineStyle.legend.color
font.pointSize: TimelineStyle.legend.fontSize
height: parent.height
text: qsTr('timelineTitle')
verticalAlignment: Text.AlignVCenter
}
}
}
// History.
......@@ -45,9 +48,7 @@ ColumnLayout {
Layout.fillWidth: true
delegate: Contact {
presenceLevel: $presence
sipAddress: $sipAddress
username: $username
contact: $contact
width: parent.width
}
}
......
......@@ -6,20 +6,23 @@ module Linphone
# Components ---------------------------------------------------------
# Account
AccountStatus 1.0 Account/AccountStatus.qml
# Call
CallControls 1.0 Call/CallControls.qml
CallControls 1.0 Call/CallControls.qml
# Chat
Chat 1.0 Chat/Chat.qml
Chat 1.0 Chat/Chat.qml
# Contact
Avatar 1.0 Contact/Avatar.qml
Contact 1.0 Contact/Contact.qml
ContactDescription 1.0 Contact/ContactDescription.qml
PresenceLevel 1.0 Contact/PresenceLevel.qml
Avatar 1.0 Contact/Avatar.qml
Contact 1.0 Contact/Contact.qml
ContactDescription 1.0 Contact/ContactDescription.qml
PresenceLevel 1.0 Contact/PresenceLevel.qml
# Select
SelectContact 1.0 Select/SelectContact.qml
SelectContact 1.0 Select/SelectContact.qml
# Timeline
Timeline 1.0 Timeline.qml
Timeline 1.0 Timeline.qml
......@@ -117,6 +117,11 @@ TestCase {
component: 'import QtQuick 2.7; ListModel {}',
result: true,
type: 'QQmlListModel'
},
{
component: 'import QtQuick 2.7; ListView {}',
result: true,
type: 'QQuickListView'
}
]
}
......
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import Common 1.0
import Linphone 1.0
import Utils 1.0
import App.Styles 1.0
// ===================================================================
ApplicationWindow {
id: window
function setView (view) {
contentLoader.source = view + '.qml'
}
// -----------------------------------------------------------------
// Window properties.
// -----------------------------------------------------------------
maximumHeight: MainWindowStyle.toolBar.height
minimumHeight: MainWindowStyle.toolBar.height
minimumWidth: MainWindowStyle.minimumWidth
title: MainWindowStyle.title
visible: true
onActiveFocusItemChanged: activeFocusItem == null &&
searchBox.hideMenu()
// -----------------------------------------------------------------
// Toolbar properties.
// -----------------------------------------------------------------
header: ToolBar {
background: MainWindowStyle.toolBar.background
height: MainWindowStyle.toolBar.height
RowLayout {
anchors.fill: parent
anchors.leftMargin: MainWindowStyle.toolBar.leftMargin
anchors.rightMargin: MainWindowStyle.toolBar.rightMargin
spacing: MainWindowStyle.toolBar.spacing
Collapse {
Layout.fillHeight: parent.height
target: window
targetHeight: MainWindowStyle.minimumHeight
}
AccountStatus {
id: accountStatus
Layout.fillHeight: parent.height
Layout.preferredWidth: MainWindowStyle.accountStatus.width
}
SearchBox {
id: searchBox
Layout.fillWidth: true
entryHeight: 50 // TODO: Remove.
maxMenuHeight: MainWindowStyle.searchBox.maxHeight
placeholderText: qsTr('mainSearchBarPlaceholder')
model: ContactsListModel {}
delegate: Contact {
contact: $contact
width: parent.width
actions: [
ActionButton {
icon: 'call'
onClicked: CallsWindow.show()
},
ActionButton {
icon: 'video_call'
onClicked: CallsWindow.show()
}
]
}
}
}
}
// -----------------------------------------------------------------
// Content.
// -----------------------------------------------------------------
RowLayout {
anchors.fill: parent
spacing: 0
// Main menu.
ColumnLayout {
Layout.fillHeight: true
Layout.maximumWidth: MainWindowStyle.menu.width
Layout.preferredWidth: MainWindowStyle.menu.width
spacing: 0
Menu {
entryHeight: MainWindowStyle.menu.entryHeight
entryWidth: parent.width
entries: [{
entryName: qsTr('homeEntry'),
icon: 'home'
}, {
entryName: qsTr('contactsEntry'),
icon: 'contact'
}]
onEntrySelected: {
if (entry === 0) {
setView('Home')
} else if (entry === 1) {
setView('Contacts')
}
}
}
// History.
Timeline {
Layout.fillHeight: true
Layout.fillWidth: true
model: ContactsListModel {}
}
}
// Main content.
Loader {
id: contentLoader
Layout.fillHeight: true
Layout.fillWidth: true
Component.onCompleted: setView('Home')
}
}
}
pragma Singleton
import QtQuick 2.7
// ===================================================================
QtObject {
property int minimumHeight: 480
property int minimumWidth: 780
property string title: 'Linphone'
property QtObject accountStatus: QtObject {
property int width: 200
}
property QtObject menu: QtObject {
property int entryHeight: 50
property int width: 250
}
property QtObject searchBox: QtObject {
property int maxHeight: 300 // See Hick's law for good choice.
}
property QtObject toolBar: QtObject {
property int height: 70
property int leftMargin: 20
property int rightMargin: 20
property int spacing: 20
property var background: Rectangle {
color: '#E2E2E2'
}
}
}
# See: https://wiki.qt.io/Qml_Styling
module App.Styles
# Views styles -------------------------------------------------------
singleton MainWindowStyle 1.0 MainWindow/MainWindowStyle.qml
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment