-
Amin Bandali authored
In preparation for vendoring libjamiclient into 'src/libclient/'. GitLab: #734 Change-Id: Ibd956abc8fe9bd454ac0e9a5a28b77a5a74174e7
Amin Bandali authoredIn preparation for vendoring libjamiclient into 'src/libclient/'. GitLab: #734 Change-Id: Ibd956abc8fe9bd454ac0e9a5a28b77a5a74174e7
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
PreferenceItemDelegate.qml 6.71 KiB
/*
* Copyright (C) 2020-2022 Savoir-faire Linux Inc.
* Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import net.jami.Models 1.1
import net.jami.Adapters 1.1
import net.jami.Constants 1.1
import "../commoncomponents"
import "../settingsview/components"
ItemDelegate {
id: root
property string preferenceName: ""
property string preferenceSummary: ""
property string preferenceKey: ""
property int preferenceType: -1
property string preferenceCurrentValue: ""
property string preferenceNewValue: ""
property string pluginId: ""
property string currentPath: ""
property bool isImage: false
property var fileFilters: []
property PluginListPreferenceModel pluginListPreferenceModel
signal btnPreferenceClicked
function getNewPreferenceValueSlot(index) {
switch (preferenceType) {
case PreferenceItemListModel.LIST:
pluginListPreferenceModel.idx = index
preferenceNewValue = pluginListPreferenceModel.preferenceNewValue
btnPreferenceClicked()
break
case PreferenceItemListModel.PATH:
if (index === 0) {
preferenceFilePathDialog.title = qsTr("Select An Image to " + preferenceName)
preferenceFilePathDialog.nameFilters = fileFilters
preferenceFilePathDialog.selectedNameFilter.index = fileFilters.length - 1
preferenceFilePathDialog.open()
}
else
btnPreferenceClicked()
break
case PreferenceItemListModel.EDITTEXT:
preferenceNewValue = editTextPreference.text
btnPreferenceClicked()
break
case PreferenceItemListModel.SWITCH:
preferenceNewValue = index ? "1" : "0"
btnPreferenceClicked()
break
default:
break
}
}
JamiFileDialog {
id: preferenceFilePathDialog
title: JamiStrings.selectFile
folder: JamiQmlUtils.qmlFilePrefix + currentPath
onAccepted: {
var url = UtilsAdapter.getAbsPath(file.toString())
preferenceNewValue = url
btnPreferenceClicked()
}
}
RowLayout{
anchors.fill: parent
Text {
id: prefLlabel
Layout.fillWidth: true
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
Layout.leftMargin: 8
text: preferenceName
color: JamiTheme.textColor
elide: Text.ElideRight
font.pointSize: JamiTheme.settingsFontSize
ToolTip.visible: hovered
ToolTip.text: preferenceSummary
opacity: enabled ? 1.0 : 0.5
}
PushButton {
id: btnPreferenceDefault
visible: preferenceType === PreferenceItemListModel.DEFAULT
normalColor: JamiTheme.primaryBackgroundColor
Layout.alignment: Qt.AlignRight | Qt.AlingVCenter
Layout.rightMargin: 8
Layout.preferredWidth: preferredSize
Layout.preferredHeight: preferredSize
imageColor: JamiTheme.textColor
source: JamiResources.round_settings_24dp_svg
toolTipText: qsTr("Edit preference")
opacity: enabled ? 1.0 : 0.5
}
ToggleSwitch {
id: btnPreferenceSwitch
visible: preferenceType === PreferenceItemListModel.SWITCH
Layout.alignment: Qt.AlignRight | Qt.AlingVCenter
Layout.rightMargin: 16
Layout.preferredHeight: 30
Layout.preferredWidth: 30
checked: preferenceCurrentValue === "1"
onSwitchToggled: getNewPreferenceValueSlot(checked)
opacity: enabled ? 1.0 : 0.5
}
SettingParaCombobox {
id: listPreferenceComboBox
visible: preferenceType === PreferenceItemListModel.LIST
Layout.preferredWidth: root.width / 2 - 8
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.rightMargin: 4
font.pointSize: JamiTheme.settingsFontSize
font.kerning: true
model: pluginListPreferenceModel
currentIndex: pluginListPreferenceModel.getCurrentSettingIndex()
textRole: "PreferenceValue"
tooltipText: JamiStrings.select
onActivated: getNewPreferenceValueSlot(index)
opacity: enabled ? 1.0 : 0.5
comboBoxBackgroundColor: JamiTheme.comboBoxBackgroundColor
}
MaterialButton {
id: pathPreferenceButton
visible: preferenceType === PreferenceItemListModel.PATH
preferredWidth: root.width / 2 - 8
preferredHeight: 30
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.rightMargin: 4
text: UtilsAdapter.fileName(preferenceCurrentValue)
toolTipText: JamiStrings.chooseImageFile
iconSource: JamiResources.round_folder_24dp_svg
color: JamiTheme.buttonTintedGrey
hoveredColor: JamiTheme.buttonTintedGreyHovered
pressedColor: JamiTheme.buttonTintedGreyPressed
onClicked: getNewPreferenceValueSlot(0)
opacity: enabled ? 1.0 : 0.5
}
MaterialLineEdit {
id: editTextPreference
Layout.preferredWidth: root.width / 2 - 8
Layout.preferredHeight: 30
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.rightMargin: 4
visible: preferenceType === PreferenceItemListModel.EDITTEXT
width: root.width / 2 - 8
padding: 8
selectByMouse: true
text: preferenceCurrentValue
font.pointSize: JamiTheme.settingsFontSize
wrapMode: Text.NoWrap
loseFocusWhenEnterPressed: true
onEditingFinished: getNewPreferenceValueSlot(0)
opacity: enabled ? 1.0 : 0.5
}
}
}