Settings ScreenRecorder wip

This commit is contained in:
quadbyte 2025-08-12 17:31:09 -04:00
parent c00e1f7fb3
commit bf3f0cf88d
3 changed files with 69 additions and 72 deletions

View file

@ -46,28 +46,44 @@ ColumnLayout {
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: Style.marginSmall * scaling Layout.topMargin: Style.marginSmall * scaling
NText { ColumnLayout {
text: "Output Directory" spacing: Style.marginTiny * scaling
font.pointSize: 13
font.weight: Style.fontWeightBold
color: Colors.textPrimary
}
NText { NText {
text: "Directory where screen recordings will be saved" text: "Output Directory"
font.pointSize: 12 font.weight: Style.fontWeightBold
color: Colors.textSecondary color: Colors.textPrimary
wrapMode: Text.WordWrap }
Layout.fillWidth: true
NText {
text: "Directory where screen recordings will be saved"
font.pointSize: Style.fontSizeSmall * scaling
color: Colors.textSecondary
wrapMode: Text.WordWrap
}
} }
NTextInput { NTextInput {
text: Settings.data.screenRecorder.directory text: Settings.data.screenRecorder.directory
Layout.fillWidth: true
onEditingFinished: { onEditingFinished: {
Settings.data.screenRecorder.directory = text Settings.data.screenRecorder.directory = text
} }
} }
ColumnLayout {
spacing: Style.marginSmall * scaling
Layout.fillWidth: true
Layout.topMargin: Style.marginMedium * scaling
// Show Cursor
NToggle {
label: "Show Cursor"
description: "Record mouse cursor in the video"
value: Settings.data.screenRecorder.showCursor
onToggled: function (newValue) {
Settings.data.screenRecorder.showCursor = newValue
}
}
}
} }
NDivider { NDivider {
@ -78,7 +94,7 @@ ColumnLayout {
// Video Settings // Video Settings
ColumnLayout { ColumnLayout {
spacing: 4 spacing: Style.marginTiny * scaling
Layout.fillWidth: true Layout.fillWidth: true
NText { NText {
@ -95,24 +111,24 @@ ColumnLayout {
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: Style.marginSmall * scaling Layout.topMargin: Style.marginSmall * scaling
NText { ColumnLayout {
text: "Frame Rate" spacing: Style.marginTiny * scaling
font.pointSize: 13 NText {
font.weight: Style.fontWeightBold text: "Frame Rate"
color: Colors.textPrimary font.weight: Style.fontWeightBold
} color: Colors.textPrimary
}
NText { NText {
text: "Target frame rate for screen recordings (default: 60)" text: "Target frame rate for screen recordings (default: 60)"
font.pointSize: 12 font.pointSize: Style.fontSizeSmall * scaling
color: Colors.textSecondary color: Colors.textSecondary
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
Layout.fillWidth: true }
} }
NComboBox { NComboBox {
optionsKeys: ["30", "60", "120", "240"] optionsKeys: ["30", "60", "120", "2Style.marginLarge * scaling0"]
optionsLabels: ["30 FPS", "60 FPS", "120 FPS", "240 FPS"] optionsLabels: ["30 FPS", "60 FPS", "120 FPS", "2Style.marginLarge * scaling0 FPS"]
currentKey: Settings.data.screenRecorder.frameRate currentKey: Settings.data.screenRecorder.frameRate
onSelected: function (key) { onSelected: function (key) {
Settings.data.screenRecorder.frameRate = key Settings.data.screenRecorder.frameRate = key
@ -153,20 +169,19 @@ ColumnLayout {
// Video Codec // Video Codec
ColumnLayout { ColumnLayout {
spacing: 8 spacing: Style.marginTiny * scaling
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: Style.marginSmall * scaling Layout.topMargin: Style.marginSmall * scaling
NText { NText {
text: "Video Codec" text: "Video Codec"
font.pointSize: 13
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
} }
NText { NText {
text: "Different codecs offer different compression and compatibility" text: "Different codecs offer different compression and compatibility"
font.pointSize: 12 font.pointSize: Style.fontSizeSmall * scaling
color: Colors.textSecondary color: Colors.textSecondary
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
Layout.fillWidth: true Layout.fillWidth: true
@ -190,14 +205,14 @@ ColumnLayout {
NText { NText {
text: "Color Range" text: "Color Range"
font.pointSize: 13
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
} }
NText { NText {
text: "Limited is recommended for better compatibility" text: "Limited is recommended for better compatibility"
font.pointSize: 12 font.pointSize: Style.fontSizeSmall * scaling
color: Colors.textSecondary color: Colors.textSecondary
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
Layout.fillWidth: true Layout.fillWidth: true
@ -227,7 +242,7 @@ ColumnLayout {
NText { NText {
text: "Audio Settings" text: "Audio Settings"
font.pointSize: 18 font.pointSize: Style.fontSizeXL * scaling
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
Layout.bottomMargin: Style.marginSmall * scaling Layout.bottomMargin: Style.marginSmall * scaling
@ -241,14 +256,14 @@ ColumnLayout {
NText { NText {
text: "Audio Source" text: "Audio Source"
font.pointSize: 13
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
} }
NText { NText {
text: "Audio source to capture during recording" text: "Audio source to capture during recording"
font.pointSize: 12 font.pointSize: Style.fontSizeSmall * scaling
color: Colors.textSecondary color: Colors.textSecondary
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
Layout.fillWidth: true Layout.fillWidth: true
@ -294,16 +309,6 @@ ColumnLayout {
} }
} }
} }
// Show Cursor
NToggle {
label: "Show Cursor"
description: "Record mouse cursor in the video"
value: Settings.data.screenRecorder.showCursor
onToggled: function (newValue) {
Settings.data.screenRecorder.showCursor = newValue
}
}
} }
} }
} }

View file

@ -14,8 +14,7 @@ ColumnLayout {
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
padding: 16 padding: Style.marginMedium * scaling
rightPadding: 12
clip: true clip: true
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
ScrollBar.vertical.policy: ScrollBar.AsNeeded ScrollBar.vertical.policy: ScrollBar.AsNeeded
@ -30,29 +29,22 @@ ColumnLayout {
} }
ColumnLayout { ColumnLayout {
spacing: 4 spacing: Style.marginTiny * scaling
Layout.fillWidth: true Layout.fillWidth: true
NText { NText {
text: "Time & Weather Settings" text: "Location"
font.pointSize: 18 font.pointSize: Style.fontSizeXL * scaling
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
Layout.bottomMargin: 8 Layout.bottomMargin: Style.marginSmall * scaling
} }
// Location section // Location section
ColumnLayout { ColumnLayout {
spacing: 8 spacing: Style.marginMedium * scaling
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: 8 Layout.topMargin: Style.marginSmall * scaling
NText {
text: "Location"
font.pointSize: 13
font.weight: Style.fontWeightBold
color: Colors.textPrimary
}
NTextInput { NTextInput {
text: Settings.data.location.name text: Settings.data.location.name
@ -66,18 +58,18 @@ ColumnLayout {
NDivider { NDivider {
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: 26 Layout.topMargin: Style.marginLarge * 2 * scaling
Layout.bottomMargin: 18 Layout.bottomMargin: Style.marginLarge * scaling
} }
// Time section // Time section
ColumnLayout { ColumnLayout {
spacing: 4 spacing: Style.marginMedium * scaling
Layout.fillWidth: true Layout.fillWidth: true
NText { NText {
text: "Time Format" text: "Time Format"
font.pointSize: 18 font.pointSize: Style.fontSizeXL * scaling
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
Layout.bottomMargin: 8 Layout.bottomMargin: 8
@ -104,21 +96,21 @@ ColumnLayout {
NDivider { NDivider {
Layout.fillWidth: true Layout.fillWidth: true
Layout.topMargin: 26 Layout.topMargin: Style.marginLarge * 2 * scaling
Layout.bottomMargin: 18 Layout.bottomMargin: Style.marginLarge * scaling
} }
// Weather section // Weather section
ColumnLayout { ColumnLayout {
spacing: 4 spacing: Style.marginMedium * scaling
Layout.fillWidth: true Layout.fillWidth: true
NText { NText {
text: "Weather" text: "Weather"
font.pointSize: 18 font.pointSize: Style.fontSizeXL * scaling
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
Layout.bottomMargin: 8 Layout.bottomMargin: Style.marginSmall * scaling
} }
NToggle { NToggle {

View file

@ -18,7 +18,7 @@ RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
ColumnLayout { ColumnLayout {
spacing: 2 * scaling spacing: Style.marginTiniest * scaling
Layout.fillWidth: true Layout.fillWidth: true
NText { NText {