рд╣рд░рдорд╛рдЯрди рдореЗрдВ рдорд╛рдирдХ рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛рдкрд┐рдХ рдмрдирд╛рдПрдБ

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдХреНрдпреВрдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЯрд╛рдЗрдордкрд┐рдХрд░ рдШрдЯрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ ред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ DatePicker рдХреЗ рдЕрдЧрд▓реЗ рдШрдЯрдХ рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рдХреАред рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦрддреНрдо рдХрд┐рдпрд╛ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ: рдиреЛрдХрд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рд╣рд░рдорд╛рдЯрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдШрдЯрдХ рд╕реНрд╡рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ MeeGo рдХреЗ рд▓рд┐рдП Qt рдШрдЯрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдХреЛ рд╕рд░реЛрдЧреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдИрдВ рдУрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореВрд▓ рд╣реИ, рджрд╛рдИрдВ рдУрд░ рдХреА рддрд╕реНрд╡реАрд░ рдбреЗрдЯрдкрд┐рдХрд░ рдШрдЯрдХ рд╕рд░реЛрдЧреЗрдЯ рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдСрдлрд╝рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ


рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдореМрдЬреВрджрд╛ рдШрдЯрдХ рдХреЗ рдПрдирд╛рд▓реЙрдЧ рдХреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдпрд╣ рд╕рд░рд▓ рд╣реИред
рдЗрд╕рд▓рд┐рдП, DatePicker рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╣реАрдиреЗ рдХреЗ рдХреИрд▓реЗрдВрдбрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рдорд╣реАрдиреЗ рдХреЗ рдЕрдВрддрд┐рдо рджрд┐рдиреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╣реАрдиреЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рддреАрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдкрд╛рд░реА рдХреЗ рдЗрд╢рд╛рд░реЗ рд╕реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ / рдЕрдЧрд▓реЗ рдорд╣реАрдиреЗ рдХреА рддрд╛рд░реАрдЦ рдХреЛ рдЯреИрдк рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрдпрдирд┐рдд рджрд┐рди рдХреЛ рдЯреИрдк рдХрд░рдХреЗ рдлрдВрд╕рд╛рдпрд╛ рдФрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЬ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлреНрд░реЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЦрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рджреВрд╕рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛, рдореИрдВрдиреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдШрдЯрдХ рдХреЛ MeeGo Qt Components рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ Qt рдХреНрд╡рд┐рдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЗрд╕рдХреА рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред

рдЕрдВрдЧ


рдЧреАрддрд╛рддреНрдордХ рд╡рд┐рд╖рдпрд╛рдВрддрд░

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЖрдкрдХреЛ рдШрдЯрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓реА рд╕реЗрдЯрд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрдВрдЧреАред рдореИрдВ рдореВрд▓ рдХреНрдпреВрдЯреА рдШрдЯрдХреЛрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдЪрд▓рд╛ рдЧрдпрд╛, рдЕрд░реНрдерд╛рддреН, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╢реИрд▓реА рдШрдЯрдХ рдмрдирд╛рдпрд╛ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЧреБрдгреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред

QtObject { id: style property string orientationString: "portrait" property string backgroundImage: "image://theme/meegotouch-calendar-monthgrid-background-" + orientationString property string currentDayImage: "image://theme/meegotouch-monthgrid-daycell-current-day-" + orientationString property string selectedDayImage: "image://theme/meegotouch-monthgrid-daycell-selected-day-" + orientationString property string currentSelectedDayImage: "image://theme/meegotouch-monthgrid-daycell-selected-day-current-" + orientationString property string leftArrowImage: "image://theme/meegotouch-calendar-monthgrid-previousbutton" property string leftArrowPressedImage: "image://theme/meegotouch-calendar-monthgrid-previousbutton-pressed" property string rightArrowImage: "image://theme/meegotouch-calendar-monthgrid-nextbutton" property string rightArrowPressedImage: "image://theme/meegotouch-calendar-monthgrid-nextbutton-pressed" property string eventImage: "image://theme/meegotouch-monthgrid-daycell-regular-day-eventindicator" property string weekEndEventImage: "image://theme/meegotouch-monthgrid-daycell-regular-weekend-day-eventindicator" property string currentDayEventImage: "image://theme/meegotouch-monthgrid-daycell-current-day-eventindicator" property string selectedDayEventImage: "image://theme/meegotouch-monthgrid-daycell-selected-day-eventindicator" property string otherMonthEventImage: "image://theme/meegotouch-monthgrid-daycell-othermonth-day-eventindicator" property color weekEndColor: "#EF5500" property color weekDayColor: "#8C8C8C" property color otherMonthDayColor: "#8C8C8C" property color dayColor: "#000000" property color monthColor: "#000000" property color currentDayColor: "#EF5500" property color selectedDayColor: "#FFFFFF" property int monthFontSize: 32 property int dayNameFontSize: 18 property int dayFontSize: 26 } 

рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХреЛрдИ рднреА DatePicker рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд╢реИрд▓реА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХреЛ рд╣рд░рдорд╛рдЯрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрдм рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореБрдЦреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рдореЗрдВ рддреАрди рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ:

рдЖрдЗрдП рдЙрди рдкрд░ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдорд╣реАрдиреЗ рдФрд░ рддреАрд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЯреЛрдкреА

 Item { id: header anchors { left: parent.left right: parent.right top: parent.top } height: 65 Item { id: leftArrow anchors { left: parent.left top: parent.top bottom: parent.bottom } width: 100 height: 65 Image { id: leftArrowImage anchors { left: parent.left leftMargin: (header.width / 7) / 2 - (width / 2) verticalCenter: parent.verticalCenter } width: height source: root.platformStyle.leftArrowImage } MouseArea { anchors.fill: parent onPressed: { leftArrowImage.source = root.platformStyle.leftArrowPressedImage } onReleased: { leftArrowImage.source = root.platformStyle.leftArrowImage previousMonthAnimation.start() dateModel.showPrevious() } } } Text { id: monthLabel anchors.centerIn: parent font.pixelSize: root.platformStyle.monthFontSize font.weight: Font.Light color: root.platformStyle.monthColor } Item { id: rightArrow anchors { right: parent.right top: parent.top bottom: parent.bottom } width: 100 height: 70 Image { id: rightArrowImage anchors { right: parent.right rightMargin: (header.width / 7) / 2 - (width / 2) verticalCenter: parent.verticalCenter } width: height source: root.platformStyle.rightArrowImage } MouseArea { anchors.fill: parent onPressed: { rightArrowImage.source = root.platformStyle.rightArrowPressedImage } onReleased: { rightArrowImage.source = root.platformStyle.rightArrowImage nextMonthAnimation.start() dateModel.showNext() } } } } 

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реА рдирдЬрд░ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдмреАрдЪ рдореЗрдВ рдПрдХ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рджреЛ рддрд╕реНрд╡реАрд░реЗрдВ рд╣реИрдВ рдЬреЛ рддреАрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВ рдЬрдм рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╣реАрдиреЗ рдХреА рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдиреАрдореЗрд╢рди рднреАред

рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ

 Row { id: weekDaysGrid anchors { left: parent.left right: parent.right top: header.bottom bottomMargin: 10 } width: parent.width WeekCell { text: qsTr("Mon") platformStyle: datePicker.platformStyle } WeekCell { text: qsTr("Tue") platformStyle: datePicker.platformStyle } WeekCell { text: qsTr("Wed") platformStyle: datePicker.platformStyle } WeekCell { text: qsTr("Thu") platformStyle: datePicker.platformStyle } WeekCell { text: qsTr("Fri") platformStyle: datePicker.platformStyle } WeekCell { isWeekEnd: true text: qsTr("Sat") platformStyle: datePicker.platformStyle } WeekCell { isWeekEnd: true text: qsTr("Sun") platformStyle: datePicker.platformStyle } } 

