http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / win32_makefile / gui_delphi / mainunit.pas
1 unit MainUnit;\r
2 \r
3 interface\r
4 \r
5 {$I-}\r
6 \r
7 uses\r
8   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,\r
9   Dialogs, ComCtrls, GnokiiAPI, ExtCtrls, Menus, StdCtrls, Spin, IniFiles;\r
10 \r
11 type\r
12   TMainForm = class(TForm)\r
13     StatusBar1: TStatusBar;\r
14     TreeView1: TTreeView;\r
15     Splitter1: TSplitter;\r
16     MainMenu1: TMainMenu;\r
17     File1: TMenuItem;\r
18     Quit1: TMenuItem;\r
19     Help1: TMenuItem;\r
20     About1: TMenuItem;\r
21     Timer1: TTimer;\r
22     OpenDialog1: TOpenDialog;\r
23     SaveDialog1: TSaveDialog;\r
24     PageControl1: TPageControl;\r
25     NetmonitorTabSheet: TTabSheet;\r
26     GroupBox1: TGroupBox;\r
27     Label1: TLabel;\r
28     NetmonGroupBox: TGroupBox;\r
29     NetmonLabel: TLabel;\r
30     SpinEdit1: TSpinEdit;\r
31     Button11: TButton;\r
32     PhonebookTabSheet: TTabSheet;\r
33     GroupBox2: TGroupBox;\r
34     Panel1: TPanel;\r
35     Label2: TLabel;\r
36     ComboBox1: TComboBox;\r
37     ListView1: TListView;\r
38     PhoneTabSheet: TTabSheet;\r
39     GroupBox3: TGroupBox;\r
40     GroupBox12: TGroupBox;\r
41     Label4: TLabel;\r
42     Label5: TLabel;\r
43     Label7: TLabel;\r
44     Label8: TLabel;\r
45     Label9: TLabel;\r
46     Label6: TLabel;\r
47     Button9: TButton;\r
48     GroupBox14: TGroupBox;\r
49     ListView8: TListView;\r
50     GroupBox11: TGroupBox;\r
51     CheckBox1: TCheckBox;\r
52     LogosTabSheet: TTabSheet;\r
53     GroupBox4: TGroupBox;\r
54     LogosImage: TImage;\r
55     Image1: TImage;\r
56     Image2: TImage;\r
57     ComboBox2: TComboBox;\r
58     Button6: TButton;\r
59     Button7: TButton;\r
60     Button8: TButton;\r
61     Button12: TButton;\r
62     Button4: TButton;\r
63     Button5: TButton;\r
64     RingtonesTabSheet: TTabSheet;\r
65     GroupBox5: TGroupBox;\r
66     Label11: TLabel;\r
67     Button1: TButton;\r
68     Button2: TButton;\r
69     Button3: TButton;\r
70     SMSTabSheet: TTabSheet;\r
71     GroupBox6: TGroupBox;\r
72     Panel2: TPanel;\r
73     Label10: TLabel;\r
74     ComboBox3: TComboBox;\r
75     ListView2: TListView;\r
76     SpeedTabSheet: TTabSheet;\r
77     GroupBox7: TGroupBox;\r
78     ListView3: TListView;\r
79     CalendarTabSheet: TTabSheet;\r
80     GroupBox8: TGroupBox;\r
81     ListView4: TListView;\r
82     SMSCTabSheet: TTabSheet;\r
83     GroupBox9: TGroupBox;\r
84     ListView6: TListView;\r
85     CallerTabSheet: TTabSheet;\r
86     GroupBox10: TGroupBox;\r
87     ListView5: TListView;\r
88     ProfileTabSheet: TTabSheet;\r
89     GroupBox13: TGroupBox;\r
90     ListView7: TListView;\r
91     Panel3: TPanel;\r
92     Splitter2: TSplitter;\r
93     GroupBox15: TGroupBox;\r
94     GroupBox16: TGroupBox;\r
95     Button13: TButton;\r
96     Button14: TButton;\r
97     Label15: TLabel;\r
98     Edit1: TEdit;\r
99     Edit2: TEdit;\r
100     Button16: TButton;\r
101     CalendarPopupMenu: TPopupMenu;\r
102     New1: TMenuItem;\r
103     Edit3: TMenuItem;\r
104     Delete1: TMenuItem;\r
105     SMSPopupMenu: TPopupMenu;\r
106     Edit4: TMenuItem;\r
107     Memo1: TMemo;\r
108     Memo2: TMemo;\r
109     New2: TMenuItem;\r
110     Label14: TLabel;\r
111     Label16: TLabel;\r
112     WapBookTabSheet: TTabSheet;\r
113     GroupBox17: TGroupBox;\r
114     DateTimePicker1: TDateTimePicker;\r
115     ConfigTabSheet: TTabSheet;\r
116     GroupBox18: TGroupBox;\r
117     Configuration1: TMenuItem;\r
118     N1: TMenuItem;\r
119     Delete2: TMenuItem;\r
120     SMSCPopupMenu: TPopupMenu;\r
121     Edit5: TMenuItem;\r
122     Label3: TLabel;\r
123     ComboBox4: TComboBox;\r
124     Label12: TLabel;\r
125     ComboBox5: TComboBox;\r
126     Label13: TLabel;\r
127     CheckBox2: TCheckBox;\r
128     Label17: TLabel;\r
129     Label18: TLabel;\r
130     PBKPopupMenu: TPopupMenu;\r
131     Edit7: TMenuItem;\r
132     Button17: TButton;\r
133     SMS1: TMenuItem;\r
134     Button18: TButton;\r
135     SMSSendSave1: TMenuItem;\r
136     ComboBox6: TComboBox;\r
137     WAPSettTabSheet: TTabSheet;\r
138     DivertTabSheet: TTabSheet;\r
139     GroupBox19: TGroupBox;\r
140     GroupBox20: TGroupBox;\r
141     Timer2: TTimer;\r
142     ListView9: TListView;\r
143     AboutTabSheet: TTabSheet;\r
144     GroupBox21: TGroupBox;\r
145     Label19: TLabel;\r
146     Label20: TLabel;\r
147     PCSMSTabSheet: TTabSheet;\r
148     GroupBox22: TGroupBox;\r
149     Panel4: TPanel;\r
150     Splitter3: TSplitter;\r
151     Panel5: TPanel;\r
152     ListView10: TListView;\r
153     CopytoPC1: TMenuItem;\r
154     N2: TMenuItem;\r
155     Memo4: TMemo;\r
156     Memo5: TMemo;\r
157     PCSMSPopupMenu: TPopupMenu;\r
158     SendSave1: TMenuItem;\r
159     N3: TMenuItem;\r
160     Delete3: TMenuItem;\r
161     Label21: TLabel;\r
162     ComboBox7: TComboBox;\r
163     Label22: TLabel;\r
164     Edit6: TEdit;\r
165     Label23: TLabel;\r
166     Edit8: TEdit;\r
167     Label24: TLabel;\r
168     ComboBox8: TComboBox;\r
169     Label25: TLabel;\r
170     ComboBox9: TComboBox;\r
171     Label26: TLabel;\r
172     ComboBox10: TComboBox;\r
173     Label27: TLabel;\r
174     Edit9: TEdit;\r
175     Label28: TLabel;\r
176     Edit10: TEdit;\r
177     Label29: TLabel;\r
178     Edit11: TEdit;\r
179     Label30: TLabel;\r
180     Edit12: TEdit;\r
181     Label31: TLabel;\r
182     ComboBox11: TComboBox;\r
183     Label32: TLabel;\r
184     ComboBox12: TComboBox;\r
185     Label33: TLabel;\r
186     ComboBox13: TComboBox;\r
187     Label34: TLabel;\r
188     Edit13: TEdit;\r
189     Label35: TLabel;\r
190     Edit14: TEdit;\r
191     Label36: TLabel;\r
192     Edit15: TEdit;\r
193     Label37: TLabel;\r
194     ComboBox14: TComboBox;\r
195     Memo3: TMemo;\r
196     PageControl2: TPageControl;\r
197     TabSheet1: TTabSheet;\r
198     Button19: TButton;\r
199     Label38: TLabel;\r
200     Edit16: TEdit;\r
201     Label39: TLabel;\r
202     Edit17: TEdit;\r
203     Label40: TLabel;\r
204     ComboBox15: TComboBox;\r
205     Label41: TLabel;\r
206     Edit18: TEdit;\r
207     Button20: TButton;\r
208     PCCalendarTabSheet: TTabSheet;\r
209     GroupBox23: TGroupBox;\r
210     ListView11: TListView;\r
211     N4: TMenuItem;\r
212     CopytoPC2: TMenuItem;\r
213     PCCalendarPopupMenu: TPopupMenu;\r
214     Copytocalendar1: TMenuItem;\r
215     N5: TMenuItem;\r
216     Delete5: TMenuItem;\r
217     PCOfflineTabSheet: TTabSheet;\r
218     GroupBox24: TGroupBox;\r
219     Label42: TLabel;\r
220     Label43: TLabel;\r
221     Label44: TLabel;\r
222     Label45: TLabel;\r
223     TabSheet2: TTabSheet;\r
224     TabSheet3: TTabSheet;\r
225     procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
226       Shift: TShiftState; X, Y: Integer);\r
227     procedure FormCreate(Sender: TObject);\r
228     procedure Timer1Timer(Sender: TObject);\r
229     procedure NetmonitorTabSheetShow(Sender: TObject);\r
230     procedure NetmonitorTabSheetHide(Sender: TObject);\r
231     procedure SpinEdit1Change(Sender: TObject);\r
232     procedure ComboBox1Change(Sender: TObject);\r
233     procedure PhonebookTabSheetHide(Sender: TObject);\r
234     procedure Quit1Click(Sender: TObject);\r
235     procedure FormResize(Sender: TObject);\r
236     procedure About1Click(Sender: TObject);\r
237     procedure LogosImageMouseMove(Sender: TObject; Shift: TShiftState; X,\r
238       Y: Integer);\r
239     procedure Button1Click(Sender: TObject);\r
240     procedure Button4Click(Sender: TObject);\r
241     procedure Button3Click(Sender: TObject);\r
242     procedure PhoneTabSheetShow(Sender: TObject);\r
243     procedure Button2Click(Sender: TObject);\r
244     procedure LogosTabSheetShow(Sender: TObject);\r
245     procedure ComboBox2Select(Sender: TObject);\r
246     procedure Button7Click(Sender: TObject);\r
247     procedure LogosImageMouseDown(Sender: TObject; Button: TMouseButton;\r
248       Shift: TShiftState; X, Y: Integer);\r
249     procedure Button6Click(Sender: TObject);\r
250     procedure Button5Click(Sender: TObject);\r
251     procedure Button8Click(Sender: TObject);\r
252     procedure SpeedTabSheetShow(Sender: TObject);\r
253     procedure Button9Click(Sender: TObject);\r
254     procedure SpeedTabSheetHide(Sender: TObject);\r
255     procedure Button11Click(Sender: TObject);\r
256     procedure Button12Click(Sender: TObject);\r
257     procedure CalendarTabSheetShow(Sender: TObject);\r
258     procedure CallerTabSheetShow(Sender: TObject);\r
259     procedure SMSCTabSheetShow(Sender: TObject);\r
260     procedure Button10Click(Sender: TObject);\r
261     procedure ProfileTabSheetShow(Sender: TObject);\r
262     procedure SMSCTabSheetHide(Sender: TObject);\r
263     procedure CalendarTabSheetHide(Sender: TObject);\r
264     procedure CallerTabSheetHide(Sender: TObject);\r
265     procedure ProfileTabSheetHide(Sender: TObject);\r
266     procedure PhonebookTabSheetShow(Sender: TObject);\r
267     procedure SMSTabSheetShow(Sender: TObject);\r
268     procedure ComboBox3Change(Sender: TObject);\r
269     procedure ListView2SelectItem(Sender: TObject; Item: TListItem;\r
270       Selected: Boolean);\r
271     procedure New1Click(Sender: TObject);\r
272     procedure Edit3Click(Sender: TObject);\r
273     procedure ListView4SelectItem(Sender: TObject; Item: TListItem;\r
274       Selected: Boolean);\r
275     procedure Delete1Click(Sender: TObject);\r
276     procedure Button16Click(Sender: TObject);\r
277     procedure Edit4Click(Sender: TObject);\r
278     procedure New2Click(Sender: TObject);\r
279     procedure Configuration1Click(Sender: TObject);\r
280     procedure TreeView1KeyUp(Sender: TObject; var Key: Word;\r
281       Shift: TShiftState);\r
282     procedure SMSTabSheetHide(Sender: TObject);\r
283     procedure SMSPopupMenuPopup(Sender: TObject);\r
284     procedure CalendarPopupMenuPopup(Sender: TObject);\r
285     procedure Edit1Change(Sender: TObject);\r
286     procedure Delete2Click(Sender: TObject);\r
287     procedure Edit5Click(Sender: TObject);\r
288     procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;\r
289       Shift: TShiftState; X, Y: Integer);\r
290     procedure SMSCPopupMenuPopup(Sender: TObject);\r
291     procedure ListView6SelectItem(Sender: TObject; Item: TListItem;\r
292       Selected: Boolean);\r
293     procedure ListView1SelectItem(Sender: TObject; Item: TListItem;\r
294       Selected: Boolean);\r
295     procedure Edit7Click(Sender: TObject);\r
296     procedure Button18Click(Sender: TObject);\r
297     procedure Button17Click(Sender: TObject);\r
298     procedure SMS1Click(Sender: TObject);\r
299     procedure SMSSendSave1Click(Sender: TObject);\r
300     procedure Button13Click(Sender: TObject);\r
301     procedure Button14Click(Sender: TObject);\r
302     procedure ConfigTabSheetHide(Sender: TObject);\r
303     procedure ConfigTabSheetShow(Sender: TObject);\r
304     procedure Timer2Timer(Sender: TObject);\r
305     procedure AboutTabSheetShow(Sender: TObject);\r
306     procedure PCSMSTabSheetShow(Sender: TObject);\r
307     procedure CopytoPC1Click(Sender: TObject);\r
308     procedure ListView10SelectItem(Sender: TObject; Item: TListItem;\r
309       Selected: Boolean);\r
310     procedure PCSMSPopupMenuPopup(Sender: TObject);\r
311     procedure Delete3Click(Sender: TObject);\r
312     procedure SendSave1Click(Sender: TObject);\r
313     procedure WapBookTabSheetHide(Sender: TObject);\r
314     procedure WapBookTabSheetShow(Sender: TObject);\r
315     procedure ComboBox7Change(Sender: TObject);\r
316     procedure Button19Click(Sender: TObject);\r
317     procedure Button20Click(Sender: TObject);\r
318     procedure PCOfflineTabSheetShow(Sender: TObject);\r
319     procedure PCCalendarTabSheetShow(Sender: TObject);\r
320     procedure CopytoPC2Click(Sender: TObject);\r
321     procedure Delete5Click(Sender: TObject);\r
322     procedure Copytocalendar1Click(Sender: TObject);\r
323     procedure PCCalendarPopupMenuPopup(Sender: TObject);\r
324   private\r
325     { Private declarations }\r
326   public\r
327     { Public declarations }\r
328   end;\r
329 \r
330 var\r
331   MainForm: TMainForm;\r
332   setcalendarnote:GSM_CalendarNote;\r
333   setsms:GSM_MultiSMSMessage;\r
334   setsmslocation:integer;\r
335   smscselectitem:integer;\r
336   bitma:GSM_Bitmap;\r
337   rington:GSM_Ringtone;\r
338   calenda:GSM_CalendarNote;\r
339   pbk:GSM_PhonebookEntry;\r
340   previewcolor:TColor;\r
341 \r
342 procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
343 function DayOFweek3(date:TDateTime):string;\r
344 procedure SetSMSC(num:integer);\r
345 \r
346 implementation\r
347 \r
348 uses Calendar, SMSEdit, LogosRing, Netmon, smscedit, pbkedit;\r
349 \r
350 {$R *.dfm}\r
351 \r
352 type\r
353   TNetmonThread = class(TThread)\r
354     public\r
355       procedure Execute; override;\r
356   end;\r
357   TPhonebookThread = class(TThread)\r
358     public\r
359       procedure Execute; override;\r
360   end;\r
361   TSpeedThread = class(TThread)\r
362     public\r
363       procedure Execute; override;\r
364   end;\r
365   TSMSCThread = class(TThread)\r
366     public\r
367       procedure Execute; override;\r
368   end;\r
369   TSMSThread = class(TThread)\r
370     public\r
371       procedure Execute; override;\r
372   end;\r
373   TCalendarThread = class(TThread)\r
374     public\r
375       procedure Execute; override;\r
376   end;\r
377   TCallerThread = class(TThread)\r
378     public\r
379       procedure Execute; override;\r
380   end;\r
381   TProfileThread = class(TThread)\r
382     public\r
383       procedure Execute; override;\r
384   end;\r
385   TPlayRingtoneThread = class(TThread)\r
386     public\r
387       procedure Execute; override;\r
388   end;\r
389   TWAPBookmarkThread = class(TThread)\r
390     public\r
391       procedure Execute; override;\r
392   end;\r
393 \r
394 var\r
395   //phone sheet\r
396   phoneinfo:boolean;\r
397 \r
398   //reading netmonitor variables\r
399   netmonnum: integer; //number of netmon screen\r
400   NetmonThread: TNetmonThread;\r
401 \r
402   //reading phonebook memories variables\r
403   phonebookstatus:GSM_MemoryStatus;\r
404   phonebookcur:integer;\r
405   phonebookfound:integer;\r
406   PhonebookThread: TPhonebookThread;\r
407   pbknumberentry:integer;\r
408 \r
409   //logos\r
410   pointsize:integer;\r
411   x2,y2:byte;\r
412   logofilename:string='xxx';\r
413 \r
414   //ringtones\r
415   PlayRingtoneThread: TPlayRingtoneThread;\r
416   ringindex:integer;\r
417   binring:GSM_BinRingtone;\r
418 \r
419   //speeddials\r
420   speednum:integer;\r
421   SpeedThread: TSpeedThread;\r
422 \r
423   //caller groups\r
424   caller:array[1..5] of GSM_Bitmap;\r
425   callerinit:boolean;\r
426   callernum:integer;\r
427   CallerThread: TCallerThread;\r
428 \r
429   //smsc\r
430   smscnum:integer;\r
431   SMSCThread: TSMSCThread;\r
432   smscinit: boolean;\r
433   SMSC2:array[1..10] of GSM_MessageCenter;\r
434 \r
435   //calendar\r
436   calendarnum:integer;\r
437   CalendarThread: TCalendarThread;\r
438   calendarselect:integer;\r
439   readcalendar:boolean;\r
440 \r
441   //profiles\r
442   profilenum:integer;\r
443   ProfileThread: TProfileThread;\r
444 \r
445   SMS:array[1..200] of GSM_SMSMessage;\r
446   SMSnum:integer;\r
447   SMSfolders:GSM_SMSFolders;\r
448   SMSstatus:GSM_SMSStatus;\r
449   smsnumindex:integer;\r
450   SMSThread: TSMSThread;\r
451   smsnum2:integer;\r
452 \r
453   SMSOffline:array[1..300] of GSM_SMSMessage;\r
454   SMSOfflineNumber:integer;\r
455 \r
456   //wap bookmarks\r
457   WAPBookmarkThread: TWAPBookmarkThread;\r
458   bookmarknum:integer;\r
459 \r
460   CalendarOffline:array[1..300] of GSM_CalendarNote;\r
461   CalendarOfflineNumber:integer;\r
462 \r
463 function Inttostr2(I: Longint;digits:integer): string;\r
464 \r
465 { Convert any integer type to a string }\r
466 var\r
467   S: string[11];\r
468   j:integer;\r
469 begin\r
470   Str(I:digits, S);\r
471   for  j:=1 to 11 do\r
472   begin\r
473     if s[j]<>' ' then break;\r
474     s[j]:='0';\r
475   end;\r
476   Result:= S;\r
477 end;\r
478 \r
479 function DayOFweek3(date:TDateTime):string;\r
480 var\r
481   days: array[1..7] of string;\r
482 begin\r
483   days[1] := 'Sun';\r
484   days[2] := 'Mon';\r
485   days[3] := 'Tue';\r
486   days[4] := 'Wed';\r
487   days[5] := 'Thu';\r
488   days[6] := 'Fri';\r
489   days[7] := 'Sat';\r
490   DayOfWeek3:= days[DayOfWeek(date)];\r
491 end;\r
492 \r
493 function DayOFweek2(day:integer;month:integer;year:integer):string;\r
494 var\r
495   date:TDateTime;\r
496 begin\r
497   Date:=EncodeDate(Year,Month,Day);\r
498   DayOfWeek2:= DayOfWeek3(Date);\r
499 end;\r
500 \r
501 procedure SetSMSC(num:integer);\r
502 begin\r
503   SMSEditForm.Edit1.Text:=SMSC2[num].Number;\r
504   case SMSC2[num].Validity of\r
505     GSMV_1_Hour   : SMSEditForm.ComboBox3.ItemIndex:=0;\r
506     GSMV_6_Hours  : SMSEditForm.ComboBox3.ItemIndex:=1;\r
507     GSMV_24_Hours : SMSEditForm.ComboBox3.ItemIndex:=2;\r
508     GSMV_72_Hours : SMSEditForm.ComboBox3.ItemIndex:=3;\r
509     GSMV_1_Week   : SMSEditForm.ComboBox3.ItemIndex:=4;\r
510   else\r
511     SMSEditForm.ComboBox3.ItemIndex:=5;\r
512 \r
513   end;\r
514   case SMSC2[num].Format of\r
515     GSMF_Text   : SMSEditForm.ComboBox4.ItemIndex:=0;\r
516     GSMF_Fax    : SMSEditForm.ComboBox4.ItemIndex:=1;\r
517     GSMF_Email  : SMSEditForm.ComboBox4.ItemIndex:=2;\r
518   else\r
519     SMSEditForm.ComboBox4.ItemIndex:=3;\r
520   end;\r
521 end;\r
522 \r
523 procedure ReadCallerGroup();\r
524 var\r
525   logo:GSM_Bitmap;\r
526   name:Pchar;\r
527   i:integer;\r
528 begin\r
529   if callernum<6 then\r
530   begin\r
531     i:=1;\r
532     while i<>0 do\r
533     begin\r
534       logo.type2:=GSM_CallerLogo;\r
535       logo.number:=callernum-1;\r
536       MainForm.Timer2.Enabled:=false;\r
537       i:=GSM_GetBitmap(@logo);\r
538       MainForm.Timer2.Enabled:=true;\r
539     end;\r
540     caller[callernum]:=logo;\r
541     MainForm.ListView5.Items.Add;\r
542     MainForm.ListView5.Items.Item[callernum-1].Caption:=inttostr(callernum);\r
543     if logo.text[1]=chr(0) then\r
544     begin\r
545       name:='';\r
546       case callernum of\r
547         1:name:='Family';\r
548         2:name:='VIP';\r
549         3:name:='Friends';\r
550         4:name:='Colleagues';\r
551         5:name:='Other';\r
552       end;\r
553       for i:=1 to 255 do\r
554       begin\r
555         caller[callernum].text[i]:=chr(0);\r
556       end;\r
557       for i:=1 to strlen(name) do\r
558       begin\r
559         caller[callernum].text[i]:=name[i-1];\r
560       end;\r
561     end;\r
562     MainForm.ListView5.Items.Item[callernum-1].Subitems.Add(caller[callernum].text);\r
563     if logo.ringtone=16 then\r
564       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('default')\r
565     else\r
566       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add(inttostr(logo.ringtone));\r
567     if logo.enabled<>0 then\r
568       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('logo enabled')\r
569     else\r
570       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('logo disabled');\r
571   end else callerinit:=true;\r
572   callernum:=callernum+1;\r
573 end;\r
574 \r
575 procedure ReadAllCallerGroups();\r
576 begin\r
577   if callerinit=false then\r
578   begin\r
579     MainForm.ListView5.Items.Clear;\r
580     callernum:=1;\r
581     while callerinit=false do\r
582     begin\r
583       ReadCallerGroup();\r
584       if callerinit then break;\r
585     end;\r
586   end;\r
587 end;\r
588 \r
589 //logos sheet\r
590 procedure UpdatePointBitmap(i,j:integer);\r
591 begin\r
592   if GSM_IsPointBitmap(@bitma,i,j)<>0 then\r
593   begin\r
594     MainForm.LogosImage.Canvas.Brush.Color := clBlack;\r
595     MainForm.Image1.Canvas.Pen.Color := clBlack;\r
596   end else\r
597   begin\r
598     MainForm.LogosImage.Canvas.Brush.Color := PreviewColor;//$0063cf63\r
599     MainForm.Image1.Canvas.Pen.Color := PreviewColor;\r
600   end;\r
601   MainForm.LogosImage.Canvas.FillRect(Rect(i*pointsize+i,j*pointsize+j,(i+1)*pointsize+i,(j+1)*pointsize+j));\r
602   MainForm.Image1.Canvas.Polyline([Point(28+i, 145+j), Point(29+i,146+j)]);\r
603 end;\r
604 \r
605 procedure DrawBitmap();\r
606 var\r
607   xsize:integer;\r
608   ysize:integer;\r
609   i,j:integer;\r
610 begin\r
611   MainForm.StatusBar1.Panels[0].Text:=inttostr(bitma.width);\r
612   xsize:=bitma.width;\r
613   ysize:=bitma.heigh;\r
614 \r
615   MainForm.LogosImage.Canvas.Brush.Style := bsSolid;\r
616   MainForm.LogosImage.Canvas.Brush.Color := clScrollBar;\r
617 \r
618   MainForm.LogosImage.Canvas.Pen.Mode := pmCopy;\r
619 \r
620   MainForm.LogosImage.Canvas.Pen.Color := clScrollBar;\r
621   MainForm.LogosImage.Canvas.Rectangle(0,0,MainForm.LogosImage.Width,MainForm.LogosImage.Height);\r
622 \r
623   MainForm.LogosImage.Canvas.Pen.Color := PreviewColor;\r
624   MainForm.LogosImage.Canvas.Rectangle(0,0,xsize*pointsize+xsize-1,ysize*pointsize+ysize-1);\r
625 \r
626   MainForm.LogosImage.Canvas.Brush.Color := PreviewColor;\r
627   MainForm.LogosImage.Canvas.FloodFill(2,2,PreviewColor,fsBorder);\r
628 \r
629   MainForm.LogosImage.Canvas.Pen.Color := clBlack;\r
630 \r
631   for i:=0 to xsize do\r
632   begin\r
633     MainForm.LogosImage.Canvas.MoveTo(i*pointsize+i-1,0);\r
634     MainForm.LogosImage.Canvas.LineTo(i*pointsize+i-1,ysize*pointsize+ysize-1);\r
635   end;\r
636   for i:=0 to ysize do\r
637   begin\r
638     MainForm.LogosImage.Canvas.MoveTo(0,i*pointsize+i-1);\r
639     MainForm.LogosImage.Canvas.LineTo(xsize*pointsize+xsize-1,i*pointsize+i-1);\r
640   end;\r
641 \r
642   MainForm.Image1.Picture.Assign(MainForm.Image2.Picture);\r
643   MainForm.Image1.Canvas.Pen.Mode := pmCopy;\r
644   for i:=0 to xsize-1 do\r
645   begin\r
646    for j:=0 to ysize-1 do\r
647     begin\r
648       UpdatePointBitmap(i,j);\r
649     end;\r
650   end;\r
651 end;\r
652 \r
653 procedure TMainForm.Image1MouseDown(Sender: TObject; Button: TMouseButton;\r
654   Shift: TShiftState; X, Y: Integer);\r
655 var\r
656   sr: TSearchRec;\r
657   filefound:integer;\r
658 begin\r
659   filefound:=0;\r
660   if FindFirst(ExtractFilePath(Application.ExeName)+'\*bmp', faAnyFile, sr) = 0 then\r
661   begin\r
662     repeat\r
663       if (sr.Attr and faAnyFile) = sr.Attr then\r
664       begin\r
665         if sr.Size=57814 then\r
666         begin\r
667           case filefound of\r
668             1:begin\r
669                 Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\'+sr.name);\r
670                 PreviewColor:=Image2.Canvas.Pixels[70,170];\r
671                 DrawBitmap;\r
672                 filefound:=2;\r
673                 logofilename:=sr.name;\r
674               end;\r
675             0:if logofilename=sr.Name then filefound:=1;\r
676           end;\r
677           if filefound=2 then break;\r
678         end;\r
679       end;\r
680     until FindNext(sr) <> 0;\r
681     FindClose(sr);\r
682   end;\r
683   if filefound<>2 then\r
684   begin\r
685     if FindFirst(ExtractFilePath(Application.ExeName)+'\*bmp', faAnyFile, sr) = 0 then\r
686     begin\r
687       Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\'+sr.name);\r
688       DrawBitmap;\r
689       logofilename:=sr.name;\r
690     end;\r
691   end;\r
692 end;\r
693 \r
694 procedure LogosMousePos(x,y:integer);\r
695 var\r
696   i:integer;\r
697 begin\r
698   i:=0;x2:=0;\r
699   while i<=x do\r
700   begin\r
701     i:=i+pointsize+1;\r
702     x2:=x2+1;\r
703   end;\r
704   i:=0;y2:=0;\r
705   while i<=y do\r
706   begin\r
707     i:=i+pointsize+1;\r
708     y2:=y2+1;\r
709   end;\r
710 end;\r
711 \r
712 procedure TMainForm.ComboBox2Select(Sender: TObject);\r
713 var\r
714   bittype:integer;\r
715 begin\r
716   case ComboBox2.ItemIndex of\r
717     0:bittype:=GSM_CallerLogo;\r
718     1:bittype:=GSM_OperatorLogo;\r
719     2:bittype:=GSM_PictureImage;\r
720     3:bittype:=GSM_StartupLogo;\r
721   else\r
722     bittype:=GSM_StartupLogo;\r
723   end;\r
724   GSM_ResizeBitmap(@bitma,bittype);\r
725   DrawBitmap();\r
726   if bitma.type2<>GSM_OperatorLogo then\r
727     Button8.Enabled:=false\r
728   else\r
729     Button8.Enabled:=true;\r
730 end;\r
731 \r
732 procedure TMainForm.LogosImageMouseMove(Sender: TObject; Shift: TShiftState;\r
733   X, Y: Integer);\r
734 begin\r
735   LogosMousePos(x,y);\r
736   if x2<=bitma.width then\r
737   begin\r
738     if y2<=bitma.heigh then\r
739       MainForm.StatusBar1.Panels[0].Text:=inttostr(x2)+','+inttostr(y2)\r
740     else\r
741       MainForm.StatusBar1.Panels[0].Text:='';\r
742   end else\r
743     MainForm.StatusBar1.Panels[0].Text:='';\r
744 end;\r
745 \r
746 procedure TMainForm.LogosTabSheetShow(Sender: TObject);\r
747 begin\r
748   DrawBitmap();\r
749 end;\r
750 \r
751 procedure TMainForm.Button7Click(Sender: TObject);\r
752 var\r
753   i:integer;\r
754 begin\r
755   LogosRingForm.Label1.Caption:='What logo do you want to get ?';\r
756   LogosRingForm.ComboBox3.Items.Clear;\r
757   case bitma.type2 of\r
758     GSM_CallerLogo:\r
759       begin\r
760         LogosRingForm.ComboBox3.Visible:=true;\r
761         ReadAllCallerGroups();\r
762         for i:=1 to 5 do\r
763         begin\r
764           LogosRingForm.ComboBox3.Items.Add(caller[i].text);\r
765         end;\r
766         LogosRingForm.ComboBox3.ItemIndex:=0;\r
767         LogosRingForm.ShowModal();\r
768         if (LogosRingForm.ComboBox3.Visible) then\r
769         begin\r
770           bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
771           MainForm.Timer2.Enabled:=false;\r
772           GSM_GetBitmap(@bitma);\r
773           MainForm.Timer2.Enabled:=true;\r
774           DrawBitmap();\r
775         end;\r
776       end;\r
777     GSM_PictureImage:\r
778       begin\r
779         LogosRingForm.ComboBox3.Visible:=true;\r
780         for i:=1 to 20 do\r
781         begin\r
782           LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
783         end;\r
784         LogosRingForm.ComboBox3.ItemIndex:=0;\r
785         LogosRingForm.ShowModal();\r
786         if (LogosRingForm.ComboBox3.Visible) then\r
787         begin\r
788           bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
789           MainForm.Timer2.Enabled:=false;\r
790           GSM_GetBitmap(@bitma);\r
791           MainForm.Timer2.Enabled:=true;\r
792           DrawBitmap();\r
793         end;\r
794       end;\r
795     else\r
796     begin\r
797       MainForm.Timer2.Enabled:=false;\r
798       GSM_GetBitmap(@bitma);\r
799       MainForm.Timer2.Enabled:=true;\r
800       DrawBitmap();\r
801     end;\r
802   end;\r
803 end;\r
804 \r
805 procedure TMainForm.Button4Click(Sender: TObject);\r
806 var\r
807   bit:GSM_Bitmap;\r
808 begin\r
809   if OpenDialog1.Execute then\r
810   begin\r
811     if GSM_ReadBitmapFile(PChar(OpenDialog1.FileName),@bit)=0 then\r
812     begin\r
813       bitma:=bit;\r
814       DrawBitmap();\r
815       case bitma.type2 of\r
816         GSM_CallerLogo  :ComboBox2.ItemIndex:=0;\r
817         GSM_OperatorLogo:ComboBox2.ItemIndex:=1;\r
818         GSM_PictureImage:ComboBox2.ItemIndex:=2;\r
819         GSM_StartupLogo :ComboBox2.ItemIndex:=3;\r
820       end;\r
821     end;\r
822   end;\r
823 end;\r
824 \r
825 procedure TMainForm.LogosImageMouseDown(Sender: TObject; Button: TMouseButton;\r
826   Shift: TShiftState; X, Y: Integer);\r
827 begin\r
828   LogosMousePos(x,y);\r
829   if x2<=bitma.width then\r
830   begin\r
831     if y2<=bitma.heigh then\r
832     begin\r
833       if ssLeft in Shift then\r
834         GSM_SetPointBitmap(@bitma,x2-1,y2-1)\r
835       else\r
836         GSM_ClearPointBitmap(@bitma,x2-1,y2-1);\r
837 \r
838       UpdatePointBitmap(x2-1,y2-1);\r
839     end;\r
840   end;\r
841 end;\r
842 \r
843 procedure TMainForm.Button6Click(Sender: TObject);\r
844 var\r
845   i,j:integer;\r
846   Name,Data:array[1..255] of char;\r
847   oldbitma:GSM_Bitmap;\r
848 begin\r
849   LogosRingForm.Label1.Caption:='Do you want to set logo ?';\r
850   LogosRingForm.ComboBox3.Items.Clear;\r
851   case bitma.type2 of\r
852     GSM_StartupLogo:\r
853       begin\r
854         LogosRingForm.ComboBox3.Visible:=false;\r
855         LogosRingForm.ShowModal();\r
856         if (LogosRingForm.ComboBox3.Visible) then\r
857           GSM_SetBitmap(@bitma);\r
858       end;\r
859     GSM_OperatorLogo:\r
860       begin\r
861         LogosRingForm.ComboBox3.Visible:=true;\r
862         LogosRingForm.ComboBox3.Items.Add('Preview');\r
863         //preparing network names\r
864         i:=0;\r
865         while true do\r
866         begin\r
867           GSM_GetNetworkData(i,@Name,@Data);\r
868 \r
869           // conversion problems\r
870           Label14.Caption:=Name;\r
871           if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
872 \r
873           // conversion problems\r
874           Label14.Caption:=' - '+Label14.Caption;\r
875           for j:=6 downto 1 do\r
876           begin\r
877             Label14.Caption:=Data[j]+Label14.Caption;\r
878           end;\r
879 \r
880           LogosRingForm.ComboBox3.Items.Add(Pchar(Label14.Caption));\r
881           i:=i+1;\r
882         end;\r
883         //looking for current network\r
884         if GSMPhoneConnected then\r
885         begin\r
886           // conversion problems\r
887           Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
888           Label14.Caption:=' - '+Label14.Caption;\r
889           for j:=6 downto 1 do\r
890           begin\r
891             Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
892           end;\r
893 \r
894           i:=1;\r
895           while true do\r
896           begin\r
897             if strcomp(pchar(LogosRingForm.ComboBox3.Items[i]),pchar(Label14.Caption))=0\r
898               then break;\r
899             i:=i+1;\r
900           end;\r
901           LogosRingForm.ComboBox3.ItemIndex:=i;\r
902         end;\r
903         LogosRingForm.ShowModal();\r
904         if (LogosRingForm.ComboBox3.Visible) then\r
905         begin\r
906           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
907           begin\r
908             bitma.number:=255;\r
909             for i:=1 to 6 do\r
910             begin\r
911               bitma.netcode[i]:=GSMNetworkInfo.NetworkCode[i];\r
912             end;\r
913             bitma.netcode[7]:=chr(0);\r
914           end else\r
915           begin\r
916             GSM_GetNetworkData(LogosRingForm.ComboBox3.ItemIndex-1,@Name,@bitma.netcode);\r
917           end;\r
918           GSM_SetBitmap(@bitma);\r
919         end;\r
920       end;\r
921     GSM_PictureImage:\r
922       begin\r
923         LogosRingForm.ComboBox3.Visible:=true;\r
924         for i:=1 to 20 do\r
925         begin\r
926           LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
927         end;\r
928         LogosRingForm.ComboBox3.ItemIndex:=0;\r
929         LogosRingForm.ShowModal();\r
930         if (LogosRingForm.ComboBox3.Visible) then\r
931         begin\r
932           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
933           begin\r
934             bitma.number:=255;\r
935           end else\r
936           begin\r
937             bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
938           end;\r
939           GSM_SetBitmap(@bitma);\r
940         end;\r
941       end;\r
942     GSM_CallerLogo:\r
943       begin\r
944         LogosRingForm.ComboBox3.Visible:=true;\r
945         LogosRingForm.ComboBox3.Items.Add('Preview');\r
946         ReadAllCallerGroups();\r
947         for i:=1 to 5 do\r
948         begin\r
949           LogosRingForm.ComboBox3.Items.Add(caller[i].text);\r
950         end;\r
951         LogosRingForm.ComboBox3.ItemIndex:=1;\r
952         LogosRingForm.ShowModal();\r
953         if (LogosRingForm.ComboBox3.Visible) then\r
954         begin\r
955           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
956           begin\r
957             bitma.number:=255;\r
958           end else\r
959           begin\r
960             bitma.number:=LogosRingForm.ComboBox3.ItemIndex-1;\r
961             //we need to get old caller group datas\r
962             oldbitma.type2:=bitma.type2;\r
963             oldbitma.number:=bitma.number;\r
964             GSM_GetBitmap(@oldbitma);\r
965             bitma.ringtone:=oldbitma.ringtone;\r
966             bitma.text:=oldbitma.text;\r
967           end;\r
968           GSM_SetBitmap(@bitma);\r
969         end;\r
970       end;\r
971   end;\r
972 end;\r
973 \r
974 procedure TMainForm.Button5Click(Sender: TObject);\r
975 begin\r
976   if SaveDialog1.Execute then\r
977   begin\r
978     GSM_SaveBitmapFile(PChar(SaveDialog1.FileName),@bitma);\r
979   end;\r
980 end;\r
981 \r
982 procedure TMainForm.Button8Click(Sender: TObject);\r
983 var\r
984   bitma2:GSM_Bitmap;\r
985 begin\r
986   if MessageDlg('Restore logo to default ?',\r
987     mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
988   begin\r
989     bitma2:=bitma;\r
990     bitma2.netcode[1]:='0';\r
991     bitma2.netcode[2]:='0';\r
992     bitma2.netcode[3]:='0';\r
993     bitma2.netcode[4]:=' ';\r
994     bitma2.netcode[5]:='0';\r
995     bitma2.netcode[6]:='0';\r
996     bitma2.netcode[7]:=chr(0);\r
997     GSM_ClearBitmap(@bitma2);\r
998     GSM_SetBitmap(@bitma2);\r
999   end;\r
1000 end;\r
1001 \r
1002 procedure TMainForm.Button12Click(Sender: TObject);\r
1003 begin\r
1004   GSM_ClearBitmap(@bitma);\r
1005   DrawBitmap();\r
1006 end;\r
1007 \r
1008 //MainForm main functions\r
1009 procedure TMainForm.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
1010   Shift: TShiftState; X, Y: Integer);\r
1011 begin\r
1012   MainForm.TreeView1.FullExpand;\r
1013   case MainForm.TreeView1.Selected.ImageIndex of\r
1014     0: MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
1015     1: MainForm.PageControl1.ActivePage:=CalendarTabSheet;\r
1016     2: MainForm.PageControl1.ActivePage:=DivertTabSheet;\r
1017     3: MainForm.PageControl1.ActivePage:=CallerTabSheet;\r
1018     4: MainForm.PageControl1.ActivePage:=LogosTabSheet;\r
1019     5: MainForm.PageControl1.ActivePage:=NetmonitorTabSheet;\r
1020     6: MainForm.PageControl1.ActivePage:=PhonebookTabSheet;\r
1021     7: MainForm.PageControl1.ActivePage:=ProfileTabSheet;\r
1022     8: MainForm.PageControl1.ActivePage:=RingtonesTabSheet;\r
1023     9: MainForm.PageControl1.ActivePage:=SMSTabSheet;\r
1024     10: MainForm.PageControl1.ActivePage:=SMSCTabSheet;\r
1025     11: MainForm.PageControl1.ActivePage:=SpeedTabSheet;\r
1026     12: MainForm.PageControl1.ActivePage:=WAPBookTabSheet;\r
1027     13: MainForm.PageControl1.ActivePage:=WAPSettTabSheet;\r
1028     14: MainForm.PageControl1.ActivePage:=PCOfflineTabSheet;\r
1029     15: MainForm.PageControl1.ActivePage:=PCCalendarTabSheet;\r
1030     16: MainForm.PageControl1.ActivePage:=PCSMSTabSheet;\r
1031   end;\r
1032 end;\r
1033 \r
1034 procedure TMainForm.Configuration1Click(Sender: TObject);\r
1035 begin\r
1036   MainForm.PageControl1.ActivePage:=ConfigTabSheet;\r
1037 end;\r
1038 \r
1039 procedure TMainForm.TreeView1KeyUp(Sender: TObject; var Key: Word;\r
1040   Shift: TShiftState);\r
1041 begin\r
1042   MainForm.TreeView1.FullExpand;\r
1043 end;\r
1044 \r
1045 procedure TMainForm.FormCreate(Sender: TObject);\r
1046 begin\r
1047   MainForm.PhonebookTabSheet.TabVisible:=false;\r
1048   MainForm.NetmonitorTabSheet.TabVisible:=false;\r
1049   MainForm.LogosTabSheet.TabVisible:=false;\r
1050   MainForm.PhoneTabSheet.TabVisible:=false;\r
1051   MainForm.RingtonesTabSheet.TabVisible:=false;\r
1052   MainForm.SMSTabSheet.TabVisible:=false;\r
1053   MainForm.SMSCTabSheet.TabVisible:=false;\r
1054   MainForm.SpeedTabSheet.TabVisible:=false;\r
1055   MainForm.CalendarTabSheet.TabVisible:=false;\r
1056   MainForm.CallerTabSheet.TabVisible:=false;\r
1057   MainForm.ProfileTabSheet.TabVisible:=false;\r
1058   MainForm.WAPBookTabSheet.TabVisible:=false;\r
1059   MainForm.WAPSettTabSheet.TabVisible:=false;\r
1060   MainForm.DivertTabSheet.TabVisible:=false;\r
1061   MainForm.ConfigTabSheet.TabVisible:=false;\r
1062   MainForm.AboutTabSheet.TabVisible:=false;\r
1063   MainForm.PCSMSTabSheet.TabVisible:=false;\r
1064   MainForm.PCCalendarTabSheet.TabVisible:=false;\r
1065   MainForm.PCOfflineTabSheet.TabVisible:=false;\r
1066   MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
1067 \r
1068   PreviewColor:=Image2.Canvas.Pixels[70,170];\r
1069 \r
1070   bitma.size:=126;\r
1071   bitma.width:=72;\r
1072   bitma.heigh:=14;\r
1073   bitma.type2:=GSM_OperatorLogo;\r
1074   GSM_ClearBitmap(@bitma);\r
1075 \r
1076   pointsize:=3;\r
1077   MainForm.LogosImage.Width:=96*pointsize+96-1;\r
1078   MainForm.LogosImage.Height:=65*pointsize+65-1;\r
1079 \r
1080   netmonnum:=1;\r
1081 \r
1082   MainForm.Width:=660;\r
1083   MainForm.Height:=470;\r
1084 \r
1085   callerinit:=false;\r
1086   phoneinfo:=false;\r
1087   smscinit:=false;\r
1088 \r
1089   smsofflinenumber:=0;\r
1090   calendarofflinenumber:=0;\r
1091 \r
1092   readcalendar:=false;\r
1093 end;\r
1094 \r
1095 procedure TMainForm.Timer1Timer(Sender: TObject);\r
1096 var\r
1097   NetworkName:array[1..255] of char;\r
1098 begin\r
1099   if GSMPhoneConnected then\r
1100   begin\r
1101     // Here we should enable interface\r
1102     GSM_GetNetworkName(@NetworkName,@GSMNetworkInfo.NetworkCode);\r
1103     MainForm.StatusBar1.Panels[1].Text:=NetworkName;\r
1104     if PhonebookThread=nil then\r
1105       ComboBox1.Enabled:=true;\r
1106 \r
1107     ListView1.Enabled:=true;\r
1108     NetmonGroupBox.Enabled:=true;\r
1109     SpinEdit1.Enabled:=true;\r
1110     Button2.Enabled:=true;\r
1111     Button3.Enabled:=true;\r
1112     Button6.Enabled:=true;\r
1113     Button7.Enabled:=true;\r
1114     Button9.Enabled:=true;\r
1115     Button11.Enabled:=true;\r
1116 \r
1117     //ringtones\r
1118     Button16.Enabled:=true;\r
1119     if Edit1.Text<>'' then\r
1120       Edit1.Enabled:=true;\r
1121     if Edit2.Text<>'' then\r
1122       Edit2.Enabled:=true;\r
1123 \r
1124     If MainForm.PageControl1.ActivePage=MainForm.NetmonitorTabSheet then\r
1125       NetmonitorTabSheetShow(Sender);\r
1126 \r
1127     If MainForm.PageControl1.ActivePage=MainForm.PhoneTabSheet then\r
1128     begin\r
1129       if not phoneinfo then\r
1130         PhoneTabSheetShow(Sender);\r
1131     end;\r
1132 \r
1133     If MainForm.PageControl1.ActivePage=MainForm.SpeedTabSheet then\r
1134     begin\r
1135       if speednum<>10 then\r
1136         SpeedTabSheetShow(Sender);\r
1137     end;\r
1138 \r
1139     if bitma.type2<>GSM_OperatorLogo then\r
1140       Button8.Enabled:=false\r
1141     else\r
1142       Button8.Enabled:=true;\r
1143 \r
1144     if Edit2.Text<>'' then\r
1145       Button14.Enabled:=true\r
1146     else\r
1147       Button14.Enabled:=false;\r
1148 \r
1149     if Edit1.Text<>'' then\r
1150     begin\r
1151       Button2.Enabled:=true;\r
1152       Button17.Enabled:=true;\r
1153       if PlayRingtoneThread<>nil then\r
1154       begin\r
1155         Button3.Enabled:=false;\r
1156         Button16.Enabled:=true;\r
1157       end\r
1158       else\r
1159       begin\r
1160         Button3.Enabled:=true;\r
1161         Button16.Enabled:=false;\r
1162       end;\r
1163     end else\r
1164     begin\r
1165       Button2.Enabled:=false;\r
1166       Button17.Enabled:=false;\r
1167       Button16.Enabled:=false;\r
1168       Button3.Enabled:=false;\r
1169     end;\r
1170 \r
1171     Button18.Enabled:=false;\r
1172     if bitma.type2=GSM_PictureImage then\r
1173       Button18.Enabled:=true;\r
1174     if bitma.type2=GSM_OperatorLogo then\r
1175       Button18.Enabled:=true;\r
1176     if bitma.type2=GSM_CallerLogo then\r
1177       Button18.Enabled:=true;\r
1178 \r
1179     //wap settings\r
1180     WAPSettTabSheet.Enabled:=true;\r
1181     if GSM_GetModelFeature(FN_WAP)=0 then\r
1182     begin\r
1183       GroupBox19.Enabled:=false;\r
1184       groupbox19.Ctl3D:=false;\r
1185       ComboBox7.enabled:=false;\r
1186       ComboBox8.enabled:=false;\r
1187       ComboBox9.enabled:=false;\r
1188       ComboBox10.enabled:=false;\r
1189       ComboBox11.enabled:=false;\r
1190       ComboBox12.enabled:=false;\r
1191       ComboBox13.enabled:=false;\r
1192       ComboBox14.enabled:=false;\r
1193       Edit6.Enabled:=false;\r
1194       Edit8.Enabled:=false;\r
1195       Edit9.Enabled:=false;\r
1196       Edit10.Enabled:=false;\r
1197       Edit11.Enabled:=false;\r
1198       Edit12.Enabled:=false;\r
1199       Edit13.Enabled:=false;\r
1200       Edit14.Enabled:=false;\r
1201       Edit15.Enabled:=false;\r
1202     end else\r
1203     begin\r
1204       GroupBox19.Enabled:=true;\r
1205       groupbox19.Ctl3D:=true;\r
1206       ComboBox7.enabled:=true;\r
1207       ComboBox8.enabled:=true;\r
1208       ComboBox9.enabled:=true;\r
1209       ComboBox10.enabled:=true;\r
1210       ComboBox11.enabled:=true;\r
1211       ComboBox12.enabled:=true;\r
1212       ComboBox13.enabled:=true;\r
1213       ComboBox14.enabled:=true;\r
1214       Edit6.Enabled:=true;\r
1215       Edit8.Enabled:=true;\r
1216       Edit9.Enabled:=true;\r
1217       Edit10.Enabled:=true;\r
1218       Edit11.Enabled:=true;\r
1219       Edit12.Enabled:=true;\r
1220       Edit13.Enabled:=true;\r
1221       Edit14.Enabled:=true;\r
1222       Edit15.Enabled:=true;\r
1223     end;\r
1224 \r
1225     button19.Enabled:=true;\r
1226     button20.Enabled:=true;\r
1227   end else\r
1228   begin\r
1229     // Here we should disabled interface\r
1230     MainForm.StatusBar1.Panels[1].Text:='Not connected';\r
1231 \r
1232     callerinit:=false;\r
1233 \r
1234     MainForm.ComboBox1.Enabled:=false;\r
1235     MainForm.ListView1.Enabled:=false;\r
1236     MainForm.NetmonGroupBox.Enabled:=false;\r
1237     MainForm.SpinEdit1.Enabled:=false;\r
1238     MainForm.Button2.Enabled:=false;\r
1239     MainForm.Button3.Enabled:=false;\r
1240     MainForm.Button6.Enabled:=false;\r
1241     MainForm.Button7.Enabled:=false;\r
1242     MainForm.Button8.Enabled:=false;\r
1243     MainForm.Button9.Enabled:=false;\r
1244     MainForm.Button11.Enabled:=false;\r
1245     Button18.Enabled:=false;\r
1246 \r
1247     //ringtones\r
1248     Button16.Enabled:=false;\r
1249     Button14.Enabled:=false;\r
1250     Button17.Enabled:=false;\r
1251     Edit1.Enabled:=false;\r
1252     Edit2.Enabled:=false;\r
1253 \r
1254     MainForm.NetmonitorTabSheetHide(Sender);\r
1255     MainForm.PhonebookTabSheetHide(Sender);\r
1256     MainForm.SpeedTabSheetHide(Sender);\r
1257 \r
1258     //WAP settings\r
1259     ComboBox7.enabled:=false;\r
1260     ComboBox8.enabled:=false;\r
1261     ComboBox9.enabled:=false;\r
1262     ComboBox10.enabled:=false;\r
1263     ComboBox11.enabled:=false;\r
1264     ComboBox12.enabled:=false;\r
1265     ComboBox13.enabled:=false;\r
1266     ComboBox14.enabled:=false;\r
1267     Edit6.Enabled:=false;\r
1268     Edit8.Enabled:=false;\r
1269     Edit9.Enabled:=false;\r
1270     Edit10.Enabled:=false;\r
1271     Edit11.Enabled:=false;\r
1272     Edit12.Enabled:=false;\r
1273     Edit13.Enabled:=false;\r
1274     Edit14.Enabled:=false;\r
1275     Edit15.Enabled:=false;\r
1276 \r
1277     button19.Enabled:=false;\r
1278     button20.Enabled:=false;\r
1279 \r
1280     phoneinfo:=false;\r
1281   end;\r
1282 end;\r
1283 \r
1284 procedure TMainForm.Quit1Click(Sender: TObject);\r
1285 begin\r
1286   if GSMPhoneConnected then GSM_Terminate();\r
1287   Halt;\r
1288 end;\r
1289 \r
1290 procedure TMainForm.FormResize(Sender: TObject);\r
1291 begin\r
1292   MainForm.StatusBar1.Panels[0].Width:=MainForm.Width-150;\r
1293 end;\r
1294 \r
1295 procedure TMainForm.About1Click(Sender: TObject);\r
1296 begin\r
1297   AboutTabSheet.Show;\r
1298 end;\r
1299 \r
1300 //netmonitor sheet functions\r
1301 \r
1302 procedure TNetmonThread.Execute;\r
1303 var\r
1304   netmon:array[1..255] of char;\r
1305 begin\r
1306   while not Terminated do\r
1307   begin\r
1308     GSM_Netmonitor(netmonnum,@netmon);\r
1309     MainForm.NetmonLabel.Caption:=netmon;\r
1310     MainForm.NetmonGroupBox.Caption:=' Screen ' + IntToStr(netmonnum) + ' ';\r
1311   end;\r
1312 end;\r
1313 \r
1314 procedure TMainForm.NetmonitorTabSheetShow(Sender: TObject);\r
1315 begin\r
1316   if NetmonThread<>nil then\r
1317   else begin\r
1318     if GSMPhoneConnected then\r
1319     begin\r
1320       MainForm.Timer2.Enabled:=false;\r
1321       NetmonThread:=TNetmonThread.Create(false);\r
1322     end;\r
1323   end;\r
1324 end;\r
1325 \r
1326 procedure TMainForm.NetmonitorTabSheetHide(Sender: TObject);\r
1327 begin\r
1328   if (NetmonThread<>nil) then\r
1329   begin\r
1330     NetmonThread.Terminate();\r
1331     MainForm.Timer2.Enabled:=true;\r
1332     NetmonThread:=nil;\r
1333   end;\r
1334 end;\r
1335 \r
1336 procedure TMainForm.SpinEdit1Change(Sender: TObject);\r
1337 begin\r
1338   netmonnum:=SpinEdit1.Value;\r
1339 end;\r
1340 \r
1341 procedure TMainForm.Button11Click(Sender: TObject);\r
1342 var\r
1343   netmon:array[1..255] of char;\r
1344 begin\r
1345   NetmonForm.ShowModal;\r
1346   if NetmonForm.RadioGroup1.ItemIndex<>-1 then\r
1347   begin\r
1348     GSM_Netmonitor(241+NetmonForm.RadioGroup1.ItemIndex,@netmon);\r
1349   end;\r
1350 end;\r
1351 \r
1352 //phonebook sheet functions\r
1353 \r
1354 procedure EndPhonebookThread;\r
1355 begin\r
1356   if (PhonebookThread<>nil) then\r
1357   begin\r
1358     PhonebookThread.Terminate();\r
1359     MainForm.Timer2.Enabled:=true;\r
1360     PhonebookThread:=nil;\r
1361     MainForm.ComboBox1.Enabled:=true;\r
1362   end;\r
1363 end;\r
1364 \r
1365 procedure TPhonebookThread.Execute;\r
1366 var\r
1367   x:GSM_PhonebookEntry;\r
1368   i,j:integer;\r
1369 begin\r
1370   while not Terminated do\r
1371   begin\r
1372     if (phonebookcur<phonebookstatus.Used+phonebookstatus.Free) then\r
1373     begin\r
1374       phonebookcur:=phonebookcur+1;\r
1375       MainForm.StatusBar1.Panels[0].Text:='Reading '+inttostr(phonebookcur)+'/'+inttostr(phonebookstatus.Free+phonebookstatus.Used);\r
1376       MainForm.ListView1.Items.Add;\r
1377       MainForm.ListView1.Items.Item[phonebookcur-1].Caption:=inttostr(phonebookcur);\r
1378       if (phonebookfound<phonebookstatus.Used) then\r
1379       begin\r
1380         x.MemoryType:=phonebookstatus.MemoryType;\r
1381         x.Location:=phonebookcur;\r
1382         if (x.MemoryType=GMT_ON) then x.Location:=x.Location-1;\r
1383         if (x.MemoryType=GMT_DC) then x.Location:=x.Location-1;\r
1384         if (x.MemoryType=GMT_MC) then x.Location:=x.Location-1;\r
1385         if (x.MemoryType=GMT_RC) then x.Location:=x.Location-1;\r
1386         if GSM_GetMemoryLocation(@x)=0 then\r
1387         begin\r
1388           MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(x.Name);\r
1389 \r
1390           if (x.Number[1]<>chr(0)) then\r
1391             MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(x.Number)\r
1392           else begin\r
1393             for j:=1 to x.SubEntriesCount do\r
1394             begin\r
1395               if x.SubEntries[j].EntryType=GSM_Number then\r
1396               begin\r
1397                 MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(x.subentries[j].Number);\r
1398                 break;\r
1399               end;\r
1400             end;\r
1401           end;\r
1402 \r
1403           case x.Group of\r
1404             0:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
1405             1:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
1406             2:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
1407             3:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
1408             4:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
1409           else\r
1410             MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add('not set');\r
1411           end;\r
1412 \r
1413           for i:=1 to x.SubEntriesCount do\r
1414           begin\r
1415             if x.SubEntries[i].EntryType=GSM_Date then\r
1416             begin\r
1417               MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(DayOfweek2(x.SubEntries[i].Date.Day,x.SubEntries[i].Date.Month,x.SubEntries[i].Date.Year)+' '+inttostr2(x.SubEntries[i].Date.Day,2)+'-'+inttostr2(x.SubEntries[i].Date.Month,2)+'-'+inttostr(x.SubEntries[i].Date.Year));\r
1418               MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(inttostr2(x.SubEntries[i].Date.Hour,2)+':'+inttostr2(x.SubEntries[i].Date.Minute,2)+':'+inttostr2(x.SubEntries[i].Date.Second,2));\r
1419               break;\r
1420             end;\r
1421           end;\r
1422           if (x.Name[1]<>chr(0)) then phonebookfound:=phonebookfound+1;\r
1423         end;\r
1424       end;\r
1425     end else\r
1426     begin\r
1427       MainForm.StatusBar1.Panels[0].Text:=inttostr(phonebookstatus.Used)+'/'+inttostr(phonebookstatus.Free+phonebookstatus.Used)+' entries';\r
1428       EndPhonebookThread;\r
1429     end;\r
1430   end;\r
1431 end;\r
1432 \r
1433 procedure TMainForm.PhonebookTabSheetShow(Sender: TObject);\r
1434 begin\r
1435   if GSMPhoneConnected then ComboBox1.Enabled:=true;\r
1436 end;\r
1437 \r
1438 procedure TMainForm.Button10Click(Sender: TObject);\r
1439 var\r
1440   i:integer;\r
1441   FileHandle:integer;\r
1442 begin\r
1443   if SaveDialog1.Execute then\r
1444   begin\r
1445     FileHandle := FileCreate(SaveDialog1.FileName);\r
1446     for i:=1 to ListView1.Items.Count do\r
1447     begin\r
1448       FileWrite(FileHandle,ListView1.Items.Item[i].Caption, SizeOf(ListView1.Items.Item[i].Caption));\r
1449     end;\r
1450     FileClose(FileHandle);\r
1451   end;\r
1452 end;\r
1453 \r
1454 procedure TMainForm.ComboBox1Change(Sender: TObject);\r
1455 begin\r
1456   if (ComboBox1.ItemIndex<>0) then\r
1457   begin\r
1458     case ComboBox1.ItemIndex of\r
1459       1:phonebookstatus.MemoryType:=GMT_DC;\r
1460       2:phonebookstatus.MemoryType:=GMT_MC;\r
1461       3:phonebookstatus.MemoryType:=GMT_ON;\r
1462       4:phonebookstatus.MemoryType:=GMT_ME;\r
1463       5:phonebookstatus.MemoryType:=GMT_SM;\r
1464       6:phonebookstatus.MemoryType:=GMT_RC;\r
1465     end;\r
1466     if GSM_GetMemoryStatus(@phonebookstatus)<>0 then\r
1467     begin\r
1468       phonebookstatus.Free:=0;\r
1469       phonebookstatus.Used:=30;\r
1470     end;\r
1471     phonebookcur:=0;\r
1472     phonebookfound:=0;\r
1473 \r
1474     ComboBox1.Enabled:=false;\r
1475 \r
1476     ReadAllCallerGroups();\r
1477 \r
1478     MainForm.ListView1.Items.Clear;\r
1479     MainForm.Timer2.Enabled:=false;\r
1480     PhonebookThread:=TPhonebookThread.Create(false);\r
1481   end;\r
1482 end;\r
1483 \r
1484 procedure TMainForm.PhonebookTabSheetHide(Sender: TObject);\r
1485 begin\r
1486   EndPhonebookThread;\r
1487 end;\r
1488 \r
1489 //ringtones\r
1490 procedure TMainForm.Button1Click(Sender: TObject);\r
1491 var\r
1492   ring:GSM_Ringtone;\r
1493 begin\r
1494   if OpenDialog1.Execute then\r
1495   begin\r
1496     if GSM_ReadRingtoneFile(PChar(OpenDialog1.FileName),@ring)=0 then\r
1497     begin\r
1498       Edit1.Text:=ring.Name;\r
1499       rington:=ring;\r
1500     end;\r
1501   end;\r
1502 end;\r
1503 \r
1504 procedure EndPlayRingtoneThread;\r
1505 begin\r
1506   if (PlayRingtoneThread<>nil) then\r
1507   begin\r
1508     PlayRingtoneThread.Terminate();\r
1509     GSM_PlayTone(255*255,0);\r
1510     MainForm.Timer2.Enabled:=true;\r
1511     PlayRingtoneThread:=nil;\r
1512   end;\r
1513 end;\r
1514 \r
1515 procedure TPlayRingtoneThread.Execute;\r
1516 begin\r
1517   while not Terminated do\r
1518   begin\r
1519     GSM_PlayNote(rington.notes[ringindex]);\r
1520     ringindex:=ringindex+1;\r
1521     if ringindex>rington.NrNotes then\r
1522       EndPlayRingtoneThread;\r
1523   end;\r
1524 end;\r
1525 \r
1526 procedure TMainForm.Button16Click(Sender: TObject);\r
1527 begin\r
1528   EndPlayRingtoneThread;\r
1529 end;\r
1530 \r
1531 procedure TMainForm.Button3Click(Sender: TObject);\r
1532 begin\r
1533   ringindex:=1;\r
1534   MainForm.Timer2.Enabled:=false;\r
1535   PlayRingtoneThread:=TPlayRingtoneThread.Create(false);\r
1536 end;\r
1537 \r
1538 procedure TMainForm.Button2Click(Sender: TObject);\r
1539 var\r
1540   i:integer;\r
1541 begin\r
1542   LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
1543   LogosRingForm.ComboBox3.Items.Clear();\r
1544   LogosRingForm.ComboBox3.Items.Add('Preview');\r
1545   for i:=1 to 7 do\r
1546   begin\r
1547     LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
1548   end;\r
1549   LogosRingForm.ComboBox3.ItemIndex:=1;\r
1550   LogosRingForm.ShowModal;\r
1551   if LogosRingForm.ComboBox3.Visible then\r
1552   begin\r
1553     if LogosRingForm.ComboBox3.ItemIndex=0 then\r
1554       rington.location:=255\r
1555     else\r
1556       rington.location:=LogosRingForm.ComboBox3.ItemIndex;\r
1557     MainForm.Timer2.Enabled:=false;\r
1558     GSM_SetRingtone(@rington,@i);\r
1559     MainForm.Timer2.Enabled:=true;\r
1560   end;\r
1561 end;\r
1562 \r
1563 //phone sheet\r
1564 procedure TMainForm.PhoneTabSheetShow(Sender: TObject);\r
1565 var\r
1566   xxxx,xxx:array[1..256] of char;\r
1567   time:GSM_DateTime;\r
1568   siml:GSM_AllSimlocks;\r
1569   i:integer;\r
1570   code:GSM_SecurityCode;\r
1571 begin\r
1572   if GSMPhoneConnected then\r
1573   begin\r
1574     GSM_GetRevision(@xxx);\r
1575     Label9.Caption:=xxx;\r
1576     GSM_GetImei(@xxx);\r
1577     Label7.Caption:=xxx;\r
1578     GSM_GetModel(@xxx);\r
1579     GSM_GetModelNumber(@xxx,@xxxx);\r
1580     Label5.Caption:=xxx;\r
1581     Label5.Caption:=Label5.Caption+' ('+xxxx;\r
1582     Label5.Caption:=Label5.Caption+')';\r
1583     GSM_GetAlarm(1,@time);\r
1584     if time.isSet<>0 then\r
1585       CheckBox1.Checked:=true\r
1586     else\r
1587       CheckBox1.Checked:=false;\r
1588     DateTimePicker1.Time:=EncodeTime(time.Hour,time.Minute,0,0);\r
1589     ListView8.Items.Clear();\r
1590     GSM_GetSimlock(@siml);\r
1591     for i:=1 to 4 do\r
1592     begin\r
1593       MainForm.ListView8.Items.Add;\r
1594       MainForm.ListView8.Items.Item[i-1].Caption:=inttostr(i);\r
1595       MainForm.ListView8.Items.Item[i-1].Subitems.Add(siml.simlocks[i].data);\r
1596       if siml.simlocks[i].enabled=0 then\r
1597         MainForm.ListView8.Items.Item[i-1].Subitems.Add('disabled')\r
1598       else\r
1599       begin\r
1600         if siml.simlocks[i].factory<>0 then\r
1601           MainForm.ListView8.Items.Item[i-1].Subitems.Add('factory')\r
1602         else\r
1603           MainForm.ListView8.Items.Item[i-1].Subitems.Add('user');\r
1604       end;\r
1605       MainForm.ListView8.Items.Item[i-1].Subitems.Add(inttostr(siml.simlocks[i].counter));\r
1606     end;\r
1607     code.Type2:=GSCT_SecurityCode;\r
1608     GSM_GetSecurityCode(@code);\r
1609     Label18.Caption:=code.Code;\r
1610 \r
1611     phoneinfo:=true;\r
1612   end;\r
1613 end;\r
1614 \r
1615 procedure TMainForm.Button9Click(Sender: TObject);\r
1616 begin\r
1617   GSM_Reset(GSM_SoftReset);\r
1618 end;\r
1619 \r
1620 //speed dials\r
1621 procedure TMainForm.SpeedTabSheetShow(Sender: TObject);\r
1622 begin\r
1623   if SpeedThread<>nil then\r
1624   else begin\r
1625     if GSMPhoneConnected then\r
1626     begin\r
1627       MainForm.ListView3.Items.Clear;\r
1628       speednum:=1;\r
1629       MainForm.Timer2.Enabled:=false;\r
1630       SpeedThread:=TSpeedThread.Create(false);\r
1631     end;\r
1632   end;\r
1633 end;\r
1634 \r
1635 procedure EndSpeedThread();\r
1636 begin\r
1637   if (SpeedThread<>nil) then\r
1638   begin\r
1639     SpeedThread.Terminate();\r
1640     MainForm.Timer2.Enabled:=true;\r
1641     SpeedThread:=nil;\r
1642   end;\r
1643 end;\r
1644 \r
1645 procedure TMainForm.SpeedTabSheetHide(Sender: TObject);\r
1646 begin\r
1647   EndSpeedThread();\r
1648 end;\r
1649 \r
1650 procedure TSpeedThread.Execute;\r
1651 var\r
1652   entry1:GSM_SpeedDial;\r
1653   entry2:GSM_PhonebookEntry;\r
1654   i:integer;\r
1655 begin\r
1656   while not Terminated do\r
1657   begin\r
1658     entry1.Number:=speednum;\r
1659     if GSM_GetSpeedDial(@entry1)=0 then\r
1660     begin\r
1661       entry2.Location:=entry1.Location;\r
1662       entry2.MemoryType:=entry1.MemoryType;\r
1663       if entry2.Location=0 then\r
1664         entry2.Location:=speednum;\r
1665       GSM_GetMemoryLocation(@entry2);\r
1666       MainForm.ListView3.Items.Add;\r
1667       MainForm.ListView3.Items.Item[speednum-1].Caption:=inttostr(speednum);\r
1668       MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.Name);\r
1669       if entry2.Number[1]<>chr(0) then\r
1670         MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.Number)\r
1671       else begin\r
1672         for i:=1 to entry2.SubEntriesCount do\r
1673         begin\r
1674           if entry2.SubEntries[i].EntryType=GSM_Number then\r
1675           begin\r
1676             MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.SubEntries[i].Number);\r
1677             break;\r
1678           end;\r
1679         end;\r
1680       end;\r
1681       speednum:=speednum+1;\r
1682     end;\r
1683     if speednum=10 then\r
1684       EndSpeedThread();\r
1685   end;\r
1686 end;\r
1687 \r
1688 //calendar\r
1689 procedure EndCalendarThread();\r
1690 begin\r
1691   if (CalendarThread<>nil) then\r
1692   begin\r
1693     CalendarThread.Terminate();\r
1694     MainForm.Timer2.Enabled:=true;\r
1695     CalendarThread:=nil;\r
1696   end;\r
1697 end;\r
1698 \r
1699 procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
1700 begin\r
1701   myview.Items.Add;\r
1702   myview.Items.Item[myview.Items.Count-1].Caption:=inttostr(myview.Items.Count);\r
1703   case note.Type2 of\r
1704     GCN_Reminder:myview.Items.Item[myview.Items.Count-1].Subitems.Add('Reminder');\r
1705     GCN_Call    :myview.Items.Item[myview.Items.Count-1].Subitems.Add('Call');\r
1706     GCN_Meeting :myview.Items.Item[myview.Items.Count-1].Subitems.Add('Meeting');\r
1707     GCN_Birthday:myview.Items.Item[myview.Items.Count-1].Subitems.Add('Birthday');\r
1708   end;\r
1709   myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Text);\r
1710   myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Phone);\r
1711   myview.Items.Item[myview.Items.Count-1].Subitems.Add(DayOfweek2(note.Time.Day,note.Time.Month,note.Time.Year)+' '+inttostr2(note.Time.Day,2)+'-'+inttostr2(note.Time.Month,2)+'-'+inttostr(note.Time.Year)+' '+inttostr2(note.Time.Hour,2)+':'+inttostr2(note.Time.Minute,2)+':'+inttostr2(note.Time.Second,2));\r
1712   if note.Alarm.Year<>0 then\r
1713      myview.Items.Item[myview.Items.Count-1].Subitems.Add(DayOfweek2(note.Alarm.Day,note.Alarm.Month,note.Alarm.Year)+' '+inttostr2(note.Alarm.Day,2)+'-'+inttostr2(note.Alarm.Month,2)+'-'+inttostr(note.Alarm.Year)+' '+inttostr2(note.Alarm.Hour,2)+':'+inttostr2(note.Alarm.Minute,2)+':'+inttostr2(note.Alarm.Second,2))\r
1714   else\r
1715      myview.Items.Item[myview.Items.Count-1].Subitems.Add('');\r
1716 end;\r
1717 \r
1718 procedure TCalendarThread.Execute;\r
1719 var\r
1720   note:GSM_CalendarNote;\r
1721 begin\r
1722   while not Terminated do\r
1723   begin\r
1724     note.Location:=calendarnum;\r
1725     if GSM_GetCalendarNote(@note)=0 then\r
1726     begin\r
1727       AddCalendarNote(note,MainForm.ListView4);\r
1728       calendarnum:=calendarnum+1;\r
1729     end else begin\r
1730       readcalendar:=true;\r
1731       EndCalendarThread();\r
1732     end;\r
1733   end;\r
1734 end;\r
1735 \r
1736 procedure TMainForm.CalendarTabSheetShow(Sender: TObject);\r
1737 begin\r
1738   if CalendarThread=nil then\r
1739   begin\r
1740     if GSMPhoneConnected then\r
1741     begin\r
1742       if (GSM_GetModelFeature(FN_Calendar)<>0) then\r
1743       begin\r
1744         ListView4.Enabled:=true;\r
1745         ListView4.Ctl3D:=true;\r
1746         GroupBox8.Ctl3D:=true;\r
1747 \r
1748         MainForm.ListView4.Items.Clear;\r
1749         CalendarNum:=1;\r
1750         MainForm.Timer2.Enabled:=false;\r
1751         readcalendar:=false;\r
1752         CalendarThread:=TCalendarThread.Create(false);\r
1753       end else\r
1754       begin\r
1755         ListView4.Enabled:=false;\r
1756         ListView4.Ctl3D:=false;\r
1757         GroupBox8.Ctl3D:=false;\r
1758       end;\r
1759     end;\r
1760   end;\r
1761 end;\r
1762 \r
1763 procedure TMainForm.CalendarTabSheetHide(Sender: TObject);\r
1764 begin\r
1765   EndCalendarThread();\r
1766 end;\r
1767 \r
1768 procedure TMainForm.New1Click(Sender: TObject);\r
1769 begin\r
1770   setcalendarnote.Location:=MainForm.ListView4.Items.Count+1;\r
1771   CalendarForm.ComboBox1.ItemIndex:=0;\r
1772   CalendarForm.ComboBox1.OnSelect(nil);\r
1773   CalendarForm.Edit2.Text:='';\r
1774   CalendarForm.Edit1.Text:='';\r
1775   CalendarForm.DateTimePicker1.DateTime:=Date;\r
1776   CalendarForm.DateTimePicker3.Time:=Time;\r
1777   CalendarForm.DateTimePicker2.DateTime:=Date;\r
1778   CalendarForm.DateTimePicker4.Time:=Time;\r
1779   CalendarForm.ShowModal;\r
1780 end;\r
1781 \r
1782 procedure EditCalendarNote;\r
1783 var i:integer;\r
1784 begin\r
1785   i:=0;\r
1786 \r
1787   CalendarForm.DateTimePicker1.Date:=EncodeDate(setcalendarnote.Time.Year,\r
1788                                                 setcalendarnote.Time.Month,\r
1789                                                 setcalendarnote.Time.Day);\r
1790   CalendarForm.DateTimePicker3.Time:=EncodeTime(setcalendarnote.Time.Hour,\r
1791                                                 setcalendarnote.Time.Minute,\r
1792                                                 setcalendarnote.Time.Second,i);\r
1793   case setcalendarnote.Type2  of\r
1794     GCN_BIRTHDAY:    CalendarForm.ComboBox1.ItemIndex:=0;\r
1795     GCN_CALL:        CalendarForm.ComboBox1.ItemIndex:=1;\r
1796     GCN_MEETING:     CalendarForm.ComboBox1.ItemIndex:=2;\r
1797     GCN_REMINDER:    CalendarForm.ComboBox1.ItemIndex:=3;\r
1798   end;\r
1799 \r
1800   CalendarForm.Edit2.Text:=setcalendarnote.Text;\r
1801   CalendarForm.Edit1.Text:=setcalendarnote.Phone;\r
1802 \r
1803   if setcalendarnote.Alarm.Year<>0 then\r
1804   begin\r
1805     CalendarForm.CheckBox1.checked:=true;\r
1806     CalendarForm.DateTimePicker2.Date:=EncodeDate(setcalendarnote.Alarm.Year,\r
1807                                                   setcalendarnote.Alarm.Month,\r
1808                                                   setcalendarnote.Alarm.Day);\r
1809     CalendarForm.DateTimePicker4.Time:=EncodeTime(setcalendarnote.Alarm.Hour,\r
1810                                                   setcalendarnote.Alarm.Minute,\r
1811                                                   setcalendarnote.Alarm.Second,i);\r
1812   end else\r
1813   begin\r
1814     CalendarForm.CheckBox1.checked:=false;\r
1815     CalendarForm.DateTimePicker2.Date:=CalendarForm.DateTimePicker1.Date;\r
1816     CalendarForm.DateTimePicker4.Time:=CalendarForm.DateTimePicker3.Time;\r
1817   end;\r
1818 \r
1819   if GSM_GetModelFeature(FN_CALENDAR)=F_CAL71 then\r
1820   begin\r
1821     if setcalendarnote.Type2<>GCN_BIRTHDAY then\r
1822     begin\r
1823       CalendarForm.CheckBox2.Checked:=True;\r
1824       case setcalendarnote.Recurrance of\r
1825         0     :begin\r
1826                  CalendarForm.CheckBox2.Checked:=False;\r
1827                  CalendarForm.ComboBox2.Enabled:=False;\r
1828                end;\r
1829         1*24  :CalendarForm.ComboBox2.ItemIndex:=0;\r
1830         7*24  :CalendarForm.ComboBox2.ItemIndex:=1;\r
1831         14*24 :CalendarForm.ComboBox2.ItemIndex:=2;\r
1832         365*24:CalendarForm.ComboBox2.ItemIndex:=3;\r
1833       end;\r
1834       CalendarForm.RadioButton1.Enabled:=False;\r
1835       CalendarForm.RadioButton2.Enabled:=False;\r
1836     end else begin\r
1837       CalendarForm.ComboBox2.ItemIndex:=0;\r
1838       CalendarForm.CheckBox2.Checked:=False;\r
1839       CalendarForm.ComboBox2.Enabled:=False;\r
1840       CalendarForm.RadioButton1.Enabled:=True;\r
1841       CalendarForm.RadioButton2.Enabled:=True;\r
1842       if setcalendarnote.AlarmType=1 then\r
1843         CalendarForm.RadioButton1.Checked:=True\r
1844       else\r
1845         CalendarForm.RadioButton2.Checked:=True;\r
1846     end;\r
1847   end;\r
1848   CalendarForm.ComboBox1.OnSelect(nil);\r
1849 \r
1850   CalendarForm.ShowModal;\r
1851 end;\r
1852 \r
1853 procedure TMainForm.Edit3Click(Sender: TObject);\r
1854 begin\r
1855   setcalendarnote.Location:=calendarselect;\r
1856 \r
1857   mainform.Timer2.Enabled:=false;\r
1858   GSM_GetCalendarNote(@setcalendarnote);\r
1859   mainform.Timer2.Enabled:=true;\r
1860 \r
1861   EditCalendarNote;\r
1862 end;\r
1863 \r
1864 procedure TMainForm.ListView4SelectItem(Sender: TObject; Item: TListItem;\r
1865   Selected: Boolean);\r
1866 begin\r
1867   if Selected then\r
1868   begin\r
1869     calendarselect:=Item.Index+1;\r
1870   end;\r
1871 end;\r
1872 \r
1873 procedure TMainForm.Delete1Click(Sender: TObject);\r
1874 begin\r
1875 //  if listview4.selected<>nil then\r
1876 //  begin\r
1877     if MessageDlg('Do you want to delete this calendar note ?',\r
1878        mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
1879     begin\r
1880       setcalendarnote.Location:=calendarselect;\r
1881       GSM_DeleteCalendarNote(@setcalendarnote);\r
1882       MainForm.CalendarTabSheetShow(nil);\r
1883     end;\r
1884 //  end;\r
1885 end;\r
1886 \r
1887 //caller groups\r
1888 procedure EndCallerThread();\r
1889 begin\r
1890   if (CallerThread<>nil) then\r
1891   begin\r
1892     CallerThread.Terminate();\r
1893     CallerThread:=nil;\r
1894   end;\r
1895 end;\r
1896 \r
1897 procedure TCallerThread.Execute;\r
1898 begin\r
1899   while not Terminated do\r
1900   begin\r
1901     ReadCallerGroup();\r
1902     if callerinit then EndCallerThread();\r
1903   end;\r
1904 end;\r
1905 \r
1906 procedure TMainForm.CallerTabSheetShow(Sender: TObject);\r
1907 begin\r
1908   if CallerThread=nil then\r
1909   begin\r
1910     if GSMPhoneConnected then\r
1911     begin\r
1912       MainForm.ListView5.Items.Clear;\r
1913       callerinit:=false;\r
1914       callernum:=1;\r
1915       CallerThread:=TCallerThread.Create(false);\r
1916     end;\r
1917   end;\r
1918 end;\r
1919 \r
1920 procedure TMainForm.CallerTabSheetHide(Sender: TObject);\r
1921 begin\r
1922   EndCallerThread();\r
1923 end;\r
1924 \r
1925 //smsc\r
1926 procedure TMainForm.SMSCTabSheetShow(Sender: TObject);\r
1927 begin\r
1928   if SMSCThread<>nil then\r
1929   else begin\r
1930     if GSMPhoneConnected then\r
1931     begin\r
1932       MainForm.ListView6.Items.Clear;\r
1933       smscinit:=false;\r
1934       smscnum:=1;\r
1935       MainForm.Timer2.Enabled:=false;\r
1936       SMSCThread:=TSMSCThread.Create(false);\r
1937     end;\r
1938   end;\r
1939 end;\r
1940 \r
1941 procedure SMSCTabHide();\r
1942 begin\r
1943   if (SMSCThread<>nil) then\r
1944   begin\r
1945     SMSCThread.Terminate();\r
1946     MainForm.Timer2.Enabled:=true;\r
1947     SMSCThread:=nil;\r
1948   end;\r
1949 end;\r
1950 \r
1951 procedure TMainForm.SMSCTabSheetHide(Sender: TObject);\r
1952 begin\r
1953   SMSCTabHide();\r
1954 end;\r
1955 \r
1956 procedure ReadSMSC();\r
1957 var\r
1958   smsc:GSM_MessageCenter;\r
1959 begin\r
1960     smsc.No:=smscnum;\r
1961     MainForm.StatusBar1.Panels[0].Text:='Reading SMSC '+inttostr(smscnum);\r
1962     if GSM_GetSMSCenter(@smsc)=0 then\r
1963     begin\r
1964       SMSC2[smscnum]:=smsc;\r
1965       MainForm.ListView6.Items.Add;\r
1966       MainForm.ListView6.Items.Item[smscnum-1].Caption:=inttostr(smscnum);\r
1967       MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.name);\r
1968       MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.number);\r
1969       case smsc.Validity of\r
1970         GSMV_1_Hour   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 hour');\r
1971         GSMV_6_Hours  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('6 hours');\r
1972         GSMV_24_Hours : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 day');\r
1973         GSMV_72_Hours : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('3 days');\r
1974         GSMV_1_Week   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 week');\r
1975         GSMV_Max_Time : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('max. time');\r
1976       else\r
1977         MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('unknown');\r
1978       end;\r
1979       case smsc.Format of\r
1980         GSMF_Text   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('text');\r
1981         GSMF_Fax    : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('fax');\r
1982         GSMF_Voice  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('voice');\r
1983         GSMF_ERMES  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('ERMES');\r
1984         GSMF_Paging : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('paging');\r
1985         GSMF_UCI    : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('UCI');\r
1986         GSMF_Email  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('email');\r
1987         GSMF_X400   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('X400');\r
1988       else\r
1989         MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('unknown');\r
1990       end;\r
1991       MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.defaultrecipient);\r
1992       smscnum:=smscnum+1;\r
1993     end else\r
1994     begin\r
1995       MainForm.StatusBar1.Panels[0].Text:='';\r
1996       smscinit:=true;\r
1997     end;\r
1998 end;\r
1999 \r
2000 procedure TSMSCThread.Execute;\r
2001 begin\r
2002   while not Terminated do\r
2003   begin\r
2004     ReadSMSC();\r
2005     if smscinit then SMSCTabHide();\r
2006   end;\r
2007 end;\r
2008 \r
2009 //profiles\r
2010 procedure ProfileTabHide();\r
2011 begin\r
2012   if (ProfileThread<>nil) then\r
2013   begin\r
2014     ProfileThread.Terminate();\r
2015     MainForm.Timer2.Enabled:=true;\r
2016     ProfileThread:=nil;\r
2017   end;\r
2018 end;\r
2019 \r
2020 procedure TProfileThread.Execute;\r
2021 var\r
2022   profile:GSM_Profile;\r
2023 begin\r
2024   while not Terminated do\r
2025   begin\r
2026     profile.number:=profilenum-1;\r
2027     GSM_GetProfile(@profile);\r
2028     MainForm.ListView7.Items.Add;\r
2029     MainForm.ListView7.Items.Item[profilenum-1].Caption:=inttostr(profilenum);\r
2030     MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(profile.name);\r
2031     case profile.CallAlert of\r
2032       PROFILE_CALLALERT_RINGING  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ringing');\r
2033       PROFILE_CALLALERT_BEEPONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('beep once');\r
2034       PROFILE_CALLALERT_OFF      :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2035       PROFILE_CALLALERT_RINGONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ring once');\r
2036       PROFILE_CALLALERT_ASCENDING:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ascending');\r
2037       PROFILE_CALLALERT_CALLERGROUPS:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('caller groups');\r
2038     end;\r
2039     MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(inttostr(profile.Ringtone));\r
2040     case profile.Volume of\r
2041       PROFILE_VOLUME_LEVEL1:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 1');\r
2042       PROFILE_VOLUME_LEVEL2:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 2');\r
2043       PROFILE_VOLUME_LEVEL3:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 3');\r
2044       PROFILE_VOLUME_LEVEL4:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 4');\r
2045       PROFILE_VOLUME_LEVEL5:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 5');\r
2046     end;\r
2047     case profile.Vibration of\r
2048       PROFILE_VIBRATION_OFF  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2049       PROFILE_VIBRATION_ON   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('on');\r
2050       PROFILE_VIBRATION_FIRST:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('vibrate first');\r
2051     end;\r
2052     case profile.MessageTone of\r
2053       PROFILE_MESSAGE_NOTONE   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('no tone');\r
2054       PROFILE_MESSAGE_STANDARD :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('standard');\r
2055       PROFILE_MESSAGE_SPECIAL  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('special');\r
2056       PROFILE_MESSAGE_BEEPONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('beep once');\r
2057       PROFILE_MESSAGE_ASCENDING:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ascending');\r
2058     end;\r
2059     case profile.KeypadTone of\r
2060       PROFILE_KEYPAD_OFF   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2061       PROFILE_KEYPAD_LEVEL1:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 1');\r
2062       PROFILE_KEYPAD_LEVEL2:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 2');\r
2063       PROFILE_KEYPAD_LEVEL3:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 3');\r
2064     end;\r
2065     case profile.WarningTone of\r
2066      PROFILE_WARNING_OFF:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2067      PROFILE_WARNING_ON :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('on');\r
2068     end;\r
2069     MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(inttostr(profile.CallerGroups));\r
2070     profilenum:=profilenum+1;\r
2071     case GSM_GetModelFeature(FN_PROFILES) of\r
2072       F_PROF61:if profilenum=8 then ProfileTabHide();\r
2073       F_PROF51:if profilenum=3 then ProfileTabHide();\r
2074       F_PROF33:if profilenum=7 then ProfileTabHide();\r
2075     end;\r
2076   end;\r
2077 end;\r
2078 \r
2079 procedure TMainForm.ProfileTabSheetShow(Sender: TObject);\r
2080 begin\r
2081   if ProfileThread<>nil then\r
2082   else begin\r
2083     if GSMPhoneConnected then\r
2084     begin\r
2085       MainForm.ListView7.Items.Clear;\r
2086       profilenum:=1;\r
2087       MainForm.Timer2.Enabled:=false;\r
2088       ProfileThread:=TProfileThread.Create(false);\r
2089     end;\r
2090   end;\r
2091 end;\r
2092 \r
2093 procedure TMainForm.ProfileTabSheetHide(Sender: TObject);\r
2094 begin\r
2095   ProfileTabHide();\r
2096 end;\r
2097 \r
2098 //sms\r
2099 procedure AddSMSInfo(myobject:TListView;mysms:GSM_SMSMessage);\r
2100 var number:integer;\r
2101 begin\r
2102   number:=myobject.Items.Count;\r
2103 \r
2104   myobject.Items.Add;\r
2105   myobject.Items.Item[number].Caption:=inttostr(number+1);\r
2106   myobject.Items.Item[number].Subitems.Add(mysms.MessageText);\r
2107   myobject.Items.Item[number].Subitems.Add(mysms.Sender);\r
2108   if mysms.SMSData=1 then\r
2109   begin\r
2110     myobject.Items.Item[number].Subitems.Add(DayOfweek2(mysms.Time.Day,mysms.Time.Month,mysms.Time.Year)+' '+inttostr2(mysms.Time.Day,2)+'-'+inttostr2(mysms.Time.Month,2)+'-'+inttostr(mysms.Time.Year));\r
2111     myobject.Items.Item[number].Subitems.Add(inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2));\r
2112   end;\r
2113 end;\r
2114 \r
2115 procedure DisplaySMSfolder();\r
2116 var\r
2117   i:integer;\r
2118 begin\r
2119   MainForm.ListView2.Items.Clear();\r
2120   i:=0;\r
2121   while i<>SMSstatus.Number do\r
2122   begin\r
2123     i:=i+1;\r
2124     if (SMSfolders.Folder[SMS[i].folder].Name=\r
2125         SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
2126     begin\r
2127       AddSMSInfo(MainForm.ListView2,SMS[i]);\r
2128     end;\r
2129   end;\r
2130 end;\r
2131 \r
2132 procedure SendSaveSMS(mysms:GSM_SMSMessage);\r
2133 var i:integer;\r
2134 begin\r
2135   //text\r
2136   SMSEditForm.Memo1.Text:=mysms.MessageText;\r
2137 \r
2138   //number\r
2139   SMSEditForm.Edit2.Text:=mysms.sender;\r
2140 \r
2141   //sms folder\r
2142   SMSEditForm.ComboBox1.Items.Clear;\r
2143   for i:=0 to MainForm.ComboBox3.items.count-1 do\r
2144   begin\r
2145     SMSEditForm.ComboBox1.Items.Add(MainForm.ComboBox3.Items.Strings[i]);\r
2146   end;\r
2147   SMSEditForm.ComboBox1.ItemIndex:=MainForm.ComboBox3.ItemIndex;\r
2148 \r
2149   //smsc\r
2150   SetSMSC(1);\r
2151   SMSEditForm.ComboBox2.Items.Clear;\r
2152   SMSEditForm.ComboBox2.Items.Add('custom');\r
2153   for i:=1 to smscnum-1 do\r
2154   begin\r
2155     if SMSC2[i].Name[1]<>chr(0) then\r
2156       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2157     else\r
2158       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2159   end;\r
2160   SMSEditForm.ComboBox2.ItemIndex:=0;\r
2161 \r
2162   if mysms.ReplyViaSameSMSC<>0 then\r
2163     SMSEditForm.CheckBox3.Checked:=true\r
2164   else\r
2165     SMSEditForm.CheckBox3.Checked:=false;\r
2166 \r
2167   if mysms.Class2=1 then\r
2168     SMSEditForm.CheckBox1.Checked:=true\r
2169   else\r
2170     SMSEditForm.CheckBox1.Checked:=false;\r
2171 \r
2172   if mysms.status=GSS_SENTREAD then\r
2173     SMSEditForm.CheckBox4.Checked:=true\r
2174   else\r
2175     SMSEditForm.CheckBox4.Checked:=false;\r
2176 \r
2177   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2178   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2179   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2180   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2181   SMSEditForm.PbkSMSTabSheet.TabVisible:=false;\r
2182   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
2183 \r
2184   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2185   begin\r
2186     SMSEditForm.edit3.Visible:=true;\r
2187     SMSEditForm.label14.Visible:=true;\r
2188   end else\r
2189   begin\r
2190     SMSEditForm.edit3.Visible:=false;\r
2191     SMSEditForm.label14.Visible:=false;\r
2192   end;\r
2193 \r
2194   SMSEditForm.ShowModal;\r
2195 end;\r
2196 \r
2197 procedure TMainForm.Edit4Click(Sender: TObject);\r
2198 begin\r
2199   setsmslocation:=SMS[smsnumindex].Location;\r
2200   SendSaveSMS(SMS[smsnumindex]);\r
2201 end;\r
2202 \r
2203 procedure TMainForm.New2Click(Sender: TObject);\r
2204 var i:integer;\r
2205 begin\r
2206   setsmslocation:=0;\r
2207 \r
2208   //sms text\r
2209   SMSEditForm.Memo1.Text:='';\r
2210 \r
2211   //number\r
2212   SMSEditForm.Edit2.Text:='';\r
2213 \r
2214   //folders\r
2215   SMSEditForm.ComboBox1.Items.Clear;\r
2216   for i:=0 to ComboBox3.items.count-1 do\r
2217   begin\r
2218     SMSEditForm.ComboBox1.Items.Add(ComboBox3.Items.Strings[i]);\r
2219   end;\r
2220   SMSEditForm.ComboBox1.ItemIndex:=ComboBox3.ItemIndex;\r
2221 \r
2222   //smsc\r
2223   SetSMSC(1);\r
2224   SMSEditForm.ComboBox2.Items.Clear;\r
2225   SMSEditForm.ComboBox2.Items.Add('custom');\r
2226   for i:=1 to smscnum-1 do\r
2227   begin\r
2228     if SMSC2[i].Name[1]<>chr(0) then\r
2229       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2230     else\r
2231       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2232   end;\r
2233   SMSEditForm.ComboBox2.ItemIndex:=1;\r
2234 \r
2235   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2236   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2237   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2238   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2239   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
2240   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
2241 \r
2242   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2243   begin\r
2244     SMSEditForm.edit3.Visible:=true;\r
2245     SMSEditForm.label14.Visible:=true;\r
2246   end else\r
2247   begin\r
2248     SMSEditForm.edit3.Visible:=false;\r
2249     SMSEditForm.label14.Visible:=false;\r
2250   end;\r
2251 \r
2252   SMSEditForm.ShowModal;\r
2253 end;\r
2254 \r
2255 procedure EndSMSThread;\r
2256 begin\r
2257   if (SMSThread<>nil) then\r
2258   begin\r
2259     SMSThread.Terminate();\r
2260     MainForm.Timer2.Enabled:=true;\r
2261     SMSThread:=nil;\r
2262   end;\r
2263 end;\r
2264 \r
2265 procedure TSMSThread.Execute;\r
2266 var\r
2267   error:integer;\r
2268 begin\r
2269   while not Terminated do\r
2270   begin\r
2271     if SMSnum<>SMSstatus.Number then\r
2272     begin\r
2273       if GSM_GetModelFeature(FN_SMS)=F_SMS71 then\r
2274         SMS[SMSnum+1].Location:=0\r
2275       else\r
2276         SMS[SMSnum+1].Location:=smsnum2;\r
2277       error:=GSM_GetSMSMessage(@SMS[SMSnum+1]);\r
2278       if error=0 then\r
2279       begin\r
2280         if SMS[SMSnum+1].Time.year<1900 then\r
2281         begin\r
2282           SMS[SMSnum+1].Time.year:=SMS[SMSnum+1].Time.year+2000;\r
2283         end;\r
2284         if (SMSfolders.Folder[SMS[SMSnum+1].folder].Name=\r
2285             SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
2286         begin\r
2287           AddSMSInfo(MainForm.ListView2,SMS[SMSnum+1]);\r
2288         end;\r
2289         SMSnum:=SMSnum+1;\r
2290       end;\r
2291       if error=GE_SMSTOOLONG then\r
2292       begin\r
2293         SMSstatus.Number:=SMSstatus.Number-1;\r
2294       end;\r
2295 \r
2296       smsnum2:=smsnum2+1;\r
2297     end else\r
2298     begin\r
2299       MainForm.ComboBox3.Enabled:=true;\r
2300       EndSMSThread;\r
2301     end;\r
2302   end;\r
2303 end;\r
2304 \r
2305 procedure TMainForm.SMSTabSheetShow(Sender: TObject);\r
2306 var\r
2307   i:integer;\r
2308 begin\r
2309   MainForm.ComboBox3.Enabled:=false;\r
2310   if GSMPhoneConnected then\r
2311   begin\r
2312     if smscinit=false then\r
2313     begin\r
2314       MainForm.ListView6.Items.Clear;\r
2315       smscnum:=1;\r
2316       while true do\r
2317       begin\r
2318         ReadSMSC;\r
2319         if smscinit then break;\r
2320       end;\r
2321     end;\r
2322 \r
2323     MainForm.Memo1.Lines.Clear;\r
2324     MainForm.Memo2.Lines.Clear;\r
2325     GSM_GetSMSFolders(@SMSfolders);\r
2326     MainForm.ComboBox3.Items.Clear();\r
2327     for i:=1 to SMSfolders.number do\r
2328     begin\r
2329       MainForm.ComboBox3.Items.Add(SMSfolders.folder[i].Name);\r
2330     end;\r
2331     MainForm.ComboBox3.ItemIndex:=0;\r
2332 \r
2333     SMSnum:=0;\r
2334     GSM_GetSMSStatus(@SMSstatus);\r
2335     smsnum2:=1;\r
2336     MainForm.ListView2.Items.Clear;\r
2337     MainForm.Timer2.Enabled:=false;\r
2338     SMSThread:=TSMSThread.Create(false);\r
2339   end;\r
2340 end;\r
2341 \r
2342 procedure TMainForm.ComboBox3Change(Sender: TObject);\r
2343 begin\r
2344   DisplaySMSfolder();\r
2345 end;\r
2346 \r
2347 procedure AddSMSDescription(mysms:GSM_SMSMessage;firstmemo:TMemo;secondmemo:TMemo);\r
2348 var\r
2349   ch:tcaption;\r
2350   z:integer;\r
2351 begin\r
2352   firstmemo.Lines.Clear;\r
2353   firstmemo.Lines.Add(pchar('Sender: '+mysms.Sender));\r
2354 \r
2355   if mysms.SMSData=1 then\r
2356   begin\r
2357     ch:=mysms.MessageCenter.Number;\r
2358     MainForm.Label14.Caption:=mysms.MessageCenter.Number;\r
2359     if (smscinit) and (GSMPhoneConnected) then\r
2360     begin\r
2361       for z:=1 to smscnum-1 do\r
2362       begin\r
2363         MainForm.Label16.Caption:=SMSC2[z].Number;\r
2364         if MainForm.Label14.Caption=MainForm.Label16.caption then\r
2365           ch:=SMSC2[z].Name;\r
2366         end;\r
2367       end;\r
2368       if mysms.ReplyViaSameSMSC<>0 then\r
2369          ch:=' (reply via the same SMSC) '+ch;\r
2370          firstmemo.Lines.Add('SMSC: '+ch);\r
2371 \r
2372         if mysms.type2=GST_DR then\r
2373         begin\r
2374           firstmemo.Lines.Add(pchar('Date & time: '+\r
2375             DayOfweek2(mysms.Time.Day,mysms.Time.Month,mysms.Time.Year)+' '+inttostr2(mysms.Time.Day,2)+'-'+inttostr2(mysms.Time.Month,2)+'-'+inttostr(mysms.Time.Year)+' '+\r
2376             inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2))+\r
2377             '   SMSC desponse date & time: '+\r
2378             DayOfweek2(mysms.SMSCTime.Day,mysms.SMSCTime.Month,mysms.SMSCTime.Year)+' '+inttostr2(mysms.SMSCTime.Day,2)+'-'+inttostr2(mysms.SMSCTime.Month,2)+'-'+inttostr(mysms.SMSCTime.Year)+' '+\r
2379             inttostr2(mysms.SMSCTime.Hour,2)+':'+inttostr2(mysms.SMSCTime.Minute,2)+':'+inttostr2(mysms.SMSCTime.Second,2));\r
2380         end else\r
2381         begin\r
2382           firstmemo.Lines.Add(pchar('Date & time: '+\r
2383             DayOfweek2(mysms.Time.Day,mysms.Time.Month,mysms.Time.Year)+' '+inttostr2(mysms.Time.Day,2)+'-'+inttostr2(mysms.Time.Month,2)+'-'+inttostr(mysms.Time.Year)+' '+\r
2384             inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2)));\r
2385         end;\r
2386       end;\r
2387 \r
2388   secondmemo.Lines.Clear;\r
2389   secondmemo.Lines.Add(pchar(''+mysms.MessageText));\r
2390 end;\r
2391 \r
2392 procedure TMainForm.ListView2SelectItem(Sender: TObject; Item: TListItem;\r
2393   Selected: Boolean);\r
2394 var\r
2395   i:integer;\r
2396   j:integer;\r
2397 begin\r
2398   j:=0;\r
2399   i:=0;\r
2400   while i<>SMSstatus.Number do\r
2401   begin\r
2402     i:=i+1;\r
2403     if (SMSfolders.Folder[SMS[i].folder].Name=\r
2404         SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
2405     begin\r
2406       if (j=MainForm.ListView2.ItemIndex) then\r
2407       begin\r
2408         smsnumindex:=i;\r
2409         AddSMSDescription(SMS[i],MainForm.Memo1,MainForm.Memo2);\r
2410       end;\r
2411       j:=j+1;\r
2412     end;\r
2413   end;\r
2414 end;\r
2415 \r
2416 procedure TMainForm.SMSTabSheetHide(Sender: TObject);\r
2417 begin\r
2418   EndSMSThread;\r
2419 end;\r
2420 \r
2421 procedure TMainForm.SMSPopupMenuPopup(Sender: TObject);\r
2422 begin\r
2423   New2.Enabled:=false;\r
2424   Edit4.Enabled:=false;\r
2425   CopyToPC1.Enabled:=false;\r
2426   Delete2.Enabled:=false;\r
2427   if GSMPhoneConnected then\r
2428   begin\r
2429     New2.Enabled:=true;\r
2430     if listview2.selected<>nil then\r
2431     begin\r
2432       Edit4.Enabled:=true;\r
2433       CopyToPC1.Enabled:=true;\r
2434       Delete2.Enabled:=true;\r
2435     end;\r
2436   end;\r
2437 end;\r
2438 \r
2439 procedure TMainForm.CalendarPopupMenuPopup(Sender: TObject);\r
2440 begin\r
2441   if GSMPhoneConnected then\r
2442   begin\r
2443     New1.Enabled:=true;\r
2444     if listview4.selected<>nil then\r
2445     begin\r
2446       Edit3.Enabled:=true;\r
2447       Delete1.Enabled:=true;\r
2448       SMS1.Enabled:=true;\r
2449       CopyToPC2.Enabled:=true;\r
2450     end else\r
2451     begin\r
2452       Edit3.Enabled:=false;\r
2453       Delete1.Enabled:=false;\r
2454       SMS1.Enabled:=false;\r
2455       CopyToPC2.Enabled:=false;\r
2456     end;\r
2457   end else\r
2458   begin\r
2459     New1.Enabled:=false;\r
2460     Delete1.Enabled:=false;\r
2461     Edit3.Enabled:=false;\r
2462     SMS1.Enabled:=false;\r
2463     CopyToPC2.Enabled:=false;\r
2464   end;\r
2465 end;\r
2466 \r
2467 procedure TMainForm.Edit1Change(Sender: TObject);\r
2468 var\r
2469   i:integer;\r
2470 begin\r
2471   for i:=1 to 20 do\r
2472     rington.name[i]:=chr(0);\r
2473   for i:=1 to strlen(pchar(edit1.text)) do\r
2474     rington.name[i]:=edit1.text[i];\r
2475 end;\r
2476 \r
2477 procedure TMainForm.Delete2Click(Sender: TObject);\r
2478 var\r
2479   mysms:GSM_SMSMessage;\r
2480 begin\r
2481   if MessageDlg('Do you want to delete this SMS ?',\r
2482       mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
2483   begin\r
2484     mysms.Location:=SMS[smsnumindex].Location;\r
2485     MainForm.Timer2.Enabled:=false;\r
2486     GSM_DeleteSMSMessage(@mysms);\r
2487     MainForm.Timer2.Enabled:=true;\r
2488     MainForm.SMSTabSheetShow(nil);\r
2489   end;\r
2490 end;\r
2491 \r
2492 procedure TMainForm.Edit5Click(Sender: TObject);\r
2493 begin\r
2494 //  if listview6.selected<>nil then\r
2495 //  begin\r
2496       smsceditform.edit1.Text:=smsc2[smscselectitem].name;\r
2497       smsceditform.edit2.Text:=smsc2[smscselectitem].number;\r
2498       smsceditform.edit3.Text:=smsc2[smscselectitem].DefaultRecipient;\r
2499       case smsc2[smscselectitem].Validity of\r
2500         GSMV_1_Hour   : SMSCEditForm.combobox1.itemindex:=0;\r
2501         GSMV_6_Hours  : SMSCEditForm.combobox1.itemindex:=1;\r
2502         GSMV_24_Hours : SMSCEditForm.combobox1.itemindex:=2;\r
2503         GSMV_72_Hours : SMSCEditForm.combobox1.itemindex:=3;\r
2504         GSMV_1_Week   : SMSCEditForm.combobox1.itemindex:=4;\r
2505       else\r
2506         SMSCEditForm.combobox1.itemindex:=5;\r
2507       end;\r
2508       case smsc2[smscselectitem].Format of\r
2509         GSMF_Text   : SMSCEditForm.combobox2.itemindex:=0;\r
2510         GSMF_Fax    : SMSCEditForm.combobox2.itemindex:=1;\r
2511         GSMF_Email  : SMSCEditForm.combobox2.itemindex:=2;\r
2512       else\r
2513         SMSCEditForm.combobox2.itemindex:=3;\r
2514       end;\r
2515   SMSCEditForm.ShowModal;\r
2516 //  end;\r
2517 end;\r
2518 \r
2519 procedure TMainForm.SMSCPopupMenuPopup(Sender: TObject);\r
2520 begin\r
2521   if GSMPhoneConnected then\r
2522   begin\r
2523     if listview6.selected<>nil then\r
2524       Edit5.Enabled:=true\r
2525     else\r
2526       Edit5.Enabled:=false;\r
2527   end else\r
2528   begin\r
2529     Edit5.Enabled:=false;\r
2530   end;\r
2531 \r
2532 end;\r
2533 \r
2534 procedure TMainForm.ListView6SelectItem(Sender: TObject; Item: TListItem;\r
2535   Selected: Boolean);\r
2536 begin\r
2537   if Selected then\r
2538   begin\r
2539     smscselectitem:=Item.Index+1;\r
2540   end;\r
2541 end;\r
2542 \r
2543 procedure TMainForm.ListView1SelectItem(Sender: TObject; Item: TListItem;\r
2544   Selected: Boolean);\r
2545 begin\r
2546  if Selected then\r
2547   begin\r
2548     pbknumberentry:=Item.Index+1;\r
2549   end;\r
2550 end;\r
2551 \r
2552 procedure TMainForm.Edit7Click(Sender: TObject);\r
2553 var\r
2554   current:integer;\r
2555   i:integer;\r
2556 begin\r
2557   if listview1.Selected<>nil then\r
2558   begin\r
2559     pbk.Location:=pbknumberentry;\r
2560     case ComboBox1.ItemIndex of\r
2561       1:begin pbk.MemoryType:=GMT_DC;pbk.Location:=pbk.Location-1;end;\r
2562       2:begin pbk.MemoryType:=GMT_MC;pbk.Location:=pbk.Location-1;end;\r
2563       3:begin pbk.MemoryType:=GMT_ON;pbk.Location:=pbk.Location-1;end;\r
2564       4:pbk.MemoryType:=GMT_ME;\r
2565       5:pbk.MemoryType:=GMT_SM;\r
2566       6:begin pbk.MemoryType:=GMT_RC;pbk.Location:=pbk.Location-1;end;\r
2567     end;\r
2568     GSM_GetMemoryLocation(@pbk);\r
2569     current:=0;\r
2570     pbkform.ListView1.Items.Clear;\r
2571     pbkform.ListView1.Items.Add;\r
2572     pbkform.ListView1.Items.Item[0].Caption:='Name';\r
2573     pbkform.ListView1.Items.Item[0].SubItems.Add(pbk.name);\r
2574     if (pbk.Number[1]<>chr(0)) then\r
2575     begin\r
2576       current:=current+1;\r
2577       pbkform.ListView1.Items.Add;\r
2578       pbkform.ListView1.Items.Item[current].Caption:='Number';\r
2579       pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.number);\r
2580     end;\r
2581     for i:=1 to pbk.SubEntriesCount do\r
2582     begin\r
2583       current:=current+1;\r
2584       pbkform.ListView1.Items.Add;\r
2585       case pbk.SubEntries[i].EntryType of\r
2586         GSM_Number:case pbk.SubEntries[i].NumberType of\r
2587                      GSM_General :pbkform.ListView1.Items.Item[current].Caption:='General number';\r
2588                      GSM_Mobile  :pbkform.ListView1.Items.Item[current].Caption:='Mobile';\r
2589                      GSM_Work    :pbkform.ListView1.Items.Item[current].Caption:='Work';\r
2590                      GSM_Fax     :pbkform.ListView1.Items.Item[current].Caption:='Fax';\r
2591                      GSM_Home    :pbkform.ListView1.Items.Item[current].Caption:='Home';\r
2592                    else\r
2593                      pbkform.ListView1.Items.Item[current].Caption:=inttostr(pbk.SubEntries[i].NumberType);\r
2594                    end;\r
2595         GSM_Note  :pbkform.ListView1.Items.Item[current].Caption:='Note';\r
2596         GSM_Postal:pbkform.ListView1.Items.Item[current].Caption:='Address';\r
2597         GSM_Email :pbkform.ListView1.Items.Item[current].Caption:='Email';\r
2598         GSM_Date  :begin\r
2599                      pbkform.ListView1.Items.Item[current].Caption:='Date';\r
2600                      pbkform.ListView1.Items.Item[current].SubItems.Add(DayOfweek2(pbk.SubEntries[i].Date.Day,pbk.SubEntries[i].Date.Month,pbk.SubEntries[i].Date.Year)+' '+inttostr2(pbk.SubEntries[i].Date.Day,2)+'-'+inttostr2(pbk.SubEntries[i].Date.Month,2)+'-'+inttostr(pbk.SubEntries[i].Date.Year)+' '+inttostr2(pbk.SubEntries[i].Date.Hour,2)+':'+inttostr2(pbk.SubEntries[i].Date.Minute,2)+':'+inttostr2(pbk.SubEntries[i].Date.Second,2));\r
2601                    end;\r
2602       end;\r
2603       if (pbk.SubEntries[i].EntryType<>GSM_Date) then\r
2604          pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.SubEntries[i].Number);\r
2605     end;\r
2606     if (pbk.Group>=0) and (pbk.Group<=4) then\r
2607     begin\r
2608       current:=current+1;\r
2609       pbkform.ListView1.Items.Add;\r
2610       pbkform.ListView1.Items.Item[current].Caption:='Caller group';\r
2611       pbkform.ListView1.Items.Item[current].SubItems.Add(caller[pbk.Group+1].text);\r
2612     end;\r
2613     pbkform.showmodal;\r
2614   end;\r
2615 end;\r
2616 \r
2617 procedure TMainForm.Button18Click(Sender: TObject);\r
2618 var\r
2619   i,j:integer;\r
2620   Name,Data:array[1..255] of char;\r
2621 begin\r
2622   if smscinit=false then\r
2623   begin\r
2624     MainForm.ListView6.Items.Clear;\r
2625     smscnum:=1;\r
2626     while true do\r
2627     begin\r
2628       ReadSMSC;\r
2629       if smscinit then break;\r
2630     end;\r
2631   end;\r
2632 \r
2633   //sms text\r
2634   SMSEditForm.Memo1.Text:='';\r
2635 \r
2636   //number\r
2637   SMSEditForm.Edit2.Text:='';\r
2638 \r
2639   //folders\r
2640   GSM_GetSMSFolders(@SMSfolders);\r
2641   SMSEditForm.ComboBox1.Items.Clear;\r
2642   for i:=1 to SMSFolders.number do\r
2643   begin\r
2644     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
2645   end;\r
2646   SMSEditForm.ComboBox1.ItemIndex:=0;\r
2647 \r
2648   //smsc\r
2649   SetSMSC(1);\r
2650   SMSEditForm.ComboBox2.Items.Clear;\r
2651   SMSEditForm.ComboBox2.Items.Add('custom');\r
2652   for i:=1 to smscnum-1 do\r
2653   begin\r
2654     if SMSC2[i].Name[1]<>chr(0) then\r
2655       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2656     else\r
2657       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2658   end;\r
2659   SMSEditForm.ComboBox2.ItemIndex:=1;\r
2660 \r
2661   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2662   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2663   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2664   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2665   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
2666   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.BitmapSMSTabSheet;\r
2667 \r
2668   SMSEditForm.Image1.Picture:=Image1.Picture;\r
2669 \r
2670   SMSEditForm.Memo2.Text:='';\r
2671   SMSEditForm.CheckBox5.Checked:=false;\r
2672   if bitma.type2<>GSM_PictureImage then\r
2673   begin\r
2674     SMSEditForm.Memo2.Visible:=false;\r
2675     SMSEditForm.Label10.Visible:=false;\r
2676     SMSEditForm.CheckBox5.Visible:=false;\r
2677     SMSEditForm.CheckBox6.Visible:=false;\r
2678   end else\r
2679   begin\r
2680     SMSEditForm.Memo2.Visible:=true;\r
2681     SMSEditForm.Label10.Visible:=true;\r
2682     SMSEditForm.CheckBox5.Visible:=true;\r
2683     SMSEditForm.CheckBox6.Visible:=true;\r
2684   end;\r
2685 \r
2686   SMSEditForm.Label9.Visible:=false;\r
2687   SMSEditForm.ComboBox7.Visible:=false;\r
2688   if bitma.type2=GSM_OperatorLogo then\r
2689   begin\r
2690     SMSEditForm.Label9.Visible:=true;\r
2691     SMSEditForm.ComboBox7.Visible:=true;\r
2692     //preparing network names\r
2693     i:=0;\r
2694     while true do\r
2695     begin\r
2696       GSM_GetNetworkData(i,@Name,@Data);\r
2697 \r
2698       // conversion problems\r
2699       Label14.Caption:=Name;\r
2700       if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
2701 \r
2702       // conversion problems\r
2703       Label14.Caption:=' - '+Label14.Caption;\r
2704       for j:=6 downto 1 do\r
2705       begin\r
2706         Label14.Caption:=Data[j]+Label14.Caption;\r
2707       end;\r
2708 \r
2709       SMSEditForm.ComboBox7.Items.Add(Pchar(Label14.Caption));\r
2710       i:=i+1;\r
2711     end;\r
2712     //looking for current network\r
2713     if GSMPhoneConnected then\r
2714     begin\r
2715       // conversion problems\r
2716       Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
2717       Label14.Caption:=' - '+Label14.Caption;\r
2718       for j:=6 downto 1 do\r
2719       begin\r
2720         Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
2721       end;\r
2722 \r
2723       i:=1;\r
2724       while true do\r
2725       begin\r
2726         if strcomp(pchar(SMSEditForm.ComboBox7.Items[i]),pchar(Label14.Caption))=0\r
2727           then break;\r
2728         i:=i+1;\r
2729       end;\r
2730       SMSEditForm.ComboBox7.ItemIndex:=i;\r
2731     end;\r
2732   end;\r
2733 \r
2734   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2735   begin\r
2736     SMSEditForm.edit3.Visible:=true;\r
2737     SMSEditForm.label14.Visible:=true;\r
2738   end else\r
2739   begin\r
2740     SMSEditForm.edit3.Visible:=false;\r
2741     SMSEditForm.label14.Visible:=false;\r
2742   end;\r
2743 \r
2744   SMSEditForm.ShowModal;\r
2745 end;\r
2746 \r
2747 procedure TMainForm.Button17Click(Sender: TObject);\r
2748 var\r
2749   i:integer;\r
2750 begin\r
2751   if smscinit=false then\r
2752   begin\r
2753     MainForm.ListView6.Items.Clear;\r
2754     smscnum:=1;\r
2755     while true do\r
2756     begin\r
2757       ReadSMSC;\r
2758       if smscinit then break;\r
2759     end;\r
2760   end;\r
2761 \r
2762   //sms text\r
2763   SMSEditForm.Memo1.Text:='';\r
2764 \r
2765   //number\r
2766   SMSEditForm.Edit2.Text:='';\r
2767 \r
2768   //folders\r
2769   GSM_GetSMSFolders(@SMSfolders);\r
2770   SMSEditForm.ComboBox1.Items.Clear;\r
2771   for i:=1 to SMSFolders.number do\r
2772   begin\r
2773     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
2774   end;\r
2775   SMSEditForm.ComboBox1.ItemIndex:=0;\r
2776 \r
2777   //smsc\r
2778   SetSMSC(1);\r
2779   SMSEditForm.ComboBox2.Items.Clear;\r
2780   SMSEditForm.ComboBox2.Items.Add('custom');\r
2781   for i:=1 to smscnum-1 do\r
2782   begin\r
2783     if SMSC2[i].Name[1]<>chr(0) then\r
2784       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2785     else\r
2786       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2787   end;\r
2788   SMSEditForm.ComboBox2.ItemIndex:=1;\r
2789 \r
2790   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2791   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2792   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2793   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2794   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
2795   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.RingtoneSMSTabSheet;\r
2796 \r
2797   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2798   begin\r
2799     SMSEditForm.edit3.Visible:=true;\r
2800     SMSEditForm.label14.Visible:=true;\r
2801   end else\r
2802   begin\r
2803     SMSEditForm.edit3.Visible:=false;\r
2804     SMSEditForm.label14.Visible:=false;\r
2805   end;\r
2806 \r
2807   SMSEditForm.ShowModal;\r
2808 end;\r
2809 \r
2810 procedure TMainForm.SMS1Click(Sender: TObject);\r
2811 var\r
2812   i:integer;\r
2813 begin\r
2814   if smscinit=false then\r
2815   begin\r
2816     MainForm.ListView6.Items.Clear;\r
2817     smscnum:=1;\r
2818     while true do\r
2819     begin\r
2820       ReadSMSC;\r
2821       if smscinit then break;\r
2822     end;\r
2823   end;\r
2824 \r
2825   //sms text\r
2826   SMSEditForm.Memo1.Text:='';\r
2827 \r
2828   //number\r
2829   SMSEditForm.Edit2.Text:='';\r
2830 \r
2831   //folders\r
2832   GSM_GetSMSFolders(@SMSfolders);\r
2833   SMSEditForm.ComboBox1.Items.Clear;\r
2834   for i:=1 to SMSFolders.number do\r
2835   begin\r
2836     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
2837   end;\r
2838   SMSEditForm.ComboBox1.ItemIndex:=0;\r
2839 \r
2840   //smsc\r
2841   SetSMSC(1);\r
2842   SMSEditForm.ComboBox2.Items.Clear;\r
2843   SMSEditForm.ComboBox2.Items.Add('custom');\r
2844   for i:=1 to smscnum-1 do\r
2845   begin\r
2846     if SMSC2[i].Name[1]<>chr(0) then\r
2847       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2848     else\r
2849       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2850   end;\r
2851   SMSEditForm.ComboBox2.ItemIndex:=1;\r
2852 \r
2853   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2854   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2855   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2856   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2857   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
2858   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.CalendarSMSTabSheet;\r
2859 \r
2860   calenda.Location:=calendarselect;\r
2861   MainForm.Timer2.Enabled:=false;\r
2862   GSM_GetCalendarNote(@calenda);\r
2863   MainForm.Timer2.Enabled:=true;\r
2864 \r
2865   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2866   begin\r
2867     SMSEditForm.edit3.Visible:=true;\r
2868     SMSEditForm.label14.Visible:=true;\r
2869   end else\r
2870   begin\r
2871     SMSEditForm.edit3.Visible:=false;\r
2872     SMSEditForm.label14.Visible:=false;\r
2873   end;\r
2874 \r
2875   SMSEditForm.ShowModal;\r
2876 end;\r
2877 \r
2878 procedure TMainForm.SMSSendSave1Click(Sender: TObject);\r
2879 var\r
2880   i:integer;\r
2881 begin\r
2882   if smscinit=false then\r
2883   begin\r
2884     MainForm.ListView6.Items.Clear;\r
2885     smscnum:=1;\r
2886     while true do\r
2887     begin\r
2888       ReadSMSC;\r
2889       if smscinit then break;\r
2890     end;\r
2891   end;\r
2892 \r
2893   //sms text\r
2894   SMSEditForm.Memo1.Text:='';\r
2895 \r
2896   //number\r
2897   SMSEditForm.Edit2.Text:='';\r
2898 \r
2899   //folders\r
2900   GSM_GetSMSFolders(@SMSfolders);\r
2901   SMSEditForm.ComboBox1.Items.Clear;\r
2902   for i:=1 to SMSFolders.number do\r
2903   begin\r
2904     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
2905   end;\r
2906   SMSEditForm.ComboBox1.ItemIndex:=0;\r
2907 \r
2908   //smsc\r
2909   SetSMSC(1);\r
2910   SMSEditForm.ComboBox2.Items.Clear;\r
2911   SMSEditForm.ComboBox2.Items.Add('custom');\r
2912   for i:=1 to smscnum-1 do\r
2913   begin\r
2914     if SMSC2[i].Name[1]<>chr(0) then\r
2915       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2916     else\r
2917       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2918   end;\r
2919   SMSEditForm.ComboBox2.ItemIndex:=1;\r
2920 \r
2921   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2922   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2923   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2924   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2925   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
2926   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.PBKSMSTabSheet;\r
2927 \r
2928   pbk.Location:=pbknumberentry-1;\r
2929   case ComboBox1.ItemIndex of\r
2930     1:pbk.MemoryType:=GMT_DC;\r
2931     2:pbk.MemoryType:=GMT_MC;\r
2932     3:pbk.MemoryType:=GMT_ON;\r
2933     4:pbk.MemoryType:=GMT_ME;\r
2934     5:pbk.MemoryType:=GMT_SM;\r
2935     6:pbk.MemoryType:=GMT_RC;\r
2936   end;\r
2937   MainForm.Timer2.Enabled:=false;\r
2938   GSM_GetMemoryLocation(@pbk);\r
2939   MainForm.Timer2.Enabled:=true;\r
2940 \r
2941   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2942   begin\r
2943     SMSEditForm.edit3.Visible:=true;\r
2944     SMSEditForm.label14.Visible:=true;\r
2945   end else\r
2946   begin\r
2947     SMSEditForm.edit3.Visible:=false;\r
2948     SMSEditForm.label14.Visible:=false;\r
2949   end;\r
2950 \r
2951   SMSEditForm.ShowModal;\r
2952 end;\r
2953 \r
2954 procedure TMainForm.Button13Click(Sender: TObject);\r
2955 var\r
2956   ring:GSM_BinRingtone;\r
2957 begin\r
2958   if OpenDialog1.Execute then\r
2959   begin\r
2960     if GSM_ReadBinRingtoneFile(PChar(OpenDialog1.FileName),@ring)=0 then\r
2961     begin\r
2962       Edit2.Text:=ring.Name;\r
2963       binring:=ring;\r
2964     end;\r
2965   end;\r
2966 \r
2967 end;\r
2968 \r
2969 procedure TMainForm.Button14Click(Sender: TObject);\r
2970 var\r
2971   i:integer;\r
2972 begin\r
2973   LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
2974   LogosRingForm.ComboBox3.Items.Clear();\r
2975   for i:=1 to 7 do\r
2976   begin\r
2977     LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
2978   end;\r
2979   LogosRingForm.ComboBox3.ItemIndex:=0;\r
2980   LogosRingForm.ShowModal;\r
2981   if LogosRingForm.ComboBox3.Visible then\r
2982   begin\r
2983     binring.location:=LogosRingForm.ComboBox3.ItemIndex+1;\r
2984     MainForm.Timer2.Enabled:=false;\r
2985     GSM_SetBinRingtone(@binring);\r
2986     MainForm.Timer2.Enabled:=true;\r
2987   end;\r
2988 end;\r
2989 \r
2990 procedure TMainForm.ConfigTabSheetHide(Sender: TObject);\r
2991 var\r
2992   MyIniFile: TIniFile;\r
2993 begin\r
2994   if MessageDlg('Do you want to save config ?',\r
2995     mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
2996   begin\r
2997     MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
2998     case MainForm.ComboBox4.ItemIndex of\r
2999       0:MyIniFile.WriteString('global', 'connection', 'mbus');\r
3000       1:MyIniFile.WriteString('global', 'connection', 'fbus');\r
3001       2:MyIniFile.WriteString('global', 'connection', 'dlr3');\r
3002       3:MyIniFile.WriteString('global', 'connection', 'infrared');\r
3003     end;\r
3004     MyIniFile.WriteString('global', 'model', MainForm.ComboBox6.Text);\r
3005     MyIniFile.WriteString('global', 'port', MainForm.ComboBox5.Text);\r
3006     if MainForm.CheckBox2.Checked then\r
3007       MyIniFile.WriteString('global', 'synchronizetime', 'yes')\r
3008     else\r
3009       MyIniFile.WriteString('global', 'synchronizetime', 'no');\r
3010     MyIniFile.Free;\r
3011   end;\r
3012 end;\r
3013 \r
3014 procedure TMainForm.ConfigTabSheetShow(Sender: TObject);\r
3015 var\r
3016   MyIniFile: TIniFile;\r
3017   x:string;\r
3018   i:integer;\r
3019 begin\r
3020   MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
3021 \r
3022   x:=MyInifile.ReadString('global', 'connection', 'fbus');\r
3023   MainForm.ComboBox4.ItemIndex:=0;\r
3024   if x='fbus' then MainForm.ComboBox4.ItemIndex:=1;\r
3025   if x='dlr3' then MainForm.ComboBox4.ItemIndex:=2;\r
3026   if x='infrared' then MainForm.ComboBox4.ItemIndex:=3;\r
3027 \r
3028   x:=MyInifile.ReadString('global', 'port', 'com2:');\r
3029   MainForm.ComboBox5.ItemIndex:=0;\r
3030   for i:=1 to MainForm.ComboBox5.Items.Count do\r
3031   begin\r
3032     if MainForm.ComboBox5.Items.Strings[i-1]=x then\r
3033       MainForm.ComboBox5.ItemIndex:=i-1;\r
3034   end;\r
3035 \r
3036   x:=MyInifile.ReadString('global', 'model', 'auto');\r
3037   MainForm.ComboBox6.ItemIndex:=0;\r
3038   for i:=1 to MainForm.ComboBox6.Items.Count do\r
3039   begin\r
3040     if MainForm.ComboBox6.Items.Strings[i-1]=x then\r
3041       MainForm.ComboBox6.ItemIndex:=i-1;\r
3042   end;\r
3043 \r
3044   x:=MyInifile.ReadString('global', 'synchronizetime', 'no');\r
3045   if x='yes' then\r
3046     MainForm.CheckBox2.Checked:=True\r
3047   else\r
3048     MainForm.CheckBox2.Checked:=False;\r
3049   MyIniFile.Free;\r
3050 end;\r
3051 \r
3052 procedure TMainForm.Timer2Timer(Sender: TObject);\r
3053 begin\r
3054   if SparkyThread.Suspended then SparkyThread.Resume;\r
3055   Timer2.Interval:=4000;\r
3056 end;\r
3057 \r
3058 procedure TMainForm.AboutTabSheetShow(Sender: TObject);\r
3059 var\r
3060   xxx:array[1..256] of char;\r
3061 begin\r
3062   GSM_GetDLLVersion(@xxx);\r
3063   Label20.Caption:=xxx;\r
3064 end;\r
3065 \r
3066 procedure SaveSMSOffline;\r
3067 var F:file of GSM_SMSMessage;\r
3068     i:integer;\r
3069 begin\r
3070   AssignFile(F, 'gnokiisms');\r
3071   Rewrite(F);\r
3072   for i:=1 to SMSOfflineNumber do\r
3073   begin\r
3074     Write(f,SMSOffline[i]);\r
3075   end;\r
3076   CloseFile(F);\r
3077 end;\r
3078 \r
3079 procedure ReadSMSOffline;\r
3080 var F:file of GSM_SMSMessage;\r
3081 begin\r
3082   MainForm.ListView10.items.Clear;\r
3083   AssignFile(F, 'gnokiisms');\r
3084   Reset(F);\r
3085   if (ioresult=0) then\r
3086   begin\r
3087     smsofflinenumber:=0;\r
3088     while not eof(f) do\r
3089     begin\r
3090       smsofflinenumber:=smsofflinenumber+1;\r
3091       read(f,smsoffline[smsofflinenumber]);\r
3092       AddSMSInfo(MainForm.ListView10,smsoffline[smsofflinenumber]);\r
3093     end;\r
3094     CloseFile(F);\r
3095   end;\r
3096 end;\r
3097 \r
3098 procedure TMainForm.PCSMSTabSheetShow(Sender: TObject);\r
3099 begin\r
3100   ReadSMSOffline;\r
3101 end;\r
3102 \r
3103 procedure TMainForm.CopytoPC1Click(Sender: TObject);\r
3104 begin\r
3105   SMSofflinenumber:=smsofflinenumber+1;\r
3106   SMSoffline[SMSofflinenumber]:=SMS[smsnumindex];\r
3107   SaveSMSOffline;\r
3108 end;\r
3109 \r
3110 procedure TMainForm.ListView10SelectItem(Sender: TObject; Item: TListItem;\r
3111   Selected: Boolean);\r
3112 begin\r
3113   AddSMSDescription(SMSOffline[Item.Index+1],MainForm.Memo4,MainForm.Memo5);\r
3114 end;\r
3115 \r
3116 procedure TMainForm.PCSMSPopupMenuPopup(Sender: TObject);\r
3117 begin\r
3118   SendSave1.Enabled:=False;\r
3119   if GSMPhoneConnected then SendSave1.Enabled:=True;\r
3120 \r
3121   Delete3.Enabled:=false;\r
3122   if listview10.selected<>nil then Delete3.Enabled:=True;\r
3123 end;\r
3124 \r
3125 procedure TMainForm.Delete3Click(Sender: TObject);\r
3126 var\r
3127   i:integer;\r
3128 begin\r
3129   if Application.MessageBox('Do you want to delete this SMS ?','Question',MB_YESNO)=IDYES then\r
3130   begin\r
3131     for i:=MainForm.ListView10.ItemIndex to smsofflinenumber-1 do\r
3132     begin\r
3133       SMSOffline[i]:=SMSOffline[i+1];\r
3134     end;\r
3135     Smsofflinenumber:=smsofflinenumber-1;\r
3136     SaveSMSOffline;\r
3137     ReadSMSOffline;\r
3138   end;\r
3139 end;\r
3140 \r
3141 procedure TMainForm.SendSave1Click(Sender: TObject);\r
3142 var i:integer;\r
3143 begin\r
3144   GSM_GetSMSFolders(@SMSfolders);\r
3145   MainForm.ComboBox3.Items.Clear();\r
3146   for i:=1 to SMSfolders.number do\r
3147   begin\r
3148     MainForm.ComboBox3.Items.Add(SMSfolders.folder[i].Name);\r
3149   end;\r
3150   MainForm.ComboBox3.ItemIndex:=0;\r
3151   setsmslocation:=0;\r
3152   SendSaveSMS(SMSOffline[MainForm.ListView10.ItemIndex+1]);\r
3153 end;\r
3154 \r
3155 \r
3156 procedure EndWAPBookmarkThread;\r
3157 begin\r
3158   if (WAPBookmarkThread<>nil) then\r
3159   begin\r
3160     WAPBookmarkThread.Terminate();\r
3161     MainForm.Timer2.Enabled:=true;\r
3162     WAPBookmarkThread:=nil;\r
3163   end;\r
3164 end;\r
3165 \r
3166 procedure TWAPBookmarkThread.Execute;\r
3167 var\r
3168   bookmark:GSM_WAPBookmark;\r
3169   i:integer;\r
3170 begin\r
3171   while not Terminated do\r
3172   begin\r
3173     bookmark.location:=bookmarknum;\r
3174     i:=GSM_GetWAPBookmark(@bookmark);\r
3175     MainForm.ListView9.Items.Add;\r
3176     MainForm.ListView9.Items.Item[bookmarknum-1].Caption:=inttostr(bookmarknum);\r
3177     if (i=0) then\r
3178     begin\r
3179       MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add(bookmark.title);\r
3180       MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add(bookmark.adress);\r
3181     end;\r
3182     bookmarknum:=bookmarknum+1;\r
3183     if bookmarknum=15 then EndWAPBookmarkThread;\r
3184   end;\r
3185 end;\r
3186 \r
3187 procedure TMainForm.WapBookTabSheetHide(Sender: TObject);\r
3188 begin\r
3189   EndWAPBookmarkThread;\r
3190 end;\r
3191 \r
3192 procedure TMainForm.WapBookTabSheetShow(Sender: TObject);\r
3193 begin\r
3194   if GSMPhoneConnected then\r
3195   begin\r
3196     if GSM_GetModelFeature(FN_WAP)<>0 then\r
3197     begin\r
3198       GroupBox17.Ctl3D:=true;\r
3199       ListView9.Ctl3D:=true;\r
3200       ListView9.Enabled:=true;\r
3201       bookmarknum:=1;\r
3202       MainForm.ListView9.Items.Clear;\r
3203       MainForm.Timer2.Enabled:=false;\r
3204       WAPBookmarkThread:=TWAPBookmarkThread.Create(false);\r
3205     end else\r
3206     begin\r
3207       GroupBox17.Ctl3D:=false;\r
3208       ListView9.Ctl3D:=false;\r
3209       ListView9.Enabled:=false;\r
3210     end;\r
3211   end;\r
3212 end;\r
3213 \r
3214 procedure TMainForm.ComboBox7Change(Sender: TObject);\r
3215 var\r
3216   settings:GSM_WAPSettings;\r
3217 begin\r
3218   if combobox7.ItemIndex>0 then\r
3219   begin\r
3220     settings.location:=combobox7.ItemIndex;\r
3221     MainForm.Timer2.Enabled:=false;\r
3222     GSM_GetWAPSettings(@settings);\r
3223     MainForm.Timer2.Enabled:=true;\r
3224 \r
3225     if (settings.title[1]<>chr(0)) then\r
3226       Edit6.Text:=settings.title\r
3227     else\r
3228       edit6.Text:='set '+inttostr(combobox7.ItemIndex);\r
3229 \r
3230     edit8.Text:=settings.homepage;\r
3231 \r
3232     combobox10.itemindex:=1;\r
3233     if settings.iscontinuous<>0 then combobox10.Itemindex:=0;\r
3234 \r
3235     combobox9.itemindex:=1;\r
3236     if settings.issecurity<>0 then combobox9.Itemindex:=0;\r
3237 \r
3238     if (settings.bearer>=0) and (settings.bearer<3) then\r
3239     begin\r
3240       combobox8.ItemIndex:=settings.bearer;\r
3241 \r
3242       Label27.enabled:=false;\r
3243       Label28.enabled:=false;\r
3244       Label29.enabled:=false;\r
3245       label30.enabled:=false;\r
3246       label31.enabled:=false;\r
3247       label32.enabled:=false;\r
3248       label33.enabled:=false;\r
3249       label34.enabled:=false;\r
3250       label35.enabled:=false;\r
3251       label36.enabled:=false;\r
3252       label37.enabled:=false;\r
3253       edit9.enabled:=false;\r
3254       edit10.enabled:=false;\r
3255       edit11.enabled:=false;\r
3256       edit12.enabled:=false;\r
3257       edit13.enabled:=false;\r
3258       edit14.enabled:=false;\r
3259       edit15.enabled:=false;\r
3260       combobox11.enabled:=false;\r
3261       combobox12.enabled:=false;\r
3262       combobox13.enabled:=false;\r
3263       combobox14.enabled:=false;\r
3264 \r
3265       case settings.bearer of\r
3266         WAPSETTINGS_BEARER_SMS:\r
3267           begin\r
3268             label27.enabled:=true;\r
3269             edit9.text:=settings.server;\r
3270             edit9.enabled:=true;\r
3271 \r
3272             label28.enabled:=true;\r
3273             edit10.text:=settings.service;\r
3274             edit10.enabled:=true;\r
3275           end;\r
3276         WAPSETTINGS_BEARER_DATA:\r
3277           begin\r
3278             label29.enabled:=true;\r
3279             edit11.text:=settings.dialup;\r
3280             edit11.enabled:=true;\r
3281 \r
3282             label34.enabled:=true;\r
3283             edit13.text:=settings.user;\r
3284             edit13.enabled:=true;\r
3285 \r
3286             label35.enabled:=true;\r
3287             edit14.text:=settings.password;\r
3288             edit14.enabled:=true;\r
3289 \r
3290             label30.enabled:=true;\r
3291             edit12.text:=settings.ipaddress;\r
3292             edit12.enabled:=true;\r
3293 \r
3294             label31.enabled:=true;\r
3295             combobox11.enabled:=true;\r
3296             combobox11.ItemIndex:=0;\r
3297             if settings.isnormalauthentication=0 then\r
3298               combobox11.ItemIndex:=1;\r
3299 \r
3300             label32.enabled:=true;\r
3301             combobox12.enabled:=true;\r
3302             combobox12.ItemIndex:=0;\r
3303             if settings.isISDNcall=0 then\r
3304               combobox12.ItemIndex:=1;\r
3305 \r
3306             label33.enabled:=true;\r
3307             combobox13.enabled:=true;\r
3308             combobox13.ItemIndex:=1;\r
3309             if settings.isspeed14400=0 then\r
3310               combobox13.ItemIndex:=0;\r
3311           end;\r
3312         WAPSETTINGS_BEARER_USSD:\r
3313           begin\r
3314             label36.enabled:=true;\r
3315             edit15.text:=settings.code;\r
3316             edit15.enabled:=true;\r
3317 \r
3318             label37.enabled:=true;\r
3319             combobox14.Enabled:=true;\r
3320             combobox14.ItemIndex:=1;\r
3321             if settings.isIP=0 then\r
3322             begin\r
3323               combobox14.ItemIndex:=1;\r
3324 \r
3325               label28.enabled:=true;\r
3326               edit10.text:=settings.service;\r
3327               edit10.enabled:=true;\r
3328             end else\r
3329             begin\r
3330               label30.enabled:=true;\r
3331               edit12.text:=settings.ipaddress;\r
3332               edit12.enabled:=true;\r
3333             end;\r
3334           end;\r
3335       end;\r
3336     end;\r
3337   end;\r
3338 end;\r
3339 \r
3340 procedure TMainForm.Button19Click(Sender: TObject);\r
3341 var\r
3342   Divert:GSM_CallDivert;\r
3343 begin\r
3344   MainForm.Timer2.Enabled:=false;\r
3345 \r
3346   divert.DType:=GSM_CDV_Busy;\r
3347   divert.ctype:=GSM_CDV_VoiceCalls;\r
3348   divert.Operation:=GSM_CDV_Query;\r
3349   if gsm_calldivertoperation(@divert)=0 then\r
3350   begin\r
3351     if divert.enabled=0 then\r
3352     begin\r
3353       Label38.enabled:=false;\r
3354       edit16.enabled:=false;\r
3355       edit16.Text:='Not active';\r
3356     end else\r
3357     begin\r
3358       Label38.enabled:=true;\r
3359       edit16.enabled:=true;\r
3360       edit16.Text:=divert.Number;\r
3361     end;\r
3362   end;\r
3363 \r
3364   divert.DType:=GSM_CDV_NoAnswer;\r
3365   divert.ctype:=GSM_CDV_VoiceCalls;\r
3366   divert.Operation:=GSM_CDV_Query;\r
3367   if gsm_calldivertoperation(@divert)=0 then\r
3368   begin\r
3369     if divert.enabled=0 then\r
3370     begin\r
3371       Label39.enabled:=false;\r
3372       edit17.enabled:=false;\r
3373       edit17.Text:='Not active';\r
3374       label40.Enabled:=false;\r
3375       combobox15.Enabled:=false;\r
3376     end else\r
3377     begin\r
3378       Label39.enabled:=true;\r
3379       edit17.enabled:=true;\r
3380       edit17.Text:=divert.Number;\r
3381       label40.Enabled:=true;\r
3382       combobox15.Enabled:=true;\r
3383       case divert.timeout of\r
3384          5:combobox15.ItemIndex:=0;\r
3385         10:combobox15.ItemIndex:=1;\r
3386         15:combobox15.ItemIndex:=2;\r
3387         20:combobox15.ItemIndex:=3;\r
3388         25:combobox15.ItemIndex:=4;\r
3389         30:combobox15.ItemIndex:=5;\r
3390       end;\r
3391     end;\r
3392   end;\r
3393 \r
3394   divert.DType:=GSM_CDV_OutOfreach;\r
3395   divert.ctype:=GSM_CDV_VoiceCalls;\r
3396   divert.Operation:=GSM_CDV_Query;\r
3397   if gsm_calldivertoperation(@divert)=0 then\r
3398   begin\r
3399     if divert.enabled=0 then\r
3400     begin\r
3401       Label41.enabled:=false;\r
3402       edit18.enabled:=false;\r
3403       edit18.Text:='Not active';\r
3404     end else\r
3405     begin\r
3406       Label41.enabled:=true;\r
3407       edit18.enabled:=true;\r
3408       edit18.Text:=divert.Number;\r
3409     end;\r
3410   end;\r
3411 \r
3412   MainForm.Timer2.Enabled:=true;\r
3413 end;\r
3414 \r
3415 procedure TMainForm.Button20Click(Sender: TObject);\r
3416 var\r
3417   Divert:GSM_CallDivert;\r
3418 begin\r
3419   MainForm.Timer2.Enabled:=false;\r
3420 \r
3421   divert.DType:=GSM_CDV_AllTypes;\r
3422   divert.ctype:=GSM_CDV_AllCalls;\r
3423   divert.Operation:=GSM_CDV_Erasure;\r
3424   gsm_calldivertoperation(@divert);\r
3425 \r
3426   MainForm.Timer2.Enabled:=true;\r
3427 \r
3428 end;\r
3429 \r
3430 procedure ReadCalendarOffline;\r
3431 var F:file of GSM_calendarnote;\r
3432 begin\r
3433   MainForm.ListView11.items.Clear;\r
3434   AssignFile(F, 'gnokiicalendar');\r
3435   Reset(F);\r
3436   if (ioresult=0) then\r
3437   begin\r
3438     calendarofflinenumber:=0;\r
3439     while not eof(f) do\r
3440     begin\r
3441       calendarofflinenumber:=calendarofflinenumber+1;\r
3442       read(f,calendaroffline[calendarofflinenumber]);\r
3443       AddCalendarNote(calendaroffline[calendarofflinenumber],mainform.ListView11);\r
3444     end;\r
3445     CloseFile(F);\r
3446   end;\r
3447 end;\r
3448 \r
3449 procedure TMainForm.PCOfflineTabSheetShow(Sender: TObject);\r
3450 begin\r
3451   ReadSMSOffline;\r
3452   Label43.Caption:=inttostr(smsofflinenumber);\r
3453   ReadCalendarOffline;\r
3454   Label45.Caption:=inttostr(calendarofflinenumber);\r
3455 end;\r
3456 \r
3457 procedure SaveCalendarOffline;\r
3458 var F:file of GSM_CalendarNote;\r
3459     i:integer;\r
3460 begin\r
3461   AssignFile(F, 'gnokiicalendar');\r
3462   Rewrite(F);\r
3463   for i:=1 to CalendarOfflineNumber do\r
3464   begin\r
3465     Write(f,CalendarOffline[i]);\r
3466   end;\r
3467   CloseFile(F);\r
3468 end;\r
3469 \r
3470 procedure TMainForm.PCCalendarTabSheetShow(Sender: TObject);\r
3471 begin\r
3472   ReadCalendarOffline;\r
3473 end;\r
3474 \r
3475 procedure TMainForm.CopytoPC2Click(Sender: TObject);\r
3476 begin\r
3477   setcalendarnote.Location:=calendarselect;\r
3478   mainform.Timer2.Enabled:=false;\r
3479   GSM_GetCalendarNote(@setcalendarnote);\r
3480   mainform.Timer2.Enabled:=true;\r
3481   Calendarofflinenumber:=calendarofflinenumber+1;\r
3482   Calendaroffline[Calendarofflinenumber]:=setcalendarnote;\r
3483   SaveCalendarOffline;\r
3484 end;\r
3485 \r
3486 procedure TMainForm.Delete5Click(Sender: TObject);\r
3487 var\r
3488   i:integer;\r
3489 begin\r
3490   if Application.MessageBox('Do you want to delete this note ?','Question',MB_YESNO)=IDYES then\r
3491   begin\r
3492     for i:=MainForm.ListView11.ItemIndex to calendarofflinenumber-1 do\r
3493     begin\r
3494       CalendarOffline[i]:=CalendarOffline[i+1];\r
3495     end;\r
3496     Calendarofflinenumber:=calendarofflinenumber-1;\r
3497     SaveCalendarOffline;\r
3498     ReadCalendarOffline;\r
3499   end;\r
3500 end;\r
3501 \r
3502 procedure TMainForm.Copytocalendar1Click(Sender: TObject);\r
3503 begin\r
3504   if not readcalendar then\r
3505   begin\r
3506     application.MessageBox('Please read first calendar notes from phone','info',mb_ok);\r
3507   end else begin\r
3508     setcalendarnote:=calendaroffline[mainform.listview11.itemindex+1];\r
3509     setcalendarnote.Location:=MainForm.ListView4.Items.Count+1;\r
3510 \r
3511     EditCalendarNote;\r
3512   end;\r
3513 end;\r
3514 \r
3515 procedure TMainForm.PCCalendarPopupMenuPopup(Sender: TObject);\r
3516 begin\r
3517   CopyTocalendar1.Enabled:=False;\r
3518   if (GSMPhoneConnected) and (GSM_GetModelFeature(FN_Calendar)<>0) then copytocalendar1.Enabled:=True;\r
3519 \r
3520   Delete5.Enabled:=false;\r
3521   if listview11.selected<>nil then Delete5.Enabled:=True;\r
3522 end;\r
3523 \r
3524 end.\r