Move the listView data to the c++ context

This commit is contained in:
Felix Hammer
2015-09-20 14:01:51 +02:00
parent 27b524f52f
commit e053cdcaf6
19 changed files with 8241 additions and 2952 deletions
@@ -13,39 +13,93 @@ Item {
property string titleString: ""
property bool alwaysDoubleBlinds: false
property var manualBlindsList
property ListModel internalManualBlindsList: ListModel {}
property bool afterMBAlwaysDoubleBlinds: false
property bool afterMBAlwaysRaiseAbout: false
property bool afterMBStayAtLastBlind: false
property int afterMBAlwaysRaiseValue: 0
property string afterMBAlwaysRaiseValue: "0"
property var parentListViewModel
property var parentListViewRoot
property int addBlindTextFieldMinValue: 5
property int addBlindTextFieldMaxValue: 1000000
property bool ready: false
signal accepted
function show(title, doubleBlinds, list, afterMBDouble, afterMBRaise, afterMBRaiseValue, afterMBStay) {
function show(title, doubleBlinds, list, afterMBDouble, afterMBRaise, afterMBRaiseValue, afterMBStay, parentListModel, parentListRoot) {
//initial the class values
titleString = title
alwaysDoubleBlinds = doubleBlinds;
manualBlindsList = list;
//to easily edit the array put it into an temporary listmodel
internalManualBlindsList.clear();
for (var i=0; i < list.length; i++) {
internalManualBlindsList.append({"value": list[i]});
}
afterMBAlwaysDoubleBlinds = afterMBDouble;
afterMBAlwaysRaiseAbout = afterMBRaise;
afterMBAlwaysRaiseValue = afterMBRaiseValue;
afterMBStayAtLastBlind = afterMBStay;
parentListViewModel = parentListModel;
parentListViewRoot = parentListRoot;
//show the abstract selector with below defined specific content
mySelector.show()
// if(raiseOnHandsType == "1") {
// textFieldHandsInterval.focus = true;
// radioBtnRaiseOnHands.checked = true;
// }
// else {
// textFieldMinutesInterval.focus = true;
// radioBtnRaiseOnMinutes.checked = true;
// }
//set the config options to radiobuttons and textfields
if(alwaysDoubleBlinds) {
radioBtnBlindsRaiseModeAlwaysDouble.checked = true;
radioBtnBlindsRaiseModeManualBlindsList.checked = false;
}
else {
radioBtnBlindsRaiseModeManualBlindsList.checked = true;
radioBtnBlindsRaiseModeAlwaysDouble.checked = false;
}
//if we are in a createLocalGameView Dialog set min and max from corresponding values in the same list
if(parentListViewRoot.myReadableId == "createLocalGameViewRoot") {
//get current start blind as minimum and cash as maximum for the textfield
var currentStartBlind = 0;
var startCash = 0;
for (var i=0; i < parentListViewModel.length; i++) {
if(parentListViewModel[i].myId == "spinBox_FirstSmallBlind") {
currentStartBlind = parentListViewModel[i].myValue;
}
else if (parentListViewModel[i].myId == "spinBox_StartCash") {
startCash = parentListViewModel[i].myValue;
}
}
addBlindTextFieldMinValue = currentStartBlind;
addBlindTextFieldMaxValue = startCash;
textFieldAddListBlind.text = addBlindTextFieldMinValue;
}
if(afterMBAlwaysDoubleBlinds) {
radioBtnAfterMBAlwaysDouble.checked = true
radioBtnAfterMBAlwaysRaiseAbout.checked = false
radioBtnAfterMBKeepLastBlind.checked = false
}
else if (afterMBAlwaysRaiseAbout) {
radioBtnAfterMBAlwaysDouble.checked = false
radioBtnAfterMBAlwaysRaiseAbout.checked = true
radioBtnAfterMBKeepLastBlind.checked = false
}
else {
radioBtnAfterMBAlwaysDouble.checked = false
radioBtnAfterMBAlwaysRaiseAbout.checked = false
radioBtnAfterMBKeepLastBlind.checked = true
}
textFieldAfterMBAlwaysRaiseAboutValue.text = afterMBAlwaysRaiseValue
}
function selected(doubleBlinds, list, afterMBDouble, afterMBRaise, afterMBRaiseValue, afterMBStay) {
function selected(doubleBlinds, afterMBDouble, afterMBRaise, afterMBRaiseValue, afterMBStay) {
alwaysDoubleBlinds = doubleBlinds;
manualBlindsList = list;
afterMBAlwaysDoubleBlinds = afterMBDouble;
afterMBAlwaysRaiseAbout = afterMBRaise;
afterMBAlwaysRaiseValue = afterMBRaiseValue;
@@ -63,20 +117,169 @@ Item {
onButton1Clicked: hide()
button2Text: qsTr("OK")
onButton2Clicked: {
// textFieldHandsInterval.correctValue();
// textFieldMinutesInterval.correctValue();
textFieldAfterMBAlwaysRaiseAboutValue.correctValue();
//copy editable internal listmodel to returnable list
manualBlindsList = new Array(); //clear at first
for (var i=0; i < internalManualBlindsList.count; i++) {
manualBlindsList.push(internalManualBlindsList.get(i).value.toString());
}
//return values
// root.selected(radioBtnRaiseOnHands.checked ? "1": "0", textFieldHandsInterval.text, textFieldMinutesInterval.text);
root.selected(radioBtnBlindsRaiseModeAlwaysDouble.checked, radioBtnAfterMBAlwaysDouble.checked, radioBtnAfterMBAlwaysRaiseAbout.checked, textFieldAfterMBAlwaysRaiseAboutValue.text, radioBtnAfterMBKeepLastBlind.checked);
}
container: ScrollView {
id: scrollView
anchors.fill: parent
ColumnLayout {
width: parent.width
// TODO Hier gehts mit dem Inhalt weiter
spacing: AppStyle.columnLayoutSpacing
ExclusiveGroup { id: blindsRaiseModeGroup }
RadioButton {
id: radioBtnBlindsRaiseModeAlwaysDouble
exclusiveGroup: blindsRaiseModeGroup
style: MyRadioButtonStyle {
myRadioBtn: radioBtnBlindsRaiseModeAlwaysDouble
labelString: qsTr("Always double blinds");
}
}
RadioButton {
id: radioBtnBlindsRaiseModeManualBlindsList
exclusiveGroup: blindsRaiseModeGroup
style: MyRadioButtonStyle {
myRadioBtn: radioBtnBlindsRaiseModeManualBlindsList
labelString: qsTr("Manual blinds list");
}
}
RowLayout {
id: listControlsRow
width: parent.width
spacing: AppStyle.rowLayoutSpacing
TextField {
id: textFieldAddListBlind
anchors.left: parent.left
//make space for the prefix
anchors.leftMargin: AppStyle.spinBoxSelectorTextFieldPrefixExtraLeftMargin
width: Math.round(listControlsRow.width * 0.5)
style: MyTextFieldStyle {
prefix: "$"
myTextField: textFieldAddListBlind
}
function correctValue() {
text = GlobalTools.correctTextFieldIntegerValue(root, text, addBlindTextFieldMinValue, addBlindTextFieldMaxValue);
}
onFocusChanged: { if(root.ready && !focus) correctValue(); }
onEditingFinished: { if(root.ready) correctValue(); }
}
Text {
id: btnAddNewListBlind
font.pixelSize: AppStyle.selectorBoxButtonFontSize
font.bold: true
width: Math.round(listControlsRow.width * 0.5)
text: qsTr("ADD BLIND")
MouseArea {
id: mouseAddNewListBlind
anchors.fill: parent
anchors.margins: AppStyle.selectorBoxButtonMouseAreaMargin
onClicked: {
textFieldAddListBlind.correctValue();
internalManualBlindsList.append({"value": textFieldAddListBlind.text.toString()})
}
Rectangle {
anchors.fill: parent
color: mouseAddNewListBlind.pressed ? "#55555555" : "#00ffffff"
}
}
}
}
Repeater {
id: manualBlindListRepeater
width: parent.width
model: internalManualBlindsList
delegate: RowLayout {
spacing: AppStyle.rowLayoutSpacing
Text {
id: blindInList
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: AppStyle.radioButtonLabelFontSize
text: "$"+model.value
}
Text {
id: btnRemoveListBlind
anchors.verticalCenter: parent.verticalCenter
property int modelIndex: model.index
font.pixelSize: AppStyle.selectorBoxButtonFontSize
font.bold: true
width: Math.round(listControlsRow.width * 0.5)
text: qsTr("REMOVE")
MouseArea {
id: mouseRemoveListBlind
anchors.fill: parent
anchors.margins: AppStyle.selectorBoxButtonMouseAreaMargin
onClicked: {
internalManualBlindsList.remove(btnRemoveListBlind.modelIndex)
}
Rectangle {
anchors.fill: parent
color: mouseRemoveListBlind.pressed ? "#55555555" : "#00ffffff"
}
}
}
}
}
Text {
font.pixelSize: AppStyle.selectorBoxValueFontSize
text: qsTr("Afterwards:")
}
ExclusiveGroup { id: afterMBModeGroup }
RadioButton {
id: radioBtnAfterMBAlwaysDouble
exclusiveGroup: afterMBModeGroup
style: MyRadioButtonStyle {
myRadioBtn: radioBtnAfterMBAlwaysDouble
labelString: qsTr("always double blinds");
}
}
RadioButton {
id: radioBtnAfterMBAlwaysRaiseAbout
exclusiveGroup: afterMBModeGroup
style: MyRadioButtonStyle {
myRadioBtn: radioBtnAfterMBAlwaysRaiseAbout
labelString: qsTr("always raise about");
}
}
TextField {
id: textFieldAfterMBAlwaysRaiseAboutValue
//make space for the prefix
anchors.left: parent.left
anchors.leftMargin: AppStyle.spinBoxSelectorTextFieldPrefixExtraLeftMargin
width: radioBtnAfterMBAlwaysRaiseAbout.width
style: MyTextFieldStyle {
prefix: "$"
myTextField: textFieldAfterMBAlwaysRaiseAboutValue
}
function correctValue() {
text = GlobalTools.correctTextFieldIntegerValue(root, text, addBlindTextFieldMinValue, addBlindTextFieldMaxValue);
}
onFocusChanged: { if(root.ready && !focus) correctValue(); }
onEditingFinished: { if(root.ready) correctValue(); }
}
RadioButton {
id: radioBtnAfterMBKeepLastBlind
exclusiveGroup: afterMBModeGroup
style: MyRadioButtonStyle {
myRadioBtn: radioBtnAfterMBKeepLastBlind
labelString: qsTr("keep last blind");
}
}
}
}
}
Component.onCompleted: ready = true;
Component.onCompleted: {
ready = true;
}
}