ran quality.sh #363
|
@ -17,28 +17,28 @@ W.Overlay {
|
||||||
//horizontalPadding: 15 * gcd.themeScale
|
//horizontalPadding: 15 * gcd.themeScale
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: mm
|
target: mm
|
||||||
onRowsInserted: {
|
onRowsInserted: {
|
||||||
if (messagesListView.atYEnd) thymer.running = true
|
if (messagesListView.atYEnd) thymer.running = true
|
||||||
|
|
||||||
//todo: this won't fire for non-active convos
|
//todo: this won't fire for non-active convos
|
||||||
windowItem.alert(0)
|
windowItem.alert(0)
|
||||||
if (gcd.os == "android" && windowItem.activeFocusItem == null) {
|
if (gcd.os == "android" && windowItem.activeFocusItem == null) {
|
||||||
androidCwtchActivity.notification = "New Content"
|
androidCwtchActivity.notification = "New Content"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onRowsInserted is firing after the model is updated but before the delegate is inflated
|
// onRowsInserted is firing after the model is updated but before the delegate is inflated
|
||||||
// causing positionViewAtEnd() to scroll to "just above the last message"
|
// causing positionViewAtEnd() to scroll to "just above the last message"
|
||||||
// so we use this timer to delay scrolling by a few milliseconds
|
// so we use this timer to delay scrolling by a few milliseconds
|
||||||
Timer {
|
Timer {
|
||||||
id: thymer
|
id: thymer
|
||||||
interval: 30
|
interval: 30
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
thymer.running = false
|
thymer.running = false
|
||||||
messagesListView.positionViewAtEnd()
|
messagesListView.positionViewAtEnd()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contentItem: ListView {
|
contentItem: ListView {
|
||||||
|
@ -76,47 +76,47 @@ W.Overlay {
|
||||||
width: messagesListView.width
|
width: messagesListView.width
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: sectionHeading
|
id: sectionHeading
|
||||||
Rectangle {// ⟵ outer rect because anchors._Margin isnt supported here
|
Rectangle {// ⟵ outer rect because anchors._Margin isnt supported here
|
||||||
// with qt 5.15+ this↓ can be changed to...
|
// with qt 5.15+ this↓ can be changed to...
|
||||||
// required property string section
|
// required property string section
|
||||||
property string txt: section
|
property string txt: section
|
||||||
color: Theme.backgroundMainColor
|
color: Theme.backgroundMainColor
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: texmet.height + 6 + 12 * gcd.themeScale
|
height: texmet.height + 6 + 12 * gcd.themeScale
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
opacity: 1
|
opacity: 1
|
||||||
width: texmet.width + radius * 4 + 6
|
width: texmet.width + radius * 4 + 6
|
||||||
height: texmet.height + 6
|
height: texmet.height + 6
|
||||||
color: Theme.messageFromOtherBackgroundColor
|
color: Theme.messageFromOtherBackgroundColor
|
||||||
radius: texmet.height / 2
|
radius: texmet.height / 2
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
id: txtDate
|
id: txtDate
|
||||||
// ... and this can be changed to
|
// ... and this can be changed to
|
||||||
// text: parent.parent.section
|
// text: parent.parent.section
|
||||||
text: parent.parent.txt
|
text: parent.parent.txt
|
||||||
font.pixelSize: Theme.chatSize * gcd.themeScale
|
font.pixelSize: Theme.chatSize * gcd.themeScale
|
||||||
color: Theme.messageFromOtherTextColor
|
color: Theme.messageFromOtherTextColor
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
TextMetrics {
|
TextMetrics {
|
||||||
id: texmet
|
id: texmet
|
||||||
text: txtDate.text
|
text: txtDate.text
|
||||||
font.pixelSize: Theme.chatSize * gcd.themeScale
|
font.pixelSize: Theme.chatSize * gcd.themeScale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: gcd
|
target: gcd
|
||||||
|
@ -124,7 +124,7 @@ W.Overlay {
|
||||||
onClearMessages: function() {
|
onClearMessages: function() {
|
||||||
messagesListView.model = null
|
messagesListView.model = null
|
||||||
messagesListView.model = mm
|
messagesListView.model = mm
|
||||||
messagesListView.positionViewAtEnd()
|
messagesListView.positionViewAtEnd()
|
||||||
thymer.running = true
|
thymer.running = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,80 +34,80 @@ Opaque.SettingsList { // Add Profile Pane
|
||||||
serverAddEditPane.server_messages = server_messages;
|
serverAddEditPane.server_messages = server_messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
settings: Column {
|
settings: Column {
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
width: 700
|
width: 700
|
||||||
|
|
||||||
Opaque.ScalingLabel {
|
|
||||||
text: server_name
|
|
||||||
size: 16
|
|
||||||
}
|
|
||||||
|
|
||||||
Opaque.Setting {
|
|
||||||
label: qsTr("server-availability")
|
|
||||||
|
|
||||||
|
|
||||||
field: Opaque.ToggleSwitch {
|
|
||||||
anchors.right: parent.right
|
|
||||||
|
|
||||||
isToggled: serverAddEditPane.server_available
|
|
||||||
onToggled: function() {
|
|
||||||
serverAddEditPane.server_available = !serverAddEditPane.server_available
|
|
||||||
if (serverAddEditPane.server_available) {
|
|
||||||
gcd.startServer(serverAddEditPane.server_name)
|
|
||||||
} else {
|
|
||||||
gcd.stopServer(serverAddEditPane.server_name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Opaque.Setting {
|
|
||||||
label: qsTr("server-autostart")
|
|
||||||
|
|
||||||
field: Opaque.ToggleSwitch {
|
|
||||||
anchors.right: parent.right
|
|
||||||
|
|
||||||
isToggled: serverAddEditPane.autostart_server
|
|
||||||
onToggled: function() {
|
|
||||||
serverAddEditPane.autostart_server = !serverAddEditPane.autostart_server
|
|
||||||
gcd.autostartServer(serverAddEditPane.server_name, serverAddEditPane.autostart_server)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Opaque.Setting {
|
|
||||||
inline: false
|
|
||||||
label: qsTr("server-num-messages")
|
|
||||||
|
|
||||||
field: Opaque.TextField {
|
|
||||||
id: numMessages
|
|
||||||
readOnly: true
|
|
||||||
text: serverAddEditPane.server_messages;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Opaque.Setting {
|
|
||||||
inline: false
|
|
||||||
label: qsTr("server-key-bundle")
|
|
||||||
|
|
||||||
field: Opaque.ButtonTextField {
|
|
||||||
id: txtServerBundle
|
|
||||||
readOnly: true
|
|
||||||
text: serverAddEditPane.server_bundle;
|
|
||||||
button_text: qsTr("copy-btn")
|
|
||||||
dropShadowColor: Theme.dropShadowPaneColor
|
|
||||||
onClicked: {
|
|
||||||
//: notification: copied to clipboard
|
|
||||||
gcd.popup(qsTr("copied-to-clipboard-notification"))
|
|
||||||
txtServerBundle.selectAll()
|
|
||||||
txtServerBundle.copy()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Opaque.ScalingLabel {
|
||||||
|
text: server_name
|
||||||
|
size: 16
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Opaque.Setting {
|
||||||
|
label: qsTr("server-availability")
|
||||||
|
|
||||||
|
|
||||||
|
field: Opaque.ToggleSwitch {
|
||||||
|
anchors.right: parent.right
|
||||||
|
|
||||||
|
isToggled: serverAddEditPane.server_available
|
||||||
|
onToggled: function() {
|
||||||
|
serverAddEditPane.server_available = !serverAddEditPane.server_available
|
||||||
|
if (serverAddEditPane.server_available) {
|
||||||
|
gcd.startServer(serverAddEditPane.server_name)
|
||||||
|
} else {
|
||||||
|
gcd.stopServer(serverAddEditPane.server_name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Opaque.Setting {
|
||||||
|
label: qsTr("server-autostart")
|
||||||
|
|
||||||
|
field: Opaque.ToggleSwitch {
|
||||||
|
anchors.right: parent.right
|
||||||
|
|
||||||
|
isToggled: serverAddEditPane.autostart_server
|
||||||
|
onToggled: function() {
|
||||||
|
serverAddEditPane.autostart_server = !serverAddEditPane.autostart_server
|
||||||
|
gcd.autostartServer(serverAddEditPane.server_name, serverAddEditPane.autostart_server)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Opaque.Setting {
|
||||||
|
inline: false
|
||||||
|
label: qsTr("server-num-messages")
|
||||||
|
|
||||||
|
field: Opaque.TextField {
|
||||||
|
id: numMessages
|
||||||
|
readOnly: true
|
||||||
|
text: serverAddEditPane.server_messages;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Opaque.Setting {
|
||||||
|
inline: false
|
||||||
|
label: qsTr("server-key-bundle")
|
||||||
|
|
||||||
|
field: Opaque.ButtonTextField {
|
||||||
|
id: txtServerBundle
|
||||||
|
readOnly: true
|
||||||
|
text: serverAddEditPane.server_bundle;
|
||||||
|
button_text: qsTr("copy-btn")
|
||||||
|
dropShadowColor: Theme.dropShadowPaneColor
|
||||||
|
onClicked: {
|
||||||
|
//: notification: copied to clipboard
|
||||||
|
gcd.popup(qsTr("copied-to-clipboard-notification"))
|
||||||
|
txtServerBundle.selectAll()
|
||||||
|
txtServerBundle.copy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: gcd
|
target: gcd
|
||||||
|
|
|
@ -122,34 +122,34 @@ Opaque.SettingsList { // settingsPane
|
||||||
|
|
||||||
// Experimental Gating
|
// Experimental Gating
|
||||||
|
|
||||||
Opaque.Setting {
|
Opaque.Setting {
|
||||||
//: Theme
|
//: Theme
|
||||||
label: qsTr("experiments-enabled")
|
label: qsTr("experiments-enabled")
|
||||||
|
|
||||||
field: Opaque.ToggleSwitch {
|
field: Opaque.ToggleSwitch {
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
id: experimentsEnabledToggle
|
id: experimentsEnabledToggle
|
||||||
isToggled: gcd.experimentsEnabled
|
isToggled: gcd.experimentsEnabled
|
||||||
onToggled: function() {
|
onToggled: function() {
|
||||||
console.log("experiments enabled: " + gcd.experimentsEnabled + " " + experimentsEnabledToggle.isToggled) ;
|
console.log("experiments enabled: " + gcd.experimentsEnabled + " " + experimentsEnabledToggle.isToggled) ;
|
||||||
if (gcd.experimentsEnabled == false) {
|
if (gcd.experimentsEnabled == false) {
|
||||||
gcd.experimentsEnabled = true;
|
gcd.experimentsEnabled = true;
|
||||||
} else {
|
} else {
|
||||||
gcd.experimentsEnabled = false;
|
gcd.experimentsEnabled = false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Widgets.ExperimentToggle {
|
Widgets.ExperimentToggle {
|
||||||
name: "servers_enabled"
|
name: "servers_enabled"
|
||||||
experiment_id: "tapir-servers-experiment"
|
experiment_id: "tapir-servers-experiment"
|
||||||
}
|
}
|
||||||
|
|
||||||
Widgets.ExperimentToggle {
|
Widgets.ExperimentToggle {
|
||||||
name: "groups_enabled"
|
name: "groups_enabled"
|
||||||
experiment_id: "tapir-groups-experiment"
|
experiment_id: "tapir-groups-experiment"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,21 +4,21 @@ import "../opaque/theme"
|
||||||
import "../utils.js" as Utils
|
import "../utils.js" as Utils
|
||||||
|
|
||||||
Opaque.Setting {
|
Opaque.Setting {
|
||||||
//: Theme
|
//: Theme
|
||||||
id: experiment
|
id: experiment
|
||||||
property string name;
|
property string name;
|
||||||
property string experiment_id;
|
property string experiment_id;
|
||||||
visible: gcd.experimentsEnabled
|
visible: gcd.experimentsEnabled
|
||||||
label: qsTr(name)
|
label: qsTr(name)
|
||||||
|
|
||||||
field: Opaque.ToggleSwitch {
|
field: Opaque.ToggleSwitch {
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
id: expToggle
|
id: expToggle
|
||||||
isToggled: Utils.checkMap(gcd.experiments, experiment.experiment_id)
|
isToggled: Utils.checkMap(gcd.experiments, experiment.experiment_id)
|
||||||
onToggled: function() {
|
onToggled: function() {
|
||||||
let experimentsMap = Utils.buildMap(gcd.experiments);
|
let experimentsMap = Utils.buildMap(gcd.experiments);
|
||||||
experimentsMap[experiment.experiment_id] = expToggle.isToggled ? false : true;
|
experimentsMap[experiment.experiment_id] = expToggle.isToggled ? false : true;
|
||||||
gcd.experiments = experimentsMap;
|
gcd.experiments = experimentsMap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ ColumnLayout {
|
||||||
target: gcd
|
target: gcd
|
||||||
|
|
||||||
onLoaded: function() {
|
onLoaded: function() {
|
||||||
gcd.requestServers();
|
gcd.requestServers();
|
||||||
}
|
}
|
||||||
|
|
||||||
onAddServer: function(handle, displayName, image, status, autostart, bundle, messages, key_types, keys) {
|
onAddServer: function(handle, displayName, image, status, autostart, bundle, messages, key_types, keys) {
|
||||||
|
|
Reference in New Issue