diff options
Diffstat (limited to 'qml/Viper/Options.qml')
-rwxr-xr-x | qml/Viper/Options.qml | 1710 |
1 files changed, 1710 insertions, 0 deletions
diff --git a/qml/Viper/Options.qml b/qml/Viper/Options.qml new file mode 100755 index 00000000..82d3e3e7 --- /dev/null +++ b/qml/Viper/Options.qml @@ -0,0 +1,1710 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.5 +import QtQuick.Extras 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import "utils.js" as Utils + +Rectangle { + signal closeOptions + signal saveAdaptationLogic(string selectedAdaptationLogic, int adaptationLogicKey) + signal saveIcn(bool selectedIcn) + signal saveIcnPrefix(string selectedIcnPrefix) + signal saveHttpPrefix(string selectedHttpPrefix) + signal saveIcnSuffix(string selectedIcnSuffix) + signal saveHttpSuffix(string selectedHttpSuffix) + signal saveSegmentBufferSize(real selectedSegmentBufferSize) + signal saveRateAlpha(real selectedRateAlpha) + signal saveBufferReservoirThreshold(real selectedBufferReservoirThreshold) + signal saveBufferMaxThreshold(real selectedBufferMaxThreshold) + signal saveAdaptechFirstThreshold(real selectedAdaptechFirstThreshold) + signal saveAdaptechSecondThreshold(real selectedAdaptechSecondThreshold) + signal saveAdaptechSwitchUpMargin(real selectedAdaptechSwitchUpMargin) + signal saveAdaptechSlackParameter(real selectedAdaptechSlackParameter) + signal saveAdaptechAlpha(real selectedAdaptechAlpha) + signal saveBufferThreeThresholdFirst(real selectedBufferThreeThresholdFirst) + signal saveBufferThreeThresholdSecond(real selectedBufferThreeThresholdSecond) + signal saveBufferThreeThresholdThird(real selectedBufferThreeThresholdThird) + signal savePandaParamAlpha(real selectedPandaParamAlpha) + signal savePandaParamBeta(real selectedPandaParamBeta) + signal savePandaParamBMin(real selectedPandaParamBMin) + signal savePandaParamK(real selectedPandaParamK) + signal savePandaParamW(real selectedPandaParamW) + signal savePandaParamEpsilon(real selectedPandaParamEpsilon) + signal saveBolaBufferTarget(real selectedBolaBufferTarget) + signal saveBolaAlpha(real selectedBolaAlpha) + signal reloadRateBasedConf + signal reloadBufferBasedConf + signal reloadBufferRateBasedConf + signal reloadBufferThreeThresholdConf + signal reloadPandaConf + signal reloadBolaConf + property int heightRow: Utils.scaled(60) + + function scaled(x) + { + return x*Screen.pixelDensity/Screen.logicalPixelDensity; + } + + id: root + color: "#88445566" + property variant target + opacity: 0 + radius: Utils.scaled(10) + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + enabled: false + + Item { + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + id: itemAdaptationSetList + Label { + id: labelAdaptationSetList + color: "white" + anchors.top: parent.top + anchors.right: comboAdaptationSetList.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (comboAdaptationSetList.height - height)/2 + text: "Video AdaptationSet" + font.bold: true + font.pixelSize: Utils.scaled(10); + + } + + ComboBox { + z: parent.z + 1 + id: comboAdaptationSetList + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + width: Utils.scaled(200) + enabled: true + textRole: "text" + + model: ListModel { + id: adaptationLogicModel + ListElement { text: "Always Lowest"; } + ListElement { text: "Rate Based"; } + ListElement { text: "Buffer Based"; } + ListElement { text: "Buffer Rate Based"; } + ListElement { text: "Buffer Based Three Threshold"; } + ListElement { text: "Panda"; } + ListElement { text: "Bola"; } + } + + onCurrentIndexChanged: { + switch (currentIndex) { + case 0: + case 7: + reloadRateBasedConf() + spinboxRateAlpha.value = rateAlpha*100 + rectangleRateBasedConf.enabled = false + rectangleRateBasedConf.opacity = 0 + reloadBufferBasedConf() + spinboxBufferReservoirThreshold.value = bufferReservoirThreshold*100 + spinboxBufferMaxThreshold.value = bufferMaxThreshold*100 + rectangleBufferBasedConf.enabled = false + rectangleBufferBasedConf.opacity = 0 + reloadBufferRateBasedConf() + spinboxAdaptechFirstThreshold.value = adaptechFirstThreshold*100 + spinboxAdaptechSecondThreshold.value = adaptechSecondThreshold*100 + spinboxAdaptechSwitchUpMargin.value = adaptechSwitchUpMargin*100 + spinboxAdaptechSlackParameter.value = adaptechSlackParameter*100 + spinboxAdaptechAlpha.value = adaptechAlpha*100 + rectangleBufferRateBasedConf.enabled = false + rectangleBufferRateBasedConf.opacity = 0 + reloadBufferThreeThresholdConf() + spinboxBufferThreeThresoldFirst.value = bufferThreeThresholdFirst*100 + spinboxBufferThreeThresoldSecond.value = bufferThreeThresholdSecond*100 + spinboxBufferThreeThresoldThird.value = bufferThreeThresholdThird*100 + rectangleBufferThreeThresholdConf.enabled = false + rectangleBufferThreeThresholdConf.opacity = 0 + reloadPandaConf() + spinboxPandaParamAlpha.value = pandaParamAlpha*100 + spinboxPandaParamBeta.value = pandaParamBeta*100 + spinboxPandaParamBMin.value = pandaParamBMin*100 + spinboxPandaParamK.value = pandaParamK*100 + spinboxPandaParamW.value = pandaParamW + spinboxPandaParamEpsilon.value = pandaParamEpsilon*100 + rectanglePandaConf.enabled = false + rectanglePandaConf.opacity = 0 + reloadBolaConf() + spinboxBolaBufferTarget.value = bolaBufferTarget*100 + spinboxBolaAlpha.value = bolaAlpha*100 + rectangleBolaConf.enabled = false + rectangleBolaConf.opacity = 0 + break + case 1: + rectangleRateBasedConf.enabled = true + rectangleRateBasedConf.opacity = 1 + reloadBufferBasedConf() + spinboxBufferReservoirThreshold.value = bufferReservoirThreshold*100 + spinboxBufferMaxThreshold.value = bufferMaxThreshold*100 + rectangleBufferBasedConf.enabled = false + rectangleBufferBasedConf.opacity = 0 + reloadBufferRateBasedConf() + spinboxAdaptechFirstThreshold.value = adaptechFirstThreshold*100 + spinboxAdaptechSecondThreshold.value = adaptechSecondThreshold*100 + spinboxAdaptechSwitchUpMargin.value = adaptechSwitchUpMargin*100 + spinboxAdaptechSlackParameter.value = adaptechSlackParameter*100 + spinboxAdaptechAlpha.value = adaptechAlpha*100 + rectangleBufferRateBasedConf.enabled = false + rectangleBufferRateBasedConf.opacity = 0 + reloadBufferThreeThresholdConf() + spinboxBufferThreeThresoldFirst.value = bufferThreeThresholdFirst*100 + spinboxBufferThreeThresoldSecond.value = bufferThreeThresholdSecond*100 + spinboxBufferThreeThresoldThird.value = bufferThreeThresholdThird*100 + rectangleBufferThreeThresholdConf.enabled = false + rectangleBufferThreeThresholdConf.opacity = 0 + reloadPandaConf() + spinboxPandaParamAlpha.value = pandaParamAlpha*100 + spinboxPandaParamBeta.value = pandaParamBeta*100 + spinboxPandaParamBMin.value = pandaParamBMin*100 + spinboxPandaParamK.value = pandaParamK*100 + spinboxPandaParamW.value = pandaParamW + spinboxPandaParamEpsilon.value = pandaParamEpsilon*100 + rectanglePandaConf.enabled = false + rectanglePandaConf.opacity = 0 + reloadBolaConf() + spinboxBolaBufferTarget.value = bolaBufferTarget*100 + spinboxBolaAlpha.value = bolaAlpha*100 + rectangleBolaConf.enabled = false + rectangleBolaConf.opacity = 0 + break + case 2: + reloadRateBasedConf() + spinboxRateAlpha.value = rateAlpha*100 + rectangleRateBasedConf.enabled = false + rectangleRateBasedConf.opacity = 0 + rectangleBufferBasedConf.enabled = true + rectangleBufferBasedConf.opacity = 1 + reloadBufferRateBasedConf() + spinboxAdaptechFirstThreshold.value = adaptechFirstThreshold*100 + spinboxAdaptechSecondThreshold.value = adaptechSecondThreshold*100 + spinboxAdaptechSwitchUpMargin.value = adaptechSwitchUpMargin*100 + spinboxAdaptechSlackParameter.value = adaptechSlackParameter*100 + spinboxAdaptechAlpha.value = adaptechAlpha*100 + rectangleBufferRateBasedConf.enabled = false + rectangleBufferRateBasedConf.opacity = 0 + reloadBufferThreeThresholdConf() + spinboxBufferThreeThresoldFirst.value = bufferThreeThresholdFirst*100 + spinboxBufferThreeThresoldSecond.value = bufferThreeThresholdSecond*100 + spinboxBufferThreeThresoldThird.value = bufferThreeThresholdThird*100 + rectangleBufferThreeThresholdConf.enabled = false + rectangleBufferThreeThresholdConf.opacity = 0 + reloadPandaConf() + spinboxPandaParamAlpha.value = pandaParamAlpha*100 + spinboxPandaParamBeta.value = pandaParamBeta*100 + spinboxPandaParamBMin.value = pandaParamBMin*100 + spinboxPandaParamK.value = pandaParamK*100 + spinboxPandaParamW.value = pandaParamW + spinboxPandaParamEpsilon.value = pandaParamEpsilon*100 + rectanglePandaConf.enabled = false + rectanglePandaConf.opacity = 0 + reloadBolaConf() + spinboxBolaBufferTarget.value = bolaBufferTarget*100 + spinboxBolaAlpha.value = bolaAlpha*100 + rectangleBolaConf.enabled = false + rectangleBolaConf.opacity = 0 + break + case 3: + reloadRateBasedConf() + spinboxRateAlpha.value = rateAlpha*100 + rectangleRateBasedConf.enabled = false + rectangleRateBasedConf.opacity = 0 + reloadBufferBasedConf() + spinboxBufferReservoirThreshold.value = bufferReservoirThreshold*100 + spinboxBufferMaxThreshold.value = bufferMaxThreshold*100 + rectangleBufferBasedConf.enabled = false + rectangleBufferBasedConf.opacity = 0 + rectangleBufferRateBasedConf.enabled = true + rectangleBufferRateBasedConf.opacity = 1 + reloadBufferThreeThresholdConf() + spinboxBufferThreeThresoldFirst.value = bufferThreeThresholdFirst*100 + spinboxBufferThreeThresoldSecond.value = bufferThreeThresholdSecond*100 + spinboxBufferThreeThresoldThird.value = bufferThreeThresholdThird*100 + rectangleBufferThreeThresholdConf.enabled = false + rectangleBufferThreeThresholdConf.opacity = 0 + reloadPandaConf() + spinboxPandaParamAlpha.value = pandaParamAlpha*100 + spinboxPandaParamBeta.value = pandaParamBeta*100 + spinboxPandaParamBMin.value = pandaParamBMin*100 + spinboxPandaParamK.value = pandaParamK*100 + spinboxPandaParamW.value = pandaParamW + spinboxPandaParamEpsilon.value = pandaParamEpsilon*100 + rectanglePandaConf.enabled = false + rectanglePandaConf.opacity = 0 + reloadBolaConf() + spinboxBolaBufferTarget.value = bolaBufferTarget*100 + spinboxBolaAlpha.value = bolaAlpha*100 + rectangleBolaConf.enabled = false + rectangleBolaConf.opacity = 0 + break + case 4: + reloadRateBasedConf() + spinboxRateAlpha.value = rateAlpha*100 + rectangleRateBasedConf.enabled = false + rectangleRateBasedConf.opacity = 0 + reloadBufferBasedConf() + spinboxBufferReservoirThreshold.value = bufferReservoirThreshold*100 + spinboxBufferMaxThreshold.value = bufferMaxThreshold*100 + rectangleBufferBasedConf.enabled = false + rectangleBufferBasedConf.opacity = 0 + reloadBufferRateBasedConf() + spinboxAdaptechFirstThreshold.value = adaptechFirstThreshold*100 + spinboxAdaptechSecondThreshold.value = adaptechSecondThreshold*100 + spinboxAdaptechSwitchUpMargin.value = adaptechSwitchUpMargin*100 + spinboxAdaptechSlackParameter.value = adaptechSlackParameter*100 + spinboxAdaptechAlpha.value = adaptechAlpha*100 + rectangleBufferRateBasedConf.enabled = false + rectangleBufferRateBasedConf.opacity = 0 + rectangleBufferThreeThresholdConf.enabled = true + rectangleBufferThreeThresholdConf.opacity = 1 + reloadPandaConf() + spinboxPandaParamAlpha.value = pandaParamAlpha*100 + spinboxPandaParamBeta.value = pandaParamBeta*100 + spinboxPandaParamBMin.value = pandaParamBMin*100 + spinboxPandaParamK.value = pandaParamK*100 + spinboxPandaParamW.value = pandaParamW + spinboxPandaParamEpsilon.value = pandaParamEpsilon*100 + rectanglePandaConf.enabled = false + rectanglePandaConf.opacity = 0 + reloadBolaConf() + spinboxBolaBufferTarget.value = bolaBufferTarget*100 + spinboxBolaAlpha.value = bolaAlpha*100 + rectangleBolaConf.enabled = false + rectangleBolaConf.opacity = 0 + break + case 5: + reloadRateBasedConf() + spinboxRateAlpha.value = rateAlpha*100 + rectangleRateBasedConf.enabled = false + rectangleRateBasedConf.opacity = 0 + reloadBufferBasedConf() + spinboxBufferReservoirThreshold.value = bufferReservoirThreshold*100 + spinboxBufferMaxThreshold.value = bufferMaxThreshold*100 + rectangleBufferBasedConf.enabled = false + rectangleBufferBasedConf.opacity = 0 + reloadBufferRateBasedConf() + spinboxAdaptechFirstThreshold.value = adaptechFirstThreshold*100 + spinboxAdaptechSecondThreshold.value = adaptechSecondThreshold*100 + spinboxAdaptechSwitchUpMargin.value = adaptechSwitchUpMargin*100 + spinboxAdaptechSlackParameter.value = adaptechSlackParameter*100 + spinboxAdaptechAlpha.value = adaptechAlpha*100 + rectangleBufferRateBasedConf.enabled = false + rectangleBufferRateBasedConf.opacity = 0 + reloadBufferThreeThresholdConf() + spinboxBufferThreeThresoldFirst.value = bufferThreeThresholdFirst*100 + spinboxBufferThreeThresoldSecond.value = bufferThreeThresholdSecond*100 + spinboxBufferThreeThresoldThird.value = bufferThreeThresholdThird*100 + rectangleBufferThreeThresholdConf.enabled = false + rectangleBufferThreeThresholdConf.opacity = 0 + rectanglePandaConf.enabled = true + rectanglePandaConf.opacity = 1 + reloadBolaConf() + spinboxBolaBufferTarget.value = bolaBufferTarget*100 + spinboxBolaAlpha.value = bolaAlpha*100 + rectangleBolaConf.enabled = false + rectangleBolaConf.opacity = 0 + break + case 6: + reloadRateBasedConf() + spinboxRateAlpha.value = rateAlpha*100 + rectangleRateBasedConf.enabled = false + rectangleRateBasedConf.opacity = 0 + reloadBufferBasedConf() + spinboxBufferReservoirThreshold.value = bufferReservoirThreshold*100 + spinboxBufferMaxThreshold.value = bufferMaxThreshold*100 + rectangleBufferBasedConf.enabled = false + rectangleBufferBasedConf.opacity = 0 + reloadBufferRateBasedConf() + spinboxAdaptechFirstThreshold.value = adaptechFirstThreshold*100 + spinboxAdaptechSecondThreshold.value = adaptechSecondThreshold*100 + spinboxAdaptechSwitchUpMargin.value = adaptechSwitchUpMargin*100 + spinboxAdaptechSlackParameter.value = adaptechSlackParameter*100 + spinboxAdaptechAlpha.value = adaptechAlpha*100 + rectangleBufferRateBasedConf.enabled = false + rectangleBufferRateBasedConf.opacity = 0 + reloadBufferThreeThresholdConf() + spinboxBufferThreeThresoldFirst.value = bufferThreeThresholdFirst*100 + spinboxBufferThreeThresoldSecond.value = bufferThreeThresholdSecond*100 + spinboxBufferThreeThresoldThird.value = bufferThreeThresholdThird*100 + rectangleBufferThreeThresholdConf.enabled = false + rectangleBufferThreeThresholdConf.opacity = 0 + reloadPandaConf() + spinboxPandaParamAlpha.value = pandaParamAlpha*100 + spinboxPandaParamBeta.value = pandaParamBeta*100 + spinboxPandaParamBMin.value = pandaParamBMin*100 + spinboxPandaParamK.value = pandaParamK*100 + spinboxPandaParamW.value = pandaParamW + spinboxPandaParamEpsilon.value = pandaParamEpsilon*100 + rectanglePandaConf.enabled = false + rectanglePandaConf.opacity = 0 + rectangleBolaConf.enabled = true + rectangleBolaConf.opacity = 1 + break + } + } + currentIndex: find(adaptationLogic) + } + + Item { + id: switchRectangle + anchors.left: comboAdaptationSetList.right + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(12) + + Label { + text: "TCP" + id: labelLegacy + color: "white" + anchors.top: parent.top + anchors.left: parent.left + font.bold: true + font.pixelSize: switchIcn.height + } + + Switch { + id: switchIcn + height: comboAdaptationSetList.height + anchors.top: parent.top + anchors.left: labelLegacy.right + checked: icn + } + + Label { + id: labelIcn + color: "white" + anchors.top: parent.top + anchors.right: parent.right + anchors.left: switchIcn.right + text: "ICN" + font.bold: true + font.pixelSize: switchIcn.height + } + } + } + + Item { + id: itemIcnPrefix + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + heightRow + + Label { + text: "ICN Prefix:" + id: labelIcnPrefix + color: " white" + anchors.top: parent.top + anchors.right: textInputIcnPrefix.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (textInputIcnPrefix.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + TextInput { + width: parent.width/4*3 + id: textInputIcnPrefix + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + font.pixelSize: Utils.scaled(20) + color: "white" + text: icnPrefix + } + } + + Item { + id: itemIcnSuffix + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + heightRow + + Label { + text: "ICN Suffix:" + id: labelIcnSuffix + color: " white" + anchors.top: parent.top + anchors.right: textInputIcnSuffix.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (textInputIcnSuffix.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + TextInput { + width: parent.width/4*3 + id: textInputIcnSuffix + anchors.top: parent.top + anchors.right: parent.right + font.pixelSize: Utils.scaled(20) + color: "white" + text: icnSuffix + } + } + + Item { + id: itemHttpPrefix + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + 2*heightRow + + Label { + text: "TCP Prefix:" + id: labelHttpPrefix + color: " white" + anchors.top: parent.top + anchors.right: textInputHttpPrefix.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (textInputHttpPrefix.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + TextInput { + width: parent.width/4*3 + id: textInputHttpPrefix + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + font.pixelSize: Utils.scaled(20) + color: "white" + text: httpPrefix + } + } + + Item { + id: itemHttpSuffix + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + 2*heightRow + + Label { + text: "TCP Suffix:" + id: labelHttpSuffix + color: " white" + anchors.top: parent.top + anchors.right: textInputHttpSuffix.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (textInputHttpSuffix.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + TextInput { + width: parent.width/4*3 + id: textInputHttpSuffix + anchors.top: parent.top + anchors.right: parent.right + font.pixelSize: Utils.scaled(20) + color: "white" + text: httpSuffix + } + } + + Item { + id: itemSegmentBufferSize + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + 3*heightRow + + Label { + text: "Segment Buffer Size" + id: labelSegmentBufferSize + color: " white" + anchors.top: parent.top + anchors.right: spinboxSegmentBufferSize.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxSegmentBufferSize.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxSegmentBufferSize + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: segmentBufferSize*100 + to: 10000 + stepSize: 100 + property int decimals: 0 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxSegmentBufferSize.from, spinboxSegmentBufferSize.to) + top: Math.max(spinboxSegmentBufferSize.from, spinboxSegmentBufferSize.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxSegmentBufferSize.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Rectangle { + id: rectangleRateBasedConf + z: parent.z + 1 + enabled: false + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + 4*heightRow + + Label { + text: "Rate Based Conf" + id: labelRateBasedConf + color: " white" + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(10) + anchors.left: parent.left + font.bold: true + font.pixelSize: Utils.scaled(20); + } + + Item { + id: itemRateAlpha + anchors.top: labelRateBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Rate\nAlpha" + id: labelRateAlpha + color: " white" + anchors.top: parent.top + anchors.right: spinboxRateAlpha.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxRateAlpha.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxRateAlpha + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: rateAlpha*100 + to: 100000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxRateAlpha.from, spinboxRateAlpha.to) + top: Math.max(spinboxRateAlpha.from, spinboxRateAlpha.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxRateAlpha.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + } + + Rectangle { + id: rectangleBufferBasedConf + radius: Utils.scaled(10) + z: parent.z + 1 + enabled: false + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + 4*heightRow + + Label { + text: "Buffer Based Conf" + id: labelBufferBasedConf + color: " white" + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(10) + anchors.left: parent.left + font.bold: true + font.pixelSize: Utils.scaled(20); + } + + Item { + id: itemBufferReservoirThreshold + anchors.top: labelBufferBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Buffer Reservoir\nThreshold" + id: labelBufferReservoirThreshold + color: " white" + anchors.top: parent.top + anchors.right: spinboxBufferReservoirThreshold.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBufferReservoirThreshold.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBufferReservoirThreshold + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: bufferReservoirThreshold*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBufferReservoirThreshold.from, spinboxBufferReservoirThreshold.to) + top: Math.max(spinboxBufferReservoirThreshold.from, spinboxBufferReservoirThreshold.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBufferReservoirThreshold.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemBufferMaxThreshold + anchors.top: labelBufferBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Buffer Max\nThreshold" + id: labelBufferMaxThreshold + color: " white" + anchors.top: parent.top + anchors.right: spinboxBufferMaxThreshold.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBufferMaxThreshold.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBufferMaxThreshold + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(450) + from: 0 + value: bufferMaxThreshold*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBufferMaxThreshold.from, spinboxBufferMaxThreshold.to) + top: Math.max(spinboxBufferMaxThreshold.from, spinboxBufferMaxThreshold.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBufferMaxThreshold.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + } + + Rectangle { + id: rectangleBufferRateBasedConf + z: parent.z + 1 + enabled: false + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + 4*heightRow + + Label { + text: "Buffer Rate Based Conf" + id: labelBufferRateBasedConf + color: " white" + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(10) + anchors.left: parent.left + font.bold: true + font.pixelSize: Utils.scaled(20); + } + + Item { + id: itemAdaptechFirstThreshold + anchors.top: labelBufferRateBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Adaptech First\nThreshold" + id: labelAdaptechFirstThreshold + color: " white" + anchors.top: parent.top + anchors.right: spinboxAdaptechFirstThreshold.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxAdaptechFirstThreshold.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxAdaptechFirstThreshold + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: adaptechFirstThreshold*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator{ + bottom: Math.min(spinboxAdaptechFirstThreshold.from, spinboxAdaptechFirstThreshold.to) + top: Math.max(spinboxAdaptechFirstThreshold.from, spinboxAdaptechFirstThreshold.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxAdaptechFirstThreshold.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemAdaptechSecondThreshold + anchors.top: labelBufferRateBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Adaptech\nSecond\nThreshold" + id: labelAdaptechSecondThreshold + color: " white" + anchors.top: parent.top + anchors.right: spinboxAdaptechSecondThreshold.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxAdaptechSecondThreshold.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxAdaptechSecondThreshold + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(450) + from: 0 + value: adaptechSecondThreshold*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxAdaptechSecondThreshold.from, spinboxAdaptechSecondThreshold.to) + top: Math.max(spinboxAdaptechSecondThreshold.from, spinboxAdaptechSecondThreshold.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxAdaptechSecondThreshold.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemAdaptechSwitchUpMargin + anchors.top: labelBufferRateBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Adaptech\nSwitchUp\nMargin" + id: labelAdaptechswitchUpMargin + color: " white" + anchors.top: parent.top + anchors.right: spinboxAdaptechSwitchUpMargin.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxAdaptechSwitchUpMargin.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxAdaptechSwitchUpMargin + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(700) + from: 0 + value: adaptechSwitchUpMargin*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxAdaptechSwitchUpMargin.from, spinboxAdaptechSwitchUpMargin.to) + top: Math.max(spinboxAdaptechSwitchUpMargin.from, spinboxAdaptechSwitchUpMargin.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxAdaptechSwitchUpMargin.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemAdaptechSlackParameter + anchors.top: labelBufferRateBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Adaptech\nSlack\nParameter" + id: labelAdaptechSwitchUpMargin + color: " white" + anchors.top: parent.top + anchors.right: spinboxAdaptechSlackParameter.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxAdaptechSlackParameter.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxAdaptechSlackParameter + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(950) + from: 0 + value: adaptechSlackParameter*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxAdaptechSlackParameter.from, spinboxAdaptechSlackParameter.to) + top: Math.max(spinboxAdaptechSlackParameter.from, spinboxAdaptechSlackParameter.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxAdaptechSlackParameter.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemAdaptechAlpha + anchors.top: labelBufferRateBasedConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + heightRow + + Label { + textFormat: Text.RichText + text: "Adaptech\nAlpha" + id: labelAdaptechAlpha + color: " white" + anchors.top: parent.top + anchors.right: spinboxAdaptechAlpha.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxAdaptechAlpha.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxAdaptechAlpha + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: adaptechAlpha*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxAdaptechAlpha.from, spinboxAdaptechAlpha.to) + top: Math.max(spinboxAdaptechAlpha.from, spinboxAdaptechAlpha.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxAdaptechAlpha.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + } + + Rectangle { + id: rectangleBufferThreeThresholdConf + radius: Utils.scaled(10) + z: parent.z + 1 + enabled: false + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + 4*heightRow + + Label { + text: "Buffer Three Conf" + id: labelBufferThreeThresholdConf + color: " white" + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(10) + anchors.left: parent.left + font.bold: true + font.pixelSize: Utils.scaled(20); + } + + Item { + id: itemBufferThreeThresoldFirst + anchors.top: labelBufferThreeThresholdConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Buffer Three\nThreshold\nFirst" + id: labelBufferThreeThresoldFirst + color: " white" + anchors.top: parent.top + anchors.right: spinboxBufferThreeThresoldFirst.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBufferThreeThresoldFirst.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBufferThreeThresoldFirst + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: bufferThreeThresholdFirst*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBufferThreeThresoldFirst.from, spinboxBufferThreeThresoldFirst.to) + top: Math.max(spinboxBufferThreeThresoldFirst.from, spinboxBufferThreeThresoldFirst.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBufferThreeThresoldFirst.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemBufferThreeThresoldSecond + anchors.top: labelBufferThreeThresholdConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Buffer Three\nThreshold\nSecond" + id: labelBufferThreeThresoldSecond + color: " white" + anchors.top: parent.top + anchors.right: spinboxBufferThreeThresoldSecond.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBufferThreeThresoldSecond.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBufferThreeThresoldSecond + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(450) + from: 0 + value: bufferThreeThresholdSecond*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBufferThreeThresoldSecond.from, spinboxBufferThreeThresoldSecond.to) + top: Math.max(spinboxBufferThreeThresoldSecond.from, spinboxBufferThreeThresoldSecond.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBufferThreeThresoldSecond.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemBufferThreeThresoldThird + anchors.top: labelBufferThreeThresholdConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Buffer Three\nThreshold\nThird" + id: labelBufferThreeThresoldThird + color: " white" + anchors.top: parent.top + anchors.right: spinboxBufferThreeThresoldThird.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBufferThreeThresoldThird.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBufferThreeThresoldThird + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(700) + from: 0 + value: bufferThreeThresholdThird*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBufferThreeThresoldThird.from, spinboxBufferThreeThresoldThird.to) + top: Math.max(spinboxBufferThreeThresoldThird.from, spinboxBufferThreeThresoldThird.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBufferThreeThresoldThird.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + } + + Rectangle { + id: rectanglePandaConf + radius: Utils.scaled(10) + z: parent.z + 1 + enabled: false + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + 4*heightRow + + Label { + text: "Panda Conf" + id: labelPandaConf + color: " white" + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(10) + anchors.left: parent.left + font.bold: true + font.pixelSize: Utils.scaled(20); + } + + Item { + id: itemPandaParamAlpha + anchors.top: labelPandaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + textFormat: Text.RichText + text: "Param α" + id: labelPandaParamAlpha + color: " white" + anchors.top: parent.top + anchors.right: spinboxPandaParamAlpha.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxPandaParamAlpha.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxPandaParamAlpha + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: pandaParamAlpha*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxPandaParamAlpha.from, spinboxPandaParamAlpha.to) + top: Math.max(spinboxPandaParamAlpha.from, spinboxPandaParamAlpha.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxPandaParamAlpha.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + + Item { + id: itemPandaParamBeta + anchors.top: labelPandaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + textFormat: Text.RichText + text: "Param β" + id: labelPandaParamBeta + color: " white" + anchors.top: parent.top + anchors.right: spinboxPandaParamBeta.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxPandaParamBeta.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxPandaParamBeta + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(450) + from: 0 + value: pandaParamBeta*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxPandaParamBeta.from, spinboxPandaParamBeta.to) + top: Math.max(spinboxPandaParamBeta.from, spinboxPandaParamBeta.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxPandaParamBeta.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemPandaParamBMin + anchors.top: labelPandaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + + Label { + textFormat: Text.RichText + text: "Param B<sub>min</sub>" + id: labelPandaParamBMin + color: " white" + anchors.top: parent.top + anchors.right: spinboxPandaParamBMin.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxPandaParamBMin.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxPandaParamBMin + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(700) + from: 0 + value: pandaParamBMin*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxPandaParamBMin.from, spinboxPandaParamBMin.to) + top: Math.max(spinboxPandaParamBMin.from, spinboxPandaParamBMin.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxPandaParamBMin.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemPandaParamK + anchors.top: labelPandaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Param K" + id: labelPandaParamK + color: " white" + anchors.top: parent.top + anchors.right: spinboxPandaParamK.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxPandaParamK.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxPandaParamK + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(950) + from: 0 + value: pandaParamK*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxPandaParamK.from, spinboxPandaParamK.to) + top: Math.max(spinboxPandaParamK.from, spinboxPandaParamK.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxPandaParamK.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemPandaParamW + anchors.top: labelPandaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + heightRow + + Label { + textFormat: Text.RichText + text: "Param ω" + id: labelPandaParamW + color: " white" + anchors.top: parent.top + anchors.right: spinboxPandaParamW.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxPandaParamW.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxPandaParamW + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: pandaParamW + to: 1000000 + stepSize: 1 + } + } + + Item { + id: itemPandaParamEpsilon + anchors.top: labelPandaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + heightRow + + Label { + textFormat: Text.RichText + text: "Param ε" + id: labelPandaParamEpsilon + color: " white" + anchors.top: parent.top + anchors.right: spinboxPandaParamEpsilon.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxPandaParamEpsilon.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxPandaParamEpsilon + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(450) + from: 0 + value: pandaParamEpsilon*100 + to: 10000 + stepSize: 1 + property int decimals: 2 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxPandaParamEpsilon.from, spinboxPandaParamEpsilon.to) + top: Math.max(spinboxPandaParamEpsilon.from, spinboxPandaParamEpsilon.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxPandaParamEpsilon.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + } + + Rectangle { + id: rectangleBolaConf + radius: Utils.scaled(10) + z: parent.z + 1 + enabled: false + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: Utils.scaled(12) + 4*heightRow + + Label { + text: "Bola Conf" + id: labelBolaConf + color: " white" + anchors.top: parent.top + anchors.leftMargin: Utils.scaled(10) + anchors.left: parent.left + font.bold: true + font.pixelSize: Utils.scaled(20); + + } + + Item { + id: itemBolaBufferTarget + anchors.top: labelBolaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: Utils.scaled(parent.width/2) + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Bola Buffer\nTarget" + id: labelBolaBufferTarget + color: " white" + anchors.top: parent.top + anchors.right: spinboxBolaBufferTarget.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBolaBufferTarget.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBolaBufferTarget + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + from: 0 + value: bolaBufferTarget*100 + to: 100000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBolaBufferTarget.from, spinboxBolaBufferTarget.to) + top: Math.max(spinboxBolaBufferTarget.from, spinboxBolaBufferTarget.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBolaBufferTarget.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + + Item { + id: itemBolaAlpha + anchors.top: labelBolaConf.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(12) + + Label { + text: "Bola\nAlpha" + id: labelBolaAlpha + color: " white" + anchors.top: parent.top + anchors.right: spinboxBolaAlpha.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (spinboxBolaAlpha.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + SpinBox { + id: spinboxBolaAlpha + z: parent.z + 1 + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(450) + from: 0 + value: bolaAlpha*100 + to: 10000 + stepSize: 10 + property int decimals: 1 + property real realValue: value / 100 + + validator: DoubleValidator { + bottom: Math.min(spinboxBolaAlpha.from, spinboxBolaAlpha.to) + top: Math.max(spinboxBolaAlpha.from, spinboxBolaAlpha.to) + } + + textFromValue: function(value, locale) + { + return Number(value / 100).toLocaleString(locale, 'f', spinboxBolaAlpha.decimals) + } + + valueFromText: function(text, locale) + { + return Number.fromLocaleString(locale, text) * 100 + } + } + } + } + + Item { + id: itemButton + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.rightMargin: Utils.scaled(12) + anchors.bottomMargin: Utils.scaled(12) + + Button { + id: cancelBtn + z: parent.z + 1 + text: "Cancel" + anchors.right: saveBtn.left + anchors.bottom: parent.bottom + anchors.rightMargin: Utils.scaled(5) + + onClicked: { + closeOptions(); + } + } + + Button { + id: saveBtn + z: parent.z + 1 + anchors.right: parent.right + anchors.bottom: parent.bottom + text: "Save" + + onClicked: { + saveAdaptationLogic(adaptationLogicModel.get(comboAdaptationSetList.currentIndex).text, comboAdaptationSetList.currentIndex); + saveIcn(switchIcn.checked) + saveIcnPrefix(textInputIcnPrefix.text) + saveHttpPrefix(textInputHttpPrefix.text) + saveIcnSuffix(textInputIcnSuffix.text) + saveHttpSuffix(textInputHttpSuffix.text) + saveSegmentBufferSize(spinboxSegmentBufferSize.value/100) + saveRateAlpha(spinboxRateAlpha.value/100) + saveBufferReservoirThreshold(spinboxBufferReservoirThreshold.value/100) + saveBufferMaxThreshold(spinboxBufferMaxThreshold.value/100) + saveAdaptechFirstThreshold(spinboxAdaptechFirstThreshold.value/100) + saveAdaptechSecondThreshold(spinboxAdaptechSecondThreshold.value/100) + saveAdaptechSwitchUpMargin(spinboxAdaptechSwitchUpMargin.value/100) + saveAdaptechSlackParameter(spinboxAdaptechSlackParameter.value/100) + saveAdaptechAlpha(spinboxAdaptechAlpha.value/100) + saveBufferThreeThresholdFirst(spinboxBufferThreeThresoldFirst.value/100) + saveBufferThreeThresholdSecond(spinboxBufferThreeThresoldSecond.value/100) + saveBufferThreeThresholdThird(spinboxBufferThreeThresoldThird.value/100) + savePandaParamAlpha(spinboxPandaParamAlpha.value/100) + savePandaParamBeta(spinboxPandaParamBeta.value/100) + savePandaParamBMin(spinboxPandaParamBMin.value/100) + savePandaParamK(spinboxPandaParamK.value/100) + savePandaParamW(spinboxPandaParamW.value) + savePandaParamEpsilon(spinboxPandaParamEpsilon.value/100) + saveBolaBufferTarget(spinboxBolaBufferTarget.value/100) + saveBolaAlpha(spinboxBolaAlpha.value/100) + dashPlayer.reloadParameters() + closeOptions(); + } + } + } +} |