Friendiqa/source-linux/qml/calendarqml/CalendarTab.qml

190 lines
6.2 KiB
QML

// This file is part of Friendiqa
// https://git.friendi.ca/lubuwest/Friendiqa
// Copyright (C) 2020 Marco R. <thomasschmidt45@gmx.net>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// In addition, as a special exception, the copyright holders give
// permission to link the code of portions of this program with the
// OpenSSL library under certain conditions as described in each
// individual source file, and distribute linked combinations including
// the two.
//
// You must obey the GNU General Public License in all respects for all
// of the code used other than OpenSSL. If you modify file(s) with this
// exception, you may extend this exception to your version of the
// file(s), but you are not obligated to do so. If you do not wish to do
// so, delete this exception statement from your version. If you delete
// this exception statement from all source files in the program, then
// also delete it here.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
import QtQuick 2.0
import QtQuick.Controls 2.12
import QtQml 2.2
import Qt.labs.calendar 1.0
//import QtQuick.Controls 1.2 as Oldcontrol
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
anchors.fill: parent
color: '#fff'
property date currentTime: new Date()
property int offsetTime: currentTime.getTimezoneOffset() * 60 * 1000
property var events:[]
property var 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.url.substring(friend.url.lastIndexOf("/")+1,friend.url.length)
Service.newRequestFriendsEvents(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
}
MButton{
id: updateEvents
anchors.top: parent.top
anchors.topMargin: 0.5*mm
anchors.right:calendartabstatusButton.left
anchors.rightMargin:mm
height: 6*mm
width: 8*mm
text:"\uf021"
onClicked: {
calBusy.running=true;
updatenews.setDatabase();
updatenews.login();
updatenews.events();
// Service.getEvents(db,login, calendartab,function(){
// showEvents("")
// })
}}
Connections{
target: updatenews
onSuccess:{
calBusy.running=false;
showEvents("")
}
}
MButton{
id: calendartabstatusButton
anchors.top: parent.top
anchors.topMargin: 0.5*mm
anchors.right: parent.right
anchors.rightMargin:2*mm
height: 6*mm
width: Math.max(10*mm,implicitWidth)
text: calendartab.calendartabstatus=="Events"?qsTr("Events"):calendartabstatus
Menu {
id:calendartabmenu
width: 40*mm
MenuItem {
text: qsTr("Own Calendar")
font.pixelSize: 3*mm
onTriggered: {
calendartab.calendartabstatus="Events";
// calendartabstatusButton.text=qsTr("own Calendar");
showEvents("")}
}
}
onClicked: {calendartabmenu.popup()}
}
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
font.pixelSize: 3*mm
}
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("")}
}
}