Rev 3887 | Rev 3890 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3887 | Rev 3889 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; Calendar for KolibriOS |
1 | ; Calendar for KolibriOS |
2 | ; |
2 | ; |
3 | ; v1.2 - code update by Leency, small design fixes |
3 | ; v1.3 - code update, redesign by Leency |
4 | ; v1.1 - add change time support by DedOK |
4 | ; v1.1 - add change time support by DedOK |
5 | ; v1.0 - written in pure assembler by Ivushkin Andrey aka Willow |
5 | ; v1.0 - written in pure assembler by Ivushkin Andrey aka Willow |
6 | ; also - diamond, spraid, fedesco |
6 | ; also - diamond, spraid, fedesco |
7 | ; |
7 | ; |
8 | ; Created: November 1, 2004 |
8 | ; Created: November 1, 2004 |
Line 9... | Line -... | ||
9 | - | ||
10 | WIN_CW equ 266 |
- | |
11 | WIN_X equ (5000 shl 16+WIN_CW+9) |
- | |
12 | WIN_Y equ (100 shl 16+335) |
- | |
13 | - | ||
14 | LINE1 equ 27 shl 16+16 |
- | |
15 | B_MONTH_X equ 5 shl 16+158+11 |
- | |
16 | B_Y equ LINE1 |
- | |
17 | B_MONTH equ 63 shl 16+32 |
- | |
18 | - | ||
19 | B_WBAR_X equ 5 shl 16+WIN_CW |
- | |
20 | B_WBAR_Y equ 64 shl 16+20 |
- | |
21 | B_WEEK equ 30 shl 16+70 |
- | |
22 | B_WX_SHIFT equ 32 shl 16 |
- | |
23 | - | ||
24 | B_DBAR_X equ B_WBAR_X |
- | |
25 | B_DBAR_Y equ 85 shl 16+190 |
- | |
26 | - | ||
27 | B_DROP equ B_MONTH+16 |
- | |
28 | B_DAYS_Y equ 100 |
- | |
29 | B_DAYS_SHIFT equ 30 |
- | |
30 | - | ||
31 | B_YEAR_X equ 173 shl 16+58 |
- | |
32 | B_YEAR equ 188 shl 16+32 |
- | |
33 | - | ||
34 | B_TODAY_X equ 25 shl 16 |
- | |
35 | B_TODAY_Y equ 48 shl 16+10 |
- | |
36 | B_TODAY equ 30 shl 16+50 |
- | |
37 | - | ||
38 | B_SPIN_WIDTH equ 13 |
- | |
39 | B_SPIN_X equ 234 shl 16+B_SPIN_WIDTH |
- | |
40 | B_SPIN equ 238 shl 16+32 |
- | |
41 | - | ||
42 | B_NS_X equ 185 shl 16+75 |
- | |
43 | B_NS_Y equ 48 shl 16+10 |
- | |
44 | B_NS equ 190 shl 16+50 |
- | |
45 | - | ||
46 | FOCUSABLE equ 5 |
- | |
47 | - | ||
Line 48... | Line 9... | ||
48 | 9 | ||
Line 49... | Line 10... | ||
49 | 10 | ||
Line 76... | Line 37... | ||
76 | mov reg,0x10e7c750;0x10ddeeff |
37 | mov reg,0x10e7c750;0x10ddeeff |
77 | end if |
38 | end if |
78 | jmp .exit |
39 | jmp .exit |
79 | .nofocus: |
40 | .nofocus: |
80 | if reg eq |
41 | if reg eq |
81 | mov ecx,0x10000000 |
42 | mov ecx,COL_DROPDOWN_T |
82 | else |
43 | else |
83 | mov reg,0x10000000 |
44 | mov reg,COL_DROPDOWN_T |
84 | end if |
45 | end if |
85 | .exit: |
46 | .exit: |
86 | } |
47 | } |
Line -... | Line 48... | ||
- | 48 | ||
- | 49 | macro GetSkinHeight |
|
- | 50 | { |
|
- | 51 | mov eax,48 |
|
- | 52 | mov ebx,4 |
|
- | 53 | int 0x40 |
|
Line 87... | Line 54... | ||
87 | 54 | } |
|
88 | 55 | ||
89 | 56 | ||
Line 118... | Line 85... | ||
118 | 85 | ||
Line 119... | Line 86... | ||
119 | call draw_window |
86 | call draw_window |
Line 120... | Line 87... | ||
120 | 87 | ||
121 | still: ; |
- | |
122 | - | ||
123 | mov eax,23 ; wait here for event |
88 | still: ; |
124 | mov ebx,50 |
89 | |
125 | mcall |
90 | mcall 23,50 ; wait here for event |
126 | .evt: |
91 | .evt: |
127 | mov ebp,[focus] |
92 | mov ebp,[focus] |
Line 134... | Line 99... | ||
134 | 99 | ||
Line 135... | Line 100... | ||
135 | call draw_clock |
100 | call draw_clock |
Line 136... | Line 101... | ||
136 | 101 | ||
137 | jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ç «® 横« |
- | |
138 | 102 | jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ç «® 横« |
|
139 | key: ; ¦ â ª« ¢¨è ª« ¢¨ âãॠ|
103 | |
140 | mov eax,2 ; äãªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®« |
104 | key: |
141 | mcall ; ¢ë§®¢ á¨á⥬ë |
105 | mcall 2 ; get pressed key |
142 | cmp ah,9 |
106 | cmp ah,9 |
143 | jne no_tab |
107 | jne no_tab |
Line 203... | Line 167... | ||
203 | jle still |
167 | jle still |
204 | jmp .ok |
168 | jmp .ok |
Line 205... | Line 169... | ||
205 | 169 | ||
Line 206... | Line 170... | ||
206 | day_bounds db -1,0,7,0,-7,0,1,0 ; left,down,up,right |
170 | day_bounds db -1,0,7,0,-7,0,1,0 ; left,down,up,right |
207 | 171 | ||
208 | button: ; ¦ â ª®¯ª ¢ ®ª¥ ¯à®£à ¬¬ë |
- | |
209 | mov eax,17 ; 17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ |
172 | button: |
210 | mcall ; ¢ë§®¢ á¨á⥬ë |
173 | mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨ |
211 | movzx ebx,ah |
174 | movzx ebx,ah |
212 | cmp ah,200 |
175 | cmp ah,200 |
213 | jbe nodayselect |
176 | jbe nodayselect |
Line 358... | Line 321... | ||
358 | mcall |
321 | mcall |
Line 359... | Line 322... | ||
359 | 322 | ||
Line 360... | Line 323... | ||
360 | jmp still |
323 | jmp still |
361 | - | ||
362 | plus_hd: |
- | |
363 | 324 | ||
364 | mov eax,3 |
325 | plus_hd: |
365 | mcall |
326 | mcall 3 |
366 | mov ecx,eax |
327 | mov ecx,eax |
367 | add ecx,1 |
328 | add ecx,1 |
368 | mov eax,22 |
- | |
369 | mov ebx,0x00000000 |
- | |
370 | mcall |
329 | mov eax,22 |
Line 371... | Line 330... | ||
371 | 330 | mcall 22,0x00000000 |
|
372 | jmp still |
- | |
373 | - | ||
374 | plus_he: |
331 | jmp still |
375 | 332 | ||
376 | mov eax,3 |
333 | plus_he: |
377 | mcall |
- | |
378 | mov ecx,eax |
334 | mcall 3 |
379 | add ecx,16 |
- | |
380 | mov eax,22 |
- | |
381 | mov ebx,0x00000000 |
335 | mov ecx,eax |
Line 382... | Line 336... | ||
382 | mcall |
336 | add ecx,16 |
383 | - | ||
384 | jmp still |
- | |
385 | 337 | mcall 22,0x00000000 |
|
386 | minus_hd: |
338 | jmp still |
387 | 339 | ||
388 | mov eax,3 |
340 | minus_hd: |
389 | mcall |
341 | mcall 3 |
390 | mov ecx,eax |
342 | mov ecx,eax |
Line 492... | Line 444... | ||
492 | mcall |
444 | mcall |
493 | ret |
445 | ret |
Line 494... | Line 446... | ||
494 | 446 | ||
Line 495... | Line 447... | ||
495 | draw_window: |
447 | draw_window: |
496 | 448 | ||
497 | mcall 12,1 ; äãªæ¨ï 12: á®®¡é¨âì ®¡ ®âà¨á®¢ª¥ ®ª |
449 | mcall 12,1 |
498 | xor eax,eax ; äãªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª® |
450 | mcall 0,WIN_X,WIN_Y-15,COL_WINDOW_BG, ,title ; define window |
499 | mov ebx,WIN_X |
- | |
500 | mov ecx,WIN_Y-15 |
451 | GetSkinHeight |
501 | mov edx,COL_WINDOW_BG ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB,8->color gl |
452 | mov ecx, eax |
- | 453 | shl ecx, 16 |
|
502 | mov edi,title ; § £®«®¢®ª |
454 | add ecx, 43 |
Line 503... | Line 455... | ||
503 | mcall |
455 | mcall 13,B_WBAR_X, ,COL_TOOLBAR_BG ; draw toolbar background |
Line 504... | Line 456... | ||
504 | call draw_week |
456 | call draw_week |
Line 516... | Line 468... | ||
516 | 468 | ||
517 | mov ebx,212*65536+7 |
469 | mov ebx,212*65536+7 |
518 | inc edx |
470 | inc edx |
Line 519... | Line 471... | ||
519 | mcall |
471 | mcall |
520 | 472 | ||
521 | mov ebx,224*65536+7 |
473 | mov ebx,225*65536+7 |
522 | mov ecx,290*65536+10 |
474 | mov ecx,290*65536+10 |
Line 523... | Line 475... | ||
523 | inc edx |
475 | inc edx |
524 | mcall |
476 | mcall |
525 | 477 | ||
Line 526... | Line 478... | ||
526 | mov ebx,231*65536+7 |
478 | mov ebx,232*65536+7 |
527 | inc edx |
479 | inc edx |
528 | mcall |
480 | mcall |
529 | 481 | ||
Line 530... | Line 482... | ||
530 | mov ebx,224*65536+7 |
482 | mov ebx,225*65536+7 |
531 | mov ecx,300*65536+10 |
483 | mov ecx,300*65536+10 |
532 | inc edx |
484 | inc edx |
Line 533... | Line 485... | ||
533 | mcall |
485 | mcall |
534 | 486 | ||
535 | mov ebx,231*65536+7 |
487 | mov ebx,232*65536+7 |
536 | inc edx |
488 | inc edx |
Line 537... | Line 489... | ||
537 | mcall |
489 | mcall |
538 | 490 | ||
539 | mov ebx,243*65536+14 |
491 | mov ebx,244*65536+14 |
540 | mov ecx,290*65536+20 |
492 | mov ecx,290*65536+20 |
541 | inc edx |
493 | inc edx |
Line 542... | Line 494... | ||
542 | mcall |
494 | mcall |
543 | 495 | ||
544 | mov ebx,14*65536+110 |
496 | mov ebx,14*65536+110 |
545 | mov ecx,285*65536+22 |
497 | mov ecx,285*65536+22 |
546 | mov esi,0x00d5d5d5 |
498 | mov esi,COL_DATE_BUTTONS |
547 | inc edx |
499 | inc edx |
Line 559... | Line 511... | ||
559 | mcall |
511 | mcall |
560 | mov ecx,B_Y |
512 | mov ecx,B_Y |
561 | mov ebx,B_MONTH_X |
513 | mov ebx,B_MONTH_X |
562 | mov edx,2 |
514 | mov edx,2 |
563 | mcall |
515 | mcall |
564 | mov ebx,B_SPIN_X |
516 | mov ebx,B_SPIN_X ; < |
565 | inc edx |
517 | inc edx |
566 | mcall |
518 | mcall |
567 | add ebx,B_SPIN_WIDTH shl 16 |
519 | add ebx,61 shl 16 ; > |
568 | inc edx |
520 | inc edx |
569 | mcall |
521 | mcall |
570 | call draw_days |
522 | call draw_days |
Line 571... | Line 523... | ||
571 | 523 | ||
Line 595... | Line 547... | ||
595 | mov esi,today_end-today_msg |
547 | mov esi,today_end-today_msg |
596 | mcall |
548 | mcall |
Line 597... | Line 549... | ||
597 | 549 | ||
598 | mov ebx,B_SPIN |
550 | mov ebx,B_SPIN |
599 | mov edx,spinner |
551 | mov edx,spinner |
600 | mov esi,3 |
552 | mov esi,12 |
601 | ShowFocus 4 |
553 | ShowFocus 4 |
Line 602... | Line 554... | ||
602 | mcall |
554 | mcall |
603 | 555 | ||
Line 610... | Line 562... | ||
610 | mcall |
562 | mcall |
Line 611... | Line 563... | ||
611 | 563 | ||
612 | call draw_year |
564 | call draw_year |
613 | mov [dropped],0 |
565 | mov [dropped],0 |
614 | mcall 12,2 |
566 | mcall 12,2 |
Line 615... | Line 567... | ||
615 | ret ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë |
567 | ret |
616 | 568 | ||
617 | draw_year: |
569 | draw_year: |
618 | mcall 8,B_YEAR_X,B_Y,5,COL_MONTH_YEAR_B |
570 | mcall 8,B_YEAR_X,B_Y,5,COL_MONTH_YEAR_B |
Line 631... | Line 583... | ||
631 | push dword B_DROP |
583 | push dword B_DROP |
632 | push dword B_Y+16 shl 16 |
584 | push dword B_Y+16 shl 16 |
633 | .ddd_loop: |
585 | .ddd_loop: |
634 | mov edi,edx |
586 | mov edi,edx |
635 | push ecx |
587 | push ecx |
636 | mov ebx,B_MONTH_X |
588 | mov esi,COL_DROPDOWN_BG |
637 | mov ecx,[esp+4] |
589 | mcall 8,B_MONTH_X,[esp+4] |
638 | mov esi,0x6f9fef |
- | |
639 | mov eax,8 |
- | |
640 | mcall |
- | |
641 | shr eax,1 |
590 | shr eax,1 |
642 | mov ebx,[esp+8] |
591 | mov ebx,[esp+8] |
643 | xchg edx,[esp+12] |
592 | xchg edx,[esp+12] |
644 | movzx esi,byte[month_name] |
593 | movzx esi,byte[month_name] |
645 | ShowFocus edi |
594 | ShowFocus edi |
Line 681... | Line 630... | ||
681 | pop ecx |
630 | pop ecx |
682 | loop .week |
631 | loop .week |
683 | ret |
632 | ret |
Line 684... | Line 633... | ||
684 | 633 | ||
685 | draw_days: |
- | |
686 | mov eax,13 |
- | |
687 | mov ebx,B_DBAR_X |
- | |
688 | mov ecx,B_DBAR_Y |
- | |
689 | mov edx,COL_DATES_BG |
- | |
690 | mcall |
634 | draw_days: |
691 | call count_days |
635 | call count_days |
692 | cmp ecx,[day_sel] |
636 | cmp ecx,[day_sel] |
693 | jae .ok |
637 | jae .ok |
694 | mov [day_sel],ecx |
638 | mov [day_sel],ecx |
695 | .ok: |
639 | .ok: |
696 | mov [number],0 |
640 | mov [number],0 |
697 | mov eax,47 |
641 | mov eax,47 |
698 | mov edx,B_DAYS_Y |
642 | mov edx,B_DAYS_Y |
699 | mov ebx,0x20001 |
643 | mov ebx,0x10001 |
700 | mov edi,[firstday] |
644 | mov edi,[firstday] |
701 | .dayloop: |
645 | .dayloop: |
702 | push ecx |
646 | push ecx |
703 | movzx edx,dx |
647 | movzx edx,dx |
704 | mov esi,edi |
648 | mov esi,edi |
705 | shl esi,21 |
649 | shl esi,21 |
706 | lea edx,[edx+esi+29 shl 16] |
650 | lea edx,[edx+esi+34 shl 16] |
707 | mov ecx,edi |
651 | mov ecx,edi |
708 | add cl,[week_days+1] |
652 | add cl,[week_days+1] |
709 | cmp ecx,7 |
653 | cmp ecx,7 |
710 | je .holiday |
654 | je .holiday |
711 | mov esi,0x10000000 |
655 | mov esi,0x10000000 ; COL_DATE_TEXT |
712 | jmp .noholiday |
656 | jmp .noholiday |
713 | .holiday: |
657 | .holiday: |
714 | mov esi,0x10cc1010 |
658 | mov esi,0x10cc1010 |
715 | .noholiday: |
659 | .noholiday: |
Line 732... | Line 676... | ||
732 | cmp [focus],5 |
676 | cmp [focus],5 |
733 | jne .draw_but |
677 | jne .draw_but |
734 | mov esi,COL_DATE_CHANGED |
678 | mov esi,COL_DATE_CHANGED |
735 | .draw_but: |
679 | .draw_but: |
736 | add edx,200+1 shl 29 |
680 | add edx,200+1 shl 29 |
- | 681 | mcall 8 |
|
- | 682 | mov eax, [number] |
|
- | 683 | xor edx, edx |
|
737 | mov eax,8 |
684 | mov ecx, 10 |
738 | mcall |
685 | div ecx |
- | 686 | mov [remainder], edx |
|
- | 687 | mov [quotient], eax |
|
739 | popa |
688 | popa |
- | 689 | ||
- | 690 | ;first number |
|
- | 691 | mov ecx,quotient |
|
740 | mcall |
692 | mcall |
741 | add edx,1 shl 16 |
693 | add edx,1 shl 16 |
742 | mcall |
694 | mcall |
743 | sub edx,1 shl 16 |
695 | sub edx,1 shl 16 |
- | 696 | ||
- | 697 | ;second number |
|
- | 698 | mov ecx,remainder |
|
- | 699 | add edx,9 shl 16 |
|
- | 700 | mcall |
|
- | 701 | add edx,1 shl 16 |
|
- | 702 | mcall |
|
- | 703 | sub edx,10 shl 16 |
|
- | 704 | ||
- | 705 | ||
744 | pop ecx |
706 | pop ecx |
745 | inc edi |
707 | inc edi |
746 | cmp edi,7 |
708 | cmp edi,7 |
747 | jne .nowrap |
709 | jne .nowrap |
748 | xor edi,edi |
710 | xor edi,edi |
Line 828... | Line 790... | ||
828 | mov ebx,7 |
790 | mov ebx,7 |
829 | div bx |
791 | div bx |
830 | mov [firstday],edx |
792 | mov [firstday],edx |
831 | ret |
793 | ret |
Line 832... | Line 794... | ||
832 | 794 | ||
- | 795 | I_END: |
|
833 | I_END: ; ª®¥æ ¯à®£à ¬¬ë |
796 | |
834 | firstday dd ? |
797 | firstday dd ? |
835 | Year dd ? |
798 | Year dd ? |
836 | Month dd ? |
799 | Month dd ? |
837 | day_sel dd ? |
800 | day_sel dd ? |