From c5687508cdc835fe0d3051b5a5fa563567e87a33 Mon Sep 17 00:00:00 2001
From: agsantos <aline.gondimsantos@savoirfairelinux.com>
Date: Thu, 3 Sep 2020 21:19:10 -0400
Subject: [PATCH] settings: code clean up

Correct Layout and Anchors emplacement
Erase inutile code
Fix binding loop warnings
Replace magic numbers by JamiTheme values
Remove multiline comments from qml files

Change-Id: Icdde094750ccc39fa3b3c9fb9368f8609eb8981d
Gitlab: #5
---
 src/MainApplicationWindow.qml                 |   4 +-
 .../AccountMigrationDialog.qml                |   5 +-
 src/commoncomponents/CustomBorder.qml         |   6 +-
 src/commoncomponents/DeleteAccountDialog.qml  | 177 ++---
 src/commoncomponents/GeneralMenuItem.qml      |  10 +-
 src/commoncomponents/HoverableButton.qml      |  16 +-
 .../HoverableButtonTextItem.qml               |  29 +-
 .../HoverableRadiusButton.qml                 |  18 +-
 src/commoncomponents/InfoLineEdit.qml         |  13 +-
 src/commoncomponents/JamiFileDialog.qml       |  14 +-
 src/commoncomponents/MaterialButton.qml       |  76 +-
 src/commoncomponents/MessageBox.qml           |   2 -
 src/commoncomponents/PasswordDialog.qml       | 107 ++-
 src/commoncomponents/PhotoboothView.qml       |  25 +-
 .../PreferenceItemDelegate.qml                |   6 +-
 src/commoncomponents/SettingParaCombobox.qml  |  38 +-
 src/commoncomponents/TintedButton.qml         |  22 +-
 src/constant/JamiTheme.qml                    |   2 +-
 src/mainview/MainView.qml                     |  62 +-
 src/mainview/components/AboutPopUp.qml        |  20 +-
 .../components/AccountComboBoxPopup.qml       |  12 +-
 .../components/CallAdvancedOptions.qml        |   4 +-
 src/mainview/components/CallOverlay.qml       |  24 +-
 .../components/CallOverlayButtonGroup.qml     |   6 +-
 src/mainview/components/CallStackView.qml     |  18 +-
 .../components/CallViewContextMenu.qml        |  28 +-
 src/mainview/components/ContactPicker.qml     |   8 +-
 src/mainview/components/ContactSearchBar.qml  |   6 +-
 .../ConversationSmartListViewItemDelegate.qml |  14 +-
 src/mainview/components/IncomingCallPage.qml  |  30 +-
 .../components/MediaHandlerItemDelegate.qml   |   2 +-
 .../components/MediaHandlerPicker.qml         |   2 +-
 src/mainview/components/MessageWebView.qml    |  18 +-
 .../components/MessageWebViewHeader.qml       |   4 +-
 src/mainview/components/OutgoingCallPage.qml  |   4 +-
 src/mainview/components/ScreenRubberBand.qml  |  28 +-
 src/mainview/components/SelectScreen.qml      |  41 +-
 src/mainview/components/SidePanel.qml         |  16 +-
 src/mainview/components/SipInputPanel.qml     |  10 +-
 src/mainview/components/UserProfile.qml       |  16 +-
 src/mainview/components/VideoCallPage.qml     |  40 +-
 .../VideoCallPageContextMenuDeviceItem.qml    |   4 +-
 ...eocallfullscreenwindowcontainercreation.js |   1 -
 src/settingsview/SettingsView.qml             | 120 +--
 .../components/AdvancedSIPSettingsView.qml    | 681 +++++-------------
 .../components/AdvancedSettingsView.qml       | 418 ++++-------
 .../components/AudioCodecDelegate.qml         |  27 +-
 src/settingsview/components/AvSettingPage.qml | 567 ++++++---------
 .../components/BannedItemDelegate.qml         |  55 +-
 .../CurrentAccountSettingsScrollPage.qml      | 272 ++-----
 .../CurrentSIPAccountSettingScrollPage.qml    | 122 +---
 .../components/DeviceItemDelegate.qml         |  99 +--
 .../components/GeneralSettingsPage.qml        | 478 +++++-------
 .../components/LinkDeviceDialog.qml           | 289 ++------
 .../components/NameRegistrationDialog.qml     |   2 +-
 .../components/PluginItemDelegate.qml         |   2 +-
 .../components/PluginListPreferencesView.qml  |   6 +-
 .../components/PluginListSettingsView.qml     |  13 +-
 .../components/PluginSettingsPage.qml         |  39 +-
 .../components/RevokeDevicePasswordDialog.qml | 175 ++---
 src/settingsview/components/ToggleSwitch.qml  |  27 +-
 .../components/VideoCodecDelegate.qml         |  26 +-
 src/wizardview/WizardView.qml                 |   6 +-
 src/wizardview/components/BackupKeyPage.qml   |   4 +-
 .../components/CollapsiblePasswordWidget.qml  |   5 +-
 .../components/CreateAccountPage.qml          |   4 +-
 .../components/HoverableGradientButton.qml    |  13 +-
 67 files changed, 1495 insertions(+), 2943 deletions(-)

