Warning, /network/neochat/src/qml/AppearanceSettingsPage.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2020 Tobias Fella <tobias.fella@kde.org>
0002 // SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004
0005 import QtQuick
0006 import QtQuick.Controls as QQC2
0007 import QtQuick.Layouts
0008
0009 import org.kde.kirigami as Kirigami
0010 import org.kde.kirigamiaddons.formcard as FormCard
0011 import org.kde.kirigamiaddons.labs.components as KirigamiComponents
0012
0013 import org.kde.neochat
0014 import org.kde.neochat.config
0015
0016 FormCard.FormCardPage {
0017 id: root
0018
0019 title: i18nc("@title:window", "Appearance")
0020
0021 FormCard.FormHeader {
0022 title: i18n("General theme")
0023 }
0024 FormCard.FormCard {
0025 FormCard.AbstractFormDelegate {
0026 id: timelineModeSetting
0027 background: Item {}
0028 contentItem: RowLayout {
0029 Layout.alignment: Qt.AlignCenter
0030 spacing: Kirigami.Units.largeSpacing
0031 Item {
0032 Layout.fillWidth: true
0033 }
0034 QQC2.ButtonGroup {
0035 id: themeGroup
0036 }
0037 ThemeRadioButton {
0038 thin: timelineModeSetting.width < Kirigami.Units.gridUnit * 22
0039 innerObject: [
0040 RowLayout {
0041 Layout.fillWidth: true
0042 KirigamiComponents.Avatar {
0043 color: "#4a5bcc"
0044 Layout.alignment: Qt.AlignTop
0045 visible: Config.showAvatarInTimeline
0046 Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
0047 Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
0048 }
0049 QQC2.Control {
0050 Layout.fillWidth: true
0051 contentItem: ColumnLayout {
0052 QQC2.Label {
0053 Layout.fillWidth: true
0054 font.weight: Font.Bold
0055 font.pixelSize: 7
0056 text: "Paul Müller"
0057 color: "#4a5bcc"
0058 wrapMode: Text.Wrap
0059 }
0060 QQC2.Label {
0061 Layout.fillWidth: true
0062 text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus facilisis porta mauris, quis finibus sem suscipit tincidunt."
0063 wrapMode: Text.Wrap
0064 font.pixelSize: 7
0065 }
0066 }
0067 background: Kirigami.ShadowedRectangle {
0068 color: Kirigami.Theme.backgroundColor
0069 radius: Kirigami.Units.smallSpacing
0070 shadow.size: Kirigami.Units.smallSpacing
0071 shadow.color: Qt.rgba(0.0, 0.0, 0.0, 0.10)
0072 border.color: Kirigami.ColorUtils.tintWithAlpha(color, Kirigami.Theme.textColor, 0.15)
0073 border.width: 1
0074 }
0075 }
0076 },
0077 RowLayout {
0078 Layout.fillWidth: true
0079 KirigamiComponents.Avatar {
0080 color: "#9f244b"
0081 Layout.alignment: Qt.AlignTop
0082 visible: Config.showAvatarInTimeline
0083 Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
0084 Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
0085 }
0086 QQC2.Control {
0087 Layout.fillWidth: true
0088 contentItem: ColumnLayout {
0089 QQC2.Label {
0090 Layout.fillWidth: true
0091 font.weight: Font.Bold
0092 font.pixelSize: 7
0093 text: "Jean Paul"
0094 color: "#9f244b"
0095 wrapMode: Text.Wrap
0096 }
0097 QQC2.Label {
0098 Layout.fillWidth: true
0099 text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus facilisis porta , quis sem suscipit tincidunt."
0100 wrapMode: Text.Wrap
0101 font.pixelSize: 7
0102 }
0103 }
0104 background: Kirigami.ShadowedRectangle {
0105 color: Kirigami.Theme.backgroundColor
0106 radius: Kirigami.Units.smallSpacing
0107 shadow.size: Kirigami.Units.smallSpacing
0108 shadow.color: Qt.rgba(0.0, 0.0, 0.0, 0.10)
0109 border.color: Kirigami.ColorUtils.tintWithAlpha(color, Kirigami.Theme.textColor, 0.15)
0110 border.width: 1
0111 }
0112 }
0113 }
0114 ]
0115
0116 text: i18n("Bubbles")
0117 checked: !Config.compactLayout
0118 QQC2.ButtonGroup.group: themeGroup
0119 enabled: !Config.isCompactLayoutImmutable
0120
0121 onToggled: {
0122 Config.compactLayout = !checked;
0123 Config.save();
0124 }
0125 }
0126 ThemeRadioButton {
0127 // Layout.alignment: Qt.AlignRight
0128 thin: timelineModeSetting.width < Kirigami.Units.gridUnit * 22
0129 innerObject: [
0130 RowLayout {
0131 Layout.fillWidth: true
0132 KirigamiComponents.Avatar {
0133 color: "#4a5bcc"
0134 Layout.alignment: Qt.AlignTop
0135 visible: Config.showAvatarInTimeline
0136 Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
0137 Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
0138 }
0139 ColumnLayout {
0140 Layout.fillWidth: true
0141 QQC2.Label {
0142 Layout.fillWidth: true
0143 font.weight: Font.Bold
0144 font.pixelSize: 7
0145 text: "Paul Müller"
0146 color: "#4a5bcc"
0147 wrapMode: Text.Wrap
0148 }
0149 QQC2.Label {
0150 Layout.fillWidth: true
0151 text: "Lorem ipsum dolor sit amet, consectetur elit. Vivamus facilisis porta mauris, finibus sem suscipit tincidunt."
0152 wrapMode: Text.Wrap
0153 font.pixelSize: 7
0154 }
0155 }
0156 },
0157 RowLayout {
0158 Layout.fillWidth: true
0159 KirigamiComponents.Avatar {
0160 color: "#9f244b"
0161 Layout.alignment: Qt.AlignTop
0162 visible: Config.showAvatarInTimeline
0163 Layout.preferredWidth: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing * 2 : 0
0164 Layout.preferredHeight: Kirigami.Units.largeSpacing * 2
0165 }
0166 ColumnLayout {
0167 Layout.fillWidth: true
0168 QQC2.Label {
0169 Layout.fillWidth: true
0170 font.weight: Font.Bold
0171 font.pixelSize: 7
0172 text: "Jean Paul"
0173 color: "#9f244b"
0174 wrapMode: Text.Wrap
0175 }
0176 QQC2.Label {
0177 Layout.fillWidth: true
0178 text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus facilisis porta mauris, quis finibus sem suscipit tincidunt."
0179 wrapMode: Text.Wrap
0180 font.pixelSize: 7
0181 }
0182 }
0183 }
0184 ]
0185 text: i18n("Compact")
0186 checked: Config.compactLayout
0187 QQC2.ButtonGroup.group: themeGroup
0188 enabled: !Config.isCompactLayoutImmutable
0189
0190 onToggled: {
0191 Config.compactLayout = checked;
0192 Config.save();
0193 }
0194 }
0195 Item {
0196 Layout.fillWidth: true
0197 }
0198 }
0199 }
0200
0201 FormCard.FormDelegateSeparator {
0202 below: compactRoomListDelegate
0203 }
0204
0205 FormCard.FormCheckDelegate {
0206 id: compactRoomListDelegate
0207 text: i18n("Use compact room list")
0208 checked: Config.compactRoomList
0209 onToggled: {
0210 Config.compactRoomList = checked;
0211 Config.save();
0212 }
0213 }
0214
0215 FormCard.FormDelegateSeparator {
0216 above: compactRoomListDelegate
0217 below: colorSchemeDelegate.item
0218 visible: colorSchemeDelegate.visible
0219 }
0220
0221 Loader {
0222 id: colorSchemeDelegate
0223 visible: item !== null
0224 source: "qrc:/org/kde/neochat/qml/ColorScheme.qml"
0225 Layout.fillWidth: true
0226 }
0227 }
0228
0229 FormCard.FormCard {
0230 Layout.topMargin: Kirigami.Units.largeSpacing
0231 FormCard.FormCheckDelegate {
0232 id: showFancyEffectsDelegate
0233 text: i18n("Show fancy effects in chat")
0234 checked: Config.showFancyEffects
0235 enabled: !Config.isShowFancyEffectsImmutable
0236 onToggled: {
0237 Config.showFancyEffects = checked;
0238 Config.save();
0239 }
0240 }
0241
0242 FormCard.FormDelegateSeparator {
0243 above: showFancyEffectsDelegate
0244 below: hasWindowSystemDelegate
0245 }
0246
0247 FormCard.FormCheckDelegate {
0248 id: hasWindowSystemDelegate
0249 visible: WindowController.hasWindowSystem
0250 text: i18n("Use transparent chat page")
0251 enabled: !Config.compactLayout && !Config.isBlurImmutable
0252 checked: Config.blur
0253 onToggled: {
0254 Config.blur = checked;
0255 Config.save();
0256 }
0257 }
0258
0259 FormCard.FormDelegateSeparator {
0260 above: hasWindowSystemDelegate
0261 below: transparencyDelegate
0262 }
0263
0264 FormCard.AbstractFormDelegate {
0265 id: transparencyDelegate
0266 visible: WindowController.hasWindowSystem && Config.blur
0267 enabled: !Config.isTransparancyImmutable
0268 background: Item {}
0269 contentItem: ColumnLayout {
0270 QQC2.Label {
0271 text: i18n("Transparency")
0272 Layout.fillWidth: true
0273 }
0274 QQC2.Slider {
0275 enabled: !Config.compactLayout && Config.blur
0276 from: 0
0277 to: 1
0278 stepSize: 0.05
0279 value: Config.transparency
0280 onMoved: {
0281 Config.transparency = value;
0282 Config.save();
0283 }
0284 Layout.fillWidth: true
0285
0286 HoverHandler {
0287 id: sliderHover
0288 }
0289 QQC2.ToolTip.visible: sliderHover.hovered && !enabled
0290 QQC2.ToolTip.text: i18n("Only enabled if the transparent chat page is enabled.")
0291 }
0292 QQC2.Label {
0293 text: Math.round(Config.transparency * 100) + "%"
0294 Layout.fillWidth: true
0295 }
0296 }
0297 }
0298
0299 FormCard.FormDelegateSeparator {
0300 above: transparencyDelegate
0301 below: showLocalMessagesOnRightDelegate
0302 visible: transparencyDelegate.visible
0303 }
0304
0305 FormCard.FormCheckDelegate {
0306 id: showLocalMessagesOnRightDelegate
0307 text: i18n("Show your messages on the right")
0308 checked: Config.showLocalMessagesOnRight
0309 enabled: !Config.isShowLocalMessagesOnRightImmutable && !Config.compactLayout
0310 onToggled: {
0311 Config.showLocalMessagesOnRight = checked;
0312 Config.save();
0313 }
0314 }
0315
0316 FormCard.FormDelegateSeparator {
0317 above: showLocalMessagesOnRightDelegate
0318 below: showLinkPreviewDelegate
0319 }
0320
0321 FormCard.FormCheckDelegate {
0322 id: showLinkPreviewDelegate
0323 text: i18n("Show links preview in the chat messages")
0324 checked: Config.showLinkPreview
0325 onToggled: {
0326 Config.showLinkPreview = checked;
0327 Config.save();
0328 }
0329 }
0330 }
0331
0332 FormCard.FormHeader {
0333 title: i18n("Show Avatar")
0334 }
0335 FormCard.FormCard {
0336 FormCard.FormCheckDelegate {
0337 text: i18n("In chat")
0338 checked: Config.showAvatarInTimeline
0339 onToggled: {
0340 Config.showAvatarInTimeline = checked;
0341 Config.save();
0342 }
0343 enabled: !Config.isShowAvatarInTimelineImmutable
0344 }
0345
0346 FormCard.FormCheckDelegate {
0347 text: i18n("In sidebar")
0348 checked: Config.showAvatarInRoomDrawer
0349 enabled: !Config.isShowAvatarInRoomDrawerImmutable
0350 onToggled: {
0351 Config.showAvatarInRoomDrawer = checked;
0352 Config.save();
0353 }
0354 }
0355 }
0356 }