рдкрдВрдХреНрддрд┐ рдШрдЯрдХ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрдЪреНрдЪреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ:
 Item { id: weekCell property alias text: label.text property QtObject platformStyle: DatePickerStyle {} property bool isWeekEnd: false height: label.height width: parent.width / 7 Text { id: label anchors.centerIn: parent font.pixelSize: weekCell.platformStyle.dayNameFontSize color: weekCell.isWeekEnd ? weekCell.platformStyle.weekEndColor : weekCell.platformStyle.weekDayColor font.bold: true } } 

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рдирд╛рдВрдХрдкрд┐рдХрд░ рд╕реЗ рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рд╢реИрд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд░рд╛рд╣рдд рджреЗрддреЗ рд╣реИрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрд╕реЗ рд╡реАрдХрд▓ рдШрдЯрдХ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдорд╣реАрдиреЗ рдХреА рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд▓реА

рд╕рдВрдЦреНрдпрд╛ рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЧреНрд░рд┐рдб рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
 GridView { id: daysGrid anchors { top: weekDaysGrid.bottom left: parent.left right: parent.right bottom: parent.bottom } cellWidth: width / 7 - 1 cellHeight: height / 6 interactive: false delegate: DayCell { platformStyle: datePicker.platformStyle width: daysGrid.cellWidth; height: daysGrid.cellHeight isCurrentDay: model.isCurrentDay isOtherMonthDay: model.isOtherMonthDay hasEventDay: model.hasEventDay dateOfDay: model.dateOfDay } model: DateModel { id: dateModel currentDate: new Date() onMonthChanged: { monthLabel.text = getMonthYearString() daysGrid.currentIndex = dateModel.firstDayOffset + selectedDate.getDate() - 1 } onSelectedDateChanged: { root.selectedDateChanged(selectedDate) } } MouseArea { anchors.fill: parent property int pressedPosition: 0 onPressed: { pressedPosition = mouseX } onReleased: { var delta = mouseX - pressedPosition; if (Math.abs(delta) > 100) { if (delta < 0) { nextMonthAnimation.start() dateModel.showNext() } else { previousMonthAnimation.start() dateModel.showPrevious() } } pressedPosition = 0 if (Math.abs(delta) < 20) { var index = daysGrid.indexAt(mouseX, mouseY) daysGrid.currentIndex = index dateModel.selectedDate = daysGrid.currentItem.dateOfDay if (daysGrid.currentItem.isOtherMonthDay) { if (daysGrid.currentItem.dateOfDay.getMonth() < dateModel.selectedDate.getMonth()) previousMonthAnimation.start() else nextMonthAnimation.start() dateModel.changeModel(daysGrid.currentItem.dateOfDay) } } } } } 

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реНрдпреВ рдореЛрдб рдЕрдХреНрд╖рдо рд╣реИ рдФрд░ рдПрдХрдорд╛рддреНрд░ рдорд╛рдЙрд╕рдПрдпрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ , рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдмрд╕ рдЙрдВрдЧрд▓реА рд╕реЗ рдХреВрдЪ рдкрде рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рдирдП рдорд╣реАрдиреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдкрде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорд╣рд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд┐рди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред рдЙрд▓реНрд▓реЗрдЦрдиреАрдп indexAt рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд▓ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рд╕реЗрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
 Item { id: dayCell property QtObject platformStyle: DatePickerStyle {} property bool isOtherMonthDay: false property bool isCurrentDay: false property bool isSelectedDay: false property bool hasEventDay: false property date dateOfDay function color() { if (GridView.isCurrentItem) return platformStyle.selectedDayColor else if (isCurrentDay) return platformStyle.currentDayColor else if (isOtherMonthDay) return platformStyle.otherMonthDayColor return platformStyle.dayColor } function background() { if (GridView.isCurrentItem) { if (isCurrentDay) return platformStyle.currentSelectedDayImage return platformStyle.selectedDayImage } else if (isCurrentDay) return platformStyle.currentDayImage return "" } function eventImage() { if (GridView.isCurrentItem) return platformStyle.selectedDayEventImage else if (dateOfDay.getDay() === 0 || dateOfDay.getDay() === 6) return platformStyle.weekEndEventImage else if (isCurrentDay) return platformStyle.currentDayEventImage else if (isOtherMonthDay) return platformStyle.otherMonthEventImage return platformStyle.eventImage } Image { id: background anchors.centerIn: parent source: dayCell.background() Text { id: label anchors.centerIn: parent font.pixelSize: dayCell.platformStyle.dayFontSize color: dayCell.color() font.weight: (dayCell.isCurrentDay || dayCell.GridView.isCurrentItem) ? Font.Bold : Font.Light text: dayCell.dateOfDay.getDate() } Image { anchors { top: label.bottom topMargin: -5 horizontalCenter: parent.horizontalCenter } visible: hasEventDay source: dayCell.eventImage() } } } 