diff --git a/src/MainApplicationWindow.qml b/src/MainApplicationWindow.qml
index 8a5b9eb15..321a79009 100644
--- a/src/MainApplicationWindow.qml
+++ b/src/MainApplicationWindow.qml
@@ -135,9 +135,7 @@ ApplicationWindow {
         source: root.contentItem
         color: "transparent"
 
-        /*
-         * Color animation for overlay when pop up is shown.
-         */
+        // Color animation for overlay when pop up is shown.
         ColorAnimation on color {
             to: Qt.rgba(0, 0, 0, 0.33)
             duration: 500
diff --git a/src/commoncomponents/AccountMigrationDialog.qml b/src/commoncomponents/AccountMigrationDialog.qml
index af2890039..01e301833 100644
--- a/src/commoncomponents/AccountMigrationDialog.qml
+++ b/src/commoncomponents/AccountMigrationDialog.qml
@@ -26,9 +26,8 @@ import net.jami.Models 1.0
 
 import "../constant"
 import "../wizardview/components"
-/*
- * Account Migration Dialog for migrating account
- */
+
+// Account Migration Dialog for migrating account
 
 Window{
     id: accountMigrationDialog
diff --git a/src/commoncomponents/CustomBorder.qml b/src/commoncomponents/CustomBorder.qml
index 1a2843e7e..606fcc307 100644
--- a/src/commoncomponents/CustomBorder.qml
+++ b/src/commoncomponents/CustomBorder.qml
@@ -19,10 +19,8 @@
 import QtQuick 2.14
 
 
-/*
- * Inspired by
- * https://stackoverflow.com/questions/16534489/qml-control-border-width-and-color-on-any-one-side-of-rectangle-element
- */
+// Inspired by
+// https://stackoverflow.com/questions/16534489/qml-control-border-width-and-color-on-any-one-side-of-rectangle-element
 Rectangle {
 
     property bool commonBorder: true
diff --git a/src/commoncomponents/DeleteAccountDialog.qml b/src/commoncomponents/DeleteAccountDialog.qml
index bc42048d3..92b6e44ce 100644
--- a/src/commoncomponents/DeleteAccountDialog.qml
+++ b/src/commoncomponents/DeleteAccountDialog.qml
@@ -22,9 +22,10 @@ import QtQuick.Layouts 1.14
 import QtQuick.Controls.Styles 1.4
 import net.jami.Models 1.0
 import net.jami.Adapters 1.0
+import "../constant"
 
 Dialog {
-    id: deleteAccountDialog
+    id: root
 
     property int profileType: SettingsAdapter.getCurrentAccount_Profile_Info_Type()
 
@@ -49,139 +50,113 @@ Dialog {
         }
     }
 
+    header : Rectangle {
+        width: parent.width
+        height: 64
+        color: "transparent"
+        Text {
+            anchors.fill: parent
+            anchors.leftMargin: JamiTheme.preferredMarginSize
+            anchors.topMargin: JamiTheme.preferredMarginSize
+
+            text: qsTr("Account deletion")
+            font.pointSize: JamiTheme.headerFontSize
+            wrapMode: Text.Wrap
+        }
+    }
+
     visible: false
-    title: qsTr("Account deletion")
+    x: (parent.width - width) / 2
+    y: (parent.height - height) / 2
 
-    contentItem: Rectangle{
-        implicitWidth: 400
-        implicitHeight: 300
+    contentItem: Rectangle {
+        implicitHeight: contentLayout.implicitHeight + 64 + JamiTheme.preferredMarginSize
+        implicitWidth: 350
 
         ColumnLayout{
+            id: contentLayout
             anchors.fill: parent
-            spacing: 7
-
-            Layout.alignment: Qt.AlignCenter
+            anchors.centerIn: parent
 
-            Label{
+            Label {
                 id: labelDeletion
 
-                Layout.topMargin: 11
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
+                Layout.fillWidth: true
+                Layout.preferredHeight: 30
                 Layout.alignment: Qt.AlignHCenter
-                font.pointSize: 8
+
+                font.pointSize: JamiTheme.textFontSize
                 font.kerning: true
                 horizontalAlignment: Text.AlignHCenter
-                verticalAlignment: Text.AlignVCenter
                 wrapMode: Text.Wrap
                 text:qsTr("Do you really want to delete the following account?")
             }
 
-            Label{
+            Label {
                 id: labelBestId
 
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
+                Layout.topMargin: 5
+                Layout.fillWidth: true
+                Layout.preferredHeight: 30
                 Layout.alignment: Qt.AlignHCenter
-                font.pointSize: 8
+
+                font.pointSize: JamiTheme.textFontSize
                 font.kerning: true
                 font.bold: true
                 horizontalAlignment: Text.AlignHCenter
-                verticalAlignment: Text.AlignVCenter
                 wrapMode: Text.Wrap
 
                 text: SettingsAdapter.getAccountBestName()
             }
 
-            Label{
+            Label {
                 id: labelAccountHash
 
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
                 Layout.alignment: Qt.AlignHCenter
-                font.pointSize: 8
+                Layout.preferredHeight: 30
+
+                font.pointSize: JamiTheme.textFontSize
                 font.kerning: true
                 horizontalAlignment: Text.AlignHCenter
-                verticalAlignment: Text.AlignVCenter
                 wrapMode: Text.Wrap
                 text: SettingsAdapter.getCurrentAccount_Profile_Info_Uri()
             }
 
-            Item{
-                Layout.fillWidth: true
-
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
-                Layout.maximumHeight: 5
-                Layout.preferredHeight: 5
-                Layout.minimumHeight: 5
-            }
-
-            Label{
+            Label {
                 id: labelWarning
 
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
-                Layout.preferredWidth: 300
+                Layout.topMargin: 5
+                Layout.preferredHeight: 30
+                Layout.fillWidth: true
+                Layout.alignment: Qt.AlignHCenter
 
                 visible: ! isSIP
 
-                Layout.alignment: Qt.AlignHCenter
                 wrapMode: Text.Wrap
                 text: qsTr("If this account hasn't been exported, or added to another device, it will be irrevocably lost.")
-                font.pointSize: 8
+                font.pointSize: JamiTheme.textFontSize
                 font.kerning: true
                 horizontalAlignment: Text.AlignHCenter
-                verticalAlignment: Text.AlignVCenter
                 color: "red"
             }
 
-            Item{
+            RowLayout {
+                Layout.topMargin: JamiTheme.preferredMarginSize / 2
+                Layout.bottomMargin: 5
+                Layout.preferredHeight: 30
                 Layout.fillWidth: true
+                Layout.alignment: Qt.AlignHCenter
 
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
-                Layout.maximumHeight: 10
-                Layout.preferredHeight: 10
-                Layout.minimumHeight: 10
-            }
-
-            RowLayout{
-                spacing: 7
-
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-
-                Item{
-                    Layout.fillWidth: true
-                    Layout.minimumWidth: 40
-
-                    Layout.maximumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.minimumHeight: 20
-                }
-
-                HoverableRadiusButton{
+                HoverableRadiusButton {
                     id: btnDeleteAccept
 
+                    Layout.fillWidth: true
                     Layout.maximumWidth: 130
-                    Layout.preferredWidth: 130
-                    Layout.minimumWidth: 130
-
-                    Layout.maximumHeight: 30
-                    Layout.preferredHeight: 30
-                    Layout.minimumHeight: 30
 
-                    radius: height /2
+                    radius: height / 2
 
                     text: qsTr("Delete")
-                    font.pointSize: 10
+                    font.pointSize: JamiTheme.buttonFontSize
                     font.kerning: true
 
                     onClicked: {
@@ -190,25 +165,12 @@ Dialog {
                     }
                 }
 
-                Item{
-                    Layout.fillWidth: true
-                    Layout.minimumWidth: 40
-
-                    Layout.maximumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.minimumHeight: 20
-                }
-
-                HoverableButtonTextItem{
+                HoverableButtonTextItem {
                     id: btnDeleteCancel
 
+                    Layout.leftMargin: 20
+                    Layout.fillWidth: true
                     Layout.maximumWidth: 130
-                    Layout.preferredWidth: 130
-                    Layout.minimumWidth: 130
-
-                    Layout.maximumHeight: 30
-                    Layout.preferredHeight: 30
-                    Layout.minimumHeight: 30
 
                     backgroundColor: "red"
                     onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
@@ -218,37 +180,16 @@ Dialog {
                     onPressColor: backgroundColor
                     textColor: "white"
 
-                    radius: height /2
+                    radius: height / 2
 
                     text: qsTr("Cancel")
-                    font.pointSize: 10
+                    font.pointSize: JamiTheme.buttonFontSize
                     font.kerning: true
 
                     onClicked: {
                         reject()
                     }
                 }
-
-                Item{
-                    Layout.fillWidth: true
-                    Layout.minimumWidth: 40
-
-                    Layout.maximumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.minimumHeight: 20
-                }
-            }
-
-            Item{
-                Layout.fillWidth: true
-
-                Layout.maximumHeight: 5
-                Layout.preferredHeight: 5
-                Layout.minimumHeight: 5
-
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-                Layout.bottomMargin: 11
             }
         }
     }
diff --git a/src/commoncomponents/GeneralMenuItem.qml b/src/commoncomponents/GeneralMenuItem.qml
index 199f59d2f..4c6a5e513 100644
--- a/src/commoncomponents/GeneralMenuItem.qml
+++ b/src/commoncomponents/GeneralMenuItem.qml
@@ -22,12 +22,10 @@ import QtQuick.Layouts 1.14
 import QtGraphicalEffects 1.0
 import net.jami.Models 1.0
 
-/*
- * General menu item.
- * Can control top, bottom, left, right border width.
- * Use onClicked slot to simulate item click event.
- * Can have image icon at the left of the text.
- */
+// General menu item.
+// Can control top, bottom, left, right border width.
+// Use onClicked slot to simulate item click event.
+// Can have image icon at the left of the text.
 MenuItem {
     id: menuItem
 
diff --git a/src/commoncomponents/HoverableButton.qml b/src/commoncomponents/HoverableButton.qml
index 0668487b9..39b9ac672 100644
--- a/src/commoncomponents/HoverableButton.qml
+++ b/src/commoncomponents/HoverableButton.qml
@@ -22,15 +22,13 @@ import net.jami.Models 1.0
 import QtGraphicalEffects 1.15
 
 
-/*
- * HoverableButton contains the following configurable properties:
- * 1. Color changes on different button state
- * 2. Radius control (rounded)
- * 3. Text content or image content
- * 4. Can use OnClicked slot to implement some click logic
- *
- * Note: if use text property directly, buttonTextColor will not work.
- */
+// HoverableButton contains the following configurable properties:
+// 1. Color changes on different button state
+// 2. Radius control (rounded)
+// 3. Text content or image content
+// 4. Can use OnClicked slot to implement some click logic
+//
+// Note: if use text property directly, buttonTextColor will not work.
 Button {
     id: hoverableButton
 
diff --git a/src/commoncomponents/HoverableButtonTextItem.qml b/src/commoncomponents/HoverableButtonTextItem.qml
index 5ce9cebc1..a788cbba3 100644
--- a/src/commoncomponents/HoverableButtonTextItem.qml
+++ b/src/commoncomponents/HoverableButtonTextItem.qml
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
@@ -20,20 +19,18 @@ import QtQuick 2.14
 import QtQuick.Controls 2.14
 import net.jami.Models 1.0
 
+// HoverableButton containes functionalites:
+// 1. Color changes on different button state
+// 2. Radius control (rounded)
+// 3. Text content or image content
+// 4. Can use OnClicked slot to implement some click logic
 
-/*
- * HoverableButton containes functionalites:
- * 1. Color changes on different button state
- * 2. Radius control (rounded)
- * 3. Text content or image content
- * 4. Can use OnClicked slot to implement some click logic
- */
 Button {
-    id: hoverableButton
+    id: root
 
     property int fontPointSize: 9
-    property int buttonImageHeight: hoverableButtonBackground.height - 10
-    property int buttonImageWidth: hoverableButtonBackground.width - 10
+    property int buttonImageHeight: hoverableButtonBackground.height
+    property int buttonImageWidth: hoverableButtonBackground.width
 
     property string backgroundColor: JamiTheme.releaseColor
     property string onPressColor: JamiTheme.pressColor
@@ -58,8 +55,8 @@ Button {
     ToolTip.text: toolTipText
 
     contentItem: Text {
-            text: hoverableButton.text
-            font: hoverableButton.font
+            text: root.text
+            font: root.font
             opacity: enabled ? 1.0 : 0.3
             color: textColor
             horizontalAlignment: Text.AlignHCenter
@@ -70,7 +67,7 @@ Button {
     background: Rectangle {
         id: hoverableButtonBackground
 
-        color: hoverableButton.enabled ? backgroundColor:onDisabledBackgroundColor
+        color: root.enabled ? backgroundColor:onDisabledBackgroundColor
 
         Image {
             id: hoverableButtonImage
@@ -86,7 +83,7 @@ Button {
         }
 
         MouseArea {
-            enabled: hoverableButton.enabled
+            enabled: root.enabled
             anchors.fill: parent
 
             hoverEnabled: true
@@ -96,7 +93,7 @@ Button {
             }
             onReleased: {
                 hoverableButtonBackground.color = onReleaseColor
-                hoverableButton.clicked()
+                root.clicked()
             }
             onEntered: {
                 hoverableButtonBackground.color = onEnterColor
diff --git a/src/commoncomponents/HoverableRadiusButton.qml b/src/commoncomponents/HoverableRadiusButton.qml
index cdea4ef13..d59cc21c4 100644
--- a/src/commoncomponents/HoverableRadiusButton.qml
+++ b/src/commoncomponents/HoverableRadiusButton.qml
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
@@ -21,15 +20,14 @@ import QtQuick.Controls 2.14
 import net.jami.Models 1.0
 
 
-/*
- * HoverableButton contains the following configurable properties:
- * 1. Color changes on different button state
- * 2. Radius control (rounded)
- * 3. Text content or image content
- * 4. Can use OnClicked slot to implement some click logic
- */
+// HoverableButton contains the following configurable properties:
+// 1. Color changes on different button state
+// 2. Radius control (rounded)
+// 3. Text content or image content
+// 4. Can use OnClicked slot to implement some click logic
+
 Button {
-    id: hoverableButton
+    id: root
     property int fontPointSize: 9
     property int buttonImageHeight: hoverableButtonBackground.height - 10
     property int buttonImageWidth: hoverableButtonBackground.width - 10
@@ -83,7 +81,7 @@ Button {
             }
             onReleased: {
                 hoverableButtonBackground.color = onReleaseColor
-                hoverableButton.clicked()
+                root.clicked()
             }
             onEntered: {
                 hoverableButtonBackground.color = onEnterColor
diff --git a/src/commoncomponents/InfoLineEdit.qml b/src/commoncomponents/InfoLineEdit.qml
index cc50cdc84..915d26983 100644
--- a/src/commoncomponents/InfoLineEdit.qml
+++ b/src/commoncomponents/InfoLineEdit.qml
@@ -29,21 +29,10 @@ TextField{
         }
     }
 
-    Layout.minimumHeight: fieldLayoutHeight
-    Layout.preferredHeight: fieldLayoutHeight
-    Layout.maximumHeight: fieldLayoutHeight
-
-    Layout.minimumWidth: fieldLayoutWidth
-    Layout.maximumWidth: fieldLayoutWidth
-    Layout.preferredWidth: fieldLayoutWidth
-
-    Layout.fillWidth: layoutFillwidth
-    Layout.alignment: Qt.AlignHCenter
-
     wrapMode: Text.Wrap
     readOnly: false
     selectByMouse: true
-    font.pointSize: 10
+    font.pointSize: JamiTheme.settingsFontSize
     font.kerning: true
     horizontalAlignment: Text.AlignLeft
     verticalAlignment: Text.AlignVCenter
diff --git a/src/commoncomponents/JamiFileDialog.qml b/src/commoncomponents/JamiFileDialog.qml
index 2be314234..7bfadc989 100644
--- a/src/commoncomponents/JamiFileDialog.qml
+++ b/src/commoncomponents/JamiFileDialog.qml
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
@@ -20,12 +19,9 @@ import QtQuick 2.14
 import Qt.labs.platform 1.1
 
 FileDialog {
-    id: fileDialog
-
+    id: root
 
-    /*
-     * Use enum to avoid importing Qt.labs.platform when using JamiFileDialog.
-     */
+    // Use enum to avoid importing Qt.labs.platform when using JamiFileDialog.
     property int mode: JamiFileDialog.Mode.OpenFile
 
     enum Mode {
@@ -39,13 +35,13 @@ FileDialog {
     onModeChanged: {
         switch(mode) {
           case JamiFileDialog.Mode.OpenFile:
-              fileDialog.fileMode = FileDialog.OpenFile
+              root.fileMode = FileDialog.OpenFile
               break
           case JamiFileDialog.Mode.OpenFiles:
-              fileDialog.fileMode = FileDialog.OpenFiles
+              root.fileMode = FileDialog.OpenFiles
               break
           default:
-              fileDialog.fileMode = FileDialog.SaveFile
+              root.fileMode = FileDialog.SaveFile
         }
     }
 }
diff --git a/src/commoncomponents/MaterialButton.qml b/src/commoncomponents/MaterialButton.qml
index 54f32fa47..2129873f8 100644
--- a/src/commoncomponents/MaterialButton.qml
+++ b/src/commoncomponents/MaterialButton.qml
@@ -19,6 +19,9 @@
 import QtQuick 2.14
 import QtQuick.Controls 2.14
 import QtGraphicalEffects 1.15
+import QtQuick.Layouts 1.15
+
+import "../constant"
 
 Button {
     id: root
@@ -33,6 +36,8 @@ Button {
     property var preferredWidth: 400
     property var preferredHeight: 36
 
+    property int elide: Text.ElideRight
+
     font.kerning: true
 
     icon.source: ""
@@ -44,43 +49,48 @@ Button {
         Rectangle {
             anchors.fill: parent
             color: "transparent"
-            Image {
-                source: root.icon.source
-                width: root.icon.width
-                height: root.icon.height
-                anchors.verticalCenter: parent.verticalCenter
-                anchors.left: parent.left
-                anchors.leftMargin: 16
-                layer {
-                    enabled: true
-                    effect: ColorOverlay {
-                        id: overlay
-                        color:{
-                            if (!outlined)
-                                return "white"
-                            if (hovered && root.hoveredColor)
-                                return root.hoveredColor
-                            if (checked && root.pressedColor)
-                                return root.pressedColor
-                            return root.color
+            RowLayout {
+                anchors.fill: parent
+                anchors.centerIn: parent
+                Image {
+                    source: root.icon.source
+                    Layout.preferredWidth: root.icon.width
+                    Layout.preferredHeight: root.icon.height
+                    Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+                    Layout.leftMargin: JamiTheme.preferredMarginSize / 2
+                    layer {
+                        enabled: true
+                        effect: ColorOverlay {
+                            id: overlay
+                            color:{
+                                if (!outlined)
+                                    return "white"
+                                if (hovered && root.hoveredColor)
+                                    return root.hoveredColor
+                                if (checked && root.pressedColor)
+                                    return root.pressedColor
+                                return root.color
+                            }
                         }
                     }
                 }
-            }
-            Text {
-                text: root.text
-                color: {
-                    if (!outlined)
-                        return "white"
-                    if (hovered && root.hoveredColor)
-                        return root.hoveredColor
-                    if (checked && root.pressedColor)
-                        return root.pressedColor
-                    return root.color
+                Text {
+                    Layout.rightMargin: root.icon.width + JamiTheme.preferredMarginSize / 2
+                    text: root.text
+                    elide: root.elide
+                    color: {
+                        if (!outlined)
+                            return "white"
+                        if (hovered && root.hoveredColor)
+                            return root.hoveredColor
+                        if (checked && root.pressedColor)
+                            return root.pressedColor
+                        return root.color
+                    }
+                    font: root.font
+                    Layout.fillWidth: true
+                    horizontalAlignment: Text.AlignHCenter
                 }
-                font: root.font
-                anchors.centerIn: parent
-                horizontalAlignment: Text.AlignHCenter
             }
         }
     }
diff --git a/src/commoncomponents/MessageBox.qml b/src/commoncomponents/MessageBox.qml
index 9e87c9245..16225a0c6 100644
--- a/src/commoncomponents/MessageBox.qml
+++ b/src/commoncomponents/MessageBox.qml
@@ -30,8 +30,6 @@ MessageDialog {
     width: 300
     height: 200
 
-    onRejected: {}
-
     function openWithParameters(titleToDisplay, infoToDisplay, infoIconMode = StandardIcon.Information, buttons = StandardButton.Ok){
         title = titleToDisplay
         text = infoToDisplay
diff --git a/src/commoncomponents/PasswordDialog.qml b/src/commoncomponents/PasswordDialog.qml
index 93ea71e38..4d155cfb7 100644
--- a/src/commoncomponents/PasswordDialog.qml
+++ b/src/commoncomponents/PasswordDialog.qml
@@ -23,11 +23,11 @@ import QtQuick.Controls.Styles 1.4
 import net.jami.Models 1.0
 
 import "../constant"
-/*
- * PasswordDialog for changing password and exporting account
- */
+
+// PasswordDialog for changing password and exporting account
+
 Dialog {
-    id: passwordDialog
+    id: root
 
     enum PasswordEnteringPurpose {
         ChangePassword,
@@ -41,14 +41,14 @@ Dialog {
     property int purpose: PasswordDialog.ChangePassword
 
     header : Rectangle {
+        id: dialogHeader
         width: parent.width
         height: 64
         color: "transparent"
         Text {
-            anchors.left: parent.left
-            anchors.leftMargin: 24
-            anchors.bottom: parent.bottom
-            anchors.bottomMargin: 24
+            anchors.fill: parent
+            anchors.leftMargin: JamiTheme.preferredMarginSize
+            anchors.topMargin: JamiTheme.preferredMarginSize
 
             text: {
                 switch(purpose){
@@ -61,6 +61,7 @@ Dialog {
                 }
             }
             font.pointSize: JamiTheme.headerFontSize
+            wrapMode: Text.Wrap
         }
     }
 
@@ -72,7 +73,7 @@ Dialog {
         confirmPasswordEdit.borderColorMode = InfoLineEdit.NORMAL
         passwordEdit.clear()
         confirmPasswordEdit.clear()
-        passwordDialog.open()
+        root.open()
     }
 
     function haveDone(code, currentPurpose) {
@@ -116,19 +117,20 @@ Dialog {
         }
 
         if (success) {
-            haveDone(successCode, passwordDialog.purpose)
+            haveDone(successCode, root.purpose)
         } else {
             btnChangePasswordConfirm.enabled = false
             currentPasswordEdit.borderColorMode = InfoLineEdit.ERROR
         }
     }
+
     function savePasswordQML() {
         var success = false
         success = ClientWrapper.accountAdaptor.savePassword(ClientWrapper.utilsAdaptor.getCurrAccId(),currentPasswordEdit.text, passwordEdit.text)
 
         if (success) {
             ClientWrapper.accountAdaptor.setArchiveHasPassword(passwordEdit.text.length !== 0)
-            haveDone(successCode, passwordDialog.purpose)
+            haveDone(successCode, root.purpose)
         } else {
             currentPasswordEdit.borderColorMode = InfoLineEdit.ERROR
             btnChangePasswordConfirm.enabled = false
@@ -136,73 +138,54 @@ Dialog {
     }
 
     visible: false
-
-    anchors.centerIn: parent.Center
     x: (parent.width - width) / 2
     y: (parent.height - height) / 2
-    height: contentLayout.implicitHeight + 64 + 16
 
     contentItem: Rectangle {
-        implicitWidth: 280
+        implicitHeight: contentLayout.implicitHeight + dialogHeader.height + JamiTheme.preferredMarginSize
+        implicitWidth: 350
 
         ColumnLayout {
             id: contentLayout
             anchors.fill: parent
-            spacing: 8
 
             ColumnLayout {
                 Layout.alignment: Qt.AlignHCenter
-                Layout.fillWidth: true
-
-                spacing: 7
 
-                ColumnLayout {
-                    spacing: 0
-
-                    Layout.alignment: Qt.AlignHCenter
-
-                    MaterialLineEdit {
-                        id: currentPasswordEdit
+                MaterialLineEdit {
+                    id: currentPasswordEdit
 
-                        Layout.maximumHeight: visible ?
-                                                48 :
-                                                0
-                        Layout.fillWidth: true
+                    Layout.maximumHeight: visible ?
+                                            48 :
+                                            0
+                    Layout.fillWidth: true
 
-                        visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.ExportAccount
-                        echoMode: TextInput.Password
-                        horizontalAlignment: Text.AlignLeft
-                        verticalAlignment: Text.AlignVCenter
+                    visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.ExportAccount
+                    echoMode: TextInput.Password
+                    horizontalAlignment: Text.AlignLeft
+                    verticalAlignment: Text.AlignVCenter
 
-                        placeholderText: qsTr("Enter Current Password")
+                    placeholderText: qsTr("Enter Current Password")
 
-                        onTextChanged: {
-                            if (purpose === PasswordDialog.ChangePassword) {
-                                validatePassword()
-                            }
+                    onTextChanged: {
+                        if (purpose === PasswordDialog.ChangePassword) {
+                            validatePassword()
+                        }
 
-                            if (currentPasswordEdit.text.length == 0) {
-                                btnChangePasswordConfirm.enabled = false
-                            } else {
-                                btnChangePasswordConfirm.enabled = true
-                            }
+                        if (currentPasswordEdit.text.length == 0) {
+                            btnChangePasswordConfirm.enabled = false
+                        } else {
+                            btnChangePasswordConfirm.enabled = true
                         }
                     }
                 }
 
-                Item {
-                    Layout.fillWidth: true
-
-                    Layout.minimumHeight: 8
-                    Layout.preferredHeight: 8
-                    Layout.maximumHeight: 8
-                }
-
                 MaterialLineEdit {
                     id: passwordEdit
 
+                    Layout.fillWidth: true
+                    Layout.topMargin: JamiTheme.preferredMarginSize / 2
                     fieldLayoutHeight: 48
-                    layoutFillwidth: true
 
                     visible: purpose === PasswordDialog.ChangePassword || purpose === PasswordDialog.SetPassword
                     echoMode: TextInput.Password
@@ -216,17 +199,11 @@ Dialog {
                     }
                 }
 
-                Item {
-                    Layout.fillWidth: true
-
-                    Layout.minimumHeight: 8
-                    Layout.preferredHeight: 8
-                    Layout.maximumHeight: 8
-                }
-
                 MaterialLineEdit {
                     id: confirmPasswordEdit
 
+                    Layout.fillWidth: true
+                    Layout.topMargin: JamiTheme.preferredMarginSize / 2
                     fieldLayoutHeight: 48
                     layoutFillwidth: true
 
@@ -244,10 +221,7 @@ Dialog {
             }
 
             RowLayout {
-                spacing: 8
-
-                Layout.fillWidth: true
-
+                Layout.topMargin: JamiTheme.preferredMarginSize / 2
                 Layout.alignment: Qt.AlignRight
 
                 Button {
@@ -270,6 +244,7 @@ Dialog {
 
                 Button {
                     id: btnChangePasswordCancel
+                    Layout.leftMargin: JamiTheme.preferredMarginSize / 2
 
                     contentItem: Text {
                         text: qsTr("CANCEL")
@@ -281,7 +256,7 @@ Dialog {
                     }
 
                     onClicked: {
-                        passwordDialog.reject()
+                        root.reject()
                     }
                 }
             }
diff --git a/src/commoncomponents/PhotoboothView.qml b/src/commoncomponents/PhotoboothView.qml
index 0eec04a7d..af78996ab 100644
--- a/src/commoncomponents/PhotoboothView.qml
+++ b/src/commoncomponents/PhotoboothView.qml
@@ -6,7 +6,7 @@ import Qt.labs.platform 1.1
 import QtGraphicalEffects 1.0
 import net.jami.Models 1.0
 
-ColumnLayout{
+ColumnLayout {
     property bool takePhotoState: false
     property bool hasAvatar: false
     property bool isDefaultIcon: false
@@ -72,9 +72,7 @@ ColumnLayout{
         }
     }
 
-    spacing: 0
-
-    Label{
+    Label {
         id: avatarLabel
 
         visible: !takePhotoState
@@ -90,11 +88,11 @@ ColumnLayout{
             color: "grey"
             radius: height / 2
 
-            Image{
+            Image {
                 id: avatarImg
 
                 anchors.fill: parent
-                source:  {
+                source: {
                     if(imgBase64.length === 0){
                         return "qrc:/images/default_avatar_overlay.svg"
                     } else {
@@ -104,7 +102,7 @@ ColumnLayout{
                 fillMode: Image.PreserveAspectCrop
                 layer.enabled: true
                 layer.effect: OpacityMask {
-                    maskSource: Rectangle{
+                    maskSource: Rectangle {
                         width: avatarImg.width
                         height: avatarImg.height
                         radius: {
@@ -117,12 +115,13 @@ ColumnLayout{
         }
     }
 
-    PhotoboothPreviewRender{
+    PhotoboothPreviewRender {
         id:previewWidget
 
         onHideBooth:{
             stopBooth()
         }
+
         visible: takePhotoState
         focus: visible
 
@@ -132,7 +131,7 @@ ColumnLayout{
 
         layer.enabled: true
         layer.effect: OpacityMask {
-            maskSource: Rectangle{
+            maskSource: Rectangle {
                 width: previewWidget.width
                 height: previewWidget.height
                 radius: {
@@ -142,7 +141,7 @@ ColumnLayout{
             }
         }
 
-        Label{
+        Label {
             id: flashOverlay
 
             anchors.fill: previewWidget
@@ -159,15 +158,13 @@ ColumnLayout{
         }
     }
 
-    RowLayout{
+    RowLayout {
         id: buttonsRowLayout
 
         Layout.fillWidth: true
         Layout.alignment: Qt.AlignHCenter
         Layout.preferredHeight: 30
-        Layout.topMargin: 5
-
-        spacing: 15
+        Layout.topMargin: JamiTheme.preferredMarginSize / 2
 
         HoverableButton {
             id: takePhotoButton
diff --git a/src/commoncomponents/PreferenceItemDelegate.qml b/src/commoncomponents/PreferenceItemDelegate.qml
index ab2b2b7a2..1e4e93662 100644
--- a/src/commoncomponents/PreferenceItemDelegate.qml
+++ b/src/commoncomponents/PreferenceItemDelegate.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
  *
@@ -100,7 +100,7 @@ ItemDelegate {
             ToolTip.text: preferenceSummary
         }
 
-        HoverableRadiusButton{
+        HoverableRadiusButton {
             id: btnPreference
             visible: preferenceType === PreferenceItemDelegate.DEFAULT
             backgroundColor: "white"
@@ -113,7 +113,7 @@ ItemDelegate {
             buttonImageHeight: 20
             buttonImageWidth: 20
 
-            source:{
+            source: {
                 return "qrc:/images/icons/round-settings-24px.svg"
             }
 
diff --git a/src/commoncomponents/SettingParaCombobox.qml b/src/commoncomponents/SettingParaCombobox.qml
index dfdf8b5ec..16346685c 100644
--- a/src/commoncomponents/SettingParaCombobox.qml
+++ b/src/commoncomponents/SettingParaCombobox.qml
@@ -26,7 +26,7 @@ import QtQuick.Controls.Styles 1.4
 import "../constant"
 
 ComboBox {
-    id: control
+    id: root
 
     property string tooltipText:""
 
@@ -35,30 +35,32 @@ ComboBox {
     ToolTip.text: tooltipText
 
     delegate: ItemDelegate {
-        width: control.width
+        width: root.width
         contentItem: Text {
             text: {
-                var currentItem = control.delegateModel.items.get(index)
-                return  currentItem.model[control.textRole].toString()
+                if (index < 0)
+                    return qsTr("")
+                var currentItem = root.delegateModel.items.get(index)
+                return  currentItem.model[root.textRole].toString()
             }
             color: "black"
-            font: control.font
+            font: root.font
             elide: Text.ElideRight
             verticalAlignment: Text.AlignVCenter
         }
-        highlighted: control.highlightedIndex === index
+        highlighted: root.highlightedIndex === index
     }
 
     indicator: Canvas {
         id: canvas
-        x: control.width - width - control.rightPadding
-        y: control.topPadding + (control.availableHeight - height) / 2
+        x: root.width - width - root.rightPadding
+        y: root.topPadding + (root.availableHeight - height) / 2
         width: 12
         height: 8
         contextType: "2d"
 
         Connections {
-            target: control
+            target: root
             function onPressedChanged(){
                 canvas.requestPaint()
             }
@@ -70,17 +72,17 @@ ComboBox {
             context.lineTo(width, 0);
             context.lineTo(width / 2, height);
             context.closePath();
-            context.fillStyle = control.pressed ? JamiTheme.pressColor : "black";
+            context.fillStyle = root.pressed ? JamiTheme.pressColor : "black";
             context.fill();
         }
     }
 
     contentItem: Text {
         leftPadding: 0
-        rightPadding: control.indicator.width + control.spacing
+        rightPadding: root.indicator.width + root.spacing
 
-        text: control.displayText
-        font: control.font
+        text: root.displayText
+        font: root.font
         color: "black"
         verticalAlignment: Text.AlignVCenter
         elide: Text.ElideRight
@@ -90,21 +92,21 @@ ComboBox {
         implicitWidth: 120
         implicitHeight: 40
         border.color: "white"
-        border.width: control.visualFocus ? 2 : 1
+        border.width: root.visualFocus ? 2 : 1
         radius: 2
     }
 
     popup: Popup {
-        y: control.height - 1
-        width: control.width
+        y: root.height - 1
+        width: root.width
         implicitHeight: contentItem.implicitHeight
         padding: 1
 
         contentItem: ListView {
             clip: true
             implicitHeight: contentHeight
-            model:  control.delegateModel
-            currentIndex: control.highlightedIndex
+            model:  root.delegateModel
+            currentIndex: root.highlightedIndex
 
             ScrollIndicator.vertical: ScrollIndicator { }
         }
diff --git a/src/commoncomponents/TintedButton.qml b/src/commoncomponents/TintedButton.qml
index eaec99444..65d8846d3 100644
--- a/src/commoncomponents/TintedButton.qml
+++ b/src/commoncomponents/TintedButton.qml
@@ -24,29 +24,21 @@ Button {
     id: tintedButton
 
 
-    /*
-     * TintColor, color for the pixmap when button is hovered.
-     */
+    // TintColor, color for the pixmap when button is hovered.
     property string tintColor: "white"
 
 
-    /*
-     * NormalPixmapSource - icons in normal state (non-toggled).
-     * SelectedPixmapSource - icons once button is toggled.
-     */
+    // NormalPixmapSource - icons in normal state (non-toggled).
+    // SelectedPixmapSource - icons once button is toggled.
     property string normalPixmapSource: ""
     property string selectedPixmapSource: ""
 
 
-    /*
-     * IsSelected property is to help set button current state manually.
-     */
+    // IsSelected property is to help set button current state manually.
     property bool isSelected: false
 
 
-    /*
-     * ButtonEntered signal is to help call overlay change its opacity
-     */
+    // ButtonEntered signal is to help call overlay change its opacity
     signal buttonEntered
 
     function setChecked(checked) {
@@ -100,9 +92,7 @@ Button {
             onEntered: {
 
 
-                /*
-                 * Tinted.
-                 */
+                // Tinted.
                 if (isSelected) {
                     tintedButtonImage.source = "image://tintedPixmap/"
                             + selectedPixmapSource.replace(
diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml
index 09fec0d52..69eaf3560 100644
--- a/src/constant/JamiTheme.qml
+++ b/src/constant/JamiTheme.qml
@@ -90,7 +90,7 @@ Item {
     property int menuFontSize: 12
 
     property int maximumWidthSettingsView: 800
-    property int preferredFieldWidth: 216
+    property int preferredFieldWidth: 236
     property int preferredFieldHeight: 32
     property int preferredMarginSize: 16
 
diff --git a/src/mainview/MainView.qml b/src/mainview/MainView.qml
index bfd2f7f66..1377a7d48 100644
--- a/src/mainview/MainView.qml
+++ b/src/mainview/MainView.qml
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
@@ -24,10 +23,8 @@ import QtQuick.Controls.Universal 2.12
 import QtGraphicalEffects 1.14
 import net.jami.Models 1.0
 
+// Import qml component files.
 
-/*
- * Import qml component files.
- */
 import "components"
 import "../wizardview"
 import "../settingsview"
@@ -51,9 +48,7 @@ Window {
     property int savedWelcomeViewMaxWidth: 0
     property bool sidePanelHidden: false
 
-    /*
-     * To calculate tab bar bottom border hidden rect left margin.
-     */
+    // To calculate tab bar bottom border hidden rect left margin.
     property int tabBarLeftMargin: 8
     property int tabButtonShrinkSize: 8
     property bool inSettingsView: false
@@ -92,9 +87,7 @@ Window {
 
     function recursionStackViewItemMove(stackOne, stackTwo, depth=1) {
 
-        /*
-         * Move all items (expect the bottom item) to stacktwo by the same order in stackone.
-         */
+        // Move all items (expect the bottom item) to stacktwo by the same order in stackone.
         if (stackOne.depth === depth) {
             return
         }
@@ -163,10 +156,8 @@ Window {
             }
 
 
-            /*
-             * Check if it is coming from the current responsible call,
-             * and push views onto the correct stackview
-             */
+            // Check if it is coming from the current responsible call,
+            // and push views onto the correct stackview
             if (callStackView.responsibleAccountId === accountId
                     && callStackView.responsibleConvUid === convUid) {
                 pushCallStackView()
@@ -175,9 +166,7 @@ Window {
 
         function onCloseCallStack(accountId, convUid) {
 
-            /*
-             * Check if call stack view is on any of the stackview.
-             */
+            // Check if call stack view is on any of the stackview.
             if (callStackView.responsibleAccountId === accountId
                     && callStackView.responsibleConvUid === convUid) {
                 if (mainViewStack.find(function (item, index) {
@@ -199,9 +188,7 @@ Window {
 
         function onIncomingCallNeedToSetupMainView(accountId, convUid) {
 
-            /*
-             * Set up the call stack view that is needed by call overlay.
-             */
+            // Set up the call stack view that is needed by call overlay.
             if (!inSettingsView) {
                 mainViewStack.pop(null, StackView.Immediate)
                 sidePanelViewStack.pop(null, StackView.Immediate)
@@ -287,9 +274,7 @@ Window {
                                                       splitView.width - sidePanelViewStackPreferredWidth)
                 SplitView.fillHeight: true
 
-                /*
-                 * AccountComboBox is always visible
-                 */
+                // AccountComboBox is always visible
                 AccountComboBox {
                     id: accountComboBox
 
@@ -455,10 +440,7 @@ Window {
                 }
             }
 
-
-            /*
-             * Set up chatview.
-             */
+            // Set up chatview.
             MessagesAdapter.setupChatView(currentUID)
             callStackView.setLinkedWebview(
                         communicationPageMessageWebView)
@@ -473,9 +455,7 @@ Window {
             }
 
 
-            /*
-             * Push messageWebView or callStackView onto the correct stackview
-             */
+            // Push messageWebView or callStackView onto the correct stackview
             mainViewStack.pop(null, StackView.Immediate)
             sidePanelViewStack.pop(null, StackView.Immediate)
 
@@ -503,10 +483,7 @@ Window {
         }
 
         onAccountComboBoxNeedToShowWelcomePage: {
-
-            /*
-             * If the item argument is specified, all items down to (but not including) item will be popped.
-             */
+            // If the item argument is specified, all items down to (but not including) item will be popped.
             if (!inSettingsView) {
                 mainViewStack.pop(welcomePage)
                 welcomePage.updateWelcomePage()
@@ -535,9 +512,7 @@ Window {
         id: callStackView
 
         visible: false
-
         objectName: "callStackViewObject"
-
     }
 
     WelcomePage {
@@ -547,6 +522,7 @@ Window {
 
     SettingsView {
         id: settingsView
+        anchors.fill: parent
 
         visible: false
 
@@ -622,28 +598,20 @@ Window {
             })
 
 
-            /*
-             * Set qml MessageWebView object pointer to c++.
-             */
+            // Set qml MessageWebView object pointer to c++.
             MessagesAdapter.setQmlObject(this)
         }
     }
 
     onWidthChanged: {
-
-
-        /*
-         * Hide unnecessary stackview when width is changed.
-         */
+        // Hide unnecessary stackview when width is changed.
         if (mainViewWindow.width < sidePanelViewStackPreferredWidth
                 + mainViewStackPreferredWidth - 5
                 && mainViewStack.visible) {
             mainViewStack.visible = false
             sidePanelHidden = true
 
-            /*
-             * The find callback function is called for each item in the stack.
-             */
+            // The find callback function is called for each item in the stack.
             var inWelcomeViewStack = mainViewStack.find(
                         function (item, index) {
                             return index > 0
diff --git a/src/mainview/components/AboutPopUp.qml b/src/mainview/components/AboutPopUp.qml
index c4adffe8f..fea3ff069 100644
--- a/src/mainview/components/AboutPopUp.qml
+++ b/src/mainview/components/AboutPopUp.qml
@@ -27,15 +27,11 @@ Dialog {
     id: aboutPopUp
 
 
-    /*
-     * When dialog is opened, trigger mainViewWindow overlay which is defined in overlay.model (model : true is necessary).
-     */
+    // When dialog is opened, trigger mainViewWindow overlay which is defined in overlay.model (model : true is necessary).
     modal: true
 
 
-    /*
-     * Content height + margin.
-     */
+    // Content height + margin.
     contentHeight: aboutPopUpContentRectColumnLayout.height + 5 * 7
 
     ProjectCreditsScrollView {
@@ -129,9 +125,7 @@ Dialog {
                 verticalAlignment: Text.AlignVCenter
 
 
-                /*
-                 * TextMetrics does not work for multi-line.
-                 */
+                // TextMetrics does not work for multi-line.
                 text: qsTr("The Qt client for Jami.\nJami is a secured and distributed communication software.")
             }
 
@@ -141,9 +135,7 @@ Dialog {
                 Layout.alignment: Qt.AlignCenter
 
 
-                /*
-                 * Strangely, hoveredLink works badly when width grows too large
-                 */
+                // Strangely, hoveredLink works badly when width grows too large
                 Layout.preferredWidth: 50
                 Layout.preferredHeight: textMetricsjamiDeclarationHyperText.boundingRect.height
                 Layout.topMargin: 5
@@ -167,9 +159,7 @@ Dialog {
                     anchors.fill: parent
 
 
-                    /*
-                     * We don't want to eat clicks on the Text.
-                     */
+                    // We don't want to eat clicks on the Text.
                     acceptedButtons: Qt.NoButton
                     cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
                 }
diff --git a/src/mainview/components/AccountComboBoxPopup.qml b/src/mainview/components/AccountComboBoxPopup.qml
index f10b4f599..90aa0ef4a 100644
--- a/src/mainview/components/AccountComboBoxPopup.qml
+++ b/src/mainview/components/AccountComboBoxPopup.qml
@@ -35,9 +35,7 @@ Popup {
     implicitWidth: accountComboBox.width - 1
 
 
-    /*
-     * Hack - limite the accounts that can be shown.
-     */
+    // Hack - limite the accounts that can be shown.
     implicitHeight: {
         comboBoxPopup.visible
         return Math.min(accountComboBox.height *
@@ -50,9 +48,7 @@ Popup {
         id: comboBoxPopupListView
 
 
-        /*
-         * In list view, index is an interger.
-         */
+        // In list view, index is an interger.
         clip: true
         model: accountListModel
         implicitHeight: contentHeight
@@ -70,9 +66,7 @@ Popup {
                 fillMode: Image.PreserveAspectFit
                 mipmap: true
 
-                /*
-                 * Role::Picture
-                 */
+                // Role::Picture
                 source: {
                     var data = accountListModel.data(accountListModel.index(index, 0), 259)
                     if (data === undefined) {
diff --git a/src/mainview/components/CallAdvancedOptions.qml b/src/mainview/components/CallAdvancedOptions.qml
index 7a9b4e972..92d5f093c 100644
--- a/src/mainview/components/CallAdvancedOptions.qml
+++ b/src/mainview/components/CallAdvancedOptions.qml
@@ -31,9 +31,7 @@ Popup {
     property int type: ContactPicker.ContactPickerType.JAMICONFERENCE
 
 
-    /*
-     * Important to keep it one, since enum in c++ starts at one for conferences.
-     */
+    // Important to keep it one, since enum in c++ starts at one for conferences.
     enum ContactPickerType {
         JAMICONFERENCE = 1,
         SIPTRANSFER
diff --git a/src/mainview/components/CallOverlay.qml b/src/mainview/components/CallOverlay.qml
index 7977c399f..843df4c80 100644
--- a/src/mainview/components/CallOverlay.qml
+++ b/src/mainview/components/CallOverlay.qml
@@ -122,9 +122,7 @@ Rectangle {
         y: callOverlayRect.height / 2 - sipInputPanel.height / 2
     }
 
-    /*
-     * Timer to decide when overlay fade out.
-     */
+    // Timer to decide when overlay fade out.
     Timer {
         id: callOverlayTimer
         interval: 5000
@@ -220,11 +218,9 @@ Rectangle {
         color: "transparent"
 
 
-        /*
-         * Rect states: "entered" state should make overlay fade in,
-         *              "freezed" state should make overlay fade out.
-         * Combine with PropertyAnimation of opacity.
-         */
+        // Rect states: "entered" state should make overlay fade in,
+        //              "freezed" state should make overlay fade out.
+        // Combine with PropertyAnimation of opacity.
         states: [
             State {
                 name: "entered"
@@ -283,9 +279,7 @@ Rectangle {
         }
 
         onAddToConferenceButtonClicked: {
-            /*
-             * Create contact picker - conference.
-             */
+            // Create contact picker - conference.
             ContactPickerCreation.createContactPickerObjects(
                         ContactPicker.ContactPickerType.JAMICONFERENCE,
                         callOverlayRect)
@@ -321,9 +315,7 @@ Rectangle {
     }
 
 
-    /*
-     * MouseAreas to make sure that overlay states are correctly set.
-     */
+    // MouseAreas to make sure that overlay states are correctly set.
     MouseArea {
         id: callOverlayButtonGroupLeftSideMouseArea
 
@@ -421,9 +413,7 @@ Rectangle {
         id: callViewContextMenu
 
         onTransferCallButtonClicked: {
-            /*
-             * Create contact picker - sip transfer.
-             */
+            // Create contact picker - sip transfer.
             ContactPickerCreation.createContactPickerObjects(
                         ContactPicker.ContactPickerType.SIPTRANSFER,
                         callOverlayRect)
diff --git a/src/mainview/components/CallOverlayButtonGroup.qml b/src/mainview/components/CallOverlayButtonGroup.qml
index 88a097fac..f145ab877 100644
--- a/src/mainview/components/CallOverlayButtonGroup.qml
+++ b/src/mainview/components/CallOverlayButtonGroup.qml
@@ -29,10 +29,8 @@ import "../../commoncomponents"
 Rectangle {
     id: root
 
-    /*
-     * ButtonCounts here is to make sure that flow layout margin is calculated correctly,
-     * since no other methods can make buttons at the layout center.
-     */
+    // ButtonCounts here is to make sure that flow layout margin is calculated correctly,
+    // since no other methods can make buttons at the layout center.
     property int buttonPreferredSize: 24
     property var isMaster: true
     property var isSip: false
diff --git a/src/mainview/components/CallStackView.qml b/src/mainview/components/CallStackView.qml
index 210de1b68..a626f1198 100644
--- a/src/mainview/components/CallStackView.qml
+++ b/src/mainview/components/CallStackView.qml
@@ -31,10 +31,8 @@ Rectangle {
 
     anchors.fill: parent
 
-    /*
-     * When selected conversation is changed,
-     * these values will also be changed.
-     */
+    // When selected conversation is changed,
+    // these values will also be changed.
     property string responsibleConvUid: ""
     property string responsibleAccountId: ""
 
@@ -43,9 +41,7 @@ Rectangle {
         videoCallPage.closeInCallConversation()
 
 
-        /*
-         * Close potential window, context menu releated windows.
-         */
+        // Close potential window, context menu releated windows.
         audioCallPage.closeContextMenuAndRelatedWindows()
 
         VideoCallFullScreenWindowContainerCreation.closeVideoCallFullScreenWindowContainer()
@@ -110,9 +106,7 @@ Rectangle {
         function onShowOutgoingCallPage(accountId, convUid) {
 
 
-            /*
-             * Need to check whether it is the current selected conversation.
-             */
+            // Need to check whether it is the current selected conversation.
             if (responsibleConvUid === convUid
                     && responsibleAccountId === accountId) {
                 showOutgoingCallPage()
@@ -122,9 +116,7 @@ Rectangle {
         function onShowIncomingCallPage(accountId, convUid) {
 
 
-            /*
-             * Check is done within the js.
-             */
+            // Check is done within the js.
             IncomingCallPageCreation.createincomingCallPageWindowObjects(
                         accountId, convUid)
             IncomingCallPageCreation.showIncomingCallPageWindow(accountId,
diff --git a/src/mainview/components/CallViewContextMenu.qml b/src/mainview/components/CallViewContextMenu.qml
index 5b2272a7a..54ae0b26b 100644
--- a/src/mainview/components/CallViewContextMenu.qml
+++ b/src/mainview/components/CallViewContextMenu.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
  * Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
@@ -129,9 +129,7 @@ Item {
     function generateDeviceMenuItem() {
         var deviceContextMenuInfoMap = AvAdapter.populateVideoDeviceContextMenuItem()
 
-        /*
-         * Somehow, the map size is undefined, so use this instead.
-         */
+        // Somehow, the map size is undefined, so use this instead.
         var mapSize = deviceContextMenuInfoMap["size"]
 
         if (mapSize === 0)
@@ -166,19 +164,19 @@ Item {
         })
     }
 
-    /* TODO: In the future we want to implement this
+    // TODO: In the future we want to implement this
 
-    GeneralMenuItem {
-        id: advancedInfosItem
+    // GeneralMenuItem {
+    //     id: advancedInfosItem
 
-        itemName: qsTr("Advanced informations")
-        iconSource: "qrc:/images/icons/info-24px.svg"
-        leftBorderWidth: commonBorderWidth
-        rightBorderWidth: commonBorderWidth
+    //     itemName: qsTr("Advanced informations")
+    //     iconSource: "qrc:/images/icons/info-24px.svg"
+    //     leftBorderWidth: commonBorderWidth
+    //     rightBorderWidth: commonBorderWidth
 
-        onClicked: {
-            root.close()
-        }
-    }*/
+    //     onClicked: {
+    //         root.close()
+    //     }
+    // }
 }
 
diff --git a/src/mainview/components/ContactPicker.qml b/src/mainview/components/ContactPicker.qml
index 1d4140621..cb93757e3 100644
--- a/src/mainview/components/ContactPicker.qml
+++ b/src/mainview/components/ContactPicker.qml
@@ -30,9 +30,7 @@ Popup {
     property int type: ContactPicker.ContactPickerType.JAMICONFERENCE
 
 
-    /*
-     * Important to keep it one, since enum in c++ starts at one for conferences.
-     */
+    // Important to keep it one, since enum in c++ starts at one for conferences.
     enum ContactPickerType {
         JAMICONFERENCE = 1,
         SIPTRANSFER
@@ -136,9 +134,7 @@ Popup {
     onAboutToShow: {
 
 
-        /*
-         * Reset the model on each show.
-         */
+        // Reset the model on each show.
         contactPickerListView.model = ContactAdapter.getContactSelectableModel(
                     type)
     }
diff --git a/src/mainview/components/ContactSearchBar.qml b/src/mainview/components/ContactSearchBar.qml
index ef75bbcd9..89fb42c9e 100644
--- a/src/mainview/components/ContactSearchBar.qml
+++ b/src/mainview/components/ContactSearchBar.qml
@@ -32,10 +32,8 @@ Rectangle {
     }
 
 
-    /*
-     * Hack - there is no real way now to make TextField lose its focus,
-     * unless transfer it to other component.
-     */
+    // Hack - there is no real way now to make TextField lose its focus,
+    // unless transfer it to other component.
     function clearFocus() {
         fakeFocus.forceActiveFocus()
     }
diff --git a/src/mainview/components/ConversationSmartListViewItemDelegate.qml b/src/mainview/components/ConversationSmartListViewItemDelegate.qml
index 4e2fe3cc5..5357dc637 100644
--- a/src/mainview/components/ConversationSmartListViewItemDelegate.qml
+++ b/src/mainview/components/ConversationSmartListViewItemDelegate.qml
@@ -32,19 +32,15 @@ ItemDelegate {
         target: conversationSmartListView
 
 
-        /*
-         * Hack, make sure that smartListItemDelegate does not show extra item
-         * when searching new contacts.
-         */
+        // Hack, make sure that smartListItemDelegate does not show extra item
+        // when searching new contacts.
         function onForceUpdatePotentialInvalidItem() {
             smartListItemDelegate.visible = conversationSmartListView.model.rowCount(
                         ) <= index ? false : true
         }
 
 
-        /*
-         * When currentIndex is -1, deselect items, if not, change select item
-         */
+        // When currentIndex is -1, deselect items, if not, change select item
         function onCurrentIndexIsChanged() {
             if (conversationSmartListView.currentIndex === -1
                     || conversationSmartListView.currentIndex !== index) {
@@ -184,9 +180,7 @@ ItemDelegate {
             if (mouse.button === Qt.RightButton) {
                 smartListContextMenu.parent = mouseAreaSmartListItemDelegate
 
-                /*
-                 * Make menu pos at mouse.
-                 */
+                // Make menu pos at mouse.
                 var relativeMousePos = mapToItem(itemSmartListBackground,
                                                  mouse.x, mouse.y)
                 smartListContextMenu.x = relativeMousePos.x
diff --git a/src/mainview/components/IncomingCallPage.qml b/src/mainview/components/IncomingCallPage.qml
index 89b5ffa6f..9955efcfd 100644
--- a/src/mainview/components/IncomingCallPage.qml
+++ b/src/mainview/components/IncomingCallPage.qml
@@ -26,11 +26,9 @@ import net.jami.Models 1.0
 import "../../commoncomponents"
 
 
-/*
- * IncomingCallPage as a seperate window,
- * exist at the right bottom, as a notification to user that
- * a call is incoming.
- */
+// IncomingCallPage as a seperate window,
+// exist at the right bottom, as a notification to user that
+// a call is incoming.
 Window {
     id: incomingCallPage
 
@@ -38,9 +36,7 @@ Window {
     property int minHeight: 400
 
 
-    /*
-     * The unique identifier for incomingCallPage
-     */
+    // The unique identifier for incomingCallPage
     property string responsibleAccountId: ""
     property string responsibleConvUid: ""
 
@@ -65,14 +61,12 @@ Window {
     function updatePositionToRightBottom() {
 
 
-        /*
-         * Screen right bottom,
-         * since the qt screen.virtualY, virtualX does not work properly,
-         * we need to calculate the screen x, y ourselves, by
-         * using to fact that window will always be in the middle if no x or y
-         * specificed.
-         * ex: https://doc.qt.io/qt-5/qscreen.html#geometry-prop
-         */
+        // Screen right bottom,
+        // since the qt screen.virtualY, virtualX does not work properly,
+        // we need to calculate the screen x, y ourselves, by
+        // using to fact that window will always be in the middle if no x or y
+        // specificed.
+        // ex: https://doc.qt.io/qt-5/qscreen.html#geometry-prop
         var virtualX = (incomingCallPage.x + width / 2) - screen.width / 2
         incomingCallPage.x = virtualX + screen.width - width
         incomingCallPage.y = screen.height - height - 50
@@ -96,9 +90,7 @@ Window {
         color: "black"
 
 
-        /*
-         * Simulate window drag. (top with height 30).
-         */
+        // Simulate window drag. (top with height 30).
         MouseArea {
             id: dragMouseArea
 
diff --git a/src/mainview/components/MediaHandlerItemDelegate.qml b/src/mainview/components/MediaHandlerItemDelegate.qml
index 6a0494dec..6b4b4aae7 100644
--- a/src/mainview/components/MediaHandlerItemDelegate.qml
+++ b/src/mainview/components/MediaHandlerItemDelegate.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
  *
diff --git a/src/mainview/components/MediaHandlerPicker.qml b/src/mainview/components/MediaHandlerPicker.qml
index 3030f44e8..56f9e45f3 100644
--- a/src/mainview/components/MediaHandlerPicker.qml
+++ b/src/mainview/components/MediaHandlerPicker.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
  *
diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml
index 98bdd48df..8453c41cb 100644
--- a/src/mainview/components/MessageWebView.qml
+++ b/src/mainview/components/MessageWebView.qml
@@ -111,16 +111,12 @@ Rectangle {
         id: jsBridgeObject
 
 
-        /*
-         * ID, under which this object will be known at chatview.js side.
-         */
+        // ID, under which this object will be known at chatview.js side.
         WebChannel.id: "jsbridge"
 
 
-        /*
-         * Functions that are exposed, return code can be derived from js side
-         * by setting callback function.
-         */
+        // Functions that are exposed, return code can be derived from js side
+        // by setting callback function.
         function deleteInteraction(arg) {
             MessagesAdapter.deleteInteraction(arg)
         }
@@ -274,9 +270,7 @@ Rectangle {
     }
 
 
-    /*
-     * Provide WebEngineProfile.
-     */
+    // Provide WebEngineProfile.
     WebEngineProfile {
         id: messageWebViewProfile
 
@@ -288,9 +282,7 @@ Rectangle {
     }
 
 
-    /*
-     * Provide WebChannel by registering jsBridgeObject.
-     */
+    // Provide WebChannel by registering jsBridgeObject.
     WebChannel {
         id: messageWebViewChannel
         registeredObjects: [jsBridgeObject]
diff --git a/src/mainview/components/MessageWebViewHeader.qml b/src/mainview/components/MessageWebViewHeader.qml
index 8509f9a2a..0eaaecac1 100644
--- a/src/mainview/components/MessageWebViewHeader.qml
+++ b/src/mainview/components/MessageWebViewHeader.qml
@@ -77,9 +77,7 @@ Rectangle {
             Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
 
 
-            /*
-             * Width + margin.
-             */
+            // Width + margin.
             Layout.preferredWidth: messagingHeaderRect.width
                                    - backToWelcomeViewButton.width - buttonGroup.width - 45
             Layout.preferredHeight: messagingHeaderRect.height
diff --git a/src/mainview/components/OutgoingCallPage.qml b/src/mainview/components/OutgoingCallPage.qml
index b0b2aa863..4d2171a47 100644
--- a/src/mainview/components/OutgoingCallPage.qml
+++ b/src/mainview/components/OutgoingCallPage.qml
@@ -48,9 +48,7 @@ Rectangle {
     color: "black"
 
 
-    /*
-     * Prevent right click propagate to VideoCallPage.
-     */
+    // Prevent right click propagate to VideoCallPage.
     MouseArea {
         anchors.fill: parent
         propagateComposedEvents: false
diff --git a/src/mainview/components/ScreenRubberBand.qml b/src/mainview/components/ScreenRubberBand.qml
index 65c3266e2..3ae5714e3 100644
--- a/src/mainview/components/ScreenRubberBand.qml
+++ b/src/mainview/components/ScreenRubberBand.qml
@@ -24,13 +24,11 @@ import QtQuick.Controls.Universal 2.12
 import net.jami.Models 1.0
 
 
-/*
- * ScreenRubberBand as a seperate frameless window,
- * is to simulate the whole screen area and provide the user
- * the ability to select certain area of it.
- *
- * Typically, it is used for video screen sharing.
- */
+// ScreenRubberBand as a seperate frameless window,
+// is to simulate the whole screen area and provide the user
+// the ability to select certain area of it.
+
+// Typically, it is used for video screen sharing.
 Window {
     id: screenRubberBandWindow
 
@@ -39,17 +37,13 @@ Window {
     flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.WA_TranslucentBackground
 
 
-    /*
-     * Opacity with 0.7 window that will fill the entire screen,
-     * provide the users to select the area that they
-     * want to share.
-     */
+    // Opacity with 0.7 window that will fill the entire screen,
+    // provide the users to select the area that they
+    // want to share.
     color: Qt.rgba(0, 0, 0, 0.7)
 
 
-    /*
-     * Rect for selection.
-     */
+    // Rect for selection.
     Rectangle {
         id: recSelect
 
@@ -74,9 +68,7 @@ Window {
         cursorShape: Qt.CrossCursor
 
 
-        /*
-         * Geo changing for user selection.
-         */
+        // Geo changing for user selection.
         onPressed: {
             originalX = mouseX
             originalY = mouseY
diff --git a/src/mainview/components/SelectScreen.qml b/src/mainview/components/SelectScreen.qml
index 506af4873..0e8baa020 100644
--- a/src/mainview/components/SelectScreen.qml
+++ b/src/mainview/components/SelectScreen.qml
@@ -27,12 +27,9 @@ import "../js/screenrubberbandcreation.js" as ScreenRubberBandCreation
 
 import "../../commoncomponents"
 
-
-/*
- * SelectScreenWindow as a seperate window,
- * is to make user aware of which screen they want to share,
- * during the video call, if the context menu item is selected.
- */
+// SelectScreenWindow as a seperate window,
+// is to make user aware of which screen they want to share,
+// during the video call, if the context menu item is selected.
 Window {
     id: selectScreenWindow
 
@@ -42,15 +39,11 @@ Window {
     property int selectedScreenNumber: -1
 
 
-    /*
-     * Decide whether to show screen area or entire screen.
-     */
+    // Decide whether to show screen area or entire screen.
     property bool selectArea: false
 
 
-    /*
-     * How many rows the ScrollView should have.
-     */
+    // How many rows the ScrollView should have.
     function calculateRepeaterModel() {
         var numberOfScreens = Qt.application.screens.length
 
@@ -75,9 +68,7 @@ Window {
     title: "Screen sharing"
 
 
-    /*
-     * Note: Qt.application.screens[0] is the app's current existing screen.
-     */
+    // Note: Qt.application.screens[0] is the app's current existing screen.
     screen: Qt.application.screens[0]
 
     Rectangle {
@@ -110,9 +101,7 @@ Window {
             ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
 
 
-            /*
-             * Column of rows repeater (two screen captures in a row).
-             */
+            // Column of rows repeater (two screen captures in a row).
             Column {
                 id: screenSelectionScrollViewColumn
 
@@ -134,20 +123,16 @@ Window {
                             function onSelectedScreenNumberChanged() {
 
 
-                                /*
-                                 * Recover from green state.
-                                 */
+                                // Recover from green state.
                                 screenSelectionRectOdd.borderColor = JamiTheme.tabbarBorderColor
                                 screenSelectionRectEven.borderColor = JamiTheme.tabbarBorderColor
                             }
                         }
 
 
-                        /*
-                         * To make sure that two screen captures in one row,
-                         * a repeater of two rect is needed, which one in charge
-                         * of odd number screen, one in charge of even number screen.
-                         */
+                        // To make sure that two screen captures in one row,
+                        // a repeater of two rect is needed, which one in charge
+                        // of odd number screen, one in charge of even number screen.
                         Rectangle {
                             id: screenSelectionRectOdd
 
@@ -305,9 +290,7 @@ Window {
                 ScreenRubberBandCreation.showScreenRubberBandWindow()
 
 
-                /*
-                 * Destory selectScreenWindow once screenRubberBand is closed.
-                 */
+                // Destory selectScreenWindow once screenRubberBand is closed.
                 ScreenRubberBandCreation.connectOnClosingEvent(function () {
                     selectScreenWindow.close()
                 })
diff --git a/src/mainview/components/SidePanel.qml b/src/mainview/components/SidePanel.qml
index bf2d6ffb7..2a59f50fc 100644
--- a/src/mainview/components/SidePanel.qml
+++ b/src/mainview/components/SidePanel.qml
@@ -38,9 +38,7 @@ Rectangle {
     signal needToAddNewAccount
 
 
-    /*
-     * Hack -> force redraw.
-     */
+    // Hack -> force redraw.
     function forceReselectConversationSmartListCurrentIndex() {
         var index = conversationSmartListView.currentIndex
         conversationSmartListView.currentIndex = -1
@@ -48,9 +46,7 @@ Rectangle {
     }
 
 
-    /*
-     * For contact request conv to be focused correctly.
-     */
+    // For contact request conv to be focused correctly.
     function setCurrentUidSmartListModelIndex() {
         conversationSmartListView.currentIndex
                 = conversationSmartListView.model.currentUidSmartListModelIndex(
@@ -94,15 +90,11 @@ Rectangle {
         conversationSmartListView.updateListView()
     }
 
-    /*
-     * Intended -> since strange behavior will happen without this for stackview.
-     */
+    // Intended -> since strange behavior will happen without this for stackview.
     anchors.top: parent.top
     anchors.fill: parent
 
-    /*
-     * Search bar container to embed search label
-     */
+    // Search bar container to embed search label
     ContactSearchBar {
         id: contactSearchBar
         width: sidePanelRect.width - 26
diff --git a/src/mainview/components/SipInputPanel.qml b/src/mainview/components/SipInputPanel.qml
index 8d547a26a..efb0cd52f 100644
--- a/src/mainview/components/SipInputPanel.qml
+++ b/src/mainview/components/SipInputPanel.qml
@@ -24,16 +24,12 @@ import net.jami.Models 1.0
 
 import "../../commoncomponents"
 
-/*
- * SipInputPanel is a key pad that is designed to be
- * used in sip calls.
- */
+// SipInputPanel is a key pad that is designed to be
+// used in sip calls.
 Popup {
     id: sipInputPanelPopUp
 
-    /*
-     * Space between sipInputPanelRect and grid layout
-     */
+    // Space between sipInputPanelRect and grid layout
     property int sipPanelPadding: 20
 
     contentWidth: sipInputPanelRectGridLayout.implicitWidth + 20
diff --git a/src/mainview/components/UserProfile.qml b/src/mainview/components/UserProfile.qml
index 5c01efa18..3e62c7731 100644
--- a/src/mainview/components/UserProfile.qml
+++ b/src/mainview/components/UserProfile.qml
@@ -35,15 +35,11 @@ Dialog {
     property int preferredImgSize: 80
     modal: true
 
-    /*
-     * Content height + margin.
-     */
+    // Content height + margin.
     contentHeight: userProfileDialogLayout.implicitHeight + 60
     contentWidth: userProfileDialogLayout.implicitWidth + 60
 
-    /*
-     * Fake focus to make sure that text edit lose focus on close.
-     */
+    // Fake focus to make sure that text edit lose focus on close.
     FocusScope {
         id: fakeFocusTextEdit
     }
@@ -68,9 +64,7 @@ Dialog {
             mipmap: true
         }
 
-        /*
-         * Visible when user alias is not empty or equals to id.
-         */
+        // Visible when user alias is not empty or equals to id.
         Text {
             id: contactAlias
 
@@ -110,9 +104,7 @@ Dialog {
             color: JamiTheme.faddedFontColor
         }
 
-        /*
-         * Visible when user name is not empty or equals to alias.
-         */
+        // Visible when user name is not empty or equals to alias.
         Text {
             id: contactDisplayName
 
diff --git a/src/mainview/components/VideoCallPage.qml b/src/mainview/components/VideoCallPage.qml
index 105f7c8d4..5ec8c82f4 100644
--- a/src/mainview/components/VideoCallPage.qml
+++ b/src/mainview/components/VideoCallPage.qml
@@ -88,9 +88,7 @@ Rectangle {
     function previewMagneticSnap() {
 
 
-        /*
-         * Calculate the position where the previewRenderer should attach to.
-         */
+        // Calculate the position where the previewRenderer should attach to.
         var previewRendererCenter = Qt.point(
                     previewRenderer.x + previewRenderer.width / 2,
                     previewRenderer.y + previewRenderer.height / 2)
@@ -102,9 +100,7 @@ Rectangle {
             if (previewRendererCenter.y >= distantRendererCenter.y) {
 
 
-                /*
-                 * Bottom right.
-                 */
+                // Bottom right.
                 previewToX = Qt.binding(function () {
                     return videoCallPageMainRect.width - previewRenderer.width - previewMargin
                 })
@@ -114,9 +110,7 @@ Rectangle {
             } else {
 
 
-                /*
-                 * Top right.
-                 */
+                // Top right.
                 previewToX = Qt.binding(function () {
                     return videoCallPageMainRect.width - previewRenderer.width - previewMargin
                 })
@@ -126,9 +120,7 @@ Rectangle {
             if (previewRendererCenter.y >= distantRendererCenter.y) {
 
 
-                /*
-                 * Bottom left.
-                 */
+                // Bottom left.
                 previewToX = previewMargin
                 previewToY = Qt.binding(function () {
                     return videoCallPageMainRect.height - previewRenderer.height - previewMarginY
@@ -136,9 +128,7 @@ Rectangle {
             } else {
 
 
-                /*
-                 * Top left.
-                 */
+                // Top left.
                 previewToX = previewMargin
                 previewToY = previewMarginY
             }
@@ -246,12 +236,10 @@ Rectangle {
                     id: previewRenderer
 
 
-                    /*
-                    * Property is used in the {} expression for height (extra dependency),
-                    * it will not affect the true height expression, since expression
-                    * at last will be taken only, but it will force the height to update
-                    * and reevaluate getPreviewImageScalingFactor().
-                    */
+                    // Property is used in the {} expression for height (extra dependency),
+                    // it will not affect the true height expression, since expression
+                    // at last will be taken only, but it will force the height to update
+                    // and reevaluate getPreviewImageScalingFactor().
                     property int previewImageScalingFactorUpdated: 0
 
                     Connections {
@@ -266,7 +254,7 @@ Rectangle {
                         return previewRenderer.width * previewRenderer.getPreviewImageScalingFactor()
                     }
                     x: videoCallPageMainRect.width - previewRenderer.width - previewMargin
-                    y: videoCallPageMainRect.height - previewRenderer.height - previewMargin - 56 /* Avoid overlay */
+                    y: videoCallPageMainRect.height - previewRenderer.height - previewMargin - 56 // Avoid overlay
                     z: -1
 
                     states: [
@@ -309,18 +297,14 @@ Rectangle {
                         onPositionChanged: {
 
 
-                            /*
-                            * Calculate mouse position relative change.
-                            */
+                            // Calculate mouse position relative change.
                             var delta = Qt.point(mouse.x - clickPos.x,
                                                 mouse.y - clickPos.y)
                             var deltaW = previewRenderer.x + delta.x + previewRenderer.width
                             var deltaH = previewRenderer.y + delta.y + previewRenderer.height
 
 
-                            /*
-                            * Check if the previewRenderer exceeds the border of videoCallPageMainRect.
-                            */
+                            // Check if the previewRenderer exceeds the border of videoCallPageMainRect.
                             if (deltaW < videoCallPageMainRect.width
                                     && previewRenderer.x + delta.x > 1)
                                 previewRenderer.x += delta.x
diff --git a/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml b/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml
index a6a4f8043..868950b57 100644
--- a/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml
+++ b/src/mainview/components/VideoCallPageContextMenuDeviceItem.qml
@@ -22,9 +22,7 @@ import net.jami.Models 1.0
 
 import "../../commoncomponents"
 
-/*
- * Menu item wrapper for video device checkable item.
- */
+// Menu item wrapper for video device checkable item.
 GeneralMenuItem {
     id: videoCallPageContextMenuDeviceItem
 
diff --git a/src/mainview/js/videocallfullscreenwindowcontainercreation.js b/src/mainview/js/videocallfullscreenwindowcontainercreation.js
index 23a51d7b7..14c007ce6 100644
--- a/src/mainview/js/videocallfullscreenwindowcontainercreation.js
+++ b/src/mainview/js/videocallfullscreenwindowcontainercreation.js
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
diff --git a/src/settingsview/SettingsView.qml b/src/settingsview/SettingsView.qml
index 6b368a05f..d20929d5f 100644
--- a/src/settingsview/SettingsView.qml
+++ b/src/settingsview/SettingsView.qml
@@ -28,7 +28,7 @@ import net.jami.Adapters 1.0
 import "components"
 
 Rectangle {
-    id: settingsViewWindow
+    id: root
 
 
     enum SettingsMenu{
@@ -49,53 +49,53 @@ Rectangle {
 
         if(selectedMenu === sel && (!recovery)){return}
         switch(sel){
-        case SettingsView.Account:
-            currentAccountSettingsScrollWidget.connectCurrentAccount()
+            case SettingsView.Account:
+                currentAccountSettingsScrollWidget.connectCurrentAccount()
 
-            avSettings.stopAudioMeter()
-            avSettings.stopPreviewing()
+                avSettings.stopAudioMeter()
+                avSettings.stopPreviewing()
 
-            selectedMenu = sel
+                selectedMenu = sel
 
-            if(!settingsViewRect.isSIP){
-                if(currentAccountSettingsScrollWidget.isPhotoBoothOpened())
-                {
-                    currentAccountSettingsScrollWidget.setAvatar()
-                }
+                if(!settingsViewRect.isSIP){
+                    if(currentAccountSettingsScrollWidget.isPhotoBoothOpened())
+                    {
+                        currentAccountSettingsScrollWidget.setAvatar()
+                    }
 
-                currentAccountSettingsScrollWidget.updateAccountInfoDisplayed()
-            } else {
-                if(currentSIPAccountSettingsScrollWidget.isPhotoBoothOpened()) {
-                    currentSIPAccountSettingsScrollWidget.setAvatar()
+                    currentAccountSettingsScrollWidget.updateAccountInfoDisplayed()
+                } else {
+                    if(currentSIPAccountSettingsScrollWidget.isPhotoBoothOpened()) {
+                        currentSIPAccountSettingsScrollWidget.setAvatar()
+                    }
+                    currentSIPAccountSettingsScrollWidget.updateAccountInfoDisplayed()
                 }
-                currentSIPAccountSettingsScrollWidget.updateAccountInfoDisplayed()
-            }
-            break
-        case SettingsView.General:
-            try{
-                avSettings.stopAudioMeter()
-                avSettings.stopPreviewing()
-            } catch(erro){}
-
-            selectedMenu = sel
-            generalSettings.populateGeneralSettings()
-            break
-        case SettingsView.Media:
-            selectedMenu = sel
-
-            avSettings.stopPreviewing()
-            avSettings.populateAVSettings()
-            avSettings.startAudioMeter()
-            break
-        case SettingsView.Plugin:
-            try{
-                avSettings.stopAudioMeter()
-                avSettings.stopPreviewing()
-            } catch(erro){}
+                break
+            case SettingsView.General:
+                try{
+                    avSettings.stopAudioMeter()
+                    avSettings.stopPreviewing()
+                } catch(erro){}
+
+                selectedMenu = sel
+                generalSettings.populateGeneralSettings()
+                break
+            case SettingsView.Media:
+                selectedMenu = sel
 
-            selectedMenu = sel
-            pluginSettings.populatePluginSettings()
-            break
+                avSettings.stopPreviewing()
+                avSettings.populateAVSettings()
+                avSettings.startAudioMeter()
+                break
+            case SettingsView.Plugin:
+                try{
+                    avSettings.stopAudioMeter()
+                    avSettings.stopPreviewing()
+                } catch(erro){}
+
+                selectedMenu = sel
+                pluginSettings.populatePluginSettings()
+                break
         }
     }
 
@@ -140,20 +140,17 @@ Rectangle {
 
 
     property int selectedMenu: SettingsView.Account
-    /*
-     * signal to redirect the page to main view
-     */
+    // signal to redirect the page to main view
     signal settingsViewWindowNeedToShowMainViewWindow()
     signal settingsViewWindowNeedToShowNewWizardWindow
 
     signal settingsBackArrowClicked
 
     visible: true
-    anchors.fill: parent
 
     Rectangle {
         id: settingsViewRect
-        anchors.fill: parent
+        anchors.fill: root
 
         property bool isSIP: {
             switch (profileType) {
@@ -165,10 +162,10 @@ Rectangle {
         }
 
         StackLayout {
-            anchors.fill: parent
-
             id: rightSettingsWidget
 
+            anchors.fill: parent
+
             property int pageIdCurrentAccountSettingsScrollPage: 0
             property int pageIdCurrentSIPAccountSettingScrollPage: 1
             property int pageIdGeneralSettingsPage: 2
@@ -189,8 +186,6 @@ Rectangle {
                         return pageIdAvSettingPage
                     case SettingsView.Plugin:
                         return pageIdPluginSettingsPage
-                    case SettingsView.Plugin:
-                        return pageIdPluginSettingsPage
                 }
             }
 
@@ -198,6 +193,10 @@ Rectangle {
             CurrentAccountSettingsScrollPage {
                 id: currentAccountSettingsScrollWidget
 
+                Layout.fillHeight: true
+                Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
+                anchors.centerIn: parent
+
                 onNavigateToMainView: {
                     leaveSettingsSlot(true)
                 }
@@ -211,6 +210,10 @@ Rectangle {
             CurrentSIPAccountSettingScrollPage {
                 id: currentSIPAccountSettingsScrollWidget
 
+                Layout.fillHeight: true
+                Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
+                anchors.centerIn: parent
+
                 onNavigateToMainView: {
                     leaveSettingsSlot(true)
                 }
@@ -223,24 +226,33 @@ Rectangle {
             // general setting page, index 2
             GeneralSettingsPage {
                 id: generalSettings
+
+                Layout.fillHeight: true
+                Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
+                anchors.centerIn: parent
             }
 
             // av setting page, index 3
             AvSettingPage {
                 id: avSettings
+
+                Layout.fillHeight: true
+                Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
+                anchors.centerIn: parent
             }
 
             // plugin setting page, index 4
             PluginSettingsPage {
                 id: pluginSettings
+                Layout.fillHeight: true
+                Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
+                anchors.centerIn: parent
             }
         }
     }
 
 
-    /*
-     * Back button signal redirection
-     */
+    // Back button signal redirection
     Component.onCompleted: {
         currentAccountSettingsScrollWidget.backArrowClicked.connect(settingsBackArrowClicked)
         currentSIPAccountSettingsScrollWidget.backArrowClicked.connect(settingsBackArrowClicked)
diff --git a/src/settingsview/components/AdvancedSIPSettingsView.qml b/src/settingsview/components/AdvancedSIPSettingsView.qml
index 759a3f7b1..89d1fe8b6 100644
--- a/src/settingsview/components/AdvancedSIPSettingsView.qml
+++ b/src/settingsview/components/AdvancedSIPSettingsView.qml
@@ -31,6 +31,10 @@ import net.jami.Adapters 1.0
 import "../../commoncomponents"
 
 ColumnLayout {
+    id: root
+
+    property int itemWidth
+
     function updateAccountInfoDisplayedAdvanceSIP(){
         // Call Settings
         checkBoxAutoAnswerSIP.checked = SettingsAdapter.getAccountConfig_AutoAnswer()
@@ -106,22 +110,22 @@ ColumnLayout {
     }
 
     function updateAudioCodecs(){
-        audioCodecListModelSIP.layoutAboutToBeChanged()
-        audioCodecListModelSIP.dataChanged(audioCodecListModelSIP.index(0, 0),
-                                     audioCodecListModelSIP.index(audioCodecListModelSIP.rowCount() - 1, 0))
-        audioCodecListModelSIP.layoutChanged()
+        audioListWidgetSIP.model.layoutAboutToBeChanged()
+        audioListWidgetSIP.model.dataChanged(audioListWidgetSIP.model.index(0, 0),
+                                     audioListWidgetSIP.model.index(audioListWidgetSIP.model.rowCount() - 1, 0))
+        audioListWidgetSIP.model.layoutChanged()
     }
 
     function updateVideoCodecs(){
-        videoCodecListModelSIP.layoutAboutToBeChanged()
-        videoCodecListModelSIP.dataChanged(videoCodecListModelSIP.index(0, 0),
-                                     videoCodecListModelSIP.index(videoCodecListModelSIP.rowCount() - 1, 0))
-        videoCodecListModelSIP.layoutChanged()
+        videoListWidgetSIP.model.layoutAboutToBeChanged()
+        videoListWidgetSIP.model.dataChanged(videoListWidgetSIP.model.index(0, 0),
+                                     videoListWidgetSIP.model.index(videoListWidgetSIP.model.rowCount() - 1, 0))
+        videoListWidgetSIP.model.layoutChanged()
     }
 
     function decreaseAudioCodecPriority(){
         var index = audioListWidgetSIP.currentIndex
-        var codecId = audioCodecListModelSIP.data(audioCodecListModelSIP.index(index,0), AudioCodecListModel.AudioCodecID)
+        var codecId = audioListWidgetSIP.model.data(audioListWidgetSIP.model.index(index,0), AudioCodecListModel.AudioCodecID)
 
        SettingsAdapter.decreaseAudioCodecPriority(codecId)
         audioListWidgetSIP.currentIndex = index + 1
@@ -130,7 +134,7 @@ ColumnLayout {
 
     function increaseAudioCodecPriority(){
         var index = audioListWidgetSIP.currentIndex
-        var codecId = audioCodecListModelSIP.data(audioCodecListModelSIP.index(index,0), AudioCodecListModel.AudioCodecID)
+        var codecId = audioListWidgetSIP.model.data(audioListWidgetSIP.model.index(index,0), AudioCodecListModel.AudioCodecID)
 
        SettingsAdapter.increaseAudioCodecPriority(codecId)
         audioListWidgetSIP.currentIndex = index - 1
@@ -139,7 +143,7 @@ ColumnLayout {
 
     function decreaseVideoCodecPriority(){
         var index = videoListWidgetSIP.currentIndex
-        var codecId = videoCodecListModelSIP.data(videoCodecListModelSIP.index(index,0), VideoCodecListModel.VideoCodecID)
+        var codecId = videoListWidgetSIP.model.data(videoListWidgetSIP.model.index(index,0), VideoCodecListModel.VideoCodecID)
 
        SettingsAdapter.decreaseVideoCodecPriority(codecId)
         videoListWidgetSIP.currentIndex = index + 1
@@ -148,22 +152,13 @@ ColumnLayout {
 
     function increaseVideoCodecPriority(){
         var index = videoListWidgetSIP.currentIndex
-        var codecId = videoCodecListModelSIP.data(videoCodecListModelSIP.index(index,0), VideoCodecListModel.VideoCodecID)
+        var codecId = videoListWidgetSIP.model.data(videoListWidgetSIP.model.index(index,0), VideoCodecListModel.VideoCodecID)
 
        SettingsAdapter.increaseVideoCodecPriority(codecId)
         videoListWidgetSIP.currentIndex = index - 1
         updateVideoCodecs()
     }
 
-    VideoCodecListModel{
-        id: videoCodecListModelSIP
-    }
-
-    AudioCodecListModel{
-        id: audioCodecListModelSIP
-    }
-
-
     // slots
     function audioRTPMinPortSpinBoxEditFinished(value){
         if (ClientWrapper.SettingsAdapter.getAccountConfig_Audio_AudioPortMax() < value) {
@@ -241,14 +236,6 @@ ColumnLayout {
         nameFilters: [qsTr("Audio Files") + " (*.wav *.ogg *.opus *.mp3 *.aiff *.wma)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeRingtonePath(url)
@@ -267,14 +254,6 @@ ColumnLayout {
         nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeFileCACert(url)
@@ -293,14 +272,6 @@ ColumnLayout {
         nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeFileUserCert(url)
@@ -319,43 +290,23 @@ ColumnLayout {
         nameFilters: [qsTr("Key File") + " (*.key)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeFilePrivateKey(url)
         }
     }
 
-    id: advancedSIPSettingsViewLayout
-    Layout.fillWidth: true
-    spacing: 24
-
-    property int preferredColumnWidth : sipAccountViewRect.width / 2 - 50
-    property int preferredSettingsWidth: sipAccountViewRect.width - 80
-
     // call setting section
     ColumnLayout {
-
-        spacing: 8
         Layout.fillWidth: true
+        Layout.fillHeight: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
 
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
             eText: qsTr("Call Settings")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            maxWidth: width
         }
 
         ColumnLayout {
@@ -365,7 +316,7 @@ ColumnLayout {
             ToggleSwitch {
                 id: checkBoxAutoAnswerSIP
 
-                labelText: autoAnswerCallsText.elidedText
+                labelText: qsTr("Auto Answer Calls")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -373,17 +324,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: autoAnswerCallsText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Auto Answer Calls")
-            }
-
             ToggleSwitch {
                 id: checkBoxCustomRingtoneSIP
 
-                labelText: enableCustomRingtoneSIPElidedText.elidedText
+                labelText: qsTr("Enable Custom Ringtone")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -392,34 +336,25 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: enableCustomRingtoneSIPElidedText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Enable Custom Ringtone")
-            }
-
-
             RowLayout {
                 Layout.fillWidth: true
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("Select Custom Ringtone")
-                    maxWidth: preferredColumnWidth
-                    fontSize: JamiTheme.settingsFontSize
+                    text: qsTr("Select Custom Ringtone")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 MaterialButton {
                     id: btnRingtoneSIP
 
                     Layout.alignment: Qt.AlignCenter
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
@@ -437,19 +372,15 @@ ColumnLayout {
 
     // voice mail section
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             eText: qsTr("Voicemail")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            maxWidth: width
         }
 
         RowLayout {
@@ -457,20 +388,15 @@ ColumnLayout {
             Layout.maximumHeight: JamiTheme.preferredFieldHeight
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Voicemail Dial Code")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
-            }
-
-            Item {
-                Layout.fillHeight: true
-                Layout.fillWidth: true
+                text: qsTr("Voicemail Dial Code")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -478,7 +404,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -496,19 +422,15 @@ ColumnLayout {
 
     // security section
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             eText: qsTr("Security")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            maxWidth: width
         }
 
         ColumnLayout {
@@ -518,7 +440,7 @@ ColumnLayout {
             ToggleSwitch {
                 id: encryptMediaStreamsToggle
 
-                labelText: encryptMediaStreamsText.elidedText
+                labelText: qsTr("Encrypt Media Streams (SRTP)")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -528,17 +450,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: encryptMediaStreamsText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Encrypt Media Streams (SRTP)")
-            }
-
             ToggleSwitch {
                 id: enableSDESToggle
 
-                labelText: enableSDESText.elidedText
+                labelText: qsTr("Enable SDES(Key Exchange)")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -546,17 +461,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: enableSDESText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Enable SDES(Key Exchange)")
-            }
-
             ToggleSwitch {
                 id: fallbackRTPToggle
 
-                labelText: fallbackRTPText.elidedText
+                labelText: qsTr("Can Fallback on RTP")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -564,17 +472,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: fallbackRTPText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Can Fallback on RTP")
-            }
-
             ToggleSwitch {
                 id: encryptNegotitationToggle
 
-                labelText: encryptNegotitationText.elidedText
+                labelText: qsTr("Encrypt Negotiation (TLS)")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -586,39 +487,26 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: encryptNegotitationText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Encrypt Negotiation (TLS)")
-            }
-
             GridLayout {
                 Layout.fillWidth: true
 
-                rowSpacing: 8
-                columnSpacing: 8
-
                 rows: 4
                 columns: 2
 
                 ElidedTextLabel {
                     Layout.fillWidth: true
-
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("CA Certificate")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialButton {
                     id: btnSIPCACert
 
                     Layout.alignment: Qt.AlignCenter
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
@@ -633,21 +521,18 @@ ColumnLayout {
 
                 ElidedTextLabel {
                     Layout.fillWidth: true
-
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("User Certificate")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialButton {
                     id: btnSIPUserCert
 
                     Layout.alignment: Qt.AlignCenter
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
@@ -662,21 +547,18 @@ ColumnLayout {
 
                 ElidedTextLabel {
                     Layout.fillWidth: true
-
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("Private Key")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialButton {
                     id: btnSIPPrivateKey
 
                     Layout.alignment: Qt.AlignCenter
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
@@ -692,23 +574,19 @@ ColumnLayout {
                 // Private key password
                 ElidedTextLabel {
                     Layout.fillWidth: true
-
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("Private Key Password")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
-
                 MaterialLineEdit {
                     id: lineEditSIPCertPassword
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -728,7 +606,7 @@ ColumnLayout {
             ToggleSwitch {
                 id: verifyIncomingCertificatesServerToogle
 
-                labelText: verifyIncomingCertificatesServerText.elidedText
+                labelText: qsTr("Verify Certificates (Server Side)")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -736,17 +614,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: verifyIncomingCertificatesServerText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Verify Certificates (Server Side)")
-            }
-
             ToggleSwitch {
                 id: verifyIncomingCertificatesClientToogle
 
-                labelText: verifyIncomingCertificatesClientText.elidedText
+                labelText: qsTr("Verify Certificates (Client Side)")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -754,17 +625,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: verifyIncomingCertificatesClientText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Verify Certificates (Client Side)")
-            }
-
             ToggleSwitch {
                 id: requireCeritificateForTLSIncomingToggle
 
-                labelText: requireCeritificateForTLSIncomingText.elidedText
+                labelText: qsTr("TLS Connections Require Certificate")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -772,42 +636,27 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: requireCeritificateForTLSIncomingText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("TLS Connections Require Certificate")
-            }
-
-
             GridLayout {
                 Layout.fillWidth: true
 
-                rowSpacing: 8
-                columnSpacing: 8
-
                 rows: 3
                 columns: 2
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("TLS Protocol Method")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("TLS Protocol Method")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 SettingParaCombobox {
                     id: tlsProtocolComboBox
 
-                    Layout.minimumWidth: preferredColumnWidth
-                    Layout.preferredWidth: preferredColumnWidth
-                    Layout.maximumWidth: preferredColumnWidth
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     font.pointSize: JamiTheme.settingsFontSize
@@ -828,15 +677,15 @@ ColumnLayout {
                     }
                 }
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("Outgoing TLS Server Name")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("Outgoing TLS Server Name")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 MaterialLineEdit {
@@ -844,7 +693,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -859,25 +708,21 @@ ColumnLayout {
                     }
                 }
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("Negotiation Timeout (seconds)")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("Negotiation Timeout (seconds)")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 SpinBox {
                     id: negotiationTimeoutSpinBox
 
-                    Layout.maximumWidth: preferredColumnWidth
-                    Layout.minimumWidth: preferredColumnWidth
-                    Layout.preferredWidth: preferredColumnWidth
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     font.pointSize: JamiTheme.settingsFontSize
@@ -900,53 +745,40 @@ ColumnLayout {
 
     // connectivity section
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             eText: qsTr("Connectivity")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredSettingsWidth
+            maxWidth: width
         }
 
         GridLayout {
             Layout.fillWidth: true
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
-            rowSpacing: 8
-            columnSpacing: 8
-
             rows: 9
             columns: 2
 
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Registration Expire Timeout (seconds)")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("Registration Expire Timeout (seconds)")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
-
             SpinBox {
                 id: registrationExpireTimeoutSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-
                 Layout.alignment: Qt.AlignCenter
 
                 font.pointSize: JamiTheme.buttonFontSize
@@ -965,27 +797,22 @@ ColumnLayout {
             }
 
             // 2nd row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Newtwork interface")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("Newtwork interface")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             SpinBox {
                 id: networkInterfaceSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-
                 Layout.alignment: Qt.AlignCenter
 
                 font.pointSize: JamiTheme.buttonFontSize
@@ -1007,11 +834,11 @@ ColumnLayout {
             ToggleSwitch {
                 id: checkBoxUPnPSIP
 
+                Layout.columnSpan: 2
+
                 labelText: qsTr("Use UPnP")
                 fontPointSize: JamiTheme.settingsFontSize
 
-                Layout.columnSpan: 2
-
                 onSwitchToggled: {
                    SettingsAdapter.setUseUPnP(checked)
                 }
@@ -1021,11 +848,11 @@ ColumnLayout {
             ToggleSwitch {
                 id: checkBoxTurnEnableSIP
 
+                Layout.columnSpan: 2
+
                 labelText: qsTr("Use TURN")
                 fontPointSize: JamiTheme.settingsFontSize
 
-                Layout.columnSpan: 2
-
                 onSwitchToggled: {
                    SettingsAdapter.setUseTURN(checked)
                     lineEditTurnAddressSIP.enabled = checked
@@ -1036,15 +863,15 @@ ColumnLayout {
             }
 
             // 5th row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
                 text: qsTr("TURN Address")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -1052,7 +879,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -1068,15 +895,15 @@ ColumnLayout {
             }
 
             // 6th row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("TURN Username")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("TURN Username")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -1084,7 +911,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -1099,15 +926,15 @@ ColumnLayout {
                 }
             }
 
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("TURN Password")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("TURN Password")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -1115,7 +942,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -1133,15 +960,15 @@ ColumnLayout {
             }
 
             // 8th row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("TURN Realm")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("TURN Realm")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -1149,7 +976,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -1180,15 +1007,15 @@ ColumnLayout {
             }
 
             // 10th row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("STUN Address")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("STUN Address")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -1196,7 +1023,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -1213,30 +1040,23 @@ ColumnLayout {
         }
     }
 
-
     // public address section
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             text: qsTr("Public Address")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredSettingsWidth
+            maxWidth: width
         }
 
         GridLayout {
             Layout.fillWidth: true
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
-            rowSpacing: 8
-            columnSpacing: 8
-
             rows: 3
             columns: 2
 
@@ -1244,7 +1064,7 @@ ColumnLayout {
             ToggleSwitch {
                 id: checkBoxCustomAddressPort
 
-                labelText: checkBoxCustomAddressPortText.elidedText
+                labelText: qsTr("Use Custom Address/Port")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 Layout.columnSpan: 2
@@ -1256,25 +1076,15 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: checkBoxCustomAddressPortText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Use Custom Address/Port")
-            }
-
             //2nd row
             ElidedTextLabel {
                 Layout.leftMargin: JamiTheme.preferredMarginSize
-
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                 eText: qsTr("Address")
                 fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                maxWidth: width
             }
 
             MaterialLineEdit {
@@ -1282,7 +1092,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -1300,27 +1110,19 @@ ColumnLayout {
             //3rd row
             ElidedTextLabel {
                 Layout.leftMargin: JamiTheme.preferredMarginSize
-
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                 eText: qsTr("Port")
                 fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                maxWidth: width
             }
 
             SpinBox {
                 id: customPortSIPSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-
                 Layout.alignment: Qt.AlignCenter
 
                 font.pointSize: JamiTheme.settingsFontSize
@@ -1342,14 +1144,11 @@ ColumnLayout {
 
     // media section
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         Label {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             text: qsTr("Media")
 
@@ -1361,14 +1160,13 @@ ColumnLayout {
         }
 
         ColumnLayout {
-            spacing: 8
             Layout.fillWidth: true
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
             ToggleSwitch {
                 id: videoCheckBoxSIP
 
-                labelText: videoCheckBoxSIPText.elidedText
+                labelText: qsTr("Enable Video")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -1376,14 +1174,6 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: videoCheckBoxSIPText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Enable Video")
-            }
-
-
             RowLayout {
                 Layout.fillWidth: true
                 Layout.fillHeight: true
@@ -1399,59 +1189,37 @@ ColumnLayout {
 
                         ElidedTextLabel {
                             Layout.fillWidth: true
-
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                            maxWidth: preferredColumnWidth - 50
+                            maxWidth: width
                             eText:  qsTr("Video Codecs")
                             fontSize: JamiTheme.settingsFontSize
                         }
 
-
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: videoDownPushButtonSIP
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
-                            buttonImageHeight: height
-                            buttonImageWidth: height
                             radius: height / 2
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
 
                             onClicked: {
                                 decreaseVideoCodecPriority()
                             }
                         }
 
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: videoUpPushButtonSIP
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
-                            buttonImageHeight: height
-                            buttonImageWidth: height
                             radius: height / 2
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
 
                             onClicked: {
                                 increaseVideoCodecPriority()
@@ -1462,15 +1230,10 @@ ColumnLayout {
                     ListViewJami {
                         id: videoListWidgetSIP
 
-                        Layout.minimumWidth: preferredColumnWidth
-                        Layout.preferredWidth: preferredColumnWidth
-                        Layout.maximumWidth: preferredColumnWidth
-
-                        Layout.minimumHeight: 192
-                        Layout.preferredHeight: 192
-                        Layout.maximumHeight: 192
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: 190
 
-                        model: videoCodecListModelSIP
+                        model: VideoCodecListModel{}
 
                         delegate: VideoCodecDelegate {
                             id: videoCodecDelegate
@@ -1496,66 +1259,47 @@ ColumnLayout {
 
                 ColumnLayout {
                     Layout.fillWidth: true
+                    Layout.fillHeight: true
+                    Layout.leftMargin: JamiTheme.preferredMarginSize / 2
 
                     RowLayout {
                         Layout.fillWidth: true
+                        Layout.fillHeight: true
                         Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         ElidedTextLabel {
                             Layout.fillWidth: true
-
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                            maxWidth: preferredColumnWidth - 50
+                            maxWidth: width
                             eText:  qsTr("Audio Codecs")
                             fontSize: JamiTheme.settingsFontSize
                         }
 
-
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: audioDownPushButtonSIP
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
                             radius: height / 2
-                            buttonImageHeight: height
-                            buttonImageWidth: height
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
 
                             onClicked: {
                                 decreaseAudioCodecPriority()
                             }
                         }
 
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: audioUpPushButtonSIP
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
                             radius: height / 2
-                            buttonImageHeight: height
-                            buttonImageWidth: height
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
 
                             onClicked: {
                                 increaseAudioCodecPriority()
@@ -1566,15 +1310,10 @@ ColumnLayout {
                     ListViewJami {
                         id: audioListWidgetSIP
 
-                        Layout.minimumWidth: preferredColumnWidth
-                        Layout.preferredWidth: preferredColumnWidth
-                        Layout.maximumWidth: preferredColumnWidth
-
-                        Layout.minimumHeight: 192
-                        Layout.preferredHeight: 192
-                        Layout.maximumHeight: 192
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: 190
 
-                        model: audioCodecListModelSIP
+                        model: AudioCodecListModel{}
 
                         delegate: AudioCodecDelegate {
                             id: audioCodecDelegate
@@ -1607,62 +1346,50 @@ ColumnLayout {
 
     // SDP Session
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             eText: qsTr("SDP Session Negotiation (ICE Fallback)")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredSettingsWidth
+            maxWidth: width
         }
 
         ElidedTextLabel {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
             eText: qsTr("Only used during negotiation in case ICE is not supported")
             fontSize: JamiTheme.settingsFontSize
-            maxWidth: preferredSettingsWidth
+            maxWidth: width
         }
 
         GridLayout {
             Layout.fillWidth: true
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
-            rowSpacing: 8
-            columnSpacing: 8
-
             rows: 4
             columns: 2
 
             // 1st row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Audio RTP Min Port")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("Audio RTP Min Port")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             SpinBox {
                 id:audioRTPMinPortSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                 font.pointSize: JamiTheme.settingsFontSize
@@ -1681,25 +1408,21 @@ ColumnLayout {
             }
 
             // 2nd row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Audio RTP Max Port")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("Audio RTP Max Port")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             SpinBox {
                 id:audioRTPMaxPortSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                 font.pointSize: JamiTheme.settingsFontSize
@@ -1718,25 +1441,21 @@ ColumnLayout {
             }
 
             // 3rd row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Video RTP Min Port")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("Video RTP Min Port")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             SpinBox {
                 id:videoRTPMinPortSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                 font.pointSize: JamiTheme.settingsFontSize
@@ -1755,25 +1474,21 @@ ColumnLayout {
             }
 
             // 4th row
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Video RTP Max Port")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
+                text: qsTr("Video RTP Max Port")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             SpinBox {
                 id:videoRTPMaxPortSpinBox
 
-                Layout.maximumWidth: preferredColumnWidth
-                Layout.minimumWidth: preferredColumnWidth
-                Layout.preferredWidth: preferredColumnWidth
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.preferredWidth: itemWidth
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                 font.pointSize: JamiTheme.settingsFontSize
@@ -1793,5 +1508,3 @@ ColumnLayout {
         }
     }
 }
-
-
diff --git a/src/settingsview/components/AdvancedSettingsView.qml b/src/settingsview/components/AdvancedSettingsView.qml
index 2b28273cb..8c634ff1c 100644
--- a/src/settingsview/components/AdvancedSettingsView.qml
+++ b/src/settingsview/components/AdvancedSettingsView.qml
@@ -31,6 +31,10 @@ import net.jami.Adapters 1.0
 import "../../commoncomponents"
 
 ColumnLayout {
+    id: root
+
+    property int itemWidth
+
     function updateAccountInfoDisplayedAdvance() {
         //Call Settings
         checkAutoConnectOnLocalNetwork.checked = SettingsAdapter.getAccountConfig_PeerDiscovery()
@@ -72,22 +76,22 @@ ColumnLayout {
     }
 
     function updateAudioCodecs(){
-        audioCodecListModel.layoutAboutToBeChanged()
-        audioCodecListModel.dataChanged(audioCodecListModel.index(0, 0),
-                                     audioCodecListModel.index(audioCodecListModel.rowCount() - 1, 0))
-        audioCodecListModel.layoutChanged()
+        audioListWidget.model.layoutAboutToBeChanged()
+        audioListWidget.model.dataChanged(audioListWidget.model.index(0, 0),
+                                     audioListWidget.model.index(audioListWidget.model.rowCount() - 1, 0))
+        audioListWidget.model.layoutChanged()
     }
 
     function updateVideoCodecs(){
-        videoCodecListModel.layoutAboutToBeChanged()
-        videoCodecListModel.dataChanged(videoCodecListModel.index(0, 0),
-                                     videoCodecListModel.index(videoCodecListModel.rowCount() - 1, 0))
-        videoCodecListModel.layoutChanged()
+        videoListWidget.model.layoutAboutToBeChanged()
+        videoListWidget.model.dataChanged(videoListWidget.model.index(0, 0),
+                                     videoListWidget.model.index(videoListWidget.model.rowCount() - 1, 0))
+        videoListWidget.model.layoutChanged()
     }
 
     function decreaseAudioCodecPriority(){
         var index = audioListWidget.currentIndex
-        var codecId = audioCodecListModel.data(audioCodecListModel.index(index,0), AudioCodecListModel.AudioCodecID)
+        var codecId = audioListWidget.model.data(audioListWidget.model.index(index,0), AudioCodecListModel.AudioCodecID)
 
        SettingsAdapter.decreaseAudioCodecPriority(codecId)
         audioListWidget.currentIndex = index + 1
@@ -96,7 +100,7 @@ ColumnLayout {
 
     function increaseAudioCodecPriority(){
         var index = audioListWidget.currentIndex
-        var codecId = audioCodecListModel.data(audioCodecListModel.index(index,0), AudioCodecListModel.AudioCodecID)
+        var codecId = audioListWidget.model.data(audioListWidget.model.index(index,0), AudioCodecListModel.AudioCodecID)
 
        SettingsAdapter.increaseAudioCodecPriority(codecId)
         audioListWidget.currentIndex = index - 1
@@ -105,7 +109,7 @@ ColumnLayout {
 
     function decreaseVideoCodecPriority(){
         var index = videoListWidget.currentIndex
-        var codecId = videoCodecListModel.data(videoCodecListModel.index(index,0), VideoCodecListModel.VideoCodecID)
+        var codecId = videoListWidget.model.data(videoListWidget.model.index(index,0), VideoCodecListModel.VideoCodecID)
 
        SettingsAdapter.decreaseVideoCodecPriority(codecId)
         videoListWidget.currentIndex = index + 1
@@ -114,21 +118,13 @@ ColumnLayout {
 
     function increaseVideoCodecPriority(){
         var index = videoListWidget.currentIndex
-        var codecId = videoCodecListModel.data(videoCodecListModel.index(index,0), VideoCodecListModel.VideoCodecID)
+        var codecId = videoListWidget.model.data(videoListWidget.model.index(index,0), VideoCodecListModel.VideoCodecID)
 
        SettingsAdapter.increaseVideoCodecPriority(codecId)
         videoListWidget.currentIndex = index - 1
         updateVideoCodecs()
     }
 
-    VideoCodecListModel{
-        id: videoCodecListModel
-    }
-
-    AudioCodecListModel{
-        id: audioCodecListModel
-    }
-
     function changeRingtonePath(url){
         if(url.length !== 0) {
            SettingsAdapter.set_RingtonePath(url)
@@ -172,14 +168,6 @@ ColumnLayout {
         nameFilters: [qsTr("Audio Files") + " (*.wav *.ogg *.opus *.mp3 *.aiff *.wma)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeRingtonePath(url)
@@ -198,14 +186,6 @@ ColumnLayout {
         nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeFileCACert(url)
@@ -224,14 +204,6 @@ ColumnLayout {
         nameFilters: [qsTr("Certificate File") + " (*.crt)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeFileUserCert(url)
@@ -252,40 +224,22 @@ ColumnLayout {
         nameFilters: [qsTr("Key File") + " (*.key)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             changeFilePrivateKey(url)
         }
     }
 
-    id: advancedSettingsViewLayout
-    Layout.fillWidth: true
-
-    property int preferredColumnWidth : accountViewRect.width / 2 - 50
-
     ColumnLayout {
-
-        spacing: 8
         Layout.fillWidth: true
+        Layout.fillHeight: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
 
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
             eText: qsTr("Call Settings")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            maxWidth: width
         }
 
         ColumnLayout {
@@ -295,7 +249,7 @@ ColumnLayout {
             ToggleSwitch {
                 id: checkBoxUntrusted
 
-                labelText: allowIncomingCallsText.elidedText
+                labelText: qsTr("Allow incoming calls from unknown contacts")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -303,19 +257,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: allowIncomingCallsText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Allow incoming calls from unknown contacts")
-            }
-
             ToggleSwitch {
                 id: checkBoxAutoAnswer
 
-                Layout.fillWidth: true
-
-                labelText: autoAnswerCallsElidedText.elidedText
+                labelText: qsTr("Auto Answer Calls")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -323,17 +268,10 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: autoAnswerCallsElidedText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Auto Answer Calls")
-            }
-
             ToggleSwitch {
                 id: checkBoxCustomRingtone
 
-                labelText: enableCustomRingtoneElidedText.elidedText
+                labelText: qsTr("Enable Custom Ringtone")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -342,24 +280,15 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: enableCustomRingtoneElidedText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Enable Custom Ringtone")
-            }
-
             RowLayout {
                 Layout.fillWidth: true
 
                 ElidedTextLabel {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("Select Custom Ringtone")
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                     fontSize: JamiTheme.settingsFontSize
                 }
 
@@ -367,7 +296,7 @@ ColumnLayout {
                     id: btnRingtone
 
                     Layout.alignment: Qt.AlignCenter
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
@@ -385,7 +314,7 @@ ColumnLayout {
                 id: checkBoxRdv
 
                 labelText: qsTr("(Experimental) Rendez-vous: turn your account into a conference room")
-                fontPointSize: 10
+                fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
                    SettingsAdapter.setIsRendezVous(checked)
@@ -395,17 +324,14 @@ ColumnLayout {
     }
 
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             eText: qsTr("Name Server")
-            maxWidth: preferredColumnWidth
+            maxWidth: width
             fontSize: JamiTheme.headerFontSize
         }
 
@@ -414,20 +340,15 @@ ColumnLayout {
             Layout.maximumHeight: JamiTheme.preferredFieldHeight
             Layout.leftMargin: JamiTheme.preferredMarginSize
 
-            ElidedTextLabel {
+            Text {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                Layout.rightMargin: JamiTheme.preferredMarginSize
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                eText: qsTr("Address")
-                fontSize: JamiTheme.settingsFontSize
-                maxWidth: preferredColumnWidth
-            }
-
-            Item {
-                Layout.fillHeight: true
-                Layout.fillWidth: true
+                text: qsTr("Address")
+                elide: Text.ElideRight
+                font.pointSize: JamiTheme.settingsFontSize
+                font.kerning: true
+                verticalAlignment: Text.AlignVCenter
             }
 
             MaterialLineEdit {
@@ -435,7 +356,7 @@ ColumnLayout {
 
                 Layout.alignment: Qt.AlignCenter
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredWidth: preferredColumnWidth
+                Layout.preferredWidth: itemWidth
 
                 padding: 8
 
@@ -451,20 +372,18 @@ ColumnLayout {
         }
     }
 
-
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
-        ElidedTextLabel {
+        Text {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
+            Layout.rightMargin: JamiTheme.preferredMarginSize
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-            eText: qsTr("OpenDHT Configuration")
-            fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            text: qsTr("OpenDHT Configuration")
+            elide: Text.ElideRight
+            font.pointSize: JamiTheme.headerFontSize
+            font.kerning: true
+            verticalAlignment: Text.AlignVCenter
         }
 
         ColumnLayout {
@@ -488,13 +407,11 @@ ColumnLayout {
 
                 ElidedTextLabel {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     text: qsTr("Proxy Address")
                     font.pointSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialLineEdit {
@@ -502,7 +419,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -511,7 +428,7 @@ ColumnLayout {
 
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
-
+                    wrapMode: Text.NoWrap
                     onEditingFinished: {
                        SettingsAdapter.setProxyAddress(text)
                     }
@@ -523,18 +440,11 @@ ColumnLayout {
 
                 ElidedTextLabel {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     text: qsTr("Bootstrap")
                     font.pointSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
-                }
-
-                Item {
-                    Layout.fillHeight: true
-                    Layout.fillWidth: true
+                    maxWidth: width
                 }
 
                 MaterialLineEdit {
@@ -542,7 +452,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -551,7 +461,7 @@ ColumnLayout {
 
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
-
+                    wrapMode: Text.NoWrap
                     onEditingFinished: {
                        SettingsAdapter.setBootstrapAddress(text)
                     }
@@ -561,18 +471,17 @@ ColumnLayout {
     }
 
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
-        ElidedTextLabel {
+        Text {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
+            Layout.rightMargin: JamiTheme.preferredMarginSize
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-            eText: qsTr("Security")
-            fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            text: qsTr("Security")
+            elide: Text.ElideRight
+            font.pointSize: JamiTheme.headerFontSize
+            font.kerning: true
+            verticalAlignment: Text.AlignVCenter
         }
 
         ColumnLayout {
@@ -582,21 +491,17 @@ ColumnLayout {
             GridLayout {
                 rows: 4
                 columns: 2
-                rowSpacing: 8
-                columnSpacing: 8
 
                 Layout.fillWidth: true
 
                 // CA Certificate
                 ElidedTextLabel {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("CA Certificate")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialButton {
@@ -604,7 +509,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
                     color: JamiTheme.buttonTintedGrey
@@ -619,13 +524,11 @@ ColumnLayout {
                 // User Certificate
                 ElidedTextLabel {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("User Certificate")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialButton {
@@ -633,7 +536,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
                     color: JamiTheme.buttonTintedGrey
@@ -648,13 +551,11 @@ ColumnLayout {
                 // Private Key
                 ElidedTextLabel {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     eText: qsTr("Private Key")
                     fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    maxWidth: width
                 }
 
                 MaterialButton {
@@ -662,7 +563,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     source: "qrc:/images/icons/round-folder-24px.svg"
                     color: JamiTheme.buttonTintedGrey
@@ -675,24 +576,23 @@ ColumnLayout {
                 }
 
                 // Private key password
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("Private Key Password")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("Private Key Password")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
-
                 MaterialLineEdit {
                     id: lineEditCertPassword
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -702,26 +602,22 @@ ColumnLayout {
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
                     echoMode: TextInput.Password
+                    wrapMode: Text.NoWrap
                 }
             }
         }
     }
 
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         ElidedTextLabel {
             Layout.fillWidth: true
-            Layout.topMargin: JamiTheme.preferredMarginSize
-
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             eText: qsTr("Connectivity")
             fontSize: JamiTheme.headerFontSize
-            maxWidth: preferredColumnWidth
+            maxWidth: width
         }
 
         ColumnLayout {
@@ -733,7 +629,7 @@ ColumnLayout {
 
                 Layout.fillWidth: true
 
-                labelText: autoConnectOnLocalNetworkElidedText.elidedText
+                labelText: qsTr("Auto Connect On Local Network")
                 fontPointSize: JamiTheme.settingsFontSize
 
                 onSwitchToggled: {
@@ -741,13 +637,6 @@ ColumnLayout {
                 }
             }
 
-            TextMetrics {
-                id: autoConnectOnLocalNetworkElidedText
-                elide: Text.ElideRight
-                elideWidth: preferredColumnWidth
-                text: qsTr("Auto Connect On Local Network")
-            }
-
             ToggleSwitch {
                 id: checkBoxUPnP
 
@@ -778,15 +667,15 @@ ColumnLayout {
                 Layout.fillWidth: true
                 Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("TURN Address")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("TURN Address")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 MaterialLineEdit {
@@ -794,7 +683,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -803,7 +692,7 @@ ColumnLayout {
 
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
-
+                    wrapMode: Text.NoWrap
                     onEditingFinished: {
                        SettingsAdapter.setTURNAddress(text)
                     }
@@ -814,15 +703,15 @@ ColumnLayout {
                 Layout.fillWidth: true
                 Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("TURN Username")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("TURN Username")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 MaterialLineEdit {
@@ -830,7 +719,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -839,7 +728,7 @@ ColumnLayout {
 
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
-
+                    wrapMode: Text.NoWrap
                     onEditingFinished: {
                        SettingsAdapter.setTURNUsername(text)
                     }
@@ -850,14 +739,15 @@ ColumnLayout {
                 Layout.fillWidth: true
                 Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                ElidedTextLabel {
+                Text {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                    eText: qsTr("TURN Password")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("TURN Password")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 MaterialLineEdit {
@@ -865,7 +755,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
                     layer.mipmap: false
@@ -876,14 +766,11 @@ ColumnLayout {
                     horizontalAlignment: Text.AlignLeft
                     verticalAlignment: Text.AlignVCenter
                     echoMode: TextInput.Password
-
-                    onEditingFinished: {
-                       SettingsAdapter.setTURNPassword(text)
-                    }
+                    wrapMode: Text.NoWrap
+                    onEditingFinished: SettingsAdapter.setTURNPassword(text)
                 }
             }
 
-
             ToggleSwitch {
                 id: checkBoxSTUNEnable
 
@@ -902,17 +789,16 @@ ColumnLayout {
                 Layout.fillWidth: true
                 Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                ElidedTextLabel {
+                Text {
                     id: lblEditSTUNAddress
-
                     Layout.fillWidth: true
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                    eText: qsTr("STUN Address")
-                    fontSize: JamiTheme.settingsFontSize
-                    maxWidth: preferredColumnWidth
+                    text: qsTr("STUN Address")
+                    elide: Text.ElideRight
+                    font.pointSize: JamiTheme.settingsFontSize
+                    font.kerning: true
+                    verticalAlignment: Text.AlignVCenter
                 }
 
                 MaterialLineEdit {
@@ -920,7 +806,7 @@ ColumnLayout {
 
                     Layout.alignment: Qt.AlignCenter
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.preferredWidth: preferredColumnWidth
+                    Layout.preferredWidth: itemWidth
 
                     padding: 8
 
@@ -931,24 +817,19 @@ ColumnLayout {
 
                     horizontalAlignment: Text.AlignRight
                     verticalAlignment: Text.AlignVCenter
-
-                    onEditingFinished: {
-                       SettingsAdapter.setSTUNAddress(text)
-                    }
+                    wrapMode: Text.NoWrap
+                    onEditingFinished: SettingsAdapter.setSTUNAddress(text)
                 }
             }
         }
     }
 
     ColumnLayout {
-        spacing: 8
         Layout.fillWidth: true
 
         Label {
             Layout.fillWidth: true
-            Layout.minimumHeight: JamiTheme.preferredFieldHeight
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
             text: qsTr("Media")
             font.pointSize: JamiTheme.headerFontSize
@@ -968,9 +849,7 @@ ColumnLayout {
                 labelText: qsTr("Enable Video")
                 fontPointSize: JamiTheme.settingsFontSize
 
-                onSwitchToggled: {
-                   SettingsAdapter.setVideoState(checked)
-                }
+                onSwitchToggled: SettingsAdapter.setVideoState(checked)
             }
 
             RowLayout {
@@ -988,55 +867,37 @@ ColumnLayout {
 
                         ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                            maxWidth: preferredColumnWidth - 50
+                            maxWidth: width
                             eText:  qsTr("Video Codecs")
                             fontSize: JamiTheme.settingsFontSize
                         }
 
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: videoDownPushButton
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
-                            buttonImageHeight: height
-                            buttonImageWidth: height
                             radius: height / 2
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
 
                             onClicked: {
                                 decreaseVideoCodecPriority()
                             }
                         }
 
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: videoUpPushButton
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
-                            buttonImageHeight: height
-                            buttonImageWidth: height
                             radius: height / 2
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
 
                             onClicked: {
                                 increaseVideoCodecPriority()
@@ -1047,14 +908,10 @@ ColumnLayout {
                     ListViewJami {
                         id: videoListWidget
 
-                        Layout.minimumWidth: preferredColumnWidth
-                        Layout.preferredWidth: preferredColumnWidth
-                        Layout.maximumWidth: preferredColumnWidth
-                        Layout.minimumHeight: 192
-                        Layout.preferredHeight: 192
-                        Layout.maximumHeight: 192
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: 190
 
-                        model: videoCodecListModel
+                        model: VideoCodecListModel{}
 
                         delegate: VideoCodecDelegate {
                             id: videoCodecDelegate
@@ -1080,62 +937,47 @@ ColumnLayout {
 
                 ColumnLayout {
                     Layout.fillWidth: true
+                    Layout.fillHeight: true
+                    Layout.leftMargin: JamiTheme.preferredMarginSize / 2
 
                     RowLayout {
                         Layout.fillWidth: true
+                        Layout.fillHeight: true
                         Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
-                            maxWidth: preferredColumnWidth - 50
+                            maxWidth: width
                             eText:  qsTr("Audio Codecs")
                             fontSize: JamiTheme.settingsFontSize
                         }
 
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: audioDownPushButton
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
                             radius: height / 2
-                            buttonImageHeight: height
-                            buttonImageWidth: height
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_down-24px.svg"
 
                             onClicked: {
                                 decreaseAudioCodecPriority()
                             }
                         }
 
-                        HoverableRadiusButton {
+                        HoverableButtonTextItem {
                             id: audioUpPushButton
 
-                            Layout.minimumWidth: 24
                             Layout.preferredWidth: 24
-                            Layout.maximumWidth: 24
-                            Layout.minimumHeight: 24
                             Layout.preferredHeight: 24
-                            Layout.maximumHeight: 24
 
                             radius: height / 2
-                            buttonImageHeight: height
-                            buttonImageWidth: height
 
-                            icon.source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
-                            icon.width: 24
-                            icon.height: 24
+                            source: "qrc:/images/icons/round-arrow_drop_up-24px.svg"
 
                             onClicked: {
                                 increaseAudioCodecPriority()
@@ -1146,14 +988,10 @@ ColumnLayout {
                     ListViewJami {
                         id: audioListWidget
 
-                        Layout.minimumWidth: preferredColumnWidth
-                        Layout.preferredWidth: preferredColumnWidth
-                        Layout.maximumWidth: preferredColumnWidth
-                        Layout.minimumHeight: 192
-                        Layout.preferredHeight: 192
-                        Layout.maximumHeight: 192
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: 190
 
-                        model: audioCodecListModel
+                        model: AudioCodecListModel{}
 
                         delegate: AudioCodecDelegate {
                             id: audioCodecDelegate
diff --git a/src/settingsview/components/AudioCodecDelegate.qml b/src/settingsview/components/AudioCodecDelegate.qml
index 1d07bfce9..bc263159b 100644
--- a/src/settingsview/components/AudioCodecDelegate.qml
+++ b/src/settingsview/components/AudioCodecDelegate.qml
@@ -26,36 +26,28 @@ import QtQuick.Controls.Styles 1.4
 import net.jami.Models 1.0
 
 ItemDelegate {
-    id: videoCodecDelegate
+    id: root
 
     property string audioCodecName : ""
     property bool isEnabled : false
     property int audioCodecId
     property string samplerRate: ""
+    property int checkBoxWidth: 24
 
     signal audioCodecStateChange(string idToSet , bool isToBeEnabled)
 
-    property int checkBoxWidth: 24
-
     highlighted: ListView.isCurrentItem
 
-    RowLayout{
+    RowLayout {
         anchors.fill: parent
-        z: 1
 
-        spacing: 10
-
-        CheckBox{
+        CheckBox {
             id: checkBoxIsEnabled
 
             Layout.leftMargin: 20
-
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
             Layout.fillHeight: true
-
-            Layout.minimumWidth: checkBoxWidth
             Layout.preferredWidth: checkBoxWidth
-            Layout.maximumWidth: checkBoxWidth
 
             tristate: false
             checkState: isEnabled ? Qt.Checked : Qt.Unchecked
@@ -74,7 +66,7 @@ ItemDelegate {
                     var result
                     var result_bool
 
-                    if (checkState === Qt.Checked){
+                    if (checkState === Qt.Checked) {
                         result = Qt.Unchecked
                         result_bool = false
                     } else {
@@ -86,17 +78,18 @@ ItemDelegate {
                 }
         }
 
-        Label{
+        Label {
             id: formatNameLabel
 
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-            horizontalAlignment: Text.AlignLeft
-            verticalAlignment: Text.AlignVCenter
-
             Layout.fillWidth: true
             Layout.fillHeight: true
+            Layout.rightMargin: JamiTheme.preferredMarginSize / 2
 
             text: audioCodecName + " " + samplerRate + " Hz"
+            elide: Text.ElideRight
+            horizontalAlignment: Text.AlignLeft
+            verticalAlignment: Text.AlignVCenter
             font.pointSize: 8
             font.kerning: true
         }
diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml
index 89403b99b..2a46abf4f 100644
--- a/src/settingsview/components/AvSettingPage.qml
+++ b/src/settingsview/components/AvSettingPage.qml
@@ -29,41 +29,49 @@ import "../../commoncomponents"
 Rectangle {
     id: root
 
-    AudioInputDeviceModel{
-        id: audioInputDeviceModel
-    }
+    property int preferredColumnWidth: root.width / 2 - 50
+    property int preferredSettingsWidth: root.width - 100
+    property real aspectRatio: 0.75
+    property bool previewAvailable: false
 
-    AudioOutputDeviceModel{
-        id: audioOutputDeviceModel
-    }
+    signal backArrowClicked
 
-    AudioManagerListModel{
-        id: audioManagerListModel
-    }
+    Connections{
+        target: ClientWrapper.avmodel
+        enabled: root.visible
 
-    VideoInputDeviceModel{
-        id: videoInputDeviceModel
+        function onAudioMeter(id, level){
+            slotAudioMeter(id,level)
+        }
     }
 
-    VideoFormatResolutionModel{
-        id: videoFormatResolutionModel
+    Connections{
+        target: ClientWrapper.renderManager
+        enabled: root.visible
+
+        function onVideoDeviceListChanged(){
+            slotVideoDeviceListChanged()
+        }
     }
 
-    VideoFormatFpsModel{
-        id: videoFormatFpsModel
+    onVisibleChanged: {
+        if (!visible) {
+            stopPreviewing()
+            stopAudioMeter()
+        }
     }
 
     function populateAVSettings(){
-        audioInputDeviceModel.reset()
+        audioInputComboBox.model.reset()
         audioOutputDeviceModel.reset()
 
-        inputComboBox.currentIndex = audioInputDeviceModel.getCurrentSettingIndex()
+        audioInputComboBox.currentIndex = audioInputComboBox.model.getCurrentSettingIndex()
         outputComboBox.currentIndex = audioOutputDeviceModel.getCurrentSettingIndex()
         ringtoneDeviceComboBox.currentIndex = audioOutputDeviceModel.getCurrentRingtoneDeviceIndex()
 
-        audioManagerRowLayout.visible = (audioManagerListModel.rowCount() > 0)
-        if(audioManagerListModel.rowCount() > 0){
-        audioManagerComboBox.currentIndex = audioManagerListModel.getCurrentSettingIndex()
+        audioManagerRowLayout.visible = (audioManagerComboBox.model.rowCount() > 0)
+        if(audioManagerComboBox.model.rowCount() > 0){
+        audioManagerComboBox.currentIndex = audioManagerComboBox.model.getCurrentSettingIndex()
         }
 
         populateVideoSettings()
@@ -72,16 +80,16 @@ Rectangle {
     }
 
     function populateVideoSettings() {
-        videoInputDeviceModel.reset()
+        deviceBox.model.reset()
 
-        deviceBox.enabled = (videoInputDeviceModel.deviceCount() > 0)
-        resolutionBox.enabled = (videoInputDeviceModel.deviceCount() > 0)
-        fpsBox.enabled = (videoInputDeviceModel.deviceCount() > 0)
-        labelVideoDevice.enabled = (videoInputDeviceModel.deviceCount() > 0)
-        labelVideoResolution.enabled = (videoInputDeviceModel.deviceCount() > 0)
-        labelVideoFps.enabled = (videoInputDeviceModel.deviceCount() > 0)
+        deviceBox.enabled = (deviceBox.model.deviceCount() > 0)
+        resolutionBox.enabled = (deviceBox.model.deviceCount() > 0)
+        fpsBox.enabled = (deviceBox.model.deviceCount() > 0)
+        labelVideoDevice.enabled = (deviceBox.model.deviceCount() > 0)
+        labelVideoResolution.enabled = (deviceBox.model.deviceCount() > 0)
+        labelVideoFps.enabled = (deviceBox.model.deviceCount() > 0)
 
-        deviceBox.currentIndex = videoInputDeviceModel.getCurrentSettingIndex()
+        deviceBox.currentIndex = deviceBox.model.getCurrentSettingIndex()
         slotDeviceBoxCurrentIndexChanged(deviceBox.currentIndex)
 
         try{
@@ -97,8 +105,8 @@ Rectangle {
         }
 
         try{
-            videoFormatResolutionModel.reset()
-            resolutionBox.currentIndex = videoFormatResolutionModel.getCurrentSettingIndex()
+            resolutionBox.model.reset()
+            resolutionBox.currentIndex = resolutionBox.model.getCurrentSettingIndex()
             slotFormatCurrentIndexChanged(resolutionBox.currentIndex,true)
         } catch(err){console.warn("Exception: " + err.message)}
     }
@@ -136,7 +144,7 @@ Rectangle {
 
     function slotAudioManagerIndexChanged(index){
         stopAudioMeter(false)
-        var selectedAudioManager = audioManagerListModel.data(audioManagerListModel.index(
+        var selectedAudioManager = audioManagerComboBox.model.data(audioManagerComboBox.model.index(
                                                         index, 0), AudioManagerListModel.AudioManagerID)
         ClientWrapper.avmodel.setAudioManager(selectedAudioManager)
         startAudioMeter(false)
@@ -160,7 +168,7 @@ Rectangle {
 
     function slotAudioInputIndexChanged(index){
         stopAudioMeter(false)
-        var selectedInputDeviceName = audioInputDeviceModel.data(audioInputDeviceModel.index(
+        var selectedInputDeviceName = audioInputComboBox.model.data(audioInputComboBox.model.index(
                                                         index, 0), AudioInputDeviceModel.Device_ID)
 
         ClientWrapper.avmodel.setInputDevice(selectedInputDeviceName)
@@ -168,14 +176,14 @@ Rectangle {
     }
 
     function slotDeviceBoxCurrentIndexChanged(index){
-        if(videoInputDeviceModel.deviceCount() <= 0){
+        if(deviceBox.model.deviceCount() <= 0){
             return
         }
 
         try{
-            var deviceId = videoInputDeviceModel.data(videoInputDeviceModel.index(
+            var deviceId = deviceBox.model.data(deviceBox.model.index(
                                                           index, 0), VideoInputDeviceModel.DeviceId)
-            var deviceName = videoInputDeviceModel.data(videoInputDeviceModel.index(
+            var deviceName = deviceBox.model.data(deviceBox.model.index(
                                                             index, 0), VideoInputDeviceModel.DeviceName)
             if(deviceId.length === 0){
                 console.warn("Couldn't find device: " + deviceName)
@@ -193,17 +201,17 @@ Rectangle {
         var resolution
         var rate
         if(isResolutionIndex){
-            resolution = videoFormatResolutionModel.data(videoFormatResolutionModel.index(
+            resolution = resolutionBox.model.data(resolutionBox.model.index(
                                                                  index, 0), VideoFormatResolutionModel.Resolution)
-            videoFormatFpsModel.currentResolution = resolution
-            fpsBox.currentIndex = videoFormatFpsModel.getCurrentSettingIndex()
-            rate = videoFormatFpsModel.data(videoFormatFpsModel.index(
+            fpsBox.model.currentResolution = resolution
+            fpsBox.currentIndex = fpsBox.model.getCurrentSettingIndex()
+            rate = fpsBox.model.data(fpsBox.model.index(
                                                        fpsBox.currentIndex, 0), VideoFormatFpsModel.FPS)
         } else {
-            resolution = videoFormatResolutionModel.data(videoFormatResolutionModel.index(
+            resolution = resolutionBox.model.data(resolutionBox.model.index(
                                                                  resolutionBox.currentIndex, 0), VideoFormatResolutionModel.Resolution)
-            videoFormatFpsModel.currentResolution = resolution
-            rate = videoFormatFpsModel.data(videoFormatFpsModel.index(
+            fpsBox.model.currentResolution = resolution
+            rate = fpsBox.model.data(fpsBox.model.index(
                                                        index, 0), VideoFormatFpsModel.FPS)
         }
 
@@ -227,43 +235,10 @@ Rectangle {
         }
     }
 
-    property int preferredColumnWidth: avSettingsScrollView.width / 2 - 50
-    property int preferredSettingsWidth: avSettingsScrollView.width - 100
-
-    property real aspectRatio: 0.75
-
-    property bool previewAvailable: false
-    signal backArrowClicked
-
-    Connections{
-        target: ClientWrapper.avmodel
-        enabled: root.visible
-
-        function onAudioMeter(id, level){
-            slotAudioMeter(id,level)
-        }
-    }
-
-    Connections{
-        target: ClientWrapper.renderManager
-        enabled: root.visible
-
-        function onVideoDeviceListChanged(){
-            slotVideoDeviceListChanged()
-        }
-    }
-
-    onVisibleChanged: {
-        if (!visible) {
-            stopPreviewing()
-            stopAudioMeter()
-        }
+    AudioOutputDeviceModel{
+        id: audioOutputDeviceModel
     }
 
-    Layout.fillHeight: true
-    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
-    anchors.centerIn: parent
-
     ColumnLayout {
         anchors.fill: root
 
@@ -272,19 +247,15 @@ Rectangle {
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
             Layout.leftMargin: JamiTheme.preferredMarginSize
             Layout.fillWidth: true
-            Layout.maximumHeight: 64
-            Layout.minimumHeight: 64
             Layout.preferredHeight: 64
 
             HoverableButton {
                 id: backToSettingsMenuButton
 
-                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
                 Layout.preferredWidth: JamiTheme.preferredFieldHeight
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                radius: 30
+                radius: JamiTheme.preferredFieldHeight
                 source: "qrc:/images/icons/ic_arrow_back_24px.svg"
                 backgroundColor: "white"
                 onExitColor: "white"
@@ -300,9 +271,6 @@ Rectangle {
 
             Label {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                 text: qsTr("Audio / Video")
                 font.pointSize: JamiTheme.titleFontSize
@@ -317,362 +285,296 @@ Rectangle {
 
         ScrollView {
             id: avSettingsScrollView
+
             property ScrollBar vScrollBar: ScrollBar.vertical
+            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+            ScrollBar.vertical.policy: ScrollBar.AsNeeded
 
             Layout.fillHeight: true
             Layout.fillWidth: true
 
-            Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-            width: root.width
-            height: root.height - avSettingsTitle.height
-
-            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-            ScrollBar.vertical.policy: ScrollBar.AsNeeded
-
+            focus: true
             clip: true
 
             ColumnLayout {
-                Layout.fillHeight: true
-                Layout.fillWidth: true
-                Layout.alignment: Qt.AlignHCenter
-
-                spacing: 24
+                width: root.width
 
                 // Audio
                 ColumnLayout {
-                    spacing: 8
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     ElidedTextLabel {
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Audio")
                         fontSize: JamiTheme.headerFontSize
-                        maxWidth: preferredColumnWidth
+                        maxWidth: width
                     }
 
-                    ColumnLayout {
+                    RowLayout {
                         Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        RowLayout {
+                        ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                            ElidedTextLabel {
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.fillHeight: true
 
-                                eText: qsTr("Microphone")
-                                fontSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            eText: qsTr("Microphone")
+                            fontSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
 
-                            SettingParaCombobox {
-                                id: inputComboBox
+                        SettingParaCombobox {
+                            id: audioInputComboBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.buttonFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.buttonFontSize
+                            font.kerning: true
 
-                                model: audioInputDeviceModel
-                                textRole: "ID_UTF8"
-                                tooltipText: qsTr("Audio input device selector")
-                                onActivated: {
-                                    slotAudioInputIndexChanged(index)
-                                }
+                            model: AudioInputDeviceModel {}
+                            textRole: "ID_UTF8"
+                            tooltipText: qsTr("Audio input device selector")
+                            onActivated: {
+                                slotAudioInputIndexChanged(index)
                             }
                         }
+                    }
 
-                        // the audio level meter
-                        LevelMeter {
-                            id: audioInputMeter
+                    // the audio level meter
+                    LevelMeter {
+                        id: audioInputMeter
 
-                            Layout.minimumWidth: preferredSettingsWidth
-                            Layout.preferredWidth: preferredSettingsWidth
-                            Layout.maximumWidth: preferredSettingsWidth
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.alignment: Qt.AlignHCenter
+                        Layout.preferredWidth: preferredSettingsWidth
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                            indeterminate: false
-                            from: 0
-                            to: 100
-                        }
+                        indeterminate: false
+                        from: 0
+                        to: 100
+                    }
 
-                        RowLayout {
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                            ElidedTextLabel {
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        ElidedTextLabel {
+                            Layout.fillWidth: true
 
-                                eText: qsTr("Output Device")
-                                fontSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            eText: qsTr("Output Device")
+                            fontSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
 
-                            SettingParaCombobox {
-                                id: outputComboBox
+                        SettingParaCombobox {
+                            id: outputComboBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.settingsFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.settingsFontSize
+                            font.kerning: true
 
-                                model: audioOutputDeviceModel
-                                textRole: "ID_UTF8"
-                                tooltipText: qsTr("Choose the audio output device")
-                                onActivated: {
-                                    slotAudioOutputIndexChanged(index)
-                                }
+                            model: audioOutputDeviceModel
+                            textRole: "ID_UTF8"
+                            tooltipText: qsTr("Choose the audio output device")
+                            onActivated: {
+                                slotAudioOutputIndexChanged(index)
                             }
                         }
+                    }
 
-                        RowLayout {
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                            ElidedTextLabel {
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        ElidedTextLabel {
+                            Layout.fillWidth: true
 
-                                eText: qsTr("Ringtone Device")
-                                font.pointSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            eText: qsTr("Ringtone Device")
+                            font.pointSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
 
-                            SettingParaCombobox {
-                                id: ringtoneDeviceComboBox
+                        SettingParaCombobox {
+                            id: ringtoneDeviceComboBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.buttonFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.settingsFontSize
+                            font.kerning: true
 
-                                model: audioOutputDeviceModel
+                            model: audioOutputDeviceModel
 
-                                textRole: "ID_UTF8"
-                                tooltipText: qsTr("Choose the ringtone output device")
-                                onActivated: {
-                                    slotRingtoneDeviceIndexChanged(index)
-                                }
+                            textRole: "ID_UTF8"
+                            tooltipText: qsTr("Choose the ringtone output device")
+                            onActivated: {
+                                slotRingtoneDeviceIndexChanged(index)
                             }
                         }
+                    }
 
-                        RowLayout {
-                            id: audioManagerRowLayout
+                    RowLayout {
+                        id: audioManagerRowLayout
 
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                            ElidedTextLabel {
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        ElidedTextLabel {
+                            Layout.fillWidth: true
 
-                                text: qsTr("Audio Manager")
-                                fontSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            text: qsTr("Audio Manager")
+                            fontSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
-                            SettingParaCombobox {
-                                id: audioManagerComboBox
+                        SettingParaCombobox {
+                            id: audioManagerComboBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.buttonFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.buttonFontSize
+                            font.kerning: true
 
-                                model: audioManagerListModel
+                            model: AudioManagerListModel {}
 
-                                textRole: "ID_UTF8"
+                            textRole: "ID_UTF8"
 
-                                onActivated: {
-                                    slotAudioManagerIndexChanged(index)
-                                }
+                            onActivated: {
+                                slotAudioManagerIndexChanged(index)
                             }
                         }
                     }
                 }
 
                 ColumnLayout {
-                    spacing: 8
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     ElidedTextLabel {
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Video")
                         fontSize: JamiTheme.headerFontSize
                         maxWidth: preferredSettingsWidth
                     }
 
-                    ColumnLayout {
-                        Layout.leftMargin: 16
-
-                        RowLayout {
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                            ElidedTextLabel {
-                                id: labelVideoDevice
+                        ElidedTextLabel {
+                            id: labelVideoDevice
 
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.fillWidth: true
 
-                                eText: qsTr("Device")
-                                fontSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            eText: qsTr("Device")
+                            fontSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
 
-                            SettingParaCombobox {
-                                id: deviceBox
+                        SettingParaCombobox {
+                            id: deviceBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.buttonFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.buttonFontSize
+                            font.kerning: true
 
-                                model: videoInputDeviceModel
+                            model: VideoInputDeviceModel {}
 
-                                textRole: "DeviceName_UTF8"
-                                tooltipText: qsTr("Video device selector")
-                                onActivated: {
-                                    slotDeviceBoxCurrentIndexChanged(index)
-                                }
+                            textRole: "DeviceName_UTF8"
+                            tooltipText: qsTr("Video device selector")
+                            onActivated: {
+                                slotDeviceBoxCurrentIndexChanged(index)
                             }
                         }
+                    }
 
-                        RowLayout {
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                            ElidedTextLabel {
-                                id: labelVideoResolution
+                        ElidedTextLabel {
+                            id: labelVideoResolution
 
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.fillWidth: true
 
-                                eText: qsTr("Resolution")
-                                fontSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            eText: qsTr("Resolution")
+                            fontSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
-                            SettingParaCombobox {
-                                id: resolutionBox
+                        SettingParaCombobox {
+                            id: resolutionBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.buttonFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.buttonFontSize
+                            font.kerning: true
 
-                                model: videoFormatResolutionModel
-                                textRole: "Resolution_UTF8"
+                            model: VideoFormatResolutionModel {}
+                            textRole: "Resolution_UTF8"
 
-                                tooltipText: qsTr("Video device resolution selector")
+                            tooltipText: qsTr("Video device resolution selector")
 
-                                onActivated: {
-                                    slotFormatCurrentIndexChanged(index,true)
-                                }
+                            onActivated: {
+                                slotFormatCurrentIndexChanged(index,true)
                             }
                         }
+                    }
 
-                        RowLayout {
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                            ElidedTextLabel {
-                                id: labelVideoFps
+                        ElidedTextLabel {
+                            id: labelVideoFps
 
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.fillWidth: true
 
-                                eText: qsTr("Fps")
-                                fontSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            eText: qsTr("Fps")
+                            fontSize: JamiTheme.settingsFontSize
+                            maxWidth: width
+                        }
 
-                            SettingParaCombobox {
-                                id: fpsBox
+                        SettingParaCombobox {
+                            id: fpsBox
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                                font.pointSize: JamiTheme.buttonFontSize
-                                font.kerning: true
+                            font.pointSize: JamiTheme.buttonFontSize
+                            font.kerning: true
 
-                                model: videoFormatFpsModel
-                                textRole: "FPS_ToDisplay_UTF8"
+                            model: VideoFormatFpsModel {}
+                            textRole: "FPS_ToDisplay_UTF8"
 
-                                tooltipText: qsTr("Video device fps selector")
+                            tooltipText: qsTr("Video device fps selector")
 
-                                onActivated: {
-                                    slotFormatCurrentIndexChanged(index,false)
-                                }
+                            onActivated: {
+                                slotFormatCurrentIndexChanged(index,false)
                             }
                         }
                     }
@@ -703,15 +605,12 @@ Rectangle {
                     }
                 }
 
-
                 Label {
                     visible: !previewAvailable
 
                     Layout.fillWidth: true
 
-                    Layout.minimumHeight: JamiTheme.preferredFieldHeight
                     Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                    Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                     text: qsTr("Preview unavailable")
                     font.pointSize: JamiTheme.settingsFontSize
@@ -727,28 +626,16 @@ Rectangle {
 
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: JamiTheme.preferredMarginSize
 
-                    labelText: hwAccelText.elidedText
+                    labelText: qsTr("Enable hardware acceleration")
                     fontPointSize: JamiTheme.settingsFontSize
 
                     onSwitchToggled: {
                         slotSetHardwareAccel(checked)
                     }
                 }
-
-                TextMetrics {
-                    id: hwAccelText
-                    elide: Text.ElideRight
-                    elideWidth: preferredSettingsWidth - 50
-                    text: qsTr("Enable hardware acceleration")
-                }
-
-                Item {
-                    Layout.preferredWidth: root.width - 32
-                    Layout.minimumWidth: root.width - 32
-                    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView - 32
-                    Layout.fillHeight: true
-                }
             }
         }
     }
diff --git a/src/settingsview/components/BannedItemDelegate.qml b/src/settingsview/components/BannedItemDelegate.qml
index fa60c3e6f..cc5d86995 100644
--- a/src/settingsview/components/BannedItemDelegate.qml
+++ b/src/settingsview/components/BannedItemDelegate.qml
@@ -28,7 +28,7 @@ import net.jami.Models 1.0
 import "../../commoncomponents"
 
 ItemDelegate {
-    id: deviceItemDelegate
+    id: root
 
     property string contactName : ""
     property string contactID: ""
@@ -54,39 +54,30 @@ ItemDelegate {
 
     highlighted: ListView.isCurrentItem
 
-    RowLayout{
+    RowLayout {
         anchors.fill: parent
 
-        spacing: 8
-
-        Label{
+        Label {
             id: labelContactAvatar
 
             Layout.alignment: Qt.AlignVCenter
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.rightMargin: JamiTheme.preferredMarginSize
+            Layout.preferredWidth: JamiTheme.preferredFieldHeight
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-            Layout.leftMargin: 16
-            Layout.rightMargin: 16
-
-            Layout.minimumWidth: 32
-            Layout.preferredWidth: 32
-            Layout.maximumWidth: 32
-
-            Layout.minimumHeight: 32
-            Layout.preferredHeight: 32
-            Layout.maximumHeight: 32
-
-            background: Rectangle{
+            background: Rectangle {
                 anchors.fill: parent
                 color: "transparent"
                 Image {
                     id: avatarImg
 
                     anchors.fill: parent
-                    source: "data:image/png;base64," + contactPicture_base64
+                    source: contactPicture_base64 === "" ? "" : "data:image/png;base64," + contactPicture_base64
                     fillMode: Image.PreserveAspectCrop
                     layer.enabled: true
                     layer.effect: OpacityMask {
-                        maskSource: Rectangle{
+                        maskSource: Rectangle {
                             width: avatarImg.width
                             height: avatarImg.height
                             radius: {
@@ -102,7 +93,6 @@ ItemDelegate {
         ColumnLayout{
             Layout.fillWidth: true
             Layout.fillHeight: true
-
             Layout.alignment: Qt.AlignVCenter
 
             Label{
@@ -110,23 +100,14 @@ ItemDelegate {
 
                 Layout.fillWidth: true
 
-                Layout.minimumHeight: 24
                 Layout.preferredHeight: 24
-                Layout.maximumHeight: 24
 
                 font.pointSize: JamiTheme.textFontSize
                 font.kerning: true
 
                 horizontalAlignment: Text.AlignLeft
                 verticalAlignment: Text.AlignVCenter
-
-                text: labelContactNameElidedText.elidedText
-            }
-
-            TextMetrics {
-                id: labelContactNameElidedText
                 elide: Text.ElideRight
-                elideWidth: deviceItemDelegate.width - 80
                 text: contactName === "" ? qsTr("name") : contactName
             }
 
@@ -144,14 +125,7 @@ ItemDelegate {
 
                 horizontalAlignment: Qt.AlignLeft
                 verticalAlignment: Qt.AlignVCenter
-
-                text: labelContactIdElidedText.elidedText
-            }
-
-            TextMetrics {
-                id: labelContactIdElidedText
                 elide: Text.ElideRight
-                elideWidth: deviceItemDelegate.width - 80
                 text: contactID === "" ? qsTr("id") : contactID
             }
         }
@@ -162,13 +136,8 @@ ItemDelegate {
             Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
             Layout.rightMargin: 8
 
-            Layout.minimumWidth: 32
-            Layout.preferredWidth: 32
-            Layout.maximumWidth: 32
-
-            Layout.minimumHeight: 32
-            Layout.preferredHeight: 32
-            Layout.maximumHeight: 32
+            Layout.preferredWidth: JamiTheme.preferredFieldHeight
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
             buttonImageHeight: height - 8
             buttonImageWidth: width - 8
diff --git a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
index a94dac9ba..ef38c8e61 100644
--- a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
+++ b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
@@ -31,7 +31,7 @@ import net.jami.Adapters 1.0
 import "../../commoncomponents"
 
 Rectangle {
-    id: accountViewRect
+    id: root
 
     enum RegName {
         BLANK,
@@ -46,7 +46,7 @@ Rectangle {
     property bool registeredIdNeedsSet: false
 
     property int refreshVariable : 0
-    property int preferredColumnWidth : accountViewRect.width / 2 - 50
+    property int preferredColumnWidth : root.width / 2 - 50
 
     signal navigateToMainView
     signal navigateToNewWizardView
@@ -81,7 +81,7 @@ Rectangle {
         // update device list view
         updateAndShowDevicesSlot()
 
-        bannedContactsLayoutWidget.visible = (bannedListModel.rowCount() > 0)
+        bannedContactsLayoutWidget.visible = (bannedListWidget.model.rowCount() > 0)
 
         if (advanceSettingsView.visible) {
             advanceSettingsView.updateAccountInfoDisplayedAdvance()
@@ -128,7 +128,7 @@ Rectangle {
     Connections {
         id: accountConnections_ContactModel
         target: ClientWrapper.contactModel
-        enabled: accountViewRect.visible
+        enabled: root.visible
 
         function onModelUpdated(uri, needsSorted) {
             updateAndShowBannedContactsSlot()
@@ -146,7 +146,7 @@ Rectangle {
     Connections {
         id: accountConnections_DeviceModel
         target: ClientWrapper.deviceModel
-        enabled: accountViewRect.visible
+        enabled: root.visible
 
         function onDeviceAdded(id) {
             updateAndShowDevicesSlot()
@@ -222,9 +222,7 @@ Rectangle {
         ClientWrapper.accountModel.setAccountEnabled(ClientWrapper.utilsAdaptor.getCurrAccId(), state)
     }
 
-    /*
-     * JamiFileDialog for exporting account
-     */
+    // JamiFileDialog for exporting account
     JamiFileDialog {
         id: exportBtn_Dialog
 
@@ -248,18 +246,10 @@ Rectangle {
                     var title = isSuccessful ? qsTr("Success") : qsTr("Error")
                     var iconMode = isSuccessful ? StandardIcon.Information : StandardIcon.Critical
                     var info = isSuccessful ? qsTr("Export Successful") : qsTr("Export Failed")
-                    msgDialog.openWithParameters(title,info, iconMode, StandardButton.Ok)
+                    MessageBox.openWithParameters(title,info, iconMode, StandardButton.Ok)
                 }
             }
         }
-
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
     }
 
     function exportAccountSlot() {
@@ -269,6 +259,8 @@ Rectangle {
     PasswordDialog {
         id: passwordDialog
 
+        anchors.centerIn: parent.Center
+
         onDoneSignal: {
             var success = (code === successCode)
             var title = success ? qsTr("Success") : qsTr("Error")
@@ -288,14 +280,10 @@ Rectangle {
                 break
             }
 
-            msgDialog.openWithParameters(title,info, iconMode, StandardButton.Ok)
+            MessageBox.openWithParameters(title,info, iconMode, StandardButton.Ok)
         }
     }
 
-    MessageBox {
-        id: msgDialog
-    }
-
     function passwordClicked() {
         if (ClientWrapper.accountAdaptor.hasPassword()){
             passwordDialog.openDialog(PasswordDialog.ChangePassword)
@@ -308,12 +296,10 @@ Rectangle {
         deleteAccountDialog.open()
     }
 
-    DeleteAccountDialog{
+    DeleteAccountDialog {
         id: deleteAccountDialog
 
         anchors.centerIn: parent.Center
-        x: (parent.width - width) / 2
-        y: (parent.height - height) / 2
 
         onAccepted: {
             ClientWrapper.accountAdaptor.setSelectedConvId()
@@ -342,6 +328,8 @@ Rectangle {
     LinkDeviceDialog{
         id: linkDeviceDialog
 
+        anchors.centerIn: parent.Center
+
         onAccepted: {
             updateAndShowDevicesSlot()
         }
@@ -354,6 +342,8 @@ Rectangle {
     RevokeDevicePasswordDialog{
         id: revokeDevicePasswordDialog
 
+        anchors.centerIn: parent.Center
+
         onRevokeDeviceWithPassword:{
             revokeDeviceWithIDAndPassword(idOfDevice, password)
         }
@@ -369,27 +359,13 @@ Rectangle {
         icon :StandardIcon.Information
         standardButtons: StandardButton.Ok | StandardButton.Cancel
 
-        onYes: {
-            accepted()
-        }
-
-        onNo:{
-            rejected()
-        }
-
-        onDiscard: {
-            rejected()
-        }
-
         onAccepted: {
             revokeDeviceWithIDAndPassword(idOfDev,"")
         }
-
-        onRejected: {}
     }
 
     function removeDeviceSlot(index){
-        var idOfDevice = deviceItemListModel.data(deviceItemListModel.index(index,0), DeviceItemListModel.DeviceID)
+        var idOfDevice = settingsListView.model.data(settingsListView.model.index(index,0), DeviceItemListModel.DeviceID)
         if(ClientWrapper.accountAdaptor.hasPassword()){
             revokeDevicePasswordDialog.openRevokeDeviceDialog(idOfDevice)
         } else {
@@ -404,12 +380,12 @@ Rectangle {
     }
 
     function updateAndShowBannedContactsSlot() {
-        if(bannedListModel.rowCount() <= 0){
+        if(bannedListWidget.model.rowCount() <= 0){
             bannedContactsLayoutWidget.visible = false
             return
         }
 
-        bannedListModel.reset()
+        bannedListWidget.model.reset()
     }
 
     function updateAndShowDevicesSlot() {
@@ -417,48 +393,31 @@ Rectangle {
             linkDevPushButton.visible = true
         }
 
-        deviceItemListModel.reset()
-    }
-
-    DeviceItemListModel {
-        id: deviceItemListModel
+        settingsListView.model.reset()
     }
 
-    BannedListModel{
-        id: bannedListModel
-    }
-
-    Layout.fillHeight: true
-    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
-    anchors.centerIn: parent
-
     ColumnLayout {
-        anchors.fill: accountViewRect
+        anchors.fill: root
 
         RowLayout {
             id: accountPageTitle
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
             Layout.leftMargin: JamiTheme.preferredMarginSize
             Layout.fillWidth: true
-            Layout.maximumHeight: 64
-            Layout.minimumHeight: 64
             Layout.preferredHeight: 64
 
             HoverableButton {
                 id: backToSettingsMenuButton
 
-                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
                 Layout.preferredWidth: JamiTheme.preferredFieldHeight
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                radius: 32
+                radius: JamiTheme.preferredFieldHeight
                 source: "qrc:/images/icons/ic_arrow_back_24px.svg"
                 backgroundColor: "white"
                 onExitColor: "white"
                 toolTipText: qsTr("Toggle to display side panel")
                 hoverEnabled: true
-
                 visible: mainViewWindow.sidePanelHidden
 
                 onClicked: {
@@ -466,17 +425,16 @@ Rectangle {
                 }
             }
 
-            ElidedTextLabel {
+            Label {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
-                eText: qsTr("Account Settings")
-                fontSize: JamiTheme.titleFontSize
-                maxWidth: !backToSettingsMenuButton.visible ? accountViewRect.width - 100 :
-                                                              accountViewRect.width - backToSettingsMenuButton.width - 100
+                text: qsTr("Account Settings")
+
+                font.pointSize: JamiTheme.titleFontSize
+                font.kerning: true
 
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
             }
         }
 
@@ -484,30 +442,20 @@ Rectangle {
             id: accountScrollView
 
             property ScrollBar vScrollBar: ScrollBar.vertical
+            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
+            ScrollBar.vertical.policy: ScrollBar.AsNeeded
 
             Layout.fillHeight: true
             Layout.fillWidth: true
-            Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-            width: accountViewRect.width
-            height: accountViewRect.height - accountPageTitle.height
-
-            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-            ScrollBar.vertical.policy: ScrollBar.AsNeeded
 
+            focus: true
             clip: true
 
-            /*
-             * ScrollView Layout
-             */
+            // ScrollView Layout
             ColumnLayout {
                 id: accountViewLayout
 
-                Layout.fillHeight: true
-                Layout.preferredWidth: accountViewRect.width
-                Layout.alignment: Qt.AlignHCenter
-
-                spacing: 24
+                width: root.width
 
                 ToggleSwitch {
                     id: accountEnableCheckBox
@@ -515,6 +463,7 @@ Rectangle {
                     Layout.fillWidth: true
                     Layout.topMargin: JamiTheme.preferredMarginSize
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     labelText: qsTr("Enable")
                     fontPointSize: JamiTheme.headerFontSize
@@ -524,21 +473,16 @@ Rectangle {
                     }
                 }
 
-                /*
-                 * Profile
-                 */
+                // Profile
                 ColumnLayout {
                     Layout.fillWidth: true
-                    Layout.fillHeight: true
-                    spacing: 8
+                    Layout.topMargin: JamiTheme.preferredMarginSize
+                    Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     Label {
                         Layout.fillWidth: true
-
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
                         text: qsTr("Profile")
                         font.pointSize: JamiTheme.headerFontSize
@@ -551,16 +495,11 @@ Rectangle {
                     PhotoboothView {
                         id: currentAccountAvatar
 
-                        Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+                        Layout.alignment: Qt.AlignCenter
 
-                        boothWidth: Math.min(224, accountViewRect.width - 100)
+                        boothWidth: Math.min(224, root.width - 100) + 50
 
-                        Layout.maximumWidth: boothWidth+50
-                        Layout.preferredWidth: boothWidth+50
-                        Layout.minimumWidth: boothWidth+50
-                        Layout.maximumHeight: boothWidth+50
-                        Layout.preferredHeight: boothWidth+50
-                        Layout.minimumHeight: boothWidth+50
+                        Layout.preferredWidth: boothWidth
 
                         onImageAcquired: {
                            SettingsAdapter.setCurrAccAvatar(imgBase64)
@@ -593,41 +532,31 @@ Rectangle {
                     }
                 }
 
-                /*
-                 * Identity
-                 */
+                // Identity
                 ColumnLayout {
                     Layout.fillWidth: true
                     Layout.alignment: Qt.AlignHCenter
                     Layout.leftMargin: JamiTheme.preferredMarginSize
-                    spacing: 8
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     ElidedTextLabel {
                         Layout.fillWidth: true
-
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Identity")
-                        maxWidth: accountViewRect.width - 72
+                        maxWidth: root.width - 72
                         fontSize: JamiTheme.headerFontSize
                     }
 
                     RowLayout {
-                        spacing: 8
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.leftMargin: JamiTheme.preferredMarginSize
 
                         Label {
                             id: idLabel
                             Layout.fillWidth: true
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.fillHeight: true
 
                             text: qsTr("Id")
                             font.pointSize: JamiTheme.settingsFontSize
@@ -670,7 +599,7 @@ Rectangle {
                                 id: currentRingIDText
 
                                 elide: Text.ElideRight
-                                elideWidth: accountViewRect.width - idLabel.width -JamiTheme.preferredMarginSize*4
+                                elideWidth: root.width - idLabel.width -JamiTheme.preferredMarginSize*4
 
                                 text: { refreshVariable
                                     return ClientWrapper.SettingsAdapter.getCurrentAccount_Profile_Info_Uri()
@@ -680,34 +609,29 @@ Rectangle {
                     }
 
                     RowLayout {
-                        spacing: 8
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.leftMargin: JamiTheme.preferredMarginSize
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
                         ElidedTextLabel {
                             id: lblRegisteredName
                             Layout.fillWidth: true
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.preferredWidth: preferredColumnWidth
 
                             eText: qsTr("Registered name")
                             fontSize: JamiTheme.settingsFontSize
-                            maxWidth: preferredColumnWidth
+                            maxWidth: width
                         }
 
                         MaterialLineEdit {
                             id: currentRegisteredID
 
-                            Layout.alignment: Qt.AlignCenter
+                            Layout.alignment: Qt.AlignRight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.fillWidth: true
 
                             placeholderText: { refreshVariable
-                                               var result = registeredIdNeedsSet ?
+                                               var result = true ?
                                                    qsTr("Type here to register a username") : ""
                                                return result}
 
@@ -763,13 +687,12 @@ Rectangle {
                     }
                 }
 
-                /*
-                 * Buttons Pwd, Export, Delete
-                 */
+                // Buttons Pwd, Export, Delete
                 ColumnLayout {
                     Layout.fillWidth: true
                     Layout.alignment: Qt.AlignHCenter
-                    spacing: 8
+                    Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     MaterialButton {
                         id: passwdPushButton
@@ -844,17 +767,14 @@ Rectangle {
                     }
                 }
 
-                /*
-                 Linked devices
-                 */
+                // Linked devices
                 ColumnLayout {
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     Label {
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         text: qsTr("Linked Devices")
 
@@ -870,20 +790,18 @@ Rectangle {
                             id: settingsListView
 
                             Layout.fillWidth: true
-
-                            Layout.minimumHeight: 160
                             Layout.preferredHeight: 160
-                            Layout.maximumHeight: 160
 
-                            model: deviceItemListModel
+                            model: DeviceItemListModel{}
 
-                            delegate: DeviceItemDelegate{
+                            delegate: DeviceItemDelegate {
                                 id: settingsListDelegate
 
+                                implicitWidth: settingsListView.width
                                 width: settingsListView.width
-                                height: 72
+                                height: 70
 
-                                deviceName : DeviceName
+                                deviceName: DeviceName
                                 deviceId: DeviceID
                                 isCurrent: IsCurrent
 
@@ -916,8 +834,6 @@ Rectangle {
                             source: "qrc:/images/icons/round-add-24px.svg"
 
                             text: qsTr("Link Another Device")
-                            font.pointSize: JamiTheme.textFontSize
-                            font.kerning: true
 
                             onClicked: {
                                 showLinkDevSlot()
@@ -926,18 +842,15 @@ Rectangle {
                     }
                 }
 
-                /*
-                 * Banned contacts
-                 */
+                // Banned contacts
                 ColumnLayout {
                     id: bannedContactsLayoutWidget
 
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.alignment: Qt.AlignHCenter
 
-                    spacing: 8
-
                     RowLayout {
                         Layout.fillWidth: true
 
@@ -946,14 +859,11 @@ Rectangle {
                             id: lblBannedContacts
 
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                             eText: qsTr("Banned Contacts")
                             fontSize: JamiTheme.headerFontSize
-                            maxWidth: accountViewRect.width - bannedContactsBtn.width
-                                      - JamiTheme.preferredMarginSize*4
+                            maxWidth: root.width - bannedContactsBtn.width
+                                      - JamiTheme.preferredMarginSize * 4
                         }
 
                         HoverableButtonTextItem {
@@ -961,13 +871,8 @@ Rectangle {
 
                             Layout.alignment: Qt.AlignRight
 
-                            Layout.maximumWidth: JamiTheme.preferredFieldHeight
                             Layout.preferredWidth: JamiTheme.preferredFieldHeight
-                            Layout.minimumWidth: JamiTheme.preferredFieldHeight
-
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                             radius: height / 2
 
@@ -986,19 +891,15 @@ Rectangle {
                     ColumnLayout {
                         id: bannedContactsListWidget
 
-                        spacing: 8
                         visible: false
 
                         ListViewJami {
                             id: bannedListWidget
 
                             Layout.fillWidth: true
-
-                            Layout.minimumHeight: 160
                             Layout.preferredHeight: 160
-                            Layout.maximumHeight: 160
 
-                            model: bannedListModel
+                            model: BannedListModel{}
 
                             delegate: BannedItemDelegate{
                                 id: bannedListDelegate
@@ -1022,43 +923,32 @@ Rectangle {
                     }
                 }
 
-                /*
-                 * Advanced Settigs Button
-                 */
-
+                // Advanced Settigs Button
                 RowLayout {
                     id: rowAdvancedSettingsBtn
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: 8
 
                     ElidedTextLabel {
-
                         id: lblAdvancedAccountSettings
 
                         Layout.fillWidth: true
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Advanced Account Settings")
 
                         fontSize: JamiTheme.headerFontSize
-                        maxWidth: accountViewRect.width - advancedAccountSettingsPButton.width
-                                  - JamiTheme.preferredMarginSize*6
+                        maxWidth: root.width - advancedAccountSettingsPButton.width
+                                  - JamiTheme.preferredMarginSize * 6
                     }
 
                     HoverableButtonTextItem {
                         id: advancedAccountSettingsPButton
 
-                        Layout.leftMargin: JamiTheme.preferredMarginSize
-
-                        Layout.minimumWidth: JamiTheme.preferredFieldHeight
                         Layout.preferredWidth: JamiTheme.preferredFieldHeight
-                        Layout.maximumWidth: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
                         Layout.alignment: Qt.AlignHCenter
 
                         radius: height / 2
@@ -1086,23 +976,15 @@ Rectangle {
                     }
                 }
 
-                /*
-                 * Advanced Settings
-                 */
+                // Advanced Settings
                 AdvancedSettingsView {
                     id: advanceSettingsView
+                    Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: JamiTheme.preferredMarginSize
                     visible: false
-                }
-
-                /*
-                 * To keep max width
-                 */
-                Item {
-                    Layout.preferredWidth: accountViewRect.width - 32
-                    Layout.minimumWidth: accountViewRect.width - 32
-                    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView - 32
-                    Layout.fillHeight: true
+                    itemWidth: preferredColumnWidth
                 }
             }
         }
diff --git a/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml b/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
index 80cc11629..2f1e7b460 100644
--- a/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
+++ b/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
@@ -27,12 +27,12 @@ import net.jami.Models 1.0
 import "../../commoncomponents"
 
 Rectangle {
-    id: sipAccountViewRect
+    id: root
     signal navigateToMainView
     signal navigateToNewWizardView
     signal backArrowClicked
 
-    property int preferredColumnWidth : sipAccountViewRect.width / 2 - 50
+    property int preferredColumnWidth : root.width / 2 - 50
 
     function updateAccountInfoDisplayed() {
         displaySIPNameLineEdit.text = SettingsAdapter.getCurrentAccount_Profile_Info_Alias()
@@ -74,12 +74,10 @@ Rectangle {
         deleteAccountDialog_SIP.open()
     }
 
-    DeleteAccountDialog{
+    DeleteAccountDialog {
         id: deleteAccountDialog_SIP
 
         anchors.centerIn: parent.Center
-        x: (parent.width - width) / 2
-        y: (parent.height - height) / 2
 
         onAccepted: {
             ClientWrapper.accountAdaptor.setSelectedConvId()
@@ -92,35 +90,24 @@ Rectangle {
         }
     }
 
-    Layout.fillHeight: true
-    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
-    anchors.centerIn: parent
-
     ColumnLayout {
-        anchors.fill: sipAccountViewRect
+        anchors.fill: root
 
         RowLayout {
             id: sipAccountPageTitle
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
             Layout.leftMargin: JamiTheme.preferredMarginSize
-            Layout.fillWidth: true
-            Layout.maximumHeight: 64
             Layout.minimumHeight: 64
-            Layout.preferredHeight: 64
 
             HoverableButton {
                 id: backToSettingsMenuButton
 
-                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
                 Layout.preferredWidth: JamiTheme.preferredFieldHeight
-                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                radius: 32
+                radius: JamiTheme.preferredFieldHeight
                 source: "qrc:/images/icons/ic_arrow_back_24px.svg"
                 backgroundColor: "white"
                 onExitColor: "white"
-
                 toolTipText: qsTr("Toggle to display side panel")
                 hoverEnabled: true
                 visible: mainViewWindow.sidePanelHidden
@@ -130,17 +117,16 @@ Rectangle {
                 }
             }
 
-            ElidedTextLabel {
+            Label {
                 Layout.fillWidth: true
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
-                eText: qsTr("Account Settings")
-                fontSize: JamiTheme.titleFontSize
-                maxWidth: !backToSettingsMenuButton.visible ? sipAccountViewRect.width - 100 :
-                                                              sipAccountViewRect.width - backToSettingsMenuButton.width - 100
+                text: qsTr("Account Settings")
 
+                font.pointSize: JamiTheme.titleFontSize
+                font.kerning: true
+
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
             }
         }
 
@@ -151,30 +137,20 @@ Rectangle {
 
             Layout.fillHeight: true
             Layout.fillWidth: true
-            Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-            width: sipAccountViewRect.width
-            height: sipAccountViewRect.height - sipAccountPageTitle.height
-
-            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-            ScrollBar.vertical.policy: ScrollBar.AsNeeded
 
             clip: true
 
             ColumnLayout {
                 id: accountSIPLayout
 
-                Layout.fillHeight: true
-                Layout.preferredWidth: sipAccountViewRect.width
-                Layout.alignment: Qt.AlignHCenter
-
-                spacing: 24
+                width: root.width
 
                 ToggleSwitch {
                     id: accountSIPEnableCheckBox
 
                     Layout.topMargin: JamiTheme.preferredMarginSize
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     labelText: qsTr("Enable")
                     fontPointSize: JamiTheme.headerFontSize
@@ -188,14 +164,11 @@ Rectangle {
                     Layout.fillWidth: true
                     Layout.fillHeight: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
-                    spacing: 8
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     Label {
                         Layout.fillWidth: true
-
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                         text: qsTr("Profile")
                         font.pointSize: JamiTheme.headerFontSize
@@ -208,16 +181,11 @@ Rectangle {
                     PhotoboothView {
                         id: currentSIPAccountAvatar
 
-                        Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+                        Layout.alignment: Qt.AlignCenter
 
-                        boothWidth: Math.min(224, sipAccountViewRect.width - 100)
+                        boothWidth: Math.min(224, root.width - 100) + 50
 
-                        Layout.maximumWidth: boothWidth+50
-                        Layout.preferredWidth: boothWidth+50
-                        Layout.minimumWidth: boothWidth+50
-                        Layout.maximumHeight: boothWidth+50
-                        Layout.preferredHeight: boothWidth+50
-                        Layout.minimumHeight: boothWidth+50
+                        Layout.preferredWidth: boothWidth
 
                         onImageAcquired: {
                            SettingsAdapter.setCurrAccAvatar(imgBase64)
@@ -250,22 +218,18 @@ Rectangle {
                     }
                 }
 
-
                 ColumnLayout {
                     Layout.fillWidth: true
                     Layout.alignment: Qt.AlignHCenter
                     Layout.leftMargin: JamiTheme.preferredMarginSize
-                    spacing: 8
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     ElidedTextLabel {
                         Layout.fillWidth: true
-
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Identity")
-                        maxWidth: sipAccountViewRect.width - 72
+                        maxWidth: root.width - 72
                         fontSize: JamiTheme.headerFontSize
                     }
 
@@ -274,8 +238,6 @@ Rectangle {
                         rows: 4
                         columns: 2
                         flow: GridLayout.LeftToRight
-                        rowSpacing: 8
-                        columnSpacing: 6
 
                         Layout.fillWidth: true
                         Layout.leftMargin: JamiTheme.preferredMarginSize
@@ -283,9 +245,7 @@ Rectangle {
                         // user name
                         ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                             eText: qsTr("Username")
                             fontSize: JamiTheme.settingsFontSize
@@ -299,7 +259,7 @@ Rectangle {
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredWidth: preferredColumnWidth
 
-                            font.pointSize: JamiTheme.settingsFontSize // Albert: buttonSize?
+                            font.pointSize: JamiTheme.settingsFontSize
                             font.kerning: true
 
                             horizontalAlignment: Text.AlignLeft
@@ -316,9 +276,7 @@ Rectangle {
                         // host name
                         ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                             eText: qsTr("Hostname")
                             fontSize: JamiTheme.settingsFontSize
@@ -349,9 +307,7 @@ Rectangle {
                         // proxy
                         ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                             text: qsTr("Proxy")
                             font.pointSize: JamiTheme.settingsFontSize
@@ -365,7 +321,7 @@ Rectangle {
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredWidth: preferredColumnWidth
 
-                            font.pointSize: JamiTheme.settingsFontSize // Albert
+                            font.pointSize: JamiTheme.settingsFontSize
                             font.kerning: true
 
                             horizontalAlignment: Text.AlignLeft
@@ -382,9 +338,7 @@ Rectangle {
                         // password
                         ElidedTextLabel {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
                             Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                             eText: qsTr("Password")
                             fontSize: JamiTheme.settingsFontSize
@@ -439,38 +393,33 @@ Rectangle {
                     id: rowAdvancedSettingsBtn
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: 8
 
                     ElidedTextLabel {
-
                         id: lblAdvancedAccountSettings
 
                         Layout.fillWidth: true
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Advanced Account Settings")
                         fontSize: JamiTheme.headerFontSize
-                        maxWidth: sipAccountViewRect.width - advancedAccountSettingsSIPButton.width - 80
+                        maxWidth: root.width - advancedAccountSettingsSIPButton.width
+                                  - JamiTheme.preferredMarginSize * 6
                     }
 
-                    HoverableRadiusButton {
+                    HoverableButtonTextItem {
                         id: advancedAccountSettingsSIPButton
 
-                        Layout.leftMargin: JamiTheme.preferredMarginSize
-
-                        Layout.minimumWidth: JamiTheme.preferredFieldHeight
                         Layout.preferredWidth: JamiTheme.preferredFieldHeight
-                        Layout.maximumWidth: JamiTheme.preferredFieldHeight
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
                         Layout.alignment: Qt.AlignHCenter
 
                         radius: height / 2
 
-                        icon.source: {
+                        toolTipText: qsTr("Press to display or hide advance settings")
+
+                        source: {
                             if (advanceSIPSettingsView.visible) {
                                 return "qrc:/images/icons/round-arrow_drop_up-24px.svg"
                             } else {
@@ -493,15 +442,12 @@ Rectangle {
                 // instantiate advance setting page
                 AdvancedSIPSettingsView {
                     id: advanceSIPSettingsView
+                    Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: JamiTheme.preferredMarginSize
                     visible: false
-                }
-
-                Item {
-                    Layout.preferredWidth: sipAccountViewRect.width - 32
-                    Layout.minimumWidth: sipAccountViewRect.width - 32
-                    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView - 32
-                    Layout.fillHeight: true
+                    itemWidth: preferredColumnWidth
                 }
             }
         }
diff --git a/src/settingsview/components/DeviceItemDelegate.qml b/src/settingsview/components/DeviceItemDelegate.qml
index 32084d288..4bbb1c121 100644
--- a/src/settingsview/components/DeviceItemDelegate.qml
+++ b/src/settingsview/components/DeviceItemDelegate.qml
@@ -28,7 +28,7 @@ import net.jami.Models 1.0
 import "../../commoncomponents"
 
 ItemDelegate {
-    id: deviceItemDelegate
+    id: root
 
     property string deviceName : ""
     property string deviceId : ""
@@ -64,108 +64,71 @@ ItemDelegate {
     highlighted: ListView.isCurrentItem
 
     RowLayout {
-        id: layoutDeviceItemDelegate
-        anchors.fill: parent
-        spacing: 8
+        anchors.fill: root
+
         Image {
-            Layout.leftMargin: 16
+            id: deviceImage
+            Layout.leftMargin: JamiTheme.preferredMarginSize
             Layout.alignment: Qt.AlignVCenter
 
-            Layout.minimumWidth: 24
             Layout.preferredWidth: 24
-            Layout.maximumWidth: 24
-
-            Layout.minimumHeight: 24
             Layout.preferredHeight: 24
-            Layout.maximumHeight: 24
             source: "qrc:/images/icons/baseline-desktop_windows-24px.svg"
         }
 
         ColumnLayout {
-            id: col
             Layout.fillWidth: true
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-            Layout.leftMargin: 16
+            Layout.leftMargin: JamiTheme.preferredMarginSize
 
-            RowLayout {
+            InfoLineEdit {
+                id: editDeviceName
+                implicitWidth: parent.width
                 Layout.fillWidth: true
-                spacing: 0
-                Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-
-                InfoLineEdit {
-                    id: editDeviceName
-
-                    Layout.preferredWidth: deviceItemDelegate.width - 112
-                    Layout.maximumWidth: deviceItemDelegate.width - 112
-                    Layout.minimumWidth: deviceItemDelegate.width - 112
-                    fieldLayoutWidth: deviceItemDelegate.width - 112
-
-                    Layout.minimumHeight: 24
-                    Layout.preferredHeight: 24
-                    Layout.maximumHeight: 24
-
-                    fieldLayoutHeight: 24
-
-                    Layout.alignment: Qt.AlignLeft
-                    font.pointSize: JamiTheme.textFontSize
-                    font.kerning: true
-
-                    horizontalAlignment: Text.AlignLeft
-                    verticalAlignment: Text.AlignVCenter
-
-                    readOnly: !editable
-
-                    backgroundColor: "white"
-
-                    text: elidedTextDeviceName.elidedText
-                }
-
-                TextMetrics {
-                    id: elidedTextDeviceName
+                Layout.preferredHeight: 30
+                Layout.alignment: Qt.AlignLeft
+                font.pointSize: JamiTheme.textFontSize
+                font.kerning: true
+
+                wrapMode: Text.NoWrap
+                readOnly: !editable
+                backgroundColor: "white"
+                text: elidedTextDeviceName.elidedText
+            }
 
-                    elide: Text.ElideRight
-                    elideWidth: deviceItemDelegate.width - 112
+            TextMetrics {
+                id: elidedTextDeviceName
 
-                    text: deviceName
-                }
+                elide: Text.ElideRight
+                elideWidth: root.width - btnEditDevice.width - deviceImage.width - 8
+                text: deviceName
             }
 
             ElidedTextLabel {
                 id: labelDeviceId
 
-                Layout.fillWidth: true
-                Layout.leftMargin: 12
-
-                Layout.minimumHeight: 24
                 Layout.preferredHeight: 24
-                Layout.maximumHeight: 24
+                Layout.leftMargin: 8
 
-                maxWidth: deviceItemDelegate.width - 112
+                maxWidth: root.width - btnEditDevice.width - deviceImage.width
                 eText: deviceId === "" ? qsTr("Device Id") : deviceId
             }
-
         }
 
         HoverableRadiusButton {
             id: btnEditDevice
 
-            Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
+            Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
             Layout.rightMargin: 8
-
-            Layout.minimumWidth: 32
-            Layout.preferredWidth: 32
-            Layout.maximumWidth: 32
-
-            Layout.minimumHeight: 32
-            Layout.preferredHeight: 32
-            Layout.maximumHeight: 32
+            Layout.preferredWidth: JamiTheme.preferredFieldHeight
+            Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
             buttonImageHeight: height - 8
             buttonImageWidth: width - 8
 
             radius: height / 2
-            width: 25
-            height: 25
+            width: 24
+            height: 24
 
             backgroundColor: "transparent"
 
diff --git a/src/settingsview/components/GeneralSettingsPage.qml b/src/settingsview/components/GeneralSettingsPage.qml
index 906b419e6..a0409c445 100644
--- a/src/settingsview/components/GeneralSettingsPage.qml
+++ b/src/settingsview/components/GeneralSettingsPage.qml
@@ -29,7 +29,7 @@ import net.jami.Enums 1.0
 import "../../commoncomponents"
 
 Rectangle {
-    id: generalSettingsRect
+    id: root
 
     function populateGeneralSettings(){
         // settings
@@ -105,14 +105,6 @@ Rectangle {
             var dir = ClientWrapper.utilsAdaptor.getAbsPath(folder.toString())
             downloadPath = dir
         }
-
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
     }
 
     function openRecordFolderSlot(){
@@ -129,14 +121,6 @@ Rectangle {
             var dir = ClientWrapper.utilsAdaptor.getAbsPath(folder.toString())
             recordPath = dir
         }
-
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
     }
 
     //TODO: complete check for update and check for Beta slot functions
@@ -149,8 +133,8 @@ Rectangle {
     // recording
     property string recordPath: SettingsAdapter.getDir_Document()
 
-    property int preferredColumnWidth : generalSettingsScrollView.width / 2 - 50
-    property int preferredSettingsWidth : generalSettingsScrollView.width - 100
+    property int preferredColumnWidth : root.width / 2 - 50
+    property int preferredSettingsWidth : root.width - 100
 
     signal backArrowClicked
 
@@ -167,31 +151,23 @@ Rectangle {
         }
     }
 
-    Layout.fillHeight: true
-    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
-    anchors.centerIn: parent
-
     ColumnLayout {
-        anchors.fill: generalSettingsRect
+        anchors.fill: root
 
         RowLayout {
             id: generalSettingsTitle
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
             Layout.leftMargin: JamiTheme.preferredMarginSize
             Layout.fillWidth: true
-            Layout.maximumHeight: 64
-            Layout.minimumHeight: 64
             Layout.preferredHeight: 64
 
             HoverableButton {
                 id: backToSettingsMenuButton
 
-                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
                 Layout.preferredWidth: JamiTheme.preferredFieldHeight
                 Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.rightMargin: JamiTheme.preferredMarginSize
 
-                radius: 32
+                radius: JamiTheme.preferredFieldHeight
                 source: "qrc:/images/icons/ic_arrow_back_24px.svg"
                 backgroundColor: "white"
                 onExitColor: "white"
@@ -206,9 +182,6 @@ Rectangle {
 
             Label {
                 Layout.fillWidth: true
-                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                 text: qsTr("General")
                 font.pointSize: JamiTheme.titleFontSize
@@ -220,41 +193,27 @@ Rectangle {
 
         }
 
-        ScrollView{
+        ScrollView {
             id: generalSettingsScrollView
-            property ScrollBar vScrollBar: ScrollBar.vertical
 
             Layout.fillHeight: true
             Layout.fillWidth: true
 
-            Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-            width: generalSettingsRect.width
-            height: generalSettingsRect.height - generalSettingsTitle.height
-
-            ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
-            ScrollBar.vertical.policy: ScrollBar.AsNeeded
-
+            focus: true
             clip: true
 
             ColumnLayout {
-                Layout.fillHeight: true
-                Layout.fillWidth: true
-                Layout.alignment: Qt.AlignHCenter
-
-                spacing: 24
+                width: root.width
 
                 // system setting panel
                 ColumnLayout {
-                    spacing: 8
                     Layout.fillWidth: true
+                    Layout.topMargin: JamiTheme.preferredMarginSize
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     Label {
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         text: qsTr("System")
                         font.pointSize: JamiTheme.headerFontSize
@@ -264,268 +223,214 @@ Rectangle {
                         verticalAlignment: Text.AlignVCenter
                     }
 
-                    ColumnLayout {
-                        spacing: 8
+                    ToggleSwitch {
+                        id: notificationCheckBox
                         Layout.fillWidth: true
                         Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        ToggleSwitch {
-                            id: notificationCheckBox
+                        labelText: qsTr("Enable desktop notifications")
+                        fontPointSize: JamiTheme.settingsFontSize
 
-                            labelText: desktopNotificationsElidedText.elidedText
-                            fontPointSize: JamiTheme.settingsFontSize
-
-                            tooltipText: qsTr("toggle enable notifications")
-
-                            onSwitchToggled: {
-                                setEnableNotifications(checked)
-                            }
-                        }
+                        tooltipText: qsTr("toggle enable notifications")
 
-                        TextMetrics {
-                            id: desktopNotificationsElidedText
-                            elide: Text.ElideRight
-                            elideWidth: preferredSettingsWidth
-                            text:  qsTr("Enable desktop notifications")
+                        onSwitchToggled: {
+                            setEnableNotifications(checked)
                         }
+                    }
 
+                    ToggleSwitch {
+                        id: closeOrMinCheckBox
+                        Layout.fillWidth: true
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        ToggleSwitch {
-                            id: closeOrMinCheckBox
-
-                            labelText: keepMinimizeElidedText.elidedText
-                            fontPointSize: JamiTheme.settingsFontSize
-
-                            tooltipText: qsTr("toggle keep minimized on close")
+                        labelText: qsTr("Keep minimize on close")
+                        fontPointSize: JamiTheme.settingsFontSize
 
-                            onSwitchToggled: {
-                                setMinimizeOnClose(checked)
-                            }
-                        }
+                        tooltipText: qsTr("toggle keep minimized on close")
 
-                        TextMetrics {
-                            id: keepMinimizeElidedText
-                            elide: Text.ElideRight
-                            elideWidth: preferredSettingsWidth
-                            text:  qsTr("Keep minimize on close")
+                        onSwitchToggled: {
+                            setMinimizeOnClose(checked)
                         }
+                    }
 
+                    ToggleSwitch {
+                        id: applicationOnStartUpCheckBox
+                        Layout.fillWidth: true
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        ToggleSwitch {
-                            id: applicationOnStartUpCheckBox
-
-                            labelText: runOnStartupElidedText.elidedText
-                            fontPointSize: JamiTheme.settingsFontSize
+                        labelText: qsTr("Run On Startup")
+                        fontPointSize: JamiTheme.settingsFontSize
 
-                            tooltipText: qsTr("toggle run application on system startup")
+                        tooltipText: qsTr("toggle run application on system startup")
 
-                            onSwitchToggled: {
-                                slotSetRunOnStartUp(checked)
-                            }
+                        onSwitchToggled: {
+                            slotSetRunOnStartUp(checked)
                         }
+                    }
 
-                        TextMetrics {
-                            id: runOnStartupElidedText
-                            elide: Text.ElideRight
-                            elideWidth: preferredSettingsWidth
-                            text:  qsTr("Run On Startup")
-                        }
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        RowLayout {
-                            spacing: 8
+                        Label {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                            ElidedTextLabel {
+                            Layout.fillHeight: true
 
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                            text: qsTr("Downloads folder")
+                            font.pointSize: JamiTheme.settingsFontSize
+                            font.kerning: true
 
-                                eText: qsTr("Downloads folder")
-                                font.pointSize: JamiTheme.settingsFontSize
-                                maxWidth: preferredColumnWidth
-                            }
+                            horizontalAlignment: Text.AlignLeft
+                            verticalAlignment: Text.AlignVCenter
+                        }
 
-                            MaterialButton {
-                                id: downloadButton
+                        MaterialButton {
+                            id: downloadButton
 
-                                Layout.alignment: Qt.AlignRight
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                            Layout.alignment: Qt.AlignRight
+                            Layout.preferredWidth: preferredColumnWidth
+                            Layout.fillHeight: true
 
-                                toolTipText: qsTr("Press to choose download folder path")
-                                text: downloadPath
-                                source: "qrc:/images/icons/round-folder-24px.svg"
-                                color: JamiTheme.buttonTintedGrey
-                                hoveredColor: JamiTheme.buttonTintedGreyHovered
-                                pressedColor: JamiTheme.buttonTintedGreyPressed
+                            toolTipText: qsTr("Press to choose download folder path")
+                            text: downloadPath
+                            source: "qrc:/images/icons/round-folder-24px.svg"
+                            color: JamiTheme.buttonTintedGrey
+                            hoveredColor: JamiTheme.buttonTintedGreyHovered
+                            pressedColor: JamiTheme.buttonTintedGreyPressed
 
-                                onClicked: {
-                                    openDownloadFolderSlot()
-                                }
+                            onClicked: {
+                                openDownloadFolderSlot()
                             }
                         }
                     }
                 }
 
-                // call recording setting panel
+                // // call recording setting panel
                 ColumnLayout {
-                    spacing: 8
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     ElidedTextLabel {
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         eText: qsTr("Call Recording")
                         font.pointSize: JamiTheme.headerFontSize
-                        maxWidth: preferredSettingsWidth
+                        maxWidth: width
                     }
 
-                    ColumnLayout {
-                        spacing: 8
+                    ToggleSwitch {
+                        id: alwaysRecordingCheckBox
                         Layout.fillWidth: true
                         Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        ToggleSwitch {
-                            id: alwaysRecordingCheckBox
-
-                            labelText: alwaysRecordElidedText.elidedText
-                            fontPointSize: JamiTheme.settingsFontSize
-
-                            onSwitchToggled: {
-                                slotAlwaysRecordingClicked(checked)
-                            }
-                        }
+                        labelText: qsTr("Always record calls")
+                        fontPointSize: JamiTheme.settingsFontSize
 
-                        TextMetrics {
-                            id: alwaysRecordElidedText
-                            elide: Text.ElideRight
-                            elideWidth: preferredSettingsWidth
-                            text:  qsTr("Always record calls")
+                        onSwitchToggled: {
+                            slotAlwaysRecordingClicked(checked)
                         }
+                    }
 
+                    ToggleSwitch {
+                        id: recordPreviewCheckBox
+                        Layout.fillWidth: true
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        ToggleSwitch {
-                            id: recordPreviewCheckBox
-
-                            labelText: recordPreviewElidedText.elidedText
-                            fontPointSize: JamiTheme.settingsFontSize
+                        labelText: qsTr("Record preview video for a call")
+                        fontPointSize: JamiTheme.settingsFontSize
 
-                            onSwitchToggled: {
-                                slotRecordPreviewClicked(checked)
-                            }
+                        onSwitchToggled: {
+                            slotRecordPreviewClicked(checked)
                         }
+                    }
 
-                        TextMetrics {
-                            id: recordPreviewElidedText
-                            elide: Text.ElideRight
-                            elideWidth: preferredSettingsWidth
-                            text:  qsTr("Record preview video for a call")
-                        }
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        RowLayout {
-                            spacing: 8
+                        Text {
                             Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
-
-                            Label {
-
-                                Layout.fillWidth: true
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
+                            Layout.rightMargin: JamiTheme.preferredMarginSize / 2
 
-                                text: qsTr("Quality")
-                                font.pointSize: JamiTheme.settingsFontSize
-                                font.kerning: true
-
-                                horizontalAlignment: Text.AlignLeft
-                                verticalAlignment: Text.AlignVCenter
-                            }
-
-                            Label {
-                                id: recordQualityValueLabel
-
-                                Layout.minimumWidth: 50
-                                Layout.preferredWidth: 50
-                                Layout.maximumWidth: 50
+                            text: qsTr("Quality")
+                            font.pointSize: JamiTheme.settingsFontSize
+                            font.kerning: true
+                            elide: Text.ElideRight
+                            horizontalAlignment: Text.AlignLeft
+                            verticalAlignment: Text.AlignVCenter
+                        }
 
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Text {
+                            id: recordQualityValueLabel
 
-                                text: qsTr("VALUE ")
+                            Layout.alignment: Qt.AlignRight
+                            Layout.fillHeight: true
+                            Layout.fillWidth: true
+                            Layout.rightMargin: JamiTheme.preferredMarginSize / 2
 
-                                font.pointSize: JamiTheme.settingsFontSize
-                                font.kerning: true
+                            text: qsTr("VALUE ")
 
-                                horizontalAlignment: Text.AlignLeft
-                                verticalAlignment: Text.AlignVCenter
-                            }
+                            font.pointSize: JamiTheme.settingsFontSize
+                            font.kerning: true
 
-                            Slider{
-                                id: recordQualitySlider
+                            horizontalAlignment: Text.AlignRight
+                            verticalAlignment: Text.AlignVCenter
+                        }
 
-                                Layout.maximumWidth: preferredColumnWidth
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.minimumWidth: preferredColumnWidth
+                        Slider {
+                            id: recordQualitySlider
 
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                            Layout.maximumWidth: preferredColumnWidth
+                            Layout.alignment: Qt.AlignRight
+                            Layout.fillWidth: true
+                            Layout.fillHeight: true
 
-                                from: 0
-                                to: 500
-                                stepSize: 1
+                            from: 0
+                            to: 500
+                            stepSize: 1
 
-                                onMoved: {
-                                    slotRecordQualitySliderValueChanged(value)
-                                }
+                            onMoved: {
+                                slotRecordQualitySliderValueChanged(value)
                             }
                         }
+                    }
 
-                        RowLayout {
-                            spacing: 8
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                    RowLayout {
+                        Layout.fillWidth: true
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                            Label {
-                                Layout.fillWidth: true
-                                Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                                Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Label {
+                            Layout.fillWidth: true
+                            Layout.fillHeight: true
 
-                                text: qsTr("Save in")
-                                font.pointSize: JamiTheme.settingsFontSize
-                                font.kerning: true
+                            text: qsTr("Save in")
+                            font.pointSize: JamiTheme.settingsFontSize
+                            font.kerning: true
 
-                                horizontalAlignment: Text.AlignLeft
-                                verticalAlignment: Text.AlignVCenter
-                            }
+                            horizontalAlignment: Text.AlignLeft
+                            verticalAlignment: Text.AlignVCenter
+                        }
 
-                            MaterialButton {
-                                id: recordPathButton
+                        MaterialButton {
+                            id: recordPathButton
 
-                                Layout.alignment: Qt.AlignRight
-                                Layout.preferredWidth: preferredColumnWidth
-                                Layout.preferredHeight: JamiTheme.preferredFieldHeight
+                            Layout.alignment: Qt.AlignRight
+                            Layout.fillHeight: true
+                            Layout.preferredWidth: preferredColumnWidth
 
-                                toolTipText: qsTr("Press to choose record folder path")
-                                text: recordPath
-                                source: "qrc:/images/icons/round-folder-24px.svg"
-                                color: JamiTheme.buttonTintedGrey
-                                hoveredColor: JamiTheme.buttonTintedGreyHovered
-                                pressedColor: JamiTheme.buttonTintedGreyPressed
+                            toolTipText: qsTr("Press to choose record folder path")
+                            text: recordPath
+                            source: "qrc:/images/icons/round-folder-24px.svg"
+                            color: JamiTheme.buttonTintedGrey
+                            hoveredColor: JamiTheme.buttonTintedGreyHovered
+                            pressedColor: JamiTheme.buttonTintedGreyPressed
 
-                                onClicked: {
-                                    openRecordFolderSlot()
-                                }
+                            onClicked: {
+                                openRecordFolderSlot()
                             }
                         }
                     }
@@ -533,16 +438,14 @@ Rectangle {
 
                 // update setting panel
                 ColumnLayout {
-                    spacing: 8
                     Layout.fillWidth: true
                     Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: JamiTheme.preferredMarginSize
                     visible: Qt.platform.os == "windows"? true : false
 
                     Label {
                         Layout.fillWidth: true
-                        Layout.minimumHeight: JamiTheme.preferredFieldHeight
                         Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                        Layout.maximumHeight: JamiTheme.preferredFieldHeight
 
                         text: qsTr("Updates")
                         font.pointSize: JamiTheme.headerFontSize
@@ -552,82 +455,55 @@ Rectangle {
                         verticalAlignment: Text.AlignVCenter
                     }
 
-                    ColumnLayout {
-                        spacing: 8
-                        Layout.fillWidth: true
-
-                        ToggleSwitch {
-                            id: autoUpdateCheckBox
+                    ToggleSwitch {
+                        id: autoUpdateCheckBox
 
-                            labelText: autoUpdateText.elidedText
-                            fontPointSize: JamiTheme.settingsFontSize
+                        labelText: qsTr("Check for updates automatically")
+                        fontPointSize: JamiTheme.settingsFontSize
 
-                            tooltipText: qsTr("toggle automatic updates")
-
-                            onSwitchToggled: {
-                                setAutoUpdate(checked)
-                            }
-                        }
+                        tooltipText: qsTr("toggle automatic updates")
 
-                        TextMetrics {
-                            id: autoUpdateText
-                            elide: Text.ElideRight
-                            elideWidth: preferredSettingsWidth
-                            text: qsTr("Check for updates automatically")
+                        onSwitchToggled: {
+                            setAutoUpdate(checked)
                         }
+                    }
 
-                        HoverableRadiusButton {
-                            id: checkUpdateButton
+                    HoverableRadiusButton {
+                        id: checkUpdateButton
 
-                            Layout.alignment: Qt.AlignHCenter
-                            Layout.maximumWidth: JamiTheme.preferredFieldWidth
-                            Layout.preferredWidth: JamiTheme.preferredFieldWidth
-                            Layout.minimumWidth: JamiTheme.preferredFieldWidth
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.alignment: Qt.AlignHCenter
+                        Layout.preferredWidth: JamiTheme.preferredFieldWidth
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                            radius: height / 2
+                        radius: height / 2
 
-                            toolTipText: qsTr("Check for updates now")
-                            text: qsTr("Updates")
-                            fontPointSize: JamiTheme.buttonFontSize
+                        toolTipText: qsTr("Check for updates now")
+                        text: qsTr("Updates")
+                        fontPointSize: JamiTheme.buttonFontSize
 
-                            onClicked: {
-                                checkForUpdateSlot()
-                            }
+                        onClicked: {
+                            checkForUpdateSlot()
                         }
+                    }
 
-                        HoverableRadiusButton {
-                            id: installBetaButton
+                    HoverableRadiusButton {
+                        id: installBetaButton
 
-                            Layout.alignment: Qt.AlignHCenter
-                            Layout.maximumWidth: JamiTheme.preferredFieldWidth
-                            Layout.preferredWidth: JamiTheme.preferredFieldWidth
-                            Layout.minimumWidth: JamiTheme.preferredFieldWidth
-                            Layout.minimumHeight: JamiTheme.preferredFieldHeight
-                            Layout.preferredHeight: JamiTheme.preferredFieldHeight
-                            Layout.maximumHeight: JamiTheme.preferredFieldHeight
+                        Layout.alignment: Qt.AlignHCenter
+                        Layout.preferredWidth: JamiTheme.preferredFieldWidth
+                        Layout.preferredHeight: JamiTheme.preferredFieldHeight
 
-                            radius: height / 2
+                        radius: height / 2
 
-                            toolTipText: qsTr("Install the latest beta version")
-                            text: qsTr("Beta Install")
-                            fontPointSize: JamiTheme.buttonFontSize
+                        toolTipText: qsTr("Install the latest beta version")
+                        text: qsTr("Beta Install")
+                        fontPointSize: JamiTheme.buttonFontSize
 
-                            onClicked: {
-                                installBetaSlot()
-                            }
+                        onClicked: {
+                            installBetaSlot()
                         }
                     }
                 }
-
-                Item {
-                    Layout.preferredWidth: generalSettingsRect.width - 32
-                    Layout.minimumWidth: generalSettingsRect.width - 32
-                    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView - 32
-                    Layout.fillHeight: true
-                }
             }
         }
     }
diff --git a/src/settingsview/components/LinkDeviceDialog.qml b/src/settingsview/components/LinkDeviceDialog.qml
index ad891d9fe..5741ac326 100644
--- a/src/settingsview/components/LinkDeviceDialog.qml
+++ b/src/settingsview/components/LinkDeviceDialog.qml
@@ -25,20 +25,20 @@ import net.jami.Models 1.0
 import "../../commoncomponents"
 
 Dialog {
-    id: linkDeviceDialog
+    id: root
 
-    function openLinkDeviceDialog(){
+    function openLinkDeviceDialog() {
         infoLabel.text = qsTr("This pin and the account password should be entered in your device within 10 minutes.")
         passwordEdit.clear()
-        linkDeviceDialog.open()
-        if(ClientWrapper.accountAdaptor.hasPassword()){
+        root.open()
+        if(ClientWrapper.accountAdaptor.hasPassword()) {
             stackedWidget.currentIndex = 0
         } else {
             setGeneratingPage()
         }
     }
 
-    function setGeneratingPage(){
+    function setGeneratingPage() {
         if(passwordEdit.length === 0 && ClientWrapper.accountAdaptor.hasPassword()){
             setExportPage(NameDirectory.ExportOnRingStatus.WRONG_PASSWORD, "")
             return
@@ -50,7 +50,7 @@ Dialog {
         timerForExport.restart()
     }
 
-    function slotExportOnRing(){
+    function slotExportOnRing() {
         ClientWrapper.accountModel.exportOnRing(ClientWrapper.utilsAdaptor.getCurrAccId(),passwordEdit.text)
     }
 
@@ -80,7 +80,7 @@ Dialog {
     function setExportPage(status, pin){
         timeOut.stop()
 
-        if(status === NameDirectory.ExportOnRingStatus.SUCCESS){
+        if(status === NameDirectory.ExportOnRingStatus.SUCCESS) {
             infoLabel.isSucessState = true
             yourPinLabel.visible = true
             exportedPIN.visible = true
@@ -91,7 +91,7 @@ Dialog {
             yourPinLabel.visible = false
             exportedPIN.visible = false
 
-            switch(status){
+            switch(status) {
             case NameDirectory.ExportOnRingStatus.WRONG_PASSWORD:
                 infoLabel.text = qsTr("Incorrect password")
 
@@ -114,14 +114,13 @@ Dialog {
     Connections{
         target: ClientWrapper.nameDirectory
 
-        function onExportOnRingEnded(status, pin){
+        function onExportOnRingEnded(status, pin) {
             setExportPage(status, pin)
         }
     }
 
     visible: false
 
-    anchors.centerIn: parent.Center
     x: (parent.width - width) / 2
     y: (parent.height - height) / 2
 
@@ -130,136 +129,85 @@ Dialog {
         height: 64
         color: "transparent"
         Text {
-            anchors.left: parent.left
-            anchors.leftMargin: 24
-            anchors.bottom: parent.bottom
-            anchors.bottomMargin: 24
+            anchors.fill: parent
+            anchors.leftMargin: JamiTheme.preferredMarginSize
+            anchors.topMargin: JamiTheme.preferredMarginSize
 
             text: qsTr("Link another device")
             font.pointSize: JamiTheme.headerFontSize
+            wrapMode: Text.Wrap
         }
     }
 
-    height: contentItem.implicitHeight + 64 + 8
-    width: contentItem.implicitWidth + 24
-
     onClosed: {
-        if(infoLabel.isSucessState){
+        if(infoLabel.isSucessState) {
             accept()
         } else {
             reject()
         }
     }
 
-    contentItem: Rectangle{
-        implicitWidth: 280
-        implicitHeight: 208
+    contentItem: Rectangle {
+        implicitWidth: 350
+        implicitHeight: 210
 
-        StackLayout{
+        StackLayout {
             id: stackedWidget
             anchors.fill: parent
-
             currentIndex: 2
 
-            Rectangle{
+            Rectangle {
                 id: passwordConfirmPage
 
                 Layout.fillWidth: true
                 Layout.fillHeight: true
 
-                Layout.leftMargin: 11
-                Layout.rightMargin: 11
-                Layout.topMargin: 11
-                Layout.bottomMargin: 11
+                Layout.alignment: Qt.AlignCenter
+                Layout.leftMargin: JamiTheme.preferredMarginSize
+                Layout.rightMargin: JamiTheme.preferredMarginSize
+                Layout.bottomMargin: JamiTheme.preferredMarginSize
 
-                ColumnLayout{
+                ColumnLayout {
                     anchors.fill: parent
-                    spacing: 7
-
-                    Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-                    Item{
-                        Layout.alignment: Qt.AlignHCenter
 
-                        Layout.fillHeight: true
-                        Layout.maximumHeight: 20
-                        Layout.preferredHeight: 20
-                        Layout.minimumHeight: 20
-                    }
-
-                    Label{
-                        Layout.preferredWidth: 219
+                    Label {
+                        Layout.topMargin: JamiTheme.preferredMarginSize
+                        Layout.fillWidth: true
                         Layout.alignment: Qt.AlignHCenter
                         wrapMode: Text.Wrap
                         text: qsTr("Enter your account password")
-                        font.pointSize: 8
                         font.kerning: true
                         horizontalAlignment: Text.AlignHCenter
                         verticalAlignment: Text.AlignVCenter
                     }
 
-                    Item{
-                        Layout.alignment: Qt.AlignHCenter
-
-                        Layout.fillHeight: true
-
-                        Layout.maximumHeight: 20
-                        Layout.preferredHeight: 20
-                        Layout.minimumHeight: 20
-                    }
-
-                    InfoLineEdit{
+                    MaterialLineEdit {
                         id: passwordEdit
 
+                        Layout.preferredHeight: 48
+                        Layout.fillWidth: true
                         Layout.alignment: Qt.AlignHCenter
-
-                        Layout.minimumWidth: 294
-                        Layout.preferredWidth: 294
-
-                        Layout.preferredHeight: 30
-                        Layout.minimumHeight: 30
+                        Layout.maximumWidth: 300
 
                         echoMode: TextInput.Password
+                        horizontalAlignment: Text.AlignLeft
+                        verticalAlignment: Text.AlignVCenter
 
                         placeholderText: qsTr("Password")
                     }
 
-                    Item{
-                        Layout.alignment: Qt.AlignHCenter
-
-                        Layout.fillHeight: true
-
-                        Layout.maximumHeight: 20
-                        Layout.preferredHeight: 20
-                        Layout.minimumHeight: 20
-                    }
-
-                    RowLayout{
-                        spacing: 7
-
-                        Layout.alignment: Qt.AlignHCenter
+                    RowLayout {
+                        Layout.topMargin: JamiTheme.preferredMarginSize
+                        Layout.preferredHeight: 30
                         Layout.fillWidth: true
+                        Layout.alignment: Qt.AlignHCenter
 
-                        Item{
-                            Layout.fillWidth: true
-
-                            Layout.maximumHeight: 20
-                            Layout.preferredHeight: 20
-                            Layout.minimumHeight: 20
-                        }
-
-                        HoverableRadiusButton{
+                        HoverableRadiusButton {
                             id: btnPasswordOk
 
-                            Layout.maximumWidth: 130
                             Layout.preferredWidth: 130
-                            Layout.minimumWidth: 130
-
-                            Layout.maximumHeight: 30
-                            Layout.preferredHeight: 30
-                            Layout.minimumHeight: 30
 
-                            radius: height /2
+                            radius: height / 2
 
                             text: qsTr("Register")
                             font.pointSize: 10
@@ -270,25 +218,11 @@ Dialog {
                             }
                         }
 
-                        Item{
-                            Layout.fillWidth: true
-                            Layout.minimumWidth: 40
-
-                            Layout.maximumHeight: 20
-                            Layout.preferredHeight: 20
-                            Layout.minimumHeight: 20
-                        }
-
                         HoverableButtonTextItem {
                             id: btnCancel
 
-                            Layout.maximumWidth: 130
+                            Layout.leftMargin: 20
                             Layout.preferredWidth: 130
-                            Layout.minimumWidth: 130
-
-                            Layout.maximumHeight: 30
-                            Layout.preferredHeight: 30
-                            Layout.minimumHeight: 30
 
                             backgroundColor: "red"
                             onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
@@ -298,7 +232,7 @@ Dialog {
                             onPressColor: backgroundColor
                             textColor: "white"
 
-                            radius: height /2
+                            radius: height / 2
 
                             text: qsTr("Cancel")
                             font.pointSize: 10
@@ -308,49 +242,23 @@ Dialog {
                                 reject()
                             }
                         }
-
-                        Item{
-                            Layout.fillWidth: true
-                            Layout.minimumWidth: 40
-
-                            Layout.maximumHeight: 20
-                            Layout.preferredHeight: 20
-                            Layout.minimumHeight: 20
-                        }
-                    }
-
-                    Item{
-                        Layout.alignment: Qt.AlignHCenter
-
-                        Layout.fillHeight: true
-
-                        Layout.maximumHeight: 20
-                        Layout.preferredHeight: 20
-                        Layout.minimumHeight: 20
                     }
                 }
             }
 
-            Rectangle{
+            Rectangle {
                 id: exportingPage
 
                 Layout.fillWidth: true
                 Layout.fillHeight: true
 
-                ColumnLayout{
+                ColumnLayout {
                     anchors.fill: parent
-                    spacing: 8
-
-                    Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
+                    anchors.centerIn: parent
 
-                    Label{
+                    Label {
                         Layout.alignment: Qt.AlignLeft
-
-                        Layout.minimumHeight: 0
-                        Layout.preferredHeight: 30
-                        Layout.maximumHeight: 30
-                        Layout.leftMargin: 16
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
                         wrapMode: Text.Wrap
                         text: qsTr("Exporting Account")
@@ -358,96 +266,51 @@ Dialog {
                         verticalAlignment: Text.AlignVCenter
                     }
 
-                    RowLayout{
-                        spacing: 7
-
-                        Item{
-                            Layout.fillWidth: true
-
-                            Layout.maximumHeight: 20
-                            Layout.preferredHeight: 20
-                            Layout.minimumHeight: 20
-                        }
-
-                        Label{
-                            id: exportingSpinner
-
-                            Layout.alignment: Qt.AlignHCenter
+                    Label {
+                        id: exportingSpinner
 
-                            Layout.maximumWidth: 96
-                            Layout.preferredWidth: 96
-                            Layout.minimumWidth: 96
+                        Layout.alignment: Qt.AlignHCenter
+                        Layout.preferredWidth: parent.width - JamiTheme.preferredMarginSize * 2
 
-                            Layout.maximumHeight: 96
-                            Layout.preferredHeight: 96
-                            Layout.minimumHeight: 96
+                        background: Rectangle {
+                            anchors.fill: parent
+                            AnimatedImage {
+                                id: spinnerMovie
 
-                            background: Rectangle {
                                 anchors.fill: parent
-                                AnimatedImage {
-                                    id: spinnerMovie
 
-                                    anchors.fill: parent
+                                source: "qrc:/images/jami_eclipse_spinner.gif"
 
-                                    source: "qrc:/images/jami_eclipse_spinner.gif"
-
-                                    playing: exportingSpinner.visible
-                                    paused: false
-                                    fillMode: Image.PreserveAspectFit
-                                    mipmap: true
-                                }
+                                playing: exportingSpinner.visible
+                                paused: false
+                                fillMode: Image.PreserveAspectFit
+                                mipmap: true
                             }
                         }
-
-                        Item{
-                            Layout.fillWidth: true
-
-                            Layout.maximumHeight: 20
-                            Layout.preferredHeight: 20
-                            Layout.minimumHeight: 20
-                        }
-
-                    }
-
-                    Item{
-                        Layout.alignment: Qt.AlignHCenter
-
-                        Layout.fillHeight: true
-                        Layout.minimumHeight: 40
-
-                        Layout.maximumWidth: 20
-                        Layout.preferredWidth: 20
-                        Layout.minimumWidth: 20
                     }
                 }
             }
 
-            Rectangle{
+            Rectangle {
                 id: exportedPage
 
                 Layout.fillWidth: true
                 Layout.fillHeight: true
 
-                ColumnLayout{
+                ColumnLayout {
                     anchors.fill: parent
-                    spacing: 8
-
-                    Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-                    RowLayout{
-                        spacing: 8
+                    anchors.centerIn: parent
 
+                    RowLayout {
                         Layout.alignment: Qt.AlignLeft
-                        Layout.fillWidth: true
-                        Layout.leftMargin: 16
+                        Layout.preferredWidth: parent.width - JamiTheme.preferredMarginSize * 2
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
 
-                        Label{
+                        Label {
                             id: yourPinLabel
 
                             Layout.alignment: Qt.AlignLeft
 
-                            Layout.preferredHeight: 25
-
                             wrapMode: Text.Wrap
                             text: "Your PIN is:"
                             font.kerning: true
@@ -455,21 +318,18 @@ Dialog {
                             verticalAlignment: Text.AlignVCenter
                         }
 
-                        Label{
+                        Label {
                             id: exportedPIN
 
-                            Layout.alignment: Qt.AlignHCenter
-
-                            Layout.preferredHeight: 25
+                            Layout.leftMargin: JamiTheme.preferredMarginSize / 2
 
                             wrapMode: Text.Wrap
                             text: "PIN"
-                            font.pointSize: 12
+                            font.pointSize: JamiTheme.menuFontSize
                             font.kerning: true
                             horizontalAlignment: Text.AlignHCenter
                             verticalAlignment: Text.AlignVCenter
                         }
-
                     }
 
                     Label {
@@ -484,9 +344,8 @@ Dialog {
                         padding: isSucessState ? 8 : 0
 
                         Layout.alignment: Qt.AlignLeft
-                        Layout.leftMargin: 12
-                        Layout.preferredWidth: 280 - 32
-                        Layout.preferredHeight: 50
+                        Layout.leftMargin: JamiTheme.preferredMarginSize
+                        Layout.preferredWidth: parent.width - JamiTheme.preferredMarginSize * 2
 
                         wrapMode: Text.Wrap
                         text: qsTr("This pin and the account password should be entered in your device within 10 minutes.")
@@ -508,10 +367,8 @@ Dialog {
                     }
 
                     RowLayout {
-                        spacing: 8
-
-                        width: 280
                         Layout.alignment: Qt.AlignRight
+                        Layout.fillWidth: true
 
                         Button {
                             id: btnCloseExportDialog
@@ -526,7 +383,7 @@ Dialog {
                             }
 
                             onClicked: {
-                                if(infoLabel.isSucessState){
+                                if(infoLabel.isSucessState) {
                                     accept()
                                 } else {
                                     reject()
diff --git a/src/settingsview/components/NameRegistrationDialog.qml b/src/settingsview/components/NameRegistrationDialog.qml
index ab9988d34..0e5b220f2 100644
--- a/src/settingsview/components/NameRegistrationDialog.qml
+++ b/src/settingsview/components/NameRegistrationDialog.qml
@@ -105,7 +105,7 @@ Dialog {
     }
 
     contentItem: Rectangle{
-        implicitWidth: 365
+        implicitWidth: 350
         implicitHeight: 208
 
         StackLayout{
diff --git a/src/settingsview/components/PluginItemDelegate.qml b/src/settingsview/components/PluginItemDelegate.qml
index c9e6a5c24..de71dd5b5 100644
--- a/src/settingsview/components/PluginItemDelegate.qml
+++ b/src/settingsview/components/PluginItemDelegate.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2019-2020 by Savoir-faire Linux
  * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
  *
diff --git a/src/settingsview/components/PluginListPreferencesView.qml b/src/settingsview/components/PluginListPreferencesView.qml
index 9d0eb1cf1..f35149130 100644
--- a/src/settingsview/components/PluginListPreferencesView.qml
+++ b/src/settingsview/components/PluginListPreferencesView.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Aline Gondim Santos   <aline.gondimsantos@savoirfairelinux.com>
  *
@@ -109,10 +109,10 @@ Rectangle {
 
         Label{
             Layout.alignment: Qt.AlignHCenter
-            background: Rectangle{
+            background: Rectangle {
                 Image {
                     anchors.centerIn: parent
-                    source: "file:"+pluginIcon
+                    source: pluginIcon === "" ? "" : "file:" + pluginIcon
                     height: 35
                     width: 35
                 }
diff --git a/src/settingsview/components/PluginListSettingsView.qml b/src/settingsview/components/PluginListSettingsView.qml
index 3d1c1f1c1..543b38bff 100644
--- a/src/settingsview/components/PluginListSettingsView.qml
+++ b/src/settingsview/components/PluginListSettingsView.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2019-2020 by Savoir-faire Linux
  * Author: Aline Gondim Sanots  <aline.gondimsantos@savoirfairelinux.com>
  *
@@ -76,14 +76,6 @@ Rectangle {
         nameFilters: [qsTr("Plugin Files") + " (*.jpl)", qsTr(
                 "All files") + " (*)"]
 
-        onRejected: {}
-
-        onVisibleChanged: {
-            if (!visible) {
-                rejected()
-            }
-        }
-
         onAccepted: {
             var url = ClientWrapper.utilsAdaptor.getAbsPath(file.toString())
             ClientWrapper.pluginModel.installPlugin(url, true)
@@ -113,6 +105,7 @@ Rectangle {
             Layout.alignment: Qt.AlignCenter
             Layout.preferredWidth: JamiTheme.preferredFieldWidth
             Layout.preferredHeight: JamiTheme.preferredFieldHeight
+            Layout.topMargin: JamiTheme.preferredMarginSize / 2
 
             color: JamiTheme.buttonTintedBlack
             hoveredColor: JamiTheme.buttonTintedBlackHovered
@@ -123,8 +116,6 @@ Rectangle {
             source: "qrc:/images/icons/round-add-24px.svg"
 
             text: qsTr("Install Plugin")
-            font.pointSize: JamiTheme.textFontSize
-            font.kerning: true
 
             onClicked: {
               openPluginFileSlot()
diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml
index 156706d06..85d5fba45 100644
--- a/src/settingsview/components/PluginSettingsPage.qml
+++ b/src/settingsview/components/PluginSettingsPage.qml
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2020 by Savoir-faire Linux
  * Author: Aline Gondim Santos  <aline.gondimsantos@savoirfairelinux.com>
  *
@@ -39,29 +39,28 @@ Rectangle {
         ClientWrapper.pluginModel.setPluginsEnabled(state)
     }
 
-    Layout.fillHeight: true
-    Layout.maximumWidth: JamiTheme.maximumWidthSettingsView
-    anchors.centerIn: parent
-
     signal backArrowClicked
 
     ColumnLayout {
         anchors.fill: root
 
         RowLayout {
-            id:pageTitle
+            id: pageTitle
+            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+            Layout.leftMargin: JamiTheme.preferredMarginSize
+            Layout.fillWidth: true
             Layout.preferredHeight: 64
-            Layout.leftMargin: 16
-            Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
 
             HoverableButton {
-                Layout.preferredWidth: 30
+                id: backToSettingsMenuButton
 
-                radius: 30
+                Layout.preferredWidth: JamiTheme.preferredFieldHeight
+                Layout.preferredHeight: JamiTheme.preferredFieldHeight
+
+                radius: JamiTheme.preferredFieldHeight
                 source: "qrc:/images/icons/ic_arrow_back_24px.svg"
                 backgroundColor: "white"
                 onExitColor: "white"
-
                 toolTipText: qsTr("Toggle to display side panel")
                 hoverEnabled: true
                 visible: mainViewWindow.sidePanelHidden
@@ -94,15 +93,14 @@ Rectangle {
             clip: true
 
             ColumnLayout {
-                id: pluginViewLayout
                 width: root.width
 
                 ToggleSwitch {
                     id: enabledplugin
                     Layout.fillWidth: true
-                    Layout.topMargin: 15
-                    Layout.leftMargin: 16
-                    Layout.rightMargin: 16
+                    Layout.topMargin: JamiTheme.preferredMarginSize
+                    Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
 
                     labelText: "Enable"
                     fontPointSize: JamiTheme.headerFontSize
@@ -121,13 +119,13 @@ Rectangle {
                 PluginListSettingsView {
                     id: pluginListSettingsView
                     Layout.fillWidth: true
-                    Layout.leftMargin: 16
-                    Layout.rightMargin: 16
+                    Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
                     Layout.alignment: Qt.AlignHCenter
 
                     pluginListPreferencesView: pluginListPreferencesView
 
-                    Layout.topMargin: 15
+                    Layout.topMargin: JamiTheme.preferredMarginSize
                     Layout.minimumHeight: 0
                     Layout.preferredHeight: childrenRect.height
                 }
@@ -135,8 +133,9 @@ Rectangle {
                 PluginListPreferencesView {
                     id: pluginListPreferencesView
                     Layout.fillWidth: true
-                    Layout.leftMargin: 16
-                    Layout.rightMargin: 16
+                    Layout.leftMargin: JamiTheme.preferredMarginSize
+                    Layout.rightMargin: JamiTheme.preferredMarginSize
+                    Layout.bottomMargin: JamiTheme.preferredMarginSize
                     Layout.minimumHeight: 0
                     Layout.preferredHeight: childrenRect.height
                 }
diff --git a/src/settingsview/components/RevokeDevicePasswordDialog.qml b/src/settingsview/components/RevokeDevicePasswordDialog.qml
index 69d433f9f..e3c3ba62e 100644
--- a/src/settingsview/components/RevokeDevicePasswordDialog.qml
+++ b/src/settingsview/components/RevokeDevicePasswordDialog.qml
@@ -20,11 +20,11 @@ import QtQuick 2.15
 import QtQuick.Controls 2.14
 import QtQuick.Layouts 1.14
 import QtQuick.Controls.Styles 1.4
-
+import "../../constant"
 import "../../commoncomponents"
 
 Dialog {
-    id: revokeDevicePasswordDialog
+    id: root
 
     property string deviceId : ""
 
@@ -33,160 +33,95 @@ Dialog {
     function openRevokeDeviceDialog(deviceIdIn){
         deviceId = deviceIdIn
         passwordEdit.clear()
-        revokeDevicePasswordDialog.open()
+        root.open()
     }
 
-    visible: false
+    header : Rectangle {
+        width: parent.width
+        height: 64
+        color: "transparent"
+        Text {
+            anchors.fill: parent
+            anchors.leftMargin: JamiTheme.preferredMarginSize
+            anchors.topMargin: JamiTheme.preferredMarginSize
+
+            text: qsTr("Enter this account's password to confirm the removal of this device")
+            wrapMode: Text.Wrap
+            font.pointSize: JamiTheme.headerFontSize
+        }
+    }
 
-    anchors.centerIn: parent.Center
+    visible: false
     x: (parent.width - width) / 2
     y: (parent.height - height) / 2
 
-    title: qsTr("Enter this account's password to confirm the removal of this device")
-
-    onClosed: {
-        reject()
-    }
-
-    onAccepted:{
+    onAccepted: {
         revokeDeviceWithPassword(deviceId,passwordEdit.text)
     }
 
-    contentItem: Rectangle{
-        implicitWidth: 365
-        implicitHeight: 120
+    contentItem: Rectangle {
+        implicitWidth: 350
+        implicitHeight: contentLayout.implicitHeight + 64 + JamiTheme.preferredMarginSize
 
-        ColumnLayout{
+        ColumnLayout {
+            id: contentLayout
             anchors.fill: parent
-            spacing: 7
-
-            Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
-
-            Item{
-                Layout.fillHeight: true
+            anchors.centerIn: parent
 
-                Layout.maximumWidth: 20
-                Layout.preferredWidth: 20
-                Layout.minimumWidth: 20
-            }
-
-            InfoLineEdit{
+            MaterialLineEdit {
                 id: passwordEdit
 
+                Layout.preferredHeight: 48
+                Layout.fillWidth: true
                 Layout.alignment: Qt.AlignHCenter
-
-                Layout.minimumWidth: 294
-                Layout.preferredWidth: 294
-
-                Layout.preferredHeight: 30
-                Layout.minimumHeight: 30
+                Layout.maximumWidth: 300
 
                 echoMode: TextInput.Password
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
 
                 placeholderText: qsTr("Password")
             }
 
-            Item{
-                Layout.fillHeight: true
+            RowLayout {
+                Layout.topMargin: JamiTheme.preferredMarginSize / 2
+                Layout.alignment: Qt.AlignRight
 
-                Layout.maximumWidth: 20
-                Layout.preferredWidth: 20
-                Layout.minimumWidth: 20
-            }
-
-            RowLayout{
-                spacing: 7
-
-                Layout.alignment: Qt.AlignHCenter
-
-                Layout.fillWidth: true
+                Button {
+                    id: btnChangePasswordConfirm
 
-                Item{
-                    Layout.fillWidth: true
-
-                    Layout.maximumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.minimumHeight: 20
-                }
-
-                HoverableRadiusButton{
-                    id: btnOkay
-
-                    Layout.maximumWidth: 130
-                    Layout.preferredWidth: 130
-                    Layout.minimumWidth: 130
-
-                    Layout.maximumHeight: 30
-                    Layout.preferredHeight: 30
-                    Layout.minimumHeight: 30
-
-                    radius: height /2
+                    contentItem: Text {
+                        text: qsTr("CONFIRM")
+                        color: JamiTheme.buttonTintedBlue
+                    }
 
-                    text: qsTr("Okay")
-                    font.pointSize: 10
-                    font.kerning: true
+                    background: Rectangle {
+                        color: "transparent"
+                    }
 
                     onClicked: {
-                        accept()
+                        timerToOperate.restart()
                     }
                 }
 
-                Item{
-                    Layout.fillWidth: true
-                    Layout.minimumWidth: 40
-
-                    Layout.maximumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.minimumHeight: 20
-                }
-
-                HoverableButtonTextItem {
-                    id: btnCancel
 
-                    Layout.maximumWidth: 130
-                    Layout.preferredWidth: 130
-                    Layout.minimumWidth: 130
+                Button {
+                    id: btnChangePasswordCancel
+                    Layout.leftMargin: JamiTheme.preferredMarginSize / 2
 
-                    Layout.maximumHeight: 30
-                    Layout.preferredHeight: 30
-                    Layout.minimumHeight: 30
-
-                    backgroundColor: "red"
-                    onEnterColor: Qt.rgba(150 / 256, 0, 0, 0.7)
-                    onDisabledBackgroundColor: Qt.rgba(
-                                                   255 / 256,
-                                                   0, 0, 0.8)
-                    onPressColor: backgroundColor
-                    textColor: "white"
-
-                    radius: height /2
+                    contentItem: Text {
+                        text: qsTr("CANCEL")
+                        color: JamiTheme.buttonTintedBlue
+                    }
 
-                    text: qsTr("Cancel")
-                    font.pointSize: 10
-                    font.kerning: true
+                    background: Rectangle {
+                        color: "transparent"
+                    }
 
                     onClicked: {
-                        reject()
+                        root.reject()
                     }
                 }
-
-                Item{
-                    Layout.fillWidth: true
-                    Layout.minimumWidth: 40
-
-                    Layout.maximumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.minimumHeight: 20
-                }
-
-            }
-
-            Item{
-                Layout.fillHeight: true
-
-                Layout.maximumWidth: 20
-                Layout.preferredWidth: 20
-                Layout.minimumWidth: 20
             }
         }
     }
diff --git a/src/settingsview/components/ToggleSwitch.qml b/src/settingsview/components/ToggleSwitch.qml
index cd4f5a449..bb8cddb66 100644
--- a/src/settingsview/components/ToggleSwitch.qml
+++ b/src/settingsview/components/ToggleSwitch.qml
@@ -24,8 +24,10 @@ import QtQuick.Layouts 1.3
 import QtGraphicalEffects 1.14
 import QtQuick.Controls.Styles 1.4
 import "../../commoncomponents"
+import "../../constant"
 
 RowLayout {
+    id: root
     property string labelText: ""
     property int widthOfSwitch: 50
     property int heightOfSwitch: 10
@@ -39,34 +41,25 @@ RowLayout {
 
     signal switchToggled
 
-    spacing: 8
-    Layout.fillWidth: true
-    Layout.maximumHeight: 32
-
-    ElidedTextLabel {
+    Text {
         Layout.fillWidth: true
-
-        Layout.minimumHeight: heightOfLayout
         Layout.preferredHeight: heightOfLayout
-        Layout.maximumHeight: heightOfLayout
-
-        eText: qsTr(labelText)
-        fontSize: fontPointSize
-        maxWidth: parent.width - widthOfSwitch
+        Layout.rightMargin: JamiTheme.preferredMarginSize
 
+        text: qsTr(labelText)
+        font.pointSize: fontPointSize
+        font.kerning: true
+        elide: Text.ElideRight
+        horizontalAlignment: Text.AlignLeft
+        verticalAlignment: Text.AlignVCenter
     }
 
     Switch {
         id: switchOfLayout
         Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
 
-        Layout.maximumWidth: widthOfSwitch
         Layout.preferredWidth: widthOfSwitch
-        Layout.minimumWidth: widthOfSwitch
-
-        Layout.minimumHeight: heightOfSwitch
         Layout.preferredHeight: heightOfSwitch
-        Layout.maximumHeight: heightOfSwitch
 
         hoverEnabled: true
         ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval
diff --git a/src/settingsview/components/VideoCodecDelegate.qml b/src/settingsview/components/VideoCodecDelegate.qml
index 0bde72ee8..853dd8804 100644
--- a/src/settingsview/components/VideoCodecDelegate.qml
+++ b/src/settingsview/components/VideoCodecDelegate.qml
@@ -26,34 +26,27 @@ import QtQuick.Controls.Styles 1.4
 import net.jami.Models 1.0
 
 ItemDelegate {
-    id: videoCodecDelegate
+    id: root
 
     property string videoCodecName : ""
     property bool isEnabled : false
     property int videoCodecId
+    property int checkBoxWidth: 24
 
     signal videoCodecStateChange(string idToSet , bool isToBeEnabled)
 
-    property int checkBoxWidth: 24
-
     highlighted: ListView.isCurrentItem
 
-    RowLayout{
+    RowLayout {
         anchors.fill: parent
 
-        spacing: 10
-
         CheckBox{
             id: checkBoxIsEnabled
 
             Layout.leftMargin: 20
-
             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
             Layout.fillHeight: true
-
-            Layout.minimumWidth: checkBoxWidth
             Layout.preferredWidth: checkBoxWidth
-            Layout.maximumWidth: checkBoxWidth
 
             tristate: false
             checkState: isEnabled ? Qt.Checked : Qt.Unchecked
@@ -72,7 +65,7 @@ ItemDelegate {
                     var result
                     var result_bool
 
-                    if (checkState === Qt.Checked){
+                    if (checkState === Qt.Checked) {
                         result = Qt.Unchecked
                         result_bool = false
                     } else {
@@ -84,17 +77,18 @@ ItemDelegate {
                 }
         }
 
-        Label{
+        Label {
             id: formatNameLabel
 
-            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
-            horizontalAlignment: Text.AlignLeft
-            verticalAlignment: Text.AlignVCenter
-
             Layout.fillWidth: true
             Layout.fillHeight: true
+            Layout.rightMargin: JamiTheme.preferredMarginSize / 2
+            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
 
             text: videoCodecName
+            elide: Text.ElideRight
+            horizontalAlignment: Text.AlignLeft
+            verticalAlignment: Text.AlignVCenter
             font.pointSize: 8
             font.kerning: true
         }
diff --git a/src/wizardview/WizardView.qml b/src/wizardview/WizardView.qml
index f775e352b..6aea2ea93 100644
--- a/src/wizardview/WizardView.qml
+++ b/src/wizardview/WizardView.qml
@@ -61,9 +61,7 @@ Rectangle {
 
     property var inputParaObject: ({})
 
-    /*
-     * signal to redirect the page to main view
-     */
+    // signal to redirect the page to main view
     signal needToShowMainViewWindow(int accountIndex)
     signal wizardViewIsClosed
 
@@ -168,8 +166,6 @@ Rectangle {
         id: passwordDialog
 
         anchors.centerIn: parent.Center
-        x: (parent.width - width) / 2
-        y: (parent.height - height) / 2
 
         visible: false
         purpose: PasswordDialog.ExportAccount
diff --git a/src/wizardview/components/BackupKeyPage.qml b/src/wizardview/components/BackupKeyPage.qml
index 6245c44f2..f0817971d 100644
--- a/src/wizardview/components/BackupKeyPage.qml
+++ b/src/wizardview/components/BackupKeyPage.qml
@@ -32,9 +32,7 @@ Rectangle {
     signal leavePage
     signal export_Btn_FileDialogAccepted(bool accepted, string folderDir)
 
-    /*
-     * JamiFileDialog for exporting account
-     */
+    // JamiFileDialog for exporting account
     JamiFileDialog {
         id: exportBtn_Dialog
 
diff --git a/src/wizardview/components/CollapsiblePasswordWidget.qml b/src/wizardview/components/CollapsiblePasswordWidget.qml
index 4f0feb191..e8a916e35 100644
--- a/src/wizardview/components/CollapsiblePasswordWidget.qml
+++ b/src/wizardview/components/CollapsiblePasswordWidget.qml
@@ -23,10 +23,7 @@ import QtQuick.Controls 2.14
 import "../../constant"
 import "../../commoncomponents"
 
-/*
- * an independent widget that keeps the password's textfields, including password field and confirm password field
- */
-
+// An independent widget that keeps the password's textfields, including password field and confirm password field
 GridLayout {
     id: root
 
diff --git a/src/wizardview/components/CreateAccountPage.qml b/src/wizardview/components/CreateAccountPage.qml
index d10469fd1..8e694da49 100644
--- a/src/wizardview/components/CreateAccountPage.qml
+++ b/src/wizardview/components/CreateAccountPage.qml
@@ -57,9 +57,7 @@ Rectangle {
         onActivated: leavePage()
     }
 
-    /*
-    * JamiFileDialog for exporting account
-    */
+    // JamiFileDialog for exporting account
     JamiFileDialog {
         id: exportBtn_Dialog
 
diff --git a/src/wizardview/components/HoverableGradientButton.qml b/src/wizardview/components/HoverableGradientButton.qml
index 09e967152..c602f52f0 100644
--- a/src/wizardview/components/HoverableGradientButton.qml
+++ b/src/wizardview/components/HoverableGradientButton.qml
@@ -22,13 +22,12 @@ import QtGraphicalEffects 1.15
 import net.jami.Models 1.0
 
 
-/*
- * HoverableButton contains the following configurable properties:
- * 1. Color changes on different button state
- * 2. Radius control (rounded)
- * 3. Text content or image content
- * 4. Can use OnClicked slot to implement some click logic
- */
+//
+// HoverableButton contains the following configurable properties:
+// 1. Color changes on different button state
+// 2. Radius control (rounded)
+// 3. Text content or image content
+// 4. Can use OnClicked slot to implement some click logic
 Button {
     id: hoverableButton
     property int fontPointSize: 9
-- 
GitLab