Preparing for storage and connection to scheduling, but have to turn pointList into model now

This commit is contained in:
Stefan Persson 2011-01-26 09:29:37 +00:00
parent ec7d5db109
commit ead8016cdd
3 changed files with 163 additions and 34 deletions

View file

@ -32,7 +32,7 @@ Rectangle{
border.color: "black"
opacity: 1 //0.8
z: 100
state: "on"
//state: "on"
focus: true
//actionTypeColor: getColor()
@ -216,7 +216,7 @@ Rectangle{
anchors.left: pointRect.horizontalCenter
color: pointRect.actionTypeColor
opacity: pointRect.actionTypeOpacity
width: Scripts.getNextAndPrevBarWidth(actionBar, pointRect, pointRect.parent.children);
width: Scripts.getBarWidth(actionBar, pointRect, pointRect.parent.children, weekModel.get(mainListView.currentIndex)); //getNextAndPrevBarWidth
}
}

View file

@ -15,9 +15,54 @@ import "schedulerscripts.js" as Scripts
width: parent.width
anchors.top: parent.top
anchors.left: parent.left
Rectangle{
anchors.right: weekDayText.left
anchors.verticalCenter: weekDayText.verticalCenter
height: 20
width: 20
border.color: "red"
Text{
anchors.centerIn: parent
text: "<-"
}
MouseArea{
anchors.fill: parent
onClicked: {
//step to prev weekday
//Scripts.updateEndsWith()
mainListView.decrementCurrentIndex()
//mainListView.positionViewAtIndex(mainListView.currentIndex, ListView.Center)
//mainListView.currentIndex = mainListView.currentIndex - 1
}
}
}
Text{
id: weekDayText
anchors.centerIn: parent
text: "TESTAR"
text: mainListView.cacheBuffer + " - " + weekModel.get(mainListView.currentIndex).name + " " + weekModel.get(mainListView.currentIndex).endsWith + " " + mainListView.currentIndex //TODO, do nicer... mainListView.currentItem.test.get(0) // test //.name //mainListView.model[mainListView.currentIndex] //currentItem.name
//TODO test with http://doc.qt.nokia.com/4.7-snapshot/declarative-ui-components-spinner-content-spinner-qml.html alias instead
}
Rectangle{
anchors.left: weekDayText.right
anchors.verticalCenter: weekDayText.verticalCenter
height: 20
width: 20
border.color: "red"
Text{
anchors.centerIn: parent
text: "->"
}
MouseArea{
anchors.fill: parent
onClicked: {
//step to next weekday
//Scripts.updateEndsWith(mainListView)
mainListView.incrementCurrentIndex()
//mainListView.positionViewAtIndex(mainListView.currentIndex, ListView.Center)
//mainListView.currentIndex = mainListView.currentIndex + 1
}
}
}
}
@ -27,24 +72,54 @@ import "schedulerscripts.js" as Scripts
anchors.topMargin: 10
anchors.left: parent.left
height: parent.height //TODO
width: parent.width
//anchors.left: dayListView.left
header: mainListViewHeader
model: 1
width: constDeviceRowWidth
//header: mainListViewHeader
model: weekModel
orientation: ListView.Horizontal
delegate: listDayRow //Text { text: "TEST - per modell" }
interactive: false //no scroll between days in this way
//delegate: Rectangle{ width: 600; height: 500; border.color: "black"; Text{text: "koll" + model.name} } //listDayRow
delegate: listDayRow
interactive: false //false //TODO //no scroll between days in this way
clip: true
currentIndex: count-1
//cacheBuffer: 100000 //TODO remove
onCurrentIndexChanged: {
myScript(currentIndex)
}
//highlight: Rectangle { color: "yellow" }
//currentIndex: root.current
//preferredHighlightBegin: 80; preferredHighlightEnd: 220
//highlightRangeMode: ListView.ApplyRange
//TODO transitions:
}
ListModel{
id: weekModel
ListElement{
name: "Monday"
endsWith: ""
}
ListElement{
name: "Tuesday"
endsWith: ""
}
ListElement{
name: "Wednesday"
endsWith: ""
}
}
Component{
id: listDayRow
ListView {
id: dayListView
//property variant test: model
//anchors.top: mainListView.bottom
//anchors.left: parent.left
width: parent.width
width: constDeviceRowWidth //TODO//parent.width
height: 700 //TODO
//anchors.fill: parent
@ -55,33 +130,44 @@ import "schedulerscripts.js" as Scripts
header: timeline
snapMode: ListView.SnapToItem
interactive: false //no scroll between devices at the moment
//keyNavigationWraps: true
/*
states: State {
name: "currentItem"; when: ListView.isCurrentItem
PropertyChanges { target: dayListView; height: myScript(ListView.) } //TODO better way...
//ScriptAction { scriptName: "myScript" }
}
*/
}
}
Component{
id: mainListViewHeader
Column{
id: mainListViewHeaderColumn
anchors.left: parent.left
anchors.top: parent.top
anchors.topMargin: dayListHeaderHeight
width: main.width - constDeviceRowWidth
spacing: 0
Repeater{
model: deviceModel
Rectangle{
width: parent.width
height: constDeviceRowHeight
border.color: "green"
Text{
anchors.centerIn: parent
text: modelData.name
}
//Component{
// id: mainListViewHeader
Column{
id: mainListViewHeaderColumn
anchors.right: mainListView.left
anchors.top: mainListView.top
anchors.topMargin: dayListHeaderHeight
width: main.width - constDeviceRowWidth
spacing: 0
Repeater{
model: deviceModel
Rectangle{
width: parent.width
height: constDeviceRowHeight
border.color: "green"
Text{
anchors.centerIn: parent
text: modelData.name
}
}
}
//}
}
Component{
@ -105,6 +191,7 @@ import "schedulerscripts.js" as Scripts
*/
Rectangle { id: "deviceRow"; border.color: "blue"; width: parent.width; height: parent.height;
clip: true
MouseArea {
id: deviceMouseArea
anchors.fill: parent
@ -299,6 +386,21 @@ import "schedulerscripts.js" as Scripts
var hourSize = constDeviceRowWidth/24; //(main.width - 100)/24; //TODO constant or something?
return hourSize * suntime[0] + hourSize * suntime[1]/60;
}
//TODO SPARA POINTLISTAN OCKSÅ! Kanske inte här, utan att man addar points till modellen och inte den fysiska listan?
function myScript(index){
if(index == 0){
return;
}
index = index - 1; //prev index
var pointList = "TODO" //TODO !!!! förra dagens pointlist...
weekModel.setProperty(index, "endsWith", Scripts.getEndsWith(pointList, "on")) //TODO previousDayEndsWith, vad förra dagen endade med...
//return 700;
print(index);
print("LYCKATS!!!");
}
//opacity vid dimning?
//linjens färg etc (state) beror ju på närmaste punkt föres sort... Punkten kan finnas osynlig (tidigare dag) också...
//kan man liksom göra hela linjen (från en vecka tillbaka) men inte visa den? Om det är vettigt... Då hade man tom kunnat zooma en vacker dag

View file

@ -8,10 +8,11 @@ function getActiveStates(){
return activeStates;
}
function getBarWidth(currentBar, currentPointRect, pointList){
function getBarWidth(currentBar, currentPointRect, pointList, currentDay){
//TODO REMOVE currentDay too, currentDay.endsWith = ""; //reset
var maxWidth = currentPointRect.parent.width;
var nextX = maxWidth - currentPointRect.width / 2
var nextX = maxWidth - currentPointRect.width / 2;
for(var i=0;i<pointList.length;i++){
if (pointList[i].isPoint != undefined && pointList[i].isPoint == "true") {
if(pointList[i].x < nextX && pointList[i].x > currentPointRect.x){
@ -19,6 +20,12 @@ function getBarWidth(currentBar, currentPointRect, pointList){
}
}
}
/* TODO
if(nextX == maxWidth - currentPointRect.width/2 && currentPointRect.state != "" && currentPointRect.state != "off"){
currentDay.endsWith = currentPointRect.state;
print("Ends with: " + currentDay.endsWith);
}
*/
return (nextX - currentPointRect.x);
}
@ -40,6 +47,25 @@ function getPreviousState(currentPointRect, pointList){
return prevPoint.state;
}
function getEndsWith(pointList, previousDayEndsWith){
var prevPoint = null;
for(var i=0;i<pointList.length;i++){
if(pointList[i].isPoint != undefined && pointList[i].isPoint == "true"){
if((prevPoint == null || pointList[i].x > prevPoint.x) && pointList[i].state != "bell"){ //TODO when more than "bell", make dynamic
prevPoint = pointList[i];
}
}
}
if(prevPoint == null){
return previousDayEndsWith;
}
if(prevPoint.state == "off"){
return "";
}
return prevPoint.state; //only on or dim
}
function isMidnightDark(){
if(main.sunData == undefined){
main.sunData = getSunData.call();
@ -63,7 +89,8 @@ function pad(number, length) {
return str;
}
/*
function getNextAndPrevBarWidth(currentBar, currentPointRect, pointList){
return getBarWidth(currentBar, currentPointRect, pointList);
}
*/