2 Copyright (C) 2011 by Cuong Le <metacuong@gmail.com>
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>
20 import "Themes.js" as Themes
21 import "main.js" as Script
27 anchors.verticalCenter: parent.verticalCenter
28 width: parent.width; height: parent.height;
29 x:(parent.width * 1.5)
33 property alias theme: theme_manager.item
34 source: Themes.default_theme()
38 signal updatedate(int day, int month, int year)
44 anchors.centerIn: parent
49 border.color: "#b57e8f"
55 anchors.right: parent.right; anchors.rightMargin: 145; y: 185; width: 100; height: 40
56 anchors.horizontalCenter: parent.horizontalCenter
60 var lday = lunarday_pathview.currentIndex+1;
61 var lmonth=lunarmonth_pathview.currentIndex+1;
62 var lyear=lunaryear_pathview.currentIndex+1900;
68 for (var l=0;l<12;l++)
69 if (lunarmonth_model.get(l).nhuan){
73 if(lunarmonth_model.get(lunarmonth_pathview.currentIndex).nhuan){
78 if (thangnhuan!=-1 && lunarmonth_pathview.currentIndex> thangnhuan)
81 var finalSolarDay = Script.convertLunar2Solar(lday,lmonth,lyear,lnhuan,7);
83 amdatetime.state="close";
85 amdatetime.updatedate(finalSolarDay[0], finalSolarDay[1], finalSolarDay[2])
97 anchors.rightMargin: 56
99 amdatetime.state="close"
122 border.color: "#b57e8f"
128 width: 198; height: 129
154 name: "switch_to_day";
155 PropertyChanges { target:lmk;x:10;width:60;}
156 PropertyChanges { target:lunaryear_pathview;pathItemCount:1;}
157 PropertyChanges { target:lunarmonth_pathview;pathItemCount:1;}
158 PropertyChanges { target:lunarday_pathview;pathItemCount:3;}
159 PropertyChanges { target:lunarday_mousearea;visible:false;}
160 PropertyChanges { target:lunaryear_mousearea;visible:true;}
161 PropertyChanges { target:lunarmonth_mousearea;visible:true;}
164 name: "switch_to_year";
165 PropertyChanges { target:lmk;x:207;width:198;}
166 PropertyChanges { target:lunarday_pathview;pathItemCount:1;}
167 PropertyChanges { target:lunarmonth_pathview;pathItemCount:1;}
168 PropertyChanges { target:lunaryear_pathview;pathItemCount:3;}
169 PropertyChanges { target:lunarday_mousearea;visible:true;}
170 PropertyChanges { target:lunaryear_mousearea;visible:false;}
171 PropertyChanges { target:lunarmonth_mousearea;visible:true;}
174 name: "switch_to_month";
175 PropertyChanges { target:lmk;x:60;width:150;}
176 PropertyChanges { target:lunarday_pathview;pathItemCount:1;}
177 PropertyChanges { target:lunaryear_pathview;pathItemCount:1;}
178 PropertyChanges { target:lunarmonth_pathview;pathItemCount:3;}
179 PropertyChanges { target:lunarday_mousearea;visible:true;}
180 PropertyChanges { target:lunaryear_mousearea;visible:true;}
181 PropertyChanges { target:lunarmonth_mousearea;visible:false;}
187 state: "switch_to_year"
190 width: 178; height: 129
193 property int index: 0
194 onIndexChanged: lunaryear_pathview.currentIndex = lunaryear_rec.index
197 id: lunaryear_delegate
204 width: lunaryear_rec.width
205 color: PathView.isCurrentItem ? "#FFFFFF" : "grey"
206 verticalAlignment:Text.AlignLeft
213 id:lunaryear_pathview
215 model: lunaryear_model
216 delegate: lunaryear_delegate
219 preferredHighlightBegin: 0.5
220 preferredHighlightEnd: 0.5
221 highlightRangeMode: PathView.StrictlyEnforceRange
226 PathLine {x: 90; y: lunaryear_rec.height}
230 //console.log(lunaryear_pathview.currentIndex)
231 Script.getYearInfo(lunaryear_pathview.currentIndex+1900);
232 lunarmonth_model.change(lunaryear_pathview.currentIndex+1900, lunarmonth_pathview.currentIndex+1);
236 id:lunaryear_mousearea
239 rec22.state="switch_to_year"
246 Component.onCompleted: {
251 for(var i=1900;i<2099;i++){
252 var lunarYear = Script.getYearCanChi(i)
253 append({name:i+" ("+lunarYear+")"})
257 function change(YYYY){
258 lunaryear_pathview.currentIndex=-1;
259 lunaryear_pathview.currentIndex = YYYY - 1900
266 state:"switch_to_day"
270 width: 80; height: 129
273 property int index: 0
274 onIndexChanged: lunarday_pathview.currentIndex = lunarday_rec.index
277 id: lunarday_delegate
285 width: lunarday_rec.width
286 color: PathView.isCurrentItem ? "#FFFFFF" : "grey"
287 verticalAlignment:Text.AlignVCenter
297 model: lunarday_model
298 delegate: lunarday_delegate
301 preferredHighlightBegin: 0.5
302 preferredHighlightEnd: 0.5
303 highlightRangeMode: PathView.StrictlyEnforceRange
308 PathLine {x: 90; y: lunarday_rec.height}
313 id:lunarday_mousearea
316 rec22.state="switch_to_day"
324 Component.onCompleted: {
329 for(var i=1;i<=30;i++)
330 lunarday_model.append({name:i})
333 function change(MM,DD){
335 while(lunarday_model.count>0){
336 lunarday_model.remove(lunarday_model.count-1)
340 var daystotal = Script.RMM[MM-1];
342 if(lunarmonth_model.get(MM-1).nhuan){
344 for (var i=1;i<=Script.LML;i++)
345 lunarday_model.append({name:i})
348 for (var i=1;i<=daystotal;i++)
349 lunarday_model.append({name:i})
353 /*if(lunarmonth_model.get(MM-1).nhuan){
354 if(AmLich.LML > lunarday_model.count){
355 for (var i=lunarday_model.count+1;i<=AmLich.LML;i++)
356 lunarday_model.append({name:i})
358 if(AmLich.LML< lunarday_model.count){
359 while(lunarday_model.count>AmLich.LML){
360 lunarday_model.remove(lunarday_model.count-1);
365 if(daystotal > lunarday_model.count){
366 for (var i=lunarday_model.count+1;i<=daystotal;i++)
367 lunarday_model.append({name:i})
369 if(daystotal < lunarday_model.count){
370 while(lunarday_model.count>daystotal){
371 lunarday_model.remove(lunarday_model.count-1);
377 var nhuansetru = 30 - AmLich.LML;
379 if(lunarmonth_model.get(MM-1).nhuan && lunarday_model.count==30){
382 lunarday_model.remove(lunarday_model.count-1);
386 else if(lunarday_model.count<30){
387 for (var i=lunarday_model.count+1;i<=30;i++)
388 lunarday_model.append({name:i})
391 lunarday_pathview.currentIndex=-1;
392 lunarday_pathview.currentIndex= DD-1;
402 state:"switch_to_month"
406 width: 150; height: 129
409 property int index: 0
410 onIndexChanged: lunarmonth_pathview.currentIndex = lunarmonth_rec.index
413 id: lunarmonth_delegate
421 width: lunarmonth_rec.width
422 color: PathView.isCurrentItem ? "#FFFFFF" : "grey"
423 verticalAlignment:Text.AlignVCenter
431 id:lunarmonth_pathview
433 model: lunarmonth_model
434 delegate: lunarmonth_delegate
437 preferredHighlightBegin: 0.5
438 preferredHighlightEnd: 0.5
439 highlightRangeMode: PathView.StrictlyEnforceRange
444 PathLine {x: 90; y: lunarmonth_rec.height}
447 //console.log(lunaryear_pathview.currentIndex)
448 // console.log(AmLich.LML)
450 lunarday_model.change(lunarmonth_pathview.currentIndex+1,lunarday_pathview.currentIndex+1);
455 id:lunarmonth_mousearea
458 rec22.state="switch_to_month"
467 Component.onCompleted: {
471 function change(YYYY, MM){
472 while(lunarmonth_model.count>0){
473 lunarmonth_model.remove(lunarmonth_model.count-1)
477 lunarday_model.change(lunarmonth_pathview.currentIndex+1,lunarday_pathview.currentIndex+1);
480 function readd(YYYY, MM){
482 var preFix = "Tháng ";
483 var a=Script.leapMonth(yTest)
486 for(var i=0;i<=12;i++){
487 var l=Script.getYearInfo(yTest)[i].month
489 lunarmonth_model.append({name:preFix+l+" (N)", nhuan:true})
491 lunarmonth_model.append({name:preFix+l, nhuan:false})
497 for(var i=1;i<=12;i++)
498 lunarmonth_model.append({name:preFix+i, nhuan:false})
501 //lunarmonth_rec.index = MM -1;
502 lunarmonth_pathview.currentIndex=-1;
503 lunarmonth_pathview.currentIndex = MM-1;
513 Component.onCompleted: {
520 AnchorChanges { target: amdatetime; anchors.right: parent.right }
524 AnchorChanges { target: amdatetime; anchors.right: parent.left }
529 var acs = Script.getYearInfo(Script.curYear)
530 var a=Script.getLunarDate(Script.curDay,Script.curMonth,Script.curYear)
531 var finalmonth=a.month;
535 var aaa=Script.leapMonth(Script.curYear)
539 for (var i=0;i<=12;i++){
541 if (t==l && a.leap===0){
543 finalmonth = finalmonth+1;
553 lunaryear_model.init()
554 lunarday_model.init()
555 lunaryear_model.change(a.year)
556 lunarmonth_model.change(a.year, finalmonth)
557 lunarday_model.change(finalmonth,a.day)
561 transitions: Transition {
562 AnchorAnimation { easing.type: Easing.OutQuart; duration: 300 }