linux.x86.linphone/Linphone/view/Item/Calendar.qml
Gaelle Braud eb5b3b5141 FIXES :
conf creation loading+error; fix info popup layout
move contact edition in contact page (switch to contact tab if creation requested)
fix contact creation + select new contact on creation
conference info list : creation signal (to finish when conference scheduler is updated, see comment)
fix crash if no vcard
fix calendar ui
+spacings
layout polish (! on string in meetinglist)
2024-04-26 18:27:19 +02:00

133 lines
No EOL
3.7 KiB
QML

import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls as Control
import QtQuick.Effects
import Linphone
import ConstantsCpp 1.0
import UtilsCpp 1.0
ListView {
id: mainItem
snapMode: ListView.SnapOneItem
orientation: Qt.Horizontal
clip: true
property int maxYears: 5
readonly property var currentDate: new Date()
highlightMoveDuration: 100
// height: contentHeight
property var selectedDate
property int currentMonth: calendarModel.monthAt(currentIndex) + 1 //january is index 0
property int currentYear: calendarModel.yearAt(currentIndex)
onCurrentYearChanged: console.log("currentyear", currentYear)
onCurrentMonthChanged: console.log("current month", currentMonth)
model: Control.CalendarModel {
id: calendarModel
from: new Date()
to: UtilsCpp.addYears(new Date(), 5)
}
delegate: ColumnLayout {
width: mainItem.width
height: mainItem.height
property int currentMonth: model.month
spacing: 18 * DefaultStyle.dp
RowLayout {
Layout.fillWidth: true
spacing: 38 * DefaultStyle.dp
Text {
text: UtilsCpp.toDateMonthAndYearString(new Date(model.year, model.month, 15))// 15 because of timezones that can change the date for localeString
font {
pixelSize: 14 * DefaultStyle.dp
weight: 700 * DefaultStyle.dp
capitalization: Font.Capitalize
}
}
Item {
Layout.fillWidth: true
}
Button {
Layout.preferredWidth: 20 * DefaultStyle.dp
Layout.preferredHeight: 20 * DefaultStyle.dp
icon.width: width
icon.height: height
background: Item{}
icon.source: AppIcons.leftArrow
onClicked: if (mainItem.currentIndex > 0) mainItem.currentIndex = mainItem.currentIndex - 1
}
Button {
Layout.preferredWidth: 20 * DefaultStyle.dp
Layout.preferredHeight: 20 * DefaultStyle.dp
icon.width: width
icon.height: height
background: Item{}
icon.source: AppIcons.rightArrow
onClicked: if (mainItem.currentIndex < mainItem.count) mainItem.currentIndex = mainItem.currentIndex + 1
}
}
ColumnLayout {
spacing: 12 * DefaultStyle.dp
Control.DayOfWeekRow {
locale: monthGrid.locale
Layout.column: 1
Layout.fillWidth: true
delegate: Text {
text: model.shortName
color: DefaultStyle.main2_400
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font {
pixelSize: 12 * DefaultStyle.dp
weight: 300 * DefaultStyle.dp
}
}
}
Control.MonthGrid {
id: monthGrid
Layout.fillWidth: true
Layout.fillHeight: true
year: model.year
month: model.month
property var curDate: model.date
onMonthChanged: console.log("cur date changed", month)
locale: Qt.locale(ConstantsCpp.DefaultLocale)
delegate: Item {
property bool isSelectedDay: mainItem.selectedDate ? UtilsCpp.datesAreEqual(mainItem.selectedDate, model.date) : false
// width: 30 * DefaultStyle.dp
// height: 30 * DefaultStyle.dp
Rectangle {
anchors.centerIn: parent
width: 30 * DefaultStyle.dp
height: 30 * DefaultStyle.dp
radius: 50 * DefaultStyle.dp
color: isSelectedDay ? DefaultStyle.main1_500_main : "transparent"
}
Text {
anchors.centerIn: parent
text: UtilsCpp.toDateDayString(model.date)
color: isSelectedDay
? DefaultStyle.grey_0
: UtilsCpp.isCurrentDay(model.date)
? DefaultStyle.main1_500_main
: UtilsCpp.dateisInMonth(model.date, mainItem.currentMonth, mainItem.currentYear)
? DefaultStyle.main2_700
: DefaultStyle.main2_400
font {
pixelSize: 12 * DefaultStyle.dp
weight: 300 * DefaultStyle.dp
}
}
}
onClicked: (date) => {
if (UtilsCpp.isBeforeToday(date)) return;
mainItem.selectedDate = date
}
}
}
}
}