mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-25 04:25:22 -04:00
dms(settings): few misc tweaks
This commit is contained in:
@@ -366,6 +366,12 @@ Rectangle {
|
|||||||
"icon": "security",
|
"icon": "security",
|
||||||
"collapsedByDefault": true,
|
"collapsedByDefault": true,
|
||||||
"children": [
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "battery",
|
||||||
|
"text": I18n.tr("Battery"),
|
||||||
|
"icon": "battery_charging_full",
|
||||||
|
"tabIndex": 42
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "lock_screen",
|
"id": "lock_screen",
|
||||||
"text": I18n.tr("Lock Screen"),
|
"text": I18n.tr("Lock Screen"),
|
||||||
@@ -383,12 +389,6 @@ Rectangle {
|
|||||||
"text": I18n.tr("Power & Sleep"),
|
"text": I18n.tr("Power & Sleep"),
|
||||||
"icon": "power_settings_new",
|
"icon": "power_settings_new",
|
||||||
"tabIndex": 21
|
"tabIndex": 21
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "battery",
|
|
||||||
"text": I18n.tr("Battery"),
|
|
||||||
"icon": "battery_charging_full",
|
|
||||||
"tabIndex": 42
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readonly property real rowHeight: 70
|
readonly property real rowHeight: 70
|
||||||
readonly property real rowSpacing: Theme.spacingM
|
readonly property real rowSpacing: Theme.spacingS
|
||||||
readonly property real dividerGap: 40
|
readonly property real dividerGap: 40
|
||||||
|
|
||||||
property var enabledOrder: []
|
property var enabledOrder: []
|
||||||
@@ -371,202 +371,203 @@ Item {
|
|||||||
readonly property bool highlighted: root.highlightedId === modelData
|
readonly property bool highlighted: root.highlightedId === modelData
|
||||||
readonly property bool canHide: root.canHide(modelData)
|
readonly property bool canHide: root.canHide(modelData)
|
||||||
|
|
||||||
width: reorderArea.width
|
width: reorderArea.width
|
||||||
height: root.rowHeight
|
height: root.rowHeight
|
||||||
z: dragging ? 100 : (highlighted ? 3 : 1)
|
z: dragging ? 100 : (highlighted ? 3 : 1)
|
||||||
|
|
||||||
Binding {
|
Binding {
|
||||||
target: rowItem
|
target: rowItem
|
||||||
property: "y"
|
property: "y"
|
||||||
value: root.slotYForId(rowItem.modelData)
|
value: root.slotYForId(rowItem.modelData)
|
||||||
when: !rowItem.dragging
|
when: !rowItem.dragging
|
||||||
restoreMode: Binding.RestoreNone
|
restoreMode: Binding.RestoreNone
|
||||||
}
|
|
||||||
|
|
||||||
onYChanged: {
|
|
||||||
if (dragging)
|
|
||||||
root.updateDragTarget(y + height / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
Behavior on y {
|
|
||||||
enabled: !rowItem.dragging
|
|
||||||
NumberAnimation {
|
|
||||||
duration: Theme.expressiveDurations.expressiveDefaultSpatial
|
|
||||||
easing.type: Easing.BezierSpline
|
|
||||||
easing.bezierCurve: Theme.expressiveCurves.expressiveFastSpatial
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
onYChanged: {
|
||||||
id: content
|
if (dragging)
|
||||||
anchors.fill: parent
|
root.updateDragTarget(y + height / 2);
|
||||||
scale: rowItem.dragging ? 1.02 : 1.0
|
}
|
||||||
transformOrigin: Item.Center
|
|
||||||
|
|
||||||
Behavior on scale {
|
Behavior on y {
|
||||||
|
enabled: !rowItem.dragging
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: Theme.shortDuration
|
duration: Theme.expressiveDurations.expressiveDefaultSpatial
|
||||||
easing.type: Easing.OutCubic
|
easing.type: Easing.BezierSpline
|
||||||
|
easing.bezierCurve: Theme.expressiveCurves.expressiveFastSpatial
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Item {
|
||||||
id: surface
|
id: content
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: rowItem.dragging ? Theme.cornerRadius + 6 : Theme.cornerRadius
|
scale: rowItem.dragging ? 1.02 : 1.0
|
||||||
color: {
|
transformOrigin: Item.Center
|
||||||
if (rowItem.dragging)
|
|
||||||
return Theme.secondaryContainer;
|
|
||||||
const base = Theme.surfaceContainer;
|
|
||||||
return Qt.rgba(base.r, base.g, base.b, rowItem.isEnabled ? 0.7 : 0.4);
|
|
||||||
}
|
|
||||||
border.width: rowItem.dragging ? 2 : 1
|
|
||||||
border.color: rowItem.dragging ? Theme.primary : Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
|
||||||
|
|
||||||
Behavior on radius {
|
Behavior on scale {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: Theme.shortDuration
|
duration: Theme.shortDuration
|
||||||
easing.type: Easing.OutCubic
|
easing.type: Easing.OutCubic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on color {
|
|
||||||
ColorAnimation {
|
|
||||||
duration: Theme.shortDuration
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Behavior on border.color {
|
|
||||||
ColorAnimation {
|
|
||||||
duration: Theme.shortDuration
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
id: surface
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: parent.radius
|
radius: rowItem.dragging ? Theme.cornerRadius + 6 : Theme.cornerRadius
|
||||||
color: Theme.primary
|
color: {
|
||||||
opacity: (dragArea.containsMouse && !rowItem.dragging) ? 0.06 : 0
|
if (rowItem.dragging)
|
||||||
Behavior on opacity {
|
return Theme.secondaryContainer;
|
||||||
|
const base = Theme.surfaceContainer;
|
||||||
|
return Qt.rgba(base.r, base.g, base.b, rowItem.isEnabled ? 0.7 : 0.4);
|
||||||
|
}
|
||||||
|
border.width: rowItem.dragging ? 2 : 1
|
||||||
|
border.color: rowItem.dragging ? Theme.primary : Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
|
||||||
|
|
||||||
|
Behavior on radius {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: Theme.shortDuration
|
duration: Theme.shortDuration
|
||||||
|
easing.type: Easing.OutCubic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
DankIcon {
|
|
||||||
id: dragHandle
|
|
||||||
name: "drag_indicator"
|
|
||||||
size: Theme.iconSize - 4
|
|
||||||
color: rowItem.dragging ? Theme.primary : Theme.outline
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: Theme.spacingM
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
opacity: rowItem.isEnabled ? ((dragArea.containsMouse || rowItem.dragging || rowItem.highlighted) ? 1.0 : 0.45) : 0
|
|
||||||
visible: opacity > 0.01
|
|
||||||
|
|
||||||
Behavior on opacity {
|
|
||||||
NumberAnimation {
|
|
||||||
duration: Theme.shortDuration
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DankIcon {
|
|
||||||
id: tabIcon
|
|
||||||
name: rowItem.present.icon
|
|
||||||
size: Theme.iconSize
|
|
||||||
color: rowItem.isEnabled ? Theme.primary : Theme.outline
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: Theme.spacingM * 2 + Theme.iconSize - 4
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
ColorAnimation {
|
ColorAnimation {
|
||||||
duration: Theme.shortDuration
|
duration: Theme.shortDuration
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
Behavior on border.color {
|
||||||
|
ColorAnimation {
|
||||||
Column {
|
duration: Theme.shortDuration
|
||||||
anchors.left: tabIcon.right
|
}
|
||||||
anchors.leftMargin: Theme.spacingM
|
|
||||||
anchors.right: visibilityButton.left
|
|
||||||
anchors.rightMargin: Theme.spacingM
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
spacing: 2
|
|
||||||
|
|
||||||
StyledText {
|
|
||||||
text: rowItem.present.text
|
|
||||||
font.pixelSize: Theme.fontSizeMedium
|
|
||||||
font.weight: Font.Medium
|
|
||||||
color: rowItem.isEnabled ? Theme.surfaceText : Theme.outline
|
|
||||||
elide: Text.ElideRight
|
|
||||||
width: parent.width
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledText {
|
Rectangle {
|
||||||
text: rowItem.present.description
|
anchors.fill: parent
|
||||||
font.pixelSize: Theme.fontSizeSmall
|
radius: parent.radius
|
||||||
color: rowItem.isEnabled ? Theme.outline : Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.6)
|
color: Theme.primary
|
||||||
elide: Text.ElideRight
|
opacity: (dragArea.containsMouse && !rowItem.dragging) ? 0.06 : 0
|
||||||
width: parent.width
|
Behavior on opacity {
|
||||||
visible: text.length > 0
|
NumberAnimation {
|
||||||
|
duration: Theme.shortDuration
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
DankActionButton {
|
DankIcon {
|
||||||
id: visibilityButton
|
id: dragHandle
|
||||||
anchors.right: parent.right
|
name: "drag_indicator"
|
||||||
anchors.rightMargin: Theme.spacingS
|
size: Theme.iconSize - 4
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
color: rowItem.dragging ? Theme.primary : Theme.outline
|
||||||
buttonSize: 36
|
anchors.left: parent.left
|
||||||
iconName: rowItem.isEnabled ? "visibility" : "visibility_off"
|
anchors.leftMargin: Theme.spacingM
|
||||||
iconSize: 18
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
iconColor: rowItem.isEnabled ? Theme.primary : Theme.outline
|
opacity: rowItem.isEnabled ? ((dragArea.containsMouse || rowItem.dragging || rowItem.highlighted) ? 1.0 : 0.45) : 0
|
||||||
enabled: rowItem.canHide
|
visible: opacity > 0.01
|
||||||
onClicked: {
|
|
||||||
root.forceActiveFocus();
|
Behavior on opacity {
|
||||||
root.highlightedId = rowItem.modelData;
|
NumberAnimation {
|
||||||
SettingsData.setDashTabEnabled(rowItem.modelData, !rowItem.isEnabled);
|
duration: Theme.shortDuration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DankIcon {
|
||||||
|
id: tabIcon
|
||||||
|
name: rowItem.present.icon
|
||||||
|
size: Theme.iconSize
|
||||||
|
color: rowItem.isEnabled ? Theme.primary : Theme.outline
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: Theme.spacingM * 2 + Theme.iconSize - 4
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
|
Behavior on color {
|
||||||
|
ColorAnimation {
|
||||||
|
duration: Theme.shortDuration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.left: tabIcon.right
|
||||||
|
anchors.leftMargin: Theme.spacingM
|
||||||
|
anchors.right: visibilityButton.left
|
||||||
|
anchors.rightMargin: Theme.spacingM
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
spacing: 2
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
text: rowItem.present.text
|
||||||
|
font.pixelSize: Theme.fontSizeMedium
|
||||||
|
font.weight: Font.Medium
|
||||||
|
color: rowItem.isEnabled ? Theme.surfaceText : Theme.outline
|
||||||
|
elide: Text.ElideRight
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
text: rowItem.present.description
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
color: rowItem.isEnabled ? Theme.outline : Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.6)
|
||||||
|
elide: Text.ElideRight
|
||||||
|
width: parent.width
|
||||||
|
visible: text.length > 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DankActionButton {
|
||||||
|
id: visibilityButton
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: Theme.spacingS
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
buttonSize: 36
|
||||||
|
iconName: rowItem.isEnabled ? "visibility" : "visibility_off"
|
||||||
|
iconSize: 18
|
||||||
|
iconColor: rowItem.isEnabled ? Theme.primary : Theme.outline
|
||||||
|
enabled: rowItem.canHide
|
||||||
|
onClicked: {
|
||||||
|
root.forceActiveFocus();
|
||||||
|
root.highlightedId = rowItem.modelData;
|
||||||
|
SettingsData.setDashTabEnabled(rowItem.modelData, !rowItem.isEnabled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.margins: -2
|
anchors.margins: -2
|
||||||
radius: Theme.cornerRadius + 2
|
radius: Theme.cornerRadius + 2
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.width: 2
|
border.width: 2
|
||||||
border.color: Theme.primary
|
border.color: Theme.primary
|
||||||
opacity: rowItem.highlighted && !rowItem.dragging ? 0.6 : 0
|
opacity: rowItem.highlighted && !rowItem.dragging ? 0.6 : 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
|
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: Theme.shortDuration
|
duration: Theme.shortDuration
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: dragArea
|
id: dragArea
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.rightMargin: 48
|
anchors.rightMargin: 48
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
enabled: rowItem.isEnabled
|
enabled: rowItem.isEnabled
|
||||||
cursorShape: rowItem.dragging ? Qt.ClosedHandCursor : Qt.OpenHandCursor
|
cursorShape: rowItem.dragging ? Qt.ClosedHandCursor : Qt.OpenHandCursor
|
||||||
drag.target: rowItem
|
drag.target: rowItem
|
||||||
drag.axis: Drag.YAxis
|
drag.axis: Drag.YAxis
|
||||||
drag.minimumY: -rowItem.height
|
drag.minimumY: -rowItem.height
|
||||||
drag.maximumY: reorderArea.height
|
drag.maximumY: reorderArea.height
|
||||||
drag.smoothed: false
|
drag.smoothed: false
|
||||||
onPressed: {
|
onPressed: {
|
||||||
root.forceActiveFocus();
|
root.forceActiveFocus();
|
||||||
root.highlightedId = rowItem.modelData;
|
root.highlightedId = rowItem.modelData;
|
||||||
root.beginDrag(rowItem.modelData);
|
root.beginDrag(rowItem.modelData);
|
||||||
|
}
|
||||||
|
onReleased: root.endDrag()
|
||||||
}
|
}
|
||||||
onReleased: root.endDrag()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -574,4 +575,3 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -4610,6 +4610,21 @@
|
|||||||
"yubikey"
|
"yubikey"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"section": "_tab_11",
|
||||||
|
"label": "Lock Screen",
|
||||||
|
"tabIndex": 11,
|
||||||
|
"category": "Lock Screen",
|
||||||
|
"keywords": [
|
||||||
|
"lock",
|
||||||
|
"lockscreen",
|
||||||
|
"login",
|
||||||
|
"password",
|
||||||
|
"screen",
|
||||||
|
"security"
|
||||||
|
],
|
||||||
|
"icon": "lock"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"section": "lockDisplay",
|
"section": "lockDisplay",
|
||||||
"label": "Lock Screen Display",
|
"label": "Lock Screen Display",
|
||||||
@@ -4747,27 +4762,6 @@
|
|||||||
],
|
],
|
||||||
"description": "Control what notification information is shown on the lock screen"
|
"description": "Control what notification information is shown on the lock screen"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"section": "_tab_11",
|
|
||||||
"label": "Power & Security",
|
|
||||||
"tabIndex": 11,
|
|
||||||
"category": "Lock Screen",
|
|
||||||
"keywords": [
|
|
||||||
"hibernate",
|
|
||||||
"lock",
|
|
||||||
"login",
|
|
||||||
"password",
|
|
||||||
"power",
|
|
||||||
"reboot",
|
|
||||||
"restart",
|
|
||||||
"screen",
|
|
||||||
"security",
|
|
||||||
"shutdown",
|
|
||||||
"sleep",
|
|
||||||
"suspend"
|
|
||||||
],
|
|
||||||
"icon": "security"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"section": "lockScreenPowerOffMonitorsOnLock",
|
"section": "lockScreenPowerOffMonitorsOnLock",
|
||||||
"label": "Power off monitors on lock",
|
"label": "Power off monitors on lock",
|
||||||
@@ -5584,6 +5578,22 @@
|
|||||||
],
|
],
|
||||||
"description": "Play sound when volume is adjusted"
|
"description": "Play sound when volume is adjusted"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"section": "_tab_16",
|
||||||
|
"label": "Media Player",
|
||||||
|
"tabIndex": 16,
|
||||||
|
"category": "Media Player",
|
||||||
|
"keywords": [
|
||||||
|
"audio",
|
||||||
|
"media",
|
||||||
|
"mpris",
|
||||||
|
"music",
|
||||||
|
"playback",
|
||||||
|
"player",
|
||||||
|
"spotify"
|
||||||
|
],
|
||||||
|
"icon": "music_note"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"section": "mediaPlayer",
|
"section": "mediaPlayer",
|
||||||
"label": "Media Player Settings",
|
"label": "Media Player Settings",
|
||||||
@@ -5629,28 +5639,6 @@
|
|||||||
],
|
],
|
||||||
"description": "Scroll wheel behavior on media widget"
|
"description": "Scroll wheel behavior on media widget"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"section": "_tab_16",
|
|
||||||
"label": "Widgets & Notifications",
|
|
||||||
"tabIndex": 16,
|
|
||||||
"category": "Media Player",
|
|
||||||
"keywords": [
|
|
||||||
"alert",
|
|
||||||
"alerts",
|
|
||||||
"components",
|
|
||||||
"media",
|
|
||||||
"modules",
|
|
||||||
"mpris",
|
|
||||||
"music",
|
|
||||||
"notif",
|
|
||||||
"notifications",
|
|
||||||
"notifs",
|
|
||||||
"player",
|
|
||||||
"spotify",
|
|
||||||
"widgets"
|
|
||||||
],
|
|
||||||
"icon": "dashboard"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"section": "notificationBodyFontSize",
|
"section": "notificationBodyFontSize",
|
||||||
"label": "Body Font Size",
|
"label": "Body Font Size",
|
||||||
@@ -9113,27 +9101,39 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"section": "_tab_42",
|
"section": "_tab_42",
|
||||||
"label": "Battery",
|
"label": "Power & Security",
|
||||||
"tabIndex": 42,
|
"tabIndex": 42,
|
||||||
"category": "Settings",
|
"category": "Settings",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"battery",
|
"hibernate",
|
||||||
"charge",
|
|
||||||
"charging",
|
|
||||||
"power",
|
"power",
|
||||||
"settings"
|
"reboot",
|
||||||
|
"restart",
|
||||||
|
"security",
|
||||||
|
"settings",
|
||||||
|
"shutdown",
|
||||||
|
"sleep",
|
||||||
|
"suspend"
|
||||||
],
|
],
|
||||||
"icon": "battery_charging_full"
|
"icon": "security"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"section": "_tab_43",
|
"section": "_tab_43",
|
||||||
"label": "Dank Dash",
|
"label": "Widgets & Notifications",
|
||||||
"tabIndex": 43,
|
"tabIndex": 43,
|
||||||
"category": "Dank Dash",
|
"category": "Dank Dash",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
"alert",
|
||||||
|
"alerts",
|
||||||
|
"components",
|
||||||
"dank",
|
"dank",
|
||||||
"dash"
|
"dash",
|
||||||
|
"modules",
|
||||||
|
"notif",
|
||||||
|
"notifications",
|
||||||
|
"notifs",
|
||||||
|
"widgets"
|
||||||
],
|
],
|
||||||
"icon": "space_dashboard"
|
"icon": "dashboard"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user