Subversion Repositories Kolibri OS

Rev

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 ?