-
Change-Id: Ie35b2854da7165ee95018165b325698dcf0378ca
Change-Id: Ie35b2854da7165ee95018165b325698dcf0378ca
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
SystemSettingsPage.qml 9.94 KiB
/*
* Copyright (C) 2023 Savoir-faire Linux Inc.
* Author: Fadi Shehadeh <fadi.shehadeh@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 Qt.labs.platform
import net.jami.Adapters 1.1
import net.jami.Constants 1.1
import net.jami.Enums 1.1
import net.jami.Models 1.1
import "../../commoncomponents"
SettingsPageBase {
id: root
property string downloadPath: UtilsAdapter.getDirDownload()
property string downloadPathBestName: UtilsAdapter.dirName(UtilsAdapter.getDirDownload())
property int itemWidth: 188
property bool isSIP
title: JamiStrings.system
onDownloadPathChanged: {
if (downloadPath === "")
return;
UtilsAdapter.setDownloadPath(downloadPath);
}
flickableContent: ColumnLayout {
id: manageAccountEnableColumnLayout
width: contentFlickableWidth
spacing: JamiTheme.settingsBlockSpacing
anchors.left: parent.left
anchors.leftMargin: JamiTheme.preferredSettingsMarginSize
Column {
id: enableAccount
width: parent.width
spacing: 10
FolderDialog {
id: downloadPathDialog
title: JamiStrings.selectFolder
currentFolder: StandardPaths.writableLocation(StandardPaths.DownloadLocation)
options: FolderDialog.ShowDirsOnly
onAccepted: {
var dir = UtilsAdapter.getAbsPath(folder.toString());
var dirName = UtilsAdapter.dirName(folder.toString());
downloadPath = dir;
downloadPathBestName = dirName;
}
}
ToggleSwitch {
id: notificationCheckBox
width: parent.width
checked: UtilsAdapter.getAppValue(Settings.EnableNotifications)
labelText: JamiStrings.showNotifications
tooltipText: JamiStrings.enableNotifications
onSwitchToggled: UtilsAdapter.setAppValue(Settings.Key.EnableNotifications, checked)
}
ToggleSwitch {
id: enableDonation
width: parent.width
visible: new Date() >= new Date(Date.parse(UtilsAdapter.getAppValue(Settings.Key.Donation2023VisibleDate)));
checked: UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible)
labelText: JamiStrings.enableDonation
tooltipText: JamiStrings.enableDonation
onSwitchToggled: {
UtilsAdapter.setAppValue(Settings.Key.IsDonationVisible, checked);
if (checked) {
UtilsAdapter.setToDefault(Settings.Key.Donation2023VisibleDate);
}
}
}
ToggleSwitch {
id: closeOrMinCheckBox
width: parent.width
visible: UtilsAdapter.isSystemTrayIconVisible()
checked: UtilsAdapter.getAppValue(Settings.MinimizeOnClose) && UtilsAdapter.isSystemTrayIconVisible()
labelText: JamiStrings.keepMinimized
onSwitchToggled: UtilsAdapter.setAppValue(Settings.Key.MinimizeOnClose, checked)
}
ToggleSwitch {
id: applicationOnStartUpCheckBox
width: parent.width
checked: UtilsAdapter.checkStartupLink()
labelText: JamiStrings.runStartup
tooltipText: JamiStrings.tipRunStartup
onSwitchToggled: UtilsAdapter.setRunOnStartUp(checked)
}
RowLayout {
width: parent.width
height: JamiTheme.preferredFieldHeight
Text {
Layout.fillWidth: true
Layout.fillHeight: true
Layout.rightMargin: JamiTheme.preferredMarginSize
wrapMode: Text.WordWrap
color: JamiTheme.textColor
text: JamiStrings.downloadFolder
font.pointSize: JamiTheme.settingsFontSize
font.kerning: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
}
MaterialButton {
id: downloadButton
Layout.alignment: Qt.AlignRight
preferredWidth: itemWidth
buttontextHeightMargin: JamiTheme.buttontextHeightMargin
textLeftPadding: JamiTheme.buttontextWizzardPadding
textRightPadding: JamiTheme.buttontextWizzardPadding
toolTipText: downloadPath
text: downloadPathBestName
secondary: true
onClicked: downloadPathDialog.open()
}
}
SettingsComboBox {
id: langComboBoxSetting
width: parent.width
height: JamiTheme.preferredFieldHeight
labelText: JamiStrings.language
tipText: JamiStrings.language
comboModel: ListModel {
id: langModel
Component.onCompleted: {
var supported = UtilsAdapter.supportedLang();
var keys = Object.keys(supported);
var currentKey = UtilsAdapter.getAppValue(Settings.Key.LANG);
for (var i = 0; i < keys.length; ++i) {
append({
"textDisplay": supported[keys[i]],
"id": keys[i]
});
if (keys[i] === currentKey)
langComboBoxSetting.modelIndex = i;
}
}
}
widthOfComboBox: itemWidth
role: "textDisplay"
onActivated: {
UtilsAdapter.setAppValue(Settings.Key.LANG, comboModel.get(modelIndex).id);
}
}
Connections {
target: UtilsAdapter
function onChangeLanguage() {
var langIdx = langComboBoxSetting.modelIndex;
langModel.clear();
var supported = UtilsAdapter.supportedLang();
var keys = Object.keys(supported);
for (var i = 0; i < keys.length; ++i) {
langModel.append({
"textDisplay": supported[keys[i]],
"id": keys[i]
});
}
langComboBoxSetting.modelIndex = langIdx;
}
}
}
ColumnLayout {
width: parent.width
spacing: JamiTheme.settingsCategorySpacing
Text {
id: experimentalTitle
Layout.alignment: Qt.AlignLeft
Layout.preferredWidth: parent.width
text: JamiStrings.experimental
color: JamiTheme.textColor
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
font.pixelSize: JamiTheme.settingsTitlePixelSize
font.kerning: true
}
ToggleSwitch {
id: checkboxCallSwarm
Layout.fillWidth: true
checked: UtilsAdapter.getAppValue(Settings.EnableExperimentalSwarm)
labelText: JamiStrings.experimentalCallSwarm
tooltipText: JamiStrings.experimentalCallSwarmTooltip
onSwitchToggled: {
UtilsAdapter.setAppValue(Settings.Key.EnableExperimentalSwarm, checked);
}
}
}
MaterialButton {
id: defaultSettings
TextMetrics {
id: textSize
font.weight: Font.Bold
font.pixelSize: JamiTheme.wizardViewButtonFontPixelSize
font.capitalization: Font.AllUppercase
text: defaultSettings.text
}
secondary: true
text: JamiStrings.defaultSettings
preferredWidth: textSize.width + 2 * JamiTheme.buttontextWizzardPadding
onClicked: {
notificationCheckBox.checked = UtilsAdapter.getDefault(Settings.Key.EnableNotifications);
closeOrMinCheckBox.checked = UtilsAdapter.getDefault(Settings.Key.MinimizeOnClose);
checkboxCallSwarm.checked = UtilsAdapter.getDefault(Settings.Key.EnableExperimentalSwarm);
langComboBoxSetting.modelIndex = 0;
UtilsAdapter.setToDefault(Settings.Key.EnableNotifications);
UtilsAdapter.setToDefault(Settings.Key.MinimizeOnClose);
UtilsAdapter.setToDefault(Settings.Key.LANG);
UtilsAdapter.setToDefault(Settings.Key.EnableExperimentalSwarm);
UtilsAdapter.setToDefault(Settings.Key.IsDonationVisible);
UtilsAdapter.setToDefault(Settings.Key.Donation2023VisibleDate);
enableDonation.checked = Qt.binding(() => UtilsAdapter.getAppValue(Settings.Key.IsDonationVisible));
}
}
}
}