Version 0.004

This commit is contained in:
LubuWest 2017-05-11 22:15:34 +02:00
commit 438f8a4e4d
64 changed files with 2736 additions and 636 deletions

View file

@ -0,0 +1,47 @@
import QtQuick 2.0
import QtQuick.Controls 1.4
Item {
id: calendarDay
width:7*mm
height: 7*mm
property int dateInt:Math.floor((Date.parse(model.date)-(new Date().getTimezoneOffset() * 60 * 1000))/86400000)
Rectangle {
id: placeHolder
color: 'lightblue'; antialiasing: true
anchors.fill:parent
}
Text {
id:daytext
anchors.right: parent.right
anchors.margins: 0.5*mm
color:(model.month==monthgrid.month)?"black":"grey"
wrapMode: Text.WrapAnywhere
text: model.day
font.bold: model.today
font.pixelSize: 4*mm
}
Rectangle {
id:eventRect
color:"black"
anchors.margins: 0.5*mm
anchors.bottom: calendarDay.bottom
width: parent.width-mm
height: mm
visible: eventdays.indexOf(dateInt)>-1
}
MouseArea {
anchors.fill: calendarDay
onClicked: {
var eventDate=[];
var idx = eventdays.indexOf(dateInt);
while (idx != -1) {
eventDate.push(idx);
idx = eventdays.indexOf(dateInt,idx + 1)
}
var component = Qt.createComponent("qrc:/qml/calendarqml/EventList.qml");
if (component.status== Component.Ready){
var eventlist = component.createObject(calendartab,{"daylist": eventDate})}
}
}
}

View file

@ -0,0 +1,134 @@
import QtQuick 2.0
import QtQuick.Controls 2.1
import QtQml 2.2
import Qt.labs.calendar 1.0
import QtQuick.Layouts 1.3
import "qrc:/js/service.js" as Service
import "qrc:/js/helper.js" as Helperjs
import "qrc:/qml/calendarqml"
import "qrc:/qml/genericqml"
Rectangle {
id:calendarrectangle
y:1
width:root.width-mm
height:root.height-5*mm
color: '#fff'
property date currentTime: new Date()
property int offsetTime: currentTime.getTimezoneOffset() * 60 * 1000
property var events:[]
property var eventdays:[]
onEventdaysChanged: print(JSON.stringify(eventdays))
function showEvents(friend){
if(friend=="backButton"){Service.eventsfromdb(db,login.username,function(eventArray,dayArray){
events=eventArray;
eventdays=dayArray})
}
else if (friend!=""){
calendartab.calendartabstatus=friend.substring(friend.lastIndexOf("/")+1,friend.length)
Service.requestFriendsEvents(login,friend,calendartab,function(eventArray,dayArray){
events=eventArray;
eventdays=dayArray})
}
else {calendartab.calendartabstatus="Events";
Service.eventsfromdb(db,login.username,function(eventArray,dayArray){
events=eventArray;
eventdays=dayArray;
calBusy.running=false
})
}
}
BusyIndicator{
id: calBusy
anchors.horizontalCenter: calendarView.horizontalCenter
anchors.top:calendarView.top
anchors.topMargin: 2*mm
width:10*mm
height: 10*mm
running: false
}
BlueButton{
id: updateEvents
anchors.top: parent.top
anchors.topMargin: 0.5*mm
anchors.right:calendartabstatusButton.left
anchors.rightMargin:mm
text:"\uf021"
onClicked: {
Service.getEvents(db,login, calendartab,function(){
showEvents("")
})}}
BlueButton{
id: calendartabstatusButton
anchors.top: parent.top
anchors.topMargin: 0.5*mm
anchors.right: parent.right
anchors.rightMargin:2*mm
text: calendartab.calendartabstatus=="Events"?qsTr("Events"):calendartabstatus
onClicked: {calendartabmenu.popup()}
}
Menu {
id:calendartabmenu
MenuItem {
text: qsTr("Own Calendar")
onTriggered: {
calendartab.calendartabstatus="Events";
// calendartabstatusButton.text=qsTr("own Calendar");
showEvents("")}
}
}
ListView{
id: calendarView
x: mm;y:8*mm
width: parent.width-2*mm; height: parent.height-9*mm
clip: true
snapMode: ListView.SnapOneItem
orientation: ListView.Horizontal
highlightRangeMode: ListView.StrictlyEnforceRange
model: CalendarModel {id:calendarModel
from: new Date()
to: new Date(new Date().valueOf()+93312000000)
}
delegate:
ColumnLayout{
width:calendarView.width
Text{
font.bold: true
Layout.fillWidth: true
horizontalAlignment:Text.AlignHCenter
text: model.year
}
Text{
text: Qt.locale().standaloneMonthName(model.month)
Layout.fillWidth: true
horizontalAlignment:Text.AlignHCenter
}
DayOfWeekRow{
locale: monthgrid.locale
Layout.fillWidth: true
}
MonthGrid {
id: monthgrid
Layout.fillWidth: true
month: model.month
year: model.year
locale: Qt.locale()
delegate: CalendarDay{}
}
}
ScrollIndicator.horizontal: ScrollIndicator { }
}
Component.onCompleted: {
root.eventSignal.connect(showEvents);
if (calendartab.calendartabstatus=="Events"){showEvents("")}
}
}

View file

@ -0,0 +1,85 @@
import QtQuick 2.0
import QtQuick.Controls 1.2
import "qrc:/js/service.js" as Service
import "qrc:/js/helper.js" as Helperjs
import "qrc:/qml/genericqml"
Rectangle{
id:eventList
z:2
border.color: "grey"
width: parent.width-4*mm
height:parent.height-12*mm
x:mm
y:mm
property var daylist:[]
BlueButton{
id:closeButton
anchors.top: parent.top
anchors.topMargin: 1*mm
anchors.right: parent.right
anchors.rightMargin: 1*mm
text: "\uf057"
onClicked:{eventList.destroy()}
}
ListView {
id: eventlistView
x: mm
y:closeButton.height+2*mm
width: eventList.width-2*mm
height: eventList.height-closeButton.height-4*mm
clip: true
model: eventModel
delegate: eventItem
}
ListModel{
id: eventModel
}
Component.onCompleted:{
//print(JSON.stringify(daylist))
for (var i=0; i<daylist.length;i++){//print(JSON.stringify(events[daylist[i]]));
var liststate="";if(daylist.length<2){liststate="large"}
eventModel.append({"event":events[daylist[i]],"eventstatus":liststate});
}
}
Component{
id:eventItem
Rectangle{
property string status: eventstatus
width:eventlistView.width
height:eventNameText.height+eventDetailsText.height+mm
border.color: "light grey"
border.width: 1
Text {
id:eventNameText
x:mm
width:parent.width
height:contentHeight
text: new Date(event.start+calendarrectangle.offsetTime).toLocaleTimeString()+": "+event.title
font.pixelSize: 3*mm
wrapMode:Text.Wrap
}
Text {
id:eventDetailsText
x:mm
z:4
width: parent.width
height: contentHeight
text: status==""?"":Qt.atob(event.html)
anchors.top: eventNameText.bottom
font.pixelSize: 3*mm
wrapMode:Text.Wrap
}
MouseArea{
anchors.fill: parent
onClicked:{if (status==""){status="large"} else {status=""}
}
}
}
}
}