рдпрд╣ рдХреЗрд╡рд▓ рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рдкрд╛рда рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИ, рдореБрдЦреНрдп рдЪрд┐рддреНрд░ рд╡рд░реНрддрдорд╛рди рдФрд░ рдЖрдЬ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕ рджрд┐рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣реЗрд▓реНрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рддрдп рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЙрд╕рдХреЗ рдЭрдВрдбреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЖрджрд░реНрд╢


рдШрдЯрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓, рд╕реБрдирд╕рд╛рди рдФрд░ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣рд┐рд╕реНрд╕рд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдореЙрдбрд▓ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Qml / ECMAScript рдореЗрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ C ++ рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдФрд░ рд╕рд░рд▓ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ C ++ рдХреЗ рд╕рд╛рде qml рдкреНрд▓рдЧрдЗрди рдЦреАрдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХреЛрдбред
рдЗрд╕рд▓рд┐рдП, рдХрдард┐рдирд╛рдИ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ECMAScript рдореЗрдВ рдПрдХ рдШреГрдгрд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд░реНрдЧ рднрдпрд╛рдирдХ рд╣реИ, рдпрд╣ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓реАрдк рд╡рд░реНрд╖ рдЪрд╛рд▓реВ рд╣реИ, рдпрд╛ рдЪрд╛рд▓реВ рдорд╣реАрдиреЗ рдореЗрдВ рдХрд┐рддрдиреЗ рджрд┐рди рд╣реИрдВред рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдкреНрддрд╛рд╣ рдХрд╛ рдХреМрди рд╕рд╛ рджрд┐рди рдЪрд╛рд▓реВ рдорд╛рд╣ рдХрд╛ рдкрд╣рд▓рд╛ рджрд┐рди рд╣реИред рдпрд╣ рд╕рдм рдЦреБрдж рд╕реЗ рд╣реА рдмрдирд╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред

рдореЙрдбрд▓ рдХреЗ рд╕рд╣рд╛рдпрдХ рднрд╛рдЧреЛрдВ

рдореИрдВ рди рддреЛ рдЧреБрд░реБ рдФрд░ рди рд╣реА ECMAScript / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╡реЗ рдмрджрд╕реВрд░рдд рд╣реИрдВред
рдореИрдВ рдпрд╣рд╛рдВ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдирд╛рдо рджреВрдВрдЧрд╛ред
 function isLeapYear(year); function getValidDayByMonthAndDay(month, day, leapYear); 

рдкрд╣рд▓рд╛ рд░рд┐рдЯрд░реНрди рд╕рд╣реА рд╣реИ рдпрджрд┐ рд╡рд░реНрд╖ рдПрдХ рд▓реАрдк рд╡рд░реНрд╖ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдорд╣реАрдиреЗ рдореЗрдВ рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛, рд╡рд░реНрд╖ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдВрдЦреНрдпрд╛, рдорд╣реАрдиреЗ рдФрд░ "рд▓реАрдк рд╡рд░реНрд╖" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдорд╣реАрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рд╕реАрдорд╛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЙрдбрд▓ рдХреЗ рддрд░реАрдХреЗ

 //public: function setEvent(eventDate, enable) { if (eventDate.getMonth() !== selectedDate.getMonth() && eventDate.getFullYear() !== selectedDate.getFullYear()) return setProperty(eventDate.getDate() + firstDayOffset, "hasEventDay", enable) } function getMonthYearString() { return Qt.formatDate(selectedDate, "MMMM yyyy") } function showNext() { showOtherMonth(selectedDate.getMonth() + 1) } function showPrevious() { showOtherMonth(selectedDate.getMonth() - 1) } function changeModel(_selectedDate) { clear() selectedDate = _selectedDate fillModel() monthChanged() } 

рд╕реЗрдЯрд╡реЗрдВрдЯ рд╡рд┐рдзрд┐ рджреА рдЧрдИ рддрд┐рдерд┐ рдХреЛ рдИрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рдХреЛ рд╕реЗрдЯ рдпрд╛ рд░реАрд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдб рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдм рдХреЗрд╡рд▓ рдЪрд╛рд▓реВ рдорд╛рд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡реЗ рджрд┐рдирд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдирдЬрд╝рд░ рд░рдЦ рд╕рдХреЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХреЗрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореИрдВ рдореЙрдбрд▓ рдХреЗ рдЕрдВрджрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред
GetMonthYearString рд╡рд┐рдзрд┐ рдмрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рдпрдд рджрд┐рдирд╛рдВрдХ "рдорд╛рд╣ рд╡рд░реНрд╖" рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ DatePicker рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╢реЛрдиреЗрдХреНрд╕реНрдЯ рдФрд░ рд╢реЛрдкреНрд░реИрдм рдореЗрдердбреНрд╕ рдХреНрд░рдорд╢рдГ рдореЙрдбрд▓ рдХреЛ рдЕрдЧрд▓реЗ рдпрд╛ рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред
рдЦреИрд░, changeModel рд╡рд┐рдзрд┐ рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдЪрдпрдирд┐рдд рддрд┐рдерд┐ рдХреЛ рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдирд┐рдЬреА рдореЙрдбрд▓ рд╡рд┐рдзрд┐рдпрд╛рдБ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Qml рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рддрд░реАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдирд┐рдЬреА рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЬреЛ рддрд░реАрдХреЗ рдирд┐рдЬреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рд╡реЗ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

  function showOtherMonth(month) { var newDate = selectedDate var currentDay = selectedDate.getDate() currentDay = getValidDayByMonthAndDay(month, currentDay, isLeapYear(selectedDate.getFullYear())); newDate.setMonth(month, currentDay) changeModel(newDate) } function fillModel() { var tmpDate = selectedDate tmpDate.setDate(selectedDate.getDate() - (selectedDate.getDate() - 1)) var firstDayWeekDay = tmpDate.getDay() if (firstDayWeekDay === 0) firstDayWeekDay = 6 else firstDayWeekDay-- firstDayOffset = firstDayWeekDay for(var i = 0; i < 6 * 7; ++i) { var objectDate = selectedDate; objectDate.setDate(selectedDate.getDate() - (selectedDate.getDate() - 1 + firstDayOffset - i)) appendDayObject(objectDate) } } function appendDayObject(dateOfDay) { append({ "dateOfDay" : dateOfDay, "isCurrentDay" : dateOfDay.getDate() === currentDate.getDate() && dateOfDay.getMonth() === currentDate.getMonth() && dateOfDay.getFullYear() === currentDate.getFullYear(), "isOtherMonthDay" : dateOfDay.getMonth() !== selectedDate.getMonth(), "hasEventDay" : false }) } 

ShowOtherMonth рд╡рд┐рдзрд┐ рдореЙрдбрд▓ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╣реАрдиреЗ рдореЗрдВ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ (рдЦрд╛рддреЗ рдХреА рд╕реАрдорд╛ рд╕рдорд╛рдпреЛрдЬрди рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)ред
FillModel рдкрджреНрдзрддрд┐ рдорд╣реАрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХреЛ рднрд░рддреА рд╣реИ , рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдорд╣реАрдиреЗ рдХрд╛ рд╕рдкреНрддрд╛рд╣ рдХрд┐рд╕ рджрд┐рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
AppendDayObject рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рддреА рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд╣ рд╕рдм рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдЗрдЪреНрдЫрд╛, рд╕реБрдЭрд╛рд╡, рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ, рдкреИрдЪ - рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдШрдЯрдХ рдХреЛрдб Gitorius рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд, рдЯрд╛рдЗрдордкрд┐рдХрд░ рдХреА рддрд░рд╣ рд╡рд┐рддрд░рд┐рддред рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдЧрд╛рдЗрдб рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In137584/


All Articles