mainview: account combo box visible from settings menu

Change-Id: I8eafea9d1cf07a11a8780f8d2f3495480b2360ed
diff --git a/src/settingsview/SettingsView.qml b/src/settingsview/SettingsView.qml
index 3cc0f77..de66712 100644
--- a/src/settingsview/SettingsView.qml
+++ b/src/settingsview/SettingsView.qml
@@ -29,6 +29,7 @@
 Rectangle {
     id: settingsViewWindow
 
+
     enum SettingsMenu{
         Account,
         General,
@@ -144,9 +145,10 @@
     signal settingsViewWindowNeedToShowMainViewWindow(bool accountDeleted)
     signal settingsViewWindowNeedToShowNewWizardWindow
 
-    property int textFontSize: 9
+    signal settingsBackArrowClicked
 
     visible: true
+    anchors.fill: parent
 
     Rectangle {
         id: settingsViewRect
@@ -161,130 +163,86 @@
             }
         }
 
-        SplitView {
+        StackLayout {
             anchors.fill: parent
-            orientation: Qt.Horizontal
 
-            handle: Rectangle {
-                    implicitWidth: 3
-                    implicitHeight: 3
-                    color: JamiTheme.lightGrey_
-                }
+            id: rightSettingsWidget
 
-            Rectangle {
-                id: leftSettingsWidget
+            property int pageIdCurrentAccountSettingsScrollPage: 0
+            property int pageIdCurrentSIPAccountSettingScrollPage: 1
+            property int pageIdGeneralSettingsPage: 2
+            property int pageIdAvSettingPage: 3
+            property int pageIdPluginSettingsPage: 4
 
-                SplitView.minimumWidth: 200
-                SplitView.preferredWidth: 200
-                SplitView.maximumWidth: parent.width / 2
-                SplitView.fillHeight: true
-                LeftPanelView {
-                    id: leftPanelView
-
-                    contentViewportWidth: leftSettingsWidget.width
-                    contentViewPortHeight: leftSettingsWidget.height
-
-                    onBtnExitClicked:{
-                        leaveSettingsSlot()
-                    }
-
-                    Connections {
-                        target: leftPanelView.btnAccountSettings
-                        function onCheckedToggledForRightPanel(checked) {
-                            setSelected(SettingsView.Account)
+            currentIndex: {
+                switch(selectedMenu){
+                    case SettingsView.Account:
+                        if(settingsViewRect.isSIP){
+                            return pageIdCurrentSIPAccountSettingScrollPage
+                        } else {
+                            return pageIdCurrentAccountSettingsScrollPage
                         }
-                    }
-                    Connections {
-                        target: leftPanelView.btnGeneralSettings
-                        function onCheckedToggledForRightPanel(checked) {
-                            setSelected(SettingsView.General)
-                        }
-                    }
-                    Connections {
-                        target: leftPanelView.btnMediaSettings
-                        function onCheckedToggledForRightPanel(checked) {
-                            setSelected(SettingsView.Media)
-                        }
-                    }
-                    Connections {
-                        target: leftPanelView.btnPluginSettings
-                        function onCheckedToggledForRightPanel(checked) {
-                            setSelected(SettingsView.Plugin)
-                        }
-                    }
+                    case SettingsView.General:
+                        return pageIdGeneralSettingsPage
+                    case SettingsView.Media:
+                        return pageIdAvSettingPage
+                    case SettingsView.Plugin:
+                        return pageIdPluginSettingsPage
                 }
             }
 
-            StackLayout {
-                id: rightSettingsWidget
+            // current account setting scroll page, index 0
+            CurrentAccountSettingsScrollPage {
+                id: currentAccountSettingsScrollWidget
 
-                property int pageIdCurrentAccountSettingsScrollPage: 0
-                property int pageIdCurrentSIPAccountSettingScrollPage: 1
-                property int pageIdGeneralSettingsPage: 2
-                property int pageIdAvSettingPage: 3
-                property int pageIdPluginSettingsPage: 4
-
-                currentIndex: {
-                    switch(selectedMenu){
-                        case SettingsView.Account:
-                            if(settingsViewRect.isSIP){
-                                return pageIdCurrentSIPAccountSettingScrollPage
-                            } else {
-                                return pageIdCurrentAccountSettingsScrollPage
-                            }
-                        case SettingsView.General:
-                            return pageIdGeneralSettingsPage
-                        case SettingsView.Media:
-                            return pageIdAvSettingPage
-                        case SettingsView.Plugin:
-                            return pageIdPluginSettingsPage
-                    }
+                onNavigateToMainView: {
+                    leaveSettingsSlot(true)
                 }
 
-                SplitView.fillWidth: true
-                SplitView.fillHeight: true
+                onNavigateToNewWizardView: {
+                    leaveSettingsSlot(true, false)
+                }
+            }
 
-                // current account setting scroll page, index 0
-                CurrentAccountSettingsScrollPage {
-                    id: currentAccountSettingsScrollWidget
+            // current SIP account setting scroll page, index 1
+            CurrentSIPAccountSettingScrollPage {
+                id: currentSIPAccountSettingsScrollWidget
 
-                    onNavigateToMainView:{
-                        leaveSettingsSlot(true)
-                    }
-
-                    onNavigateToNewWizardView: {
-                        leaveSettingsSlot(true, false)
-                    }
+                onNavigateToMainView: {
+                    leaveSettingsSlot(true)
                 }
 
-                // current SIP account setting scroll page, index 1
-                CurrentSIPAccountSettingScrollPage {
-                    id: currentSIPAccountSettingsScrollWidget
-
-                    onNavigateToMainView: {
-                        leaveSettingsSlot(true)
-                    }
-
-                    onNavigateToNewWizardView: {
-                        leaveSettingsSlot(true, false)
-                    }
+                onNavigateToNewWizardView: {
+                    leaveSettingsSlot(true, false)
                 }
+            }
 
-                // general setting page, index 2
-                GeneralSettingsPage {
-                    id: generalSettings
-                }
+            // general setting page, index 2
+            GeneralSettingsPage {
+                id: generalSettings
+            }
 
-                // av setting page, index 3
-                AvSettingPage {
-                    id: avSettings
-                }
+            // av setting page, index 3
+            AvSettingPage {
+                id: avSettings
+            }
 
-                // plugin setting page, index 4
-                PluginSettingsPage {
-                    id: pluginSettings
-                }
+            // plugin setting page, index 4
+            PluginSettingsPage {
+                id: pluginSettings
             }
         }
     }
+
+
+    /*
+     * Back button signal redirection
+     */
+    Component.onCompleted: {
+        currentAccountSettingsScrollWidget.backArrowClicked.connect(settingsBackArrowClicked)
+        currentSIPAccountSettingsScrollWidget.backArrowClicked.connect(settingsBackArrowClicked)
+        generalSettings.backArrowClicked.connect(settingsBackArrowClicked)
+        avSettings.backArrowClicked.connect(settingsBackArrowClicked)
+        pluginSettings.backArrowClicked.connect(settingsBackArrowClicked)
+    }
 }
diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml
index a999e32..52d3e05 100644
--- a/src/settingsview/components/AvSettingPage.qml
+++ b/src/settingsview/components/AvSettingPage.qml
@@ -24,6 +24,7 @@
 import QtGraphicalEffects 1.14
 import QtQuick.Controls.Styles 1.4
 import net.jami.Models 1.0
+import "../../commoncomponents"
 
 Rectangle {
     id: avSettingPage
@@ -216,6 +217,7 @@
     }
 
     property bool previewAvailable: false
+    signal backArrowClicked
 
     Connections{
         target: ClientWrapper.avmodel
@@ -267,18 +269,47 @@
                     Layout.maximumHeight: 10
                 }
 
-                Label {
+                RowLayout {
+
+                    Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+                    Layout.leftMargin: 16
                     Layout.fillWidth: true
-                    Layout.minimumHeight: 25
-                    Layout.preferredHeight: 25
-                    Layout.maximumHeight: 25
+                    Layout.maximumHeight: 64
+                    Layout.minimumHeight: 64
+                    Layout.preferredHeight: 64
 
-                    text: qsTr("Audio / Video")
-                    font.pointSize: 15
-                    font.kerning: true
+                    HoverableButton {
 
-                    horizontalAlignment: Text.AlignLeft
-                    verticalAlignment: Text.AlignVCenter
+                        Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+                        Layout.preferredWidth: 30
+                        Layout.preferredHeight: 30
+
+                        radius: 30
+                        source: "qrc:/images/icons/ic_arrow_back_24px.svg"
+                        backgroundColor: "white"
+                        onExitColor: "white"
+
+                        visible: mainViewWindow.sidePanelHidden
+
+                        onClicked: {
+                            backArrowClicked()
+                        }
+                    }
+
+
+                    Label {
+                        Layout.fillWidth: true
+                        Layout.minimumHeight: 25
+                        Layout.preferredHeight: 25
+                        Layout.maximumHeight: 25
+
+                        text: qsTr("Audio / Video")
+                        font.pointSize: 15
+                        font.kerning: true
+
+                        horizontalAlignment: Text.AlignLeft
+                        verticalAlignment: Text.AlignVCenter
+                    }
                 }
 
                 Item {
diff --git a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
index b3d4392..78358f1 100644
--- a/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
+++ b/src/settingsview/components/CurrentAccountSettingsScrollPage.qml
@@ -48,6 +48,7 @@
 
     signal navigateToMainView
     signal navigateToNewWizardView
+    signal backArrowClicked
 
     function refreshRelevantUI(){
         refreshVariable++
@@ -479,6 +480,26 @@
                 Layout.minimumWidth: 30
             }
 
+
+            HoverableButton {
+
+                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+                Layout.preferredWidth: 30
+                Layout.preferredHeight: 30
+
+                radius: 30
+                source: "qrc:/images/icons/ic_arrow_back_24px.svg"
+                backgroundColor: "white"
+                onExitColor: "white"
+
+                visible: mainViewWindow.sidePanelHidden
+
+                onClicked: {
+                    backArrowClicked()
+                }
+            }
+
+
             Label {
                 id: accountPageTitle
 
diff --git a/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml b/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
index b5d1d2c..68de1e1 100644
--- a/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
+++ b/src/settingsview/components/CurrentSIPAccountSettingScrollPage.qml
@@ -29,6 +29,7 @@
 Rectangle {
     signal navigateToMainView
     signal navigateToNewWizardView
+    signal backArrowClicked
 
     function updateAccountInfoDisplayed() {
         displaySIPNameLineEdit.text = ClientWrapper.settingsAdaptor.getCurrentAccount_Profile_Info_Alias()
@@ -124,6 +125,24 @@
                 Layout.minimumWidth: 48
             }
 
+            HoverableButton {
+
+                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+                Layout.preferredWidth: 30
+                Layout.preferredHeight: 30
+
+                radius: 30
+                source: "qrc:/images/icons/ic_arrow_back_24px.svg"
+                backgroundColor: "white"
+                onExitColor: "white"
+
+                visible: mainViewWindow.sidePanelHidden
+
+                onClicked: {
+                    backArrowClicked()
+                }
+            }
+
             Label {
                 id: accountPageTitleSIP
 
diff --git a/src/settingsview/components/GeneralSettingsPage.qml b/src/settingsview/components/GeneralSettingsPage.qml
index 72eb4d1..50895fb 100644
--- a/src/settingsview/components/GeneralSettingsPage.qml
+++ b/src/settingsview/components/GeneralSettingsPage.qml
@@ -74,7 +74,7 @@
         updateRecordQualityTimer.restart()
     }
 
-    Timer{
+    Timer {
         id: updateRecordQualityTimer
 
         interval: 500
@@ -148,6 +148,8 @@
     //property AVModel avmodel: ClientWrapper.accountAdaptor.avModel()
     property string recordPath: ClientWrapper.settingsAdaptor.getDir_Document()
 
+    signal backArrowClicked
+
     onDownloadPathChanged: {
         if(downloadPath === "") return
         ClientWrapper.settingsAdaptor.setDownloadPath(downloadPath)
@@ -164,46 +166,74 @@
     Layout.fillHeight: true
     Layout.fillWidth: true
 
-    ScrollView{
+    ScrollView {
         anchors.fill: parent
         clip: true
 
-        RowLayout {
-            width: generalSettingsRect.width
-            height: generalSettingsRect.height
+        ColumnLayout {
+            spacing: 8
 
-            spacing: 0
+            Layout.fillHeight: true
+            Layout.maximumWidth: 580
+            Layout.preferredWidth: 580
+            Layout.minimumWidth: 580
 
-            Item {
-                Layout.fillHeight: true
-                Layout.maximumWidth: 48
-                Layout.preferredWidth: 48
-                Layout.minimumWidth: 48
-            }
+            RowLayout {
 
-            ColumnLayout {
-                spacing: 6
+                Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+                Layout.leftMargin: 16
+                Layout.fillWidth: true
+                Layout.maximumHeight: 64
+                Layout.minimumHeight: 64
+                Layout.preferredHeight: 64
 
-                Layout.fillHeight: true
-                Layout.maximumWidth: 580
-                Layout.preferredWidth: 580
-                Layout.minimumWidth: 580
+                HoverableButton {
+                    id: backToSettingsMenuButton
 
-                Item {
-                    Layout.fillWidth: true
-                    Layout.minimumHeight: 10
-                    Layout.preferredHeight: 10
-                    Layout.maximumHeight: 10
+                    Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+                    Layout.preferredWidth: 30
+                    Layout.preferredHeight: 30
+
+                    radius: 30
+                    source: "qrc:/images/icons/ic_arrow_back_24px.svg"
+                    backgroundColor: "white"
+                    onExitColor: "white"
+
+                    visible: mainViewWindow.sidePanelHidden
+
+                    onClicked: {
+                        backArrowClicked()
+                    }
                 }
 
                 Label {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: 25
-                    Layout.preferredHeight: 25
-                    Layout.maximumHeight: 25
+                    Layout.minimumHeight: 64
+                    Layout.preferredHeight: 64
+                    Layout.maximumHeight: 64
 
                     text: qsTr("General")
-                    font.pointSize: 15
+                    font.pointSize: JamiTheme.titleFontSize
+                    font.kerning: true
+
+                    horizontalAlignment: Text.AlignLeft
+                    verticalAlignment: Text.AlignVCenter
+                }
+            }
+
+            // system setting panel
+            ColumnLayout {
+                spacing: 6
+                Layout.fillWidth: true
+
+                Label {
+                    Layout.fillWidth: true
+                    Layout.minimumHeight: 21
+                    Layout.preferredHeight: 21
+                    Layout.maximumHeight: 21
+
+                    text: qsTr("System")
+                    font.pointSize: 13
                     font.kerning: true
 
                     horizontalAlignment: Text.AlignLeft
@@ -212,464 +242,432 @@
 
                 Item {
                     Layout.fillWidth: true
-                    Layout.minimumHeight: 24
-                    Layout.preferredHeight: 24
-                    Layout.maximumHeight: 24
+
+                    Layout.minimumHeight: 10
+                    Layout.preferredHeight: 10
+                    Layout.maximumHeight: 10
                 }
 
-                // system setting panel
                 ColumnLayout {
                     spacing: 6
                     Layout.fillWidth: true
 
-                    Label {
-                        Layout.fillWidth: true
-                        Layout.minimumHeight: 21
-                        Layout.preferredHeight: 21
-                        Layout.maximumHeight: 21
+                    ToggleSwitch {
+                        id: notificationCheckBox
 
-                        text: qsTr("System")
-                        font.pointSize: 13
-                        font.kerning: true
+                        Layout.leftMargin: 20
 
-                        horizontalAlignment: Text.AlignLeft
-                        verticalAlignment: Text.AlignVCenter
+                        labelText: "Enable desktop notifications"
+                        fontPointSize: 11
+
+                        onSwitchToggled: {
+                            slotSetNotifications(checked)
+                        }
                     }
 
-                    Item {
-                        Layout.fillWidth: true
+                    ToggleSwitch {
+                        id: closeOrMinCheckBox
 
-                        Layout.minimumHeight: 10
-                        Layout.preferredHeight: 10
-                        Layout.maximumHeight: 10
+                        Layout.leftMargin: 20
+
+                        labelText: "Keep minimize on close"
+                        fontPointSize: 11
+
+                        onSwitchToggled: {
+                            slotSetClosedOrMin(checked)
+                        }
                     }
 
-                    ColumnLayout {
+                    ToggleSwitch {
+                        id: applicationOnStartUpCheckBox
+
+                        Layout.leftMargin: 20
+
+                        labelText: "Run on Startup"
+                        fontPointSize: 11
+
+                        onSwitchToggled: {
+                            slotSetRunOnStartUp(checked)
+                        }
+                    }
+
+                    RowLayout {
                         spacing: 6
+
+                        Layout.leftMargin: 20
                         Layout.fillWidth: true
+                        Layout.maximumHeight: 30
 
-                        ToggleSwitch {
-                            id: notificationCheckBox
+                        Label {
+                            Layout.fillHeight: true
 
-                            Layout.leftMargin: 20
+                            Layout.maximumWidth: 94
+                            Layout.preferredWidth: 94
+                            Layout.minimumWidth: 94
 
-                            labelText: "Enable desktop notifications"
-                            fontPointSize: 11
+                            text: qsTr("Download folder")
+                            font.pointSize: 10
+                            font.kerning: true
 
-                            onSwitchToggled: {
-                                slotSetNotifications(checked)
-                            }
+                            horizontalAlignment: Text.AlignLeft
+                            verticalAlignment: Text.AlignVCenter
                         }
 
-                        ToggleSwitch {
-                            id: closeOrMinCheckBox
-
-                            Layout.leftMargin: 20
-
-                            labelText: "Keep minimize on close"
-                            fontPointSize: 11
-
-                            onSwitchToggled: {
-                                slotSetClosedOrMin(checked)
-                            }
-                        }
-
-                        ToggleSwitch {
-                            id: applicationOnStartUpCheckBox
-
-                            Layout.leftMargin: 20
-
-                            labelText: "Run on Startup"
-                            fontPointSize: 11
-
-                            onSwitchToggled: {
-                                slotSetRunOnStartUp(checked)
-                            }
-                        }
-
-                        RowLayout {
-                            spacing: 6
-
-                            Layout.leftMargin: 20
+                        Item {
+                            Layout.fillHeight: true
                             Layout.fillWidth: true
+                        }
+
+                        HoverableRadiusButton {
+                            id: downloadButton
+
+                            Layout.maximumWidth: 320
+                            Layout.preferredWidth: 320
+                            Layout.minimumWidth: 320
+
+                            Layout.minimumHeight: 30
+                            Layout.preferredHeight: 30
                             Layout.maximumHeight: 30
 
-                            Label {
-                                Layout.fillHeight: true
+                            radius: height / 2
 
-                                Layout.maximumWidth: 94
-                                Layout.preferredWidth: 94
-                                Layout.minimumWidth: 94
+                            icon.source: "qrc:/images/icons/round-folder-24px.svg"
+                            icon.height: 24
+                            icon.width: 24
 
-                                text: qsTr("Download folder")
-                                font.pointSize: 10
-                                font.kerning: true
+                            text: downloadPath
+                            fontPointSize: 10
 
-                                horizontalAlignment: Text.AlignLeft
-                                verticalAlignment: Text.AlignVCenter
-                            }
-
-                            Item {
-                                Layout.fillHeight: true
-                                Layout.fillWidth: true
-                            }
-
-                            HoverableRadiusButton {
-                                id: downloadButton
-
-                                Layout.maximumWidth: 320
-                                Layout.preferredWidth: 320
-                                Layout.minimumWidth: 320
-
-                                Layout.minimumHeight: 30
-                                Layout.preferredHeight: 30
-                                Layout.maximumHeight: 30
-
-                                radius: height / 2
-
-                                icon.source: "qrc:/images/icons/round-folder-24px.svg"
-                                icon.height: 24
-                                icon.width: 24
-
-                                text: downloadPath
-                                fontPointSize: 10
-
-                                onClicked: {
-                                    openDownloadFolderSlot()
-                                }
+                            onClicked: {
+                                openDownloadFolderSlot()
                             }
                         }
                     }
                 }
-
-                Item {
-                    Layout.fillWidth: true
-                    Layout.minimumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.maximumHeight: 20
-                }
-
-                // call recording setting panel
-                ColumnLayout {
-                    spacing: 6
-                    Layout.fillWidth: true
-
-                    Label {
-                        Layout.fillWidth: true
-                        Layout.minimumHeight: 21
-                        Layout.preferredHeight: 21
-                        Layout.maximumHeight: 21
-
-                        text: qsTr("Call Recording")
-                        font.pointSize: 13
-                        font.kerning: true
-
-                        horizontalAlignment: Text.AlignLeft
-                        verticalAlignment: Text.AlignVCenter
-                    }
-
-                    Item {
-                        Layout.fillWidth: true
-
-                        Layout.minimumHeight: 10
-                        Layout.preferredHeight: 10
-                        Layout.maximumHeight: 10
-                    }
-
-                    ColumnLayout {
-                        spacing: 6
-                        Layout.fillWidth: true
-
-                        ToggleSwitch {
-                            id: alwaysRecordingCheckBox
-
-                            Layout.leftMargin: 20
-
-                            labelText: "Always record calls"
-                            fontPointSize: 11
-
-                            onSwitchToggled: {
-                                slotAlwaysRecordingClicked(checked)
-                            }
-                        }
-
-                        ToggleSwitch {
-                            id: recordPreviewCheckBox
-
-                            Layout.leftMargin: 20
-
-                            labelText: "Record preview video for a call"
-                            fontPointSize: 11
-
-                            onSwitchToggled: {
-                                slotRecordPreviewClicked(checked)
-                            }
-                        }
-
-                        RowLayout {
-                            spacing: 6
-                            Layout.leftMargin: 20
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: 30
-
-                            Label {
-                                Layout.fillHeight: true
-
-                                Layout.maximumWidth: 42
-                                Layout.preferredWidth: 42
-                                Layout.minimumWidth: 42
-
-                                text: qsTr("Quality")
-                                font.pointSize: 10
-                                font.kerning: true
-
-                                horizontalAlignment: Text.AlignLeft
-                                verticalAlignment: Text.AlignVCenter
-                            }
-
-                            Item {
-                                Layout.fillHeight: true
-                                Layout.fillWidth: true
-                            }
-
-                            ColumnLayout {
-                                spacing: 0
-                                Layout.fillHeight: true
-
-                                Layout.maximumWidth: recordQualityValueLabel.width
-                                Item {
-                                    Layout.fillHeight: true
-                                    Layout.fillWidth: true
-                                }
-
-                                Label {
-                                    id: recordQualityValueLabel
-
-                                    Layout.minimumWidth: 40
-
-                                    Layout.minimumHeight: 16
-                                    Layout.preferredHeight: 16
-                                    Layout.maximumHeight: 16
-
-                                    text: qsTr("VALUE ")
-
-                                    font.pointSize: 10
-                                    font.kerning: true
-
-                                    horizontalAlignment: Text.AlignLeft
-                                    verticalAlignment: Text.AlignVCenter
-                                }
-
-                                Item {
-                                    Layout.fillHeight: true
-                                    Layout.fillWidth: true
-                                }
-                            }
-
-                            Slider{
-                                id: recordQualitySlider
-
-                                Layout.fillHeight: true
-
-                                Layout.maximumWidth: 320
-                                Layout.preferredWidth: 320
-                                Layout.minimumWidth: 320
-
-                                from: 0
-                                to: 500
-                                stepSize: 1
-
-                                onMoved: {
-                                    slotRecordQualitySliderValueChanged(value)
-                                }
-                            }
-                        }
-
-                        RowLayout {
-                            spacing: 6
-
-                            Layout.leftMargin: 20
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: 30
-
-                            Label {
-                                Layout.fillHeight: true
-
-                                Layout.maximumWidth: 42
-                                Layout.preferredWidth: 42
-                                Layout.minimumWidth: 42
-
-                                text: qsTr("Save in")
-                                font.pointSize: 10
-                                font.kerning: true
-
-                                horizontalAlignment: Text.AlignLeft
-                                verticalAlignment: Text.AlignVCenter
-                            }
-
-                            Item {
-                                Layout.fillHeight: true
-                                Layout.fillWidth: true
-                            }
-
-                            HoverableRadiusButton {
-                                id: recordPathButton
-
-                                Layout.maximumWidth: 320
-                                Layout.preferredWidth: 320
-                                Layout.minimumWidth: 320
-
-                                Layout.minimumHeight: 30
-                                Layout.preferredHeight: 30
-                                Layout.maximumHeight: 30
-
-                                radius: height / 2
-
-                                icon.source: "qrc:/images/icons/round-folder-24px.svg"
-                                icon.height: 24
-                                icon.width: 24
-
-                                text: recordPath
-                                fontPointSize: 10
-
-                                onClicked: {
-                                    openRecordFolderSlot()
-                                }
-                            }
-                        }
-                    }
-                }
-
-                Item {
-                    Layout.fillWidth: true
-                    Layout.minimumHeight: 20
-                    Layout.preferredHeight: 20
-                    Layout.maximumHeight: 20
-                }
-
-                // update setting panel
-                ColumnLayout {
-                    spacing: 6
-                    Layout.fillWidth: true
-                    visible: Qt.platform.os == "windows"? true : false
-
-                    Label {
-                        Layout.fillWidth: true
-                        Layout.minimumHeight: 21
-                        Layout.preferredHeight: 21
-                        Layout.maximumHeight: 21
-
-                        text: qsTr("Updates")
-                        font.pointSize: 13
-                        font.kerning: true
-
-                        horizontalAlignment: Text.AlignLeft
-                        verticalAlignment: Text.AlignVCenter
-                    }
-
-                    Item {
-                        Layout.fillWidth: true
-
-                        Layout.minimumHeight: 10
-                        Layout.preferredHeight: 10
-                        Layout.maximumHeight: 10
-                    }
-
-                    ColumnLayout {
-                        spacing: 6
-                        Layout.fillWidth: true
-
-                        ToggleSwitch {
-                            id: autoUpdateCheckBox
-
-                            Layout.leftMargin: 20
-
-                            labelText: "Check for updates automatically"
-                            fontPointSize: 11
-
-                            onSwitchToggled: {
-                                slotSetUpdateAutomatic(checked)
-                            }
-                        }
-
-                        RowLayout {
-                            spacing: 6
-
-                            Layout.leftMargin: 20
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: 30
-
-                            HoverableRadiusButton {
-                                id: checkUpdateButton
-
-                                Layout.maximumWidth: 275
-                                Layout.preferredWidth: 275
-                                Layout.minimumWidth: 275
-
-                                Layout.minimumHeight: 30
-                                Layout.preferredHeight: 30
-                                Layout.maximumHeight: 30
-
-                                radius: height / 2
-
-                                text: "Check for updates now"
-                                fontPointSize: 10
-
-                                onClicked: {
-                                    checkForUpdateSlot()
-                                }
-                            }
-
-                            Item {
-                                Layout.fillHeight: true
-                                Layout.fillWidth: true
-                            }
-                        }
-
-                        RowLayout {
-                            spacing: 6
-
-                            Layout.leftMargin: 20
-                            Layout.fillWidth: true
-                            Layout.maximumHeight: 30
-
-                            HoverableRadiusButton {
-                                id: installBetaButton
-
-                                Layout.maximumWidth: 275
-                                Layout.preferredWidth: 275
-                                Layout.minimumWidth: 275
-
-                                Layout.minimumHeight: 30
-                                Layout.preferredHeight: 30
-                                Layout.maximumHeight: 30
-
-                                radius: height / 2
-
-                                text: "Install the latest beta version"
-                                fontPointSize: 10
-
-                                onClicked: {
-                                    installBetaSlot()
-                                }
-                            }
-
-                            Item {
-                                Layout.fillHeight: true
-                                Layout.fillWidth: true
-                            }
-                        }
-                    }
-                }
-
-                // spacer on the bottom
-                Item {
-                    Layout.fillHeight: true
-                    Layout.fillWidth: true
-                }
             }
 
             Item {
+                Layout.fillWidth: true
+                Layout.minimumHeight: 20
+                Layout.preferredHeight: 20
+                Layout.maximumHeight: 20
+            }
+
+            // call recording setting panel
+            ColumnLayout {
+                spacing: 6
+                Layout.fillWidth: true
+
+                Label {
+                    Layout.fillWidth: true
+                    Layout.minimumHeight: 21
+                    Layout.preferredHeight: 21
+                    Layout.maximumHeight: 21
+
+                    text: qsTr("Call Recording")
+                    font.pointSize: 13
+                    font.kerning: true
+
+                    horizontalAlignment: Text.AlignLeft
+                    verticalAlignment: Text.AlignVCenter
+                }
+
+                Item {
+                    Layout.fillWidth: true
+
+                    Layout.minimumHeight: 10
+                    Layout.preferredHeight: 10
+                    Layout.maximumHeight: 10
+                }
+
+                ColumnLayout {
+                    spacing: 6
+                    Layout.fillWidth: true
+
+                    ToggleSwitch {
+                        id: alwaysRecordingCheckBox
+
+                        Layout.leftMargin: 20
+
+                        labelText: "Always record calls"
+                        fontPointSize: 11
+
+                        onSwitchToggled: {
+                            slotAlwaysRecordingClicked(checked)
+                        }
+                    }
+
+                    ToggleSwitch {
+                        id: recordPreviewCheckBox
+
+                        Layout.leftMargin: 20
+
+                        labelText: "Record preview video for a call"
+                        fontPointSize: 11
+
+                        onSwitchToggled: {
+                            slotRecordPreviewClicked(checked)
+                        }
+                    }
+
+                    RowLayout {
+                        spacing: 6
+                        Layout.leftMargin: 20
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: 30
+
+                        Label {
+                            Layout.fillHeight: true
+
+                            Layout.maximumWidth: 42
+                            Layout.preferredWidth: 42
+                            Layout.minimumWidth: 42
+
+                            text: qsTr("Quality")
+                            font.pointSize: 10
+                            font.kerning: true
+
+                            horizontalAlignment: Text.AlignLeft
+                            verticalAlignment: Text.AlignVCenter
+                        }
+
+                        Item {
+                            Layout.fillHeight: true
+                            Layout.fillWidth: true
+                        }
+
+                        ColumnLayout {
+                            spacing: 0
+                            Layout.fillHeight: true
+
+                            Layout.maximumWidth: recordQualityValueLabel.width
+                            Item {
+                                Layout.fillHeight: true
+                                Layout.fillWidth: true
+                            }
+
+                            Label {
+                                id: recordQualityValueLabel
+
+                                Layout.minimumWidth: 40
+
+                                Layout.minimumHeight: 16
+                                Layout.preferredHeight: 16
+                                Layout.maximumHeight: 16
+
+                                text: qsTr("VALUE ")
+
+                                font.pointSize: 10
+                                font.kerning: true
+
+                                horizontalAlignment: Text.AlignLeft
+                                verticalAlignment: Text.AlignVCenter
+                            }
+
+                            Item {
+                                Layout.fillHeight: true
+                                Layout.fillWidth: true
+                            }
+                        }
+
+                        Slider {
+                            id: recordQualitySlider
+
+                            Layout.fillHeight: true
+
+                            Layout.maximumWidth: 320
+                            Layout.preferredWidth: 320
+                            Layout.minimumWidth: 320
+
+                            from: 0
+                            to: 500
+                            stepSize: 1
+
+                            onMoved: {
+                                slotRecordQualitySliderValueChanged(value)
+                            }
+                        }
+                    }
+
+                    RowLayout {
+                        spacing: 6
+
+                        Layout.leftMargin: 20
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: 30
+
+                        Label {
+                            Layout.fillHeight: true
+
+                            Layout.maximumWidth: 42
+                            Layout.preferredWidth: 42
+                            Layout.minimumWidth: 42
+
+                            text: qsTr("Save in")
+                            font.pointSize: 10
+                            font.kerning: true
+
+                            horizontalAlignment: Text.AlignLeft
+                            verticalAlignment: Text.AlignVCenter
+                        }
+
+                        Item {
+                            Layout.fillHeight: true
+                            Layout.fillWidth: true
+                        }
+
+                        HoverableRadiusButton {
+                            id: recordPathButton
+
+                            Layout.maximumWidth: 320
+                            Layout.preferredWidth: 320
+                            Layout.minimumWidth: 320
+
+                            Layout.minimumHeight: 30
+                            Layout.preferredHeight: 30
+                            Layout.maximumHeight: 30
+
+                            radius: height / 2
+
+                            icon.source: "qrc:/images/icons/round-folder-24px.svg"
+                            icon.height: 24
+                            icon.width: 24
+
+                            text: recordPath
+                            fontPointSize: 10
+
+                            onClicked: {
+                                openRecordFolderSlot()
+                            }
+                        }
+                    }
+                }
+            }
+
+            Item {
+                Layout.fillWidth: true
+                Layout.minimumHeight: 20
+                Layout.preferredHeight: 20
+                Layout.maximumHeight: 20
+            }
+
+            // update setting panel
+            ColumnLayout {
+                spacing: 6
+                Layout.fillWidth: true
+                visible: Qt.platform.os == "windows"? true : false
+
+                Label {
+                    Layout.fillWidth: true
+                    Layout.minimumHeight: 21
+                    Layout.preferredHeight: 21
+                    Layout.maximumHeight: 21
+
+                    text: qsTr("Updates")
+                    font.pointSize: 13
+                    font.kerning: true
+
+                    horizontalAlignment: Text.AlignLeft
+                    verticalAlignment: Text.AlignVCenter
+                }
+
+                Item {
+                    Layout.fillWidth: true
+
+                    Layout.minimumHeight: 10
+                    Layout.preferredHeight: 10
+                    Layout.maximumHeight: 10
+                }
+
+                ColumnLayout {
+                    spacing: 6
+                    Layout.fillWidth: true
+
+                    ToggleSwitch {
+                        id: autoUpdateCheckBox
+
+                        Layout.leftMargin: 20
+
+                        labelText: "Check for updates automatically"
+                        fontPointSize: 11
+
+                        onSwitchToggled: {
+                            slotSetUpdateAutomatic(checked)
+                        }
+                    }
+
+                    RowLayout {
+                        spacing: 6
+
+                        Layout.leftMargin: 20
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: 30
+
+                        HoverableRadiusButton {
+                            id: checkUpdateButton
+
+                            Layout.maximumWidth: 275
+                            Layout.preferredWidth: 275
+                            Layout.minimumWidth: 275
+
+                            Layout.minimumHeight: 30
+                            Layout.preferredHeight: 30
+                            Layout.maximumHeight: 30
+
+                            radius: height / 2
+
+                            text: "Check for updates now"
+                            fontPointSize: 10
+
+                            onClicked: {
+                                checkForUpdateSlot()
+                            }
+                        }
+
+                        Item {
+                            Layout.fillHeight: true
+                            Layout.fillWidth: true
+                        }
+                    }
+
+                    RowLayout {
+                        spacing: 6
+
+                        Layout.leftMargin: 20
+                        Layout.fillWidth: true
+                        Layout.maximumHeight: 30
+
+                        HoverableRadiusButton {
+                            id: installBetaButton
+
+                            Layout.maximumWidth: 275
+                            Layout.preferredWidth: 275
+                            Layout.minimumWidth: 275
+
+                            Layout.minimumHeight: 30
+                            Layout.preferredHeight: 30
+                            Layout.maximumHeight: 30
+
+                            radius: height / 2
+
+                            text: "Install the latest beta version"
+                            fontPointSize: 10
+
+                            onClicked: {
+                                installBetaSlot()
+                            }
+                        }
+
+                        Item {
+                            Layout.fillHeight: true
+                            Layout.fillWidth: true
+                        }
+                    }
+                }
+            }
+
+            // spacer on the bottom
+            Item {
                 Layout.fillHeight: true
                 Layout.fillWidth: true
             }
diff --git a/src/settingsview/components/LeftPanelView.qml b/src/settingsview/components/LeftPanelView.qml
index f11fe23..e1e0a13 100644
--- a/src/settingsview/components/LeftPanelView.qml
+++ b/src/settingsview/components/LeftPanelView.qml
@@ -23,11 +23,13 @@
 import QtQuick.Controls.Universal 2.12
 import QtQuick.Layouts 1.3
 import QtGraphicalEffects 1.14
+import net.jami.Models 1.0
 
 import "../../commoncomponents"
+import "../../mainview/components"
 
-ScrollView{
-    id: leftPanelView
+Rectangle {
+    id: leftPanelRect
 
     property int contentViewportWidth: 200
     property int contentViewPortHeight: 768
@@ -45,6 +47,7 @@
 
     anchors.fill: parent
     clip: true
+    color: JamiTheme.backgroundColor
 
     ColumnLayout {
         spacing: 0
@@ -52,83 +55,6 @@
         width: contentViewportWidth
         height: contentViewPortHeight
 
-        Item {
-            Layout.fillWidth: true
-            Layout.maximumHeight: 13
-            Layout.preferredHeight: 13
-            Layout.minimumHeight: 13
-        }
-
-        RowLayout {
-            Layout.fillWidth: true
-            Layout.maximumHeight: 20
-            Layout.preferredHeight: 20
-            Layout.minimumHeight: 20
-
-            Layout.rightMargin: 14
-
-            Item {
-                Layout.fillHeight: true
-
-                Layout.maximumWidth: 20
-                Layout.preferredWidth: 20
-                Layout.minimumWidth: 20
-            }
-
-            Label {
-                Layout.maximumWidth: 57
-                Layout.preferredWidth: 57
-                Layout.minimumWidth: 57
-
-                Layout.maximumHeight: 30
-                Layout.preferredHeight: 30
-                Layout.minimumHeight: 30
-
-                text: qsTr("Settings")
-                font.pointSize: 12
-                font.kerning: true
-
-                horizontalAlignment: Text.AlignLeft
-                verticalAlignment: Text.AlignVCenter
-            }
-
-            Item {
-                Layout.fillWidth: true
-                Layout.fillHeight: true
-            }
-
-            HoverableRadiusButton {
-                id: btnExitSettings
-                Layout.maximumWidth: 30
-                Layout.preferredWidth: 30
-                Layout.minimumWidth: 30
-
-                Layout.maximumHeight: 30
-                Layout.preferredHeight: 30
-                Layout.minimumHeight: 30
-
-                buttonImageHeight: height
-                buttonImageWidth: height
-                backgroundColor: "transparent"
-
-                radius: height / 2
-
-                icon.source: "qrc:/images/icons/round-close-24px.svg"
-                icon.height: 24
-                icon.width: 24
-
-                onClicked: {
-                    btnExitClicked()
-                }
-            }
-        }
-        Item {
-            Layout.fillWidth: true
-            Layout.maximumHeight: 13
-            Layout.preferredHeight: 13
-            Layout.minimumHeight: 13
-        }
-
         IconButton {
             id: accountSettingsButton
 
@@ -186,6 +112,5 @@
             Layout.fillHeight: true
         }
     }
-
 }
 
diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml
index b71f7aa..a9d59d0 100644
--- a/src/settingsview/components/PluginSettingsPage.qml
+++ b/src/settingsview/components/PluginSettingsPage.qml
@@ -45,28 +45,56 @@
     Layout.fillHeight: true
     Layout.fillWidth: true
 
+    signal backArrowClicked
+
     ColumnLayout {
         anchors.fill: parent
         spacing: 6
 
         width: parent.width
         height: parent.height
-        
-        Label {
-            width: parent.width
-            height: parent.height
 
-            Layout.leftMargin: 35
-            Layout.topMargin: 15
-            Layout.alignment: Qt.AlignTop
+        RowLayout {
 
-            text: qsTr("Plugin")
+            Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
+            Layout.leftMargin: 16
+            Layout.fillWidth: true
+            Layout.maximumHeight: 64
+            Layout.minimumHeight: 64
+            Layout.preferredHeight: 64
 
-            font.pointSize: 15
-            font.kerning: true
+            HoverableButton {
 
-            horizontalAlignment: Text.AlignBottom
-            verticalAlignment: Text.AlignVCenter
+                Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
+                Layout.preferredWidth: 30
+                Layout.preferredHeight: 30
+
+                radius: 30
+                source: "qrc:/images/icons/ic_arrow_back_24px.svg"
+                backgroundColor: "white"
+                onExitColor: "white"
+
+                visible: mainViewWindow.sidePanelHidden
+
+                onClicked: {
+                    backArrowClicked()
+                }
+            }
+
+            Label {
+                Layout.fillWidth: true
+                Layout.minimumHeight: 25
+                Layout.preferredHeight: 25
+                Layout.maximumHeight: 25
+
+                text: qsTr("Plugin")
+
+                font.pointSize: 15
+                font.kerning: true
+
+                horizontalAlignment: Text.AlignLeft
+                verticalAlignment: Text.AlignVCenter
+            }
         }
 
         ScrollView {
@@ -96,7 +124,7 @@
 
                     onSwitchToggled: {
                         slotSetPluginEnabled(checked)
-                
+
                         pluginListSettingsView.visible = checked
                         if (!checked) {
                             pluginListPreferencesView.visible = checked
@@ -111,7 +139,7 @@
                     Layout.fillHeight: true
                     width:380
                     height:100
-                
+
                     // instantiate plugin list setting page
                     PluginListSettingsView {
                         id: pluginListSettingsView