This commit was manufactured by cvs2svn to create tag 'bp_uc'.
[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     N6: TMenuItem;\r
226     Savebackuptofile1: TMenuItem;\r
227     Restorebackupfromfile1: TMenuItem;\r
228     N7: TMenuItem;\r
229     Savephonebooktofileanotherapplication1: TMenuItem;\r
230     PCPBKTabSheet: TTabSheet;\r
231     GroupBox25: TGroupBox;\r
232     ListView12: TListView;\r
233     Edit19: TMenuItem;\r
234     N10: TMenuItem;\r
235     Delete4: TMenuItem;\r
236     Button22: TButton;\r
237     WAPBookPopupMenu: TPopupMenu;\r
238     New20: TMenuItem;\r
239     SMSSendSave2: TMenuItem;\r
240     N8: TMenuItem;\r
241     Edit20: TMenuItem;\r
242     Button23: TButton;\r
243     CopyphonebooktoPC1: TMenuItem;\r
244     GroupBox26: TGroupBox;\r
245     CheckBox3: TCheckBox;\r
246     TrackBar1: TTrackBar;\r
247     Label46: TLabel;\r
248     CheckBox4: TCheckBox;\r
249     CheckBox5: TCheckBox;\r
250     procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
251       Shift: TShiftState; X, Y: Integer);\r
252     procedure FormCreate(Sender: TObject);\r
253     procedure Timer1Timer(Sender: TObject);\r
254     procedure NetmonitorTabSheetShow(Sender: TObject);\r
255     procedure NetmonitorTabSheetHide(Sender: TObject);\r
256     procedure SpinEdit1Change(Sender: TObject);\r
257     procedure ComboBox1Change(Sender: TObject);\r
258     procedure PhonebookTabSheetHide(Sender: TObject);\r
259     procedure Quit1Click(Sender: TObject);\r
260     procedure FormResize(Sender: TObject);\r
261     procedure About1Click(Sender: TObject);\r
262     procedure LogosImageMouseMove(Sender: TObject; Shift: TShiftState; X,\r
263       Y: Integer);\r
264     procedure Button1Click(Sender: TObject);\r
265     procedure Button4Click(Sender: TObject);\r
266     procedure Button3Click(Sender: TObject);\r
267     procedure PhoneTabSheetShow(Sender: TObject);\r
268     procedure Button2Click(Sender: TObject);\r
269     procedure LogosTabSheetShow(Sender: TObject);\r
270     procedure ComboBox2Select(Sender: TObject);\r
271     procedure Button7Click(Sender: TObject);\r
272     procedure LogosImageMouseDown(Sender: TObject; Button: TMouseButton;\r
273       Shift: TShiftState; X, Y: Integer);\r
274     procedure Button6Click(Sender: TObject);\r
275     procedure Button5Click(Sender: TObject);\r
276     procedure Button8Click(Sender: TObject);\r
277     procedure SpeedTabSheetShow(Sender: TObject);\r
278     procedure Button9Click(Sender: TObject);\r
279     procedure SpeedTabSheetHide(Sender: TObject);\r
280     procedure Button11Click(Sender: TObject);\r
281     procedure Button12Click(Sender: TObject);\r
282     procedure CalendarTabSheetShow(Sender: TObject);\r
283     procedure CallerTabSheetShow(Sender: TObject);\r
284     procedure SMSCTabSheetShow(Sender: TObject);\r
285     procedure Button10Click(Sender: TObject);\r
286     procedure ProfileTabSheetShow(Sender: TObject);\r
287     procedure SMSCTabSheetHide(Sender: TObject);\r
288     procedure CalendarTabSheetHide(Sender: TObject);\r
289     procedure CallerTabSheetHide(Sender: TObject);\r
290     procedure ProfileTabSheetHide(Sender: TObject);\r
291     procedure PhonebookTabSheetShow(Sender: TObject);\r
292     procedure SMSTabSheetShow(Sender: TObject);\r
293     procedure ComboBox3Change(Sender: TObject);\r
294     procedure ListView2SelectItem(Sender: TObject; Item: TListItem;\r
295       Selected: Boolean);\r
296     procedure New1Click(Sender: TObject);\r
297     procedure Edit3Click(Sender: TObject);\r
298     procedure ListView4SelectItem(Sender: TObject; Item: TListItem;\r
299       Selected: Boolean);\r
300     procedure Delete1Click(Sender: TObject);\r
301     procedure Button16Click(Sender: TObject);\r
302     procedure Edit4Click(Sender: TObject);\r
303     procedure New2Click(Sender: TObject);\r
304     procedure Configuration1Click(Sender: TObject);\r
305     procedure TreeView1KeyUp(Sender: TObject; var Key: Word;\r
306       Shift: TShiftState);\r
307     procedure SMSTabSheetHide(Sender: TObject);\r
308     procedure SMSPopupMenuPopup(Sender: TObject);\r
309     procedure CalendarPopupMenuPopup(Sender: TObject);\r
310     procedure Edit1Change(Sender: TObject);\r
311     procedure Delete2Click(Sender: TObject);\r
312     procedure Edit5Click(Sender: TObject);\r
313     procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;\r
314       Shift: TShiftState; X, Y: Integer);\r
315     procedure SMSCPopupMenuPopup(Sender: TObject);\r
316     procedure ListView6SelectItem(Sender: TObject; Item: TListItem;\r
317       Selected: Boolean);\r
318     procedure ListView1SelectItem(Sender: TObject; Item: TListItem;\r
319       Selected: Boolean);\r
320     procedure Edit7Click(Sender: TObject);\r
321     procedure Button18Click(Sender: TObject);\r
322     procedure Button17Click(Sender: TObject);\r
323     procedure SMS1Click(Sender: TObject);\r
324     procedure SMSSendSave1Click(Sender: TObject);\r
325     procedure Button13Click(Sender: TObject);\r
326     procedure Button14Click(Sender: TObject);\r
327     procedure ConfigTabSheetHide(Sender: TObject);\r
328     procedure ConfigTabSheetShow(Sender: TObject);\r
329     procedure Timer2Timer(Sender: TObject);\r
330     procedure AboutTabSheetShow(Sender: TObject);\r
331     procedure PCSMSTabSheetShow(Sender: TObject);\r
332     procedure CopytoPC1Click(Sender: TObject);\r
333     procedure ListView10SelectItem(Sender: TObject; Item: TListItem;\r
334       Selected: Boolean);\r
335     procedure PCSMSPopupMenuPopup(Sender: TObject);\r
336     procedure Delete3Click(Sender: TObject);\r
337     procedure SendSave1Click(Sender: TObject);\r
338     procedure WapBookTabSheetHide(Sender: TObject);\r
339     procedure WapBookTabSheetShow(Sender: TObject);\r
340     procedure ComboBox7Change(Sender: TObject);\r
341     procedure Button19Click(Sender: TObject);\r
342     procedure Button20Click(Sender: TObject);\r
343     procedure PCOfflineTabSheetShow(Sender: TObject);\r
344     procedure PCCalendarTabSheetShow(Sender: TObject);\r
345     procedure CopytoPC2Click(Sender: TObject);\r
346     procedure Delete5Click(Sender: TObject);\r
347     procedure Copytocalendar1Click(Sender: TObject);\r
348     procedure PCCalendarPopupMenuPopup(Sender: TObject);\r
349     procedure Savebackuptofile1Click(Sender: TObject);\r
350     procedure Restorebackupfromfile1Click(Sender: TObject);\r
351     procedure PBKPopupMenuPopup(Sender: TObject);\r
352     procedure Savephonebooktofileanotherapplication1Click(Sender: TObject);\r
353     procedure ListView4DblClick(Sender: TObject);\r
354     procedure Edit19Click(Sender: TObject);\r
355     procedure Delete4Click(Sender: TObject);\r
356     procedure Button22Click(Sender: TObject);\r
357     procedure New20Click(Sender: TObject);\r
358     procedure ListView9SelectItem(Sender: TObject; Item: TListItem;\r
359       Selected: Boolean);\r
360     procedure Edit20Click(Sender: TObject);\r
361     procedure WAPBookPopupMenuPopup(Sender: TObject);\r
362     procedure SMSSendSave2Click(Sender: TObject);\r
363     procedure Button23Click(Sender: TObject);\r
364     procedure CopyphonebooktoPC1Click(Sender: TObject);\r
365     procedure PCPBKTabSheetShow(Sender: TObject);\r
366     procedure FormShow(Sender: TObject);\r
367     procedure FormClose(Sender: TObject; var Action: TCloseAction);\r
368   private\r
369     { Private declarations }\r
370   public\r
371     { Public declarations }\r
372   end;\r
373 \r
374 var\r
375   MainForm: TMainForm;\r
376   setcalendarnote:GSM_CalendarNote;\r
377   setsms:GSM_MultiSMSMessage;\r
378   setsmslocation:integer;\r
379   smscselectitem:integer;\r
380   bitma:GSM_Bitmap;\r
381   rington:GSM_Ringtone;\r
382   calenda:GSM_CalendarNote;\r
383   pbk:GSM_PhonebookEntry;\r
384   previewcolor:TColor;\r
385   bookmarknum2:integer;\r
386   bookma:GSM_WAPBookmark;\r
387   wapset:GSM_WAPSettings;\r
388   pbkofflinenumber:integer;\r
389   \r
390   PhoneBackup: GSM_Backup;\r
391   PhoneBackupAvailable:boolean;\r
392 \r
393 procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
394 function DayOFweek3(date:TDateTime):string;\r
395 procedure SetSMSC(num:integer);\r
396 procedure ReadPBKOffline;\r
397 \r
398 implementation\r
399 \r
400 uses Calendar, SMSEdit, LogosRing, Netmon, smscedit, pbkedit, backup,\r
401   backup2, pbkedit2, wapbook;\r
402 \r
403 {$R *.dfm}\r
404 \r
405 type\r
406   TNetmonThread = class(TThread)\r
407     public\r
408       procedure Execute; override;\r
409   end;\r
410   TPhonebookThread = class(TThread)\r
411     public\r
412       procedure Execute; override;\r
413   end;\r
414   TSpeedThread = class(TThread)\r
415     public\r
416       procedure Execute; override;\r
417   end;\r
418   TSMSCThread = class(TThread)\r
419     public\r
420       procedure Execute; override;\r
421   end;\r
422   TSMSThread = class(TThread)\r
423     public\r
424       procedure Execute; override;\r
425   end;\r
426   TCalendarThread = class(TThread)\r
427     public\r
428       procedure Execute; override;\r
429   end;\r
430   TCallerThread = class(TThread)\r
431     public\r
432       procedure Execute; override;\r
433   end;\r
434   TProfileThread = class(TThread)\r
435     public\r
436       procedure Execute; override;\r
437   end;\r
438   TPlayRingtoneThread = class(TThread)\r
439     public\r
440       procedure Execute; override;\r
441   end;\r
442   TWAPBookmarkThread = class(TThread)\r
443     public\r
444       procedure Execute; override;\r
445   end;\r
446 \r
447 var\r
448   //phone sheet\r
449   phoneinfo:boolean;\r
450 \r
451   //reading netmonitor variables\r
452   netmonnum: integer; //number of netmon screen\r
453   NetmonThread: TNetmonThread;\r
454 \r
455   //reading phonebook memories variables\r
456   phonebookstatus:GSM_MemoryStatus;\r
457   phonebookcur:integer;\r
458   phonebookfound:integer;\r
459   PhonebookThread: TPhonebookThread;\r
460   pbknumberentry:integer;\r
461   \r
462   //logos\r
463   pointsize:integer;\r
464   x2,y2:byte;\r
465   logofilename:string='xxx';\r
466 \r
467   //ringtones\r
468   PlayRingtoneThread: TPlayRingtoneThread;\r
469   ringindex:integer;\r
470   binring:GSM_BinRingtone;\r
471 \r
472   //speeddials\r
473   speednum:integer;\r
474   SpeedThread: TSpeedThread;\r
475 \r
476   //caller groups\r
477   caller:array[1..5] of GSM_Bitmap;\r
478   callerinit:boolean;\r
479   callernum:integer;\r
480   CallerThread: TCallerThread;\r
481 \r
482   //smsc\r
483   smscnum:integer;\r
484   SMSCThread: TSMSCThread;\r
485   smscinit: boolean;\r
486   SMSC2:array[1..10] of GSM_MessageCenter;\r
487 \r
488   //calendar\r
489   calendarnum:integer;\r
490   CalendarThread: TCalendarThread;\r
491   calendarselect:integer;\r
492   readcalendar:boolean;\r
493 \r
494   CalendarOffline:array[1..300] of GSM_CalendarNote;\r
495   CalendarOfflineNumber:integer;\r
496 \r
497   //profiles\r
498   profilenum:integer;\r
499   ProfileThread: TProfileThread;\r
500 \r
501   SMS:array[1..200] of GSM_SMSMessage;\r
502   SMSnum:integer;\r
503   SMSfolders:GSM_SMSFolders;\r
504   SMSstatus:GSM_SMSStatus;\r
505   smsnumindex:integer;\r
506   SMSThread: TSMSThread;\r
507   smsnum2:integer;\r
508 \r
509   SMSOffline:array[1..300] of GSM_SMSMessage;\r
510   SMSOfflineNumber:integer;\r
511 \r
512   //wap bookmarks\r
513   WAPBookmarkThread: TWAPBookmarkThread;\r
514   bookmarknum:integer;\r
515 \r
516 function Inttostr2(I: Longint;digits:integer): string;\r
517 \r
518 { Convert any integer type to a string }\r
519 var\r
520   S: string[11];\r
521   j:integer;\r
522 begin\r
523   Str(I:digits, S);\r
524   for  j:=1 to 11 do\r
525   begin\r
526     if s[j]<>' ' then break;\r
527     s[j]:='0';\r
528   end;\r
529   Result:= S;\r
530 end;\r
531 \r
532 procedure SaveMainConfig;\r
533 var\r
534   MyIniFile: TIniFile;\r
535 begin\r
536   MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
537   MyIniFile.WriteString('win32gui', 'x', inttostr(MainForm.Left));\r
538   MyIniFile.WriteString('win32gui', 'y', inttostr(MainForm.Top));\r
539   MyIniFile.WriteString('win32gui', 'width', inttostr(MainForm.Width));\r
540   MyIniFile.WriteString('win32gui', 'height', inttostr(MainForm.Height));\r
541   MyIniFile.WriteString('win32gui', 'treewidth', inttostr(MainForm.Treeview1.Width));\r
542   MyIniFile.Free;\r
543 end;\r
544 \r
545 function DayOFweek3(date:TDateTime):string;\r
546 var\r
547   days: array[1..7] of string;\r
548 begin\r
549   days[1] := 'Sun';\r
550   days[2] := 'Mon';\r
551   days[3] := 'Tue';\r
552   days[4] := 'Wed';\r
553   days[5] := 'Thu';\r
554   days[6] := 'Fri';\r
555   days[7] := 'Sat';\r
556   DayOfWeek3:= days[DayOfWeek(date)];\r
557 end;\r
558 \r
559 function DayOFweek2(day:integer;month:integer;year:integer):string;\r
560 var\r
561   date:TDateTime;\r
562 begin\r
563   Date:=EncodeDate(Year,Month,Day);\r
564   DayOfWeek2:= DayOfWeek3(Date);\r
565 end;\r
566 \r
567 procedure SetSMSC(num:integer);\r
568 begin\r
569   SMSEditForm.Edit1.Text:=SMSC2[num].Number;\r
570   case SMSC2[num].Validity of\r
571     GSMV_1_Hour   : SMSEditForm.ComboBox3.ItemIndex:=0;\r
572     GSMV_6_Hours  : SMSEditForm.ComboBox3.ItemIndex:=1;\r
573     GSMV_24_Hours : SMSEditForm.ComboBox3.ItemIndex:=2;\r
574     GSMV_72_Hours : SMSEditForm.ComboBox3.ItemIndex:=3;\r
575     GSMV_1_Week   : SMSEditForm.ComboBox3.ItemIndex:=4;\r
576   else\r
577     SMSEditForm.ComboBox3.ItemIndex:=5;\r
578 \r
579   end;\r
580   case SMSC2[num].Format of\r
581     GSMF_Text   : SMSEditForm.ComboBox4.ItemIndex:=0;\r
582     GSMF_Fax    : SMSEditForm.ComboBox4.ItemIndex:=1;\r
583     GSMF_Email  : SMSEditForm.ComboBox4.ItemIndex:=2;\r
584   else\r
585     SMSEditForm.ComboBox4.ItemIndex:=3;\r
586   end;\r
587 end;\r
588 \r
589 procedure ReadPBKOffline;\r
590 var F:file of GSM_PhonebookEntry;\r
591 begin\r
592   AssignFile(F, 'gnokiipbk');\r
593   Reset(F);\r
594   if (ioresult=0) then\r
595   begin\r
596     phonebackup.PhonePhonebookUsed:=0;\r
597     pbkofflinenumber:=0;\r
598     while not eof(f) do\r
599     begin\r
600       pbkofflinenumber:=pbkofflinenumber+1;\r
601       read(f,PhoneBackup.PhonePhonebook[pbkofflinenumber]);\r
602     end;\r
603     CloseFile(F);\r
604   end;\r
605 end;\r
606 \r
607 procedure SavePBKOffline;\r
608 var F:file of GSM_PhonebookEntry;\r
609     i:integer;\r
610 begin\r
611   AssignFile(F, 'gnokiipbk');\r
612   Rewrite(F);\r
613   for i:=1 to PBKOfflineNumber do\r
614   begin\r
615     Write(f,PhoneBackup.PhonePhonebook[i]);\r
616   end;\r
617   CloseFile(F);\r
618 end;\r
619 \r
620 procedure AddSMSEditSenderList;\r
621 var i,j:integer;\r
622 begin\r
623   ReadPBKOffline;\r
624   SMSEditForm.ComboBox9.Items.Clear;\r
625   SMSEditForm.ComboBox9.Sorted:=false;\r
626   for i:=1 to PBKOfflineNumber do\r
627   begin\r
628     if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
629     begin\r
630       SMSEditForm.ComboBox9.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
631     end else\r
632     begin\r
633       for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
634       begin\r
635         if PhoneBackup.PhonePhonebook[i].SubEntries[j].EntryType=GSM_Number then\r
636         begin\r
637           SMSEditForm.ComboBox9.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
638           break;\r
639         end;\r
640       end;\r
641     end;\r
642   end;\r
643   SMSEditForm.ComboBox9.Sorted:=true;\r
644 end;\r
645 \r
646 procedure ReadCallerGroup();\r
647 var\r
648   logo:GSM_Bitmap;\r
649   name:Pchar;\r
650   i:integer;\r
651 begin\r
652   if callernum<6 then\r
653   begin\r
654     i:=1;\r
655     while i<>0 do\r
656     begin\r
657       logo.type2:=GSM_CallerLogo;\r
658       logo.number:=callernum-1;\r
659       MainForm.Timer2.Enabled:=false;\r
660       i:=GSM_GetBitmap(@logo);\r
661       MainForm.Timer2.Enabled:=true;\r
662     end;\r
663     caller[callernum]:=logo;\r
664     MainForm.ListView5.Items.Add;\r
665     MainForm.ListView5.Items.Item[callernum-1].Caption:=inttostr(callernum);\r
666     if logo.text[1]=chr(0) then\r
667     begin\r
668       name:='';\r
669       case callernum of\r
670         1:name:='Family';\r
671         2:name:='VIP';\r
672         3:name:='Friends';\r
673         4:name:='Colleagues';\r
674         5:name:='Other';\r
675       end;\r
676       for i:=1 to 255 do\r
677       begin\r
678         caller[callernum].text[i]:=chr(0);\r
679       end;\r
680       for i:=1 to strlen(name) do\r
681       begin\r
682         caller[callernum].text[i]:=name[i-1];\r
683       end;\r
684     end;\r
685     MainForm.ListView5.Items.Item[callernum-1].Subitems.Add(caller[callernum].text);\r
686     if logo.ringtone=16 then\r
687       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('default')\r
688     else\r
689       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add(inttostr(logo.ringtone));\r
690     if logo.enabled<>0 then\r
691       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('logo enabled')\r
692     else\r
693       MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('logo disabled');\r
694   end else callerinit:=true;\r
695   callernum:=callernum+1;\r
696 end;\r
697 \r
698 procedure ReadAllCallerGroups();\r
699 begin\r
700   if (GSM_GetModelFeature(FN_CALLERGROUPS)<>0) then\r
701   begin\r
702     if callerinit=false then\r
703     begin\r
704       MainForm.ListView5.Items.Clear;\r
705       callernum:=1;\r
706       while callerinit=false do\r
707       begin\r
708         ReadCallerGroup();\r
709         if callerinit then break;\r
710       end;\r
711     end;\r
712   end else\r
713   begin\r
714   end;\r
715 end;\r
716 \r
717 //logos sheet\r
718 procedure UpdatePointBitmap(i,j:integer);\r
719 begin\r
720   if GSM_IsPointBitmap(@bitma,i,j)<>0 then\r
721   begin\r
722     MainForm.LogosImage.Canvas.Brush.Color := clBlack;\r
723     MainForm.Image1.Canvas.Pen.Color := clBlack;\r
724   end else\r
725   begin\r
726     MainForm.LogosImage.Canvas.Brush.Color := PreviewColor;//$0063cf63\r
727     MainForm.Image1.Canvas.Pen.Color := PreviewColor;\r
728   end;\r
729   MainForm.LogosImage.Canvas.FillRect(Rect(i*pointsize+i,j*pointsize+j,(i+1)*pointsize+i,(j+1)*pointsize+j));\r
730   MainForm.Image1.Canvas.Polyline([Point(28+i, 145+j), Point(29+i,146+j)]);\r
731 end;\r
732 \r
733 procedure DrawBitmap();\r
734 var\r
735   xsize:integer;\r
736   ysize:integer;\r
737   i,j:integer;\r
738 begin\r
739   MainForm.StatusBar1.Panels[0].Text:=inttostr(bitma.width);\r
740   xsize:=bitma.width;\r
741   ysize:=bitma.heigh;\r
742 \r
743   MainForm.LogosImage.Canvas.Brush.Style := bsSolid;\r
744   MainForm.LogosImage.Canvas.Brush.Color := clScrollBar;\r
745 \r
746   MainForm.LogosImage.Canvas.Pen.Mode := pmCopy;\r
747 \r
748   MainForm.LogosImage.Canvas.Pen.Color := clScrollBar;\r
749   MainForm.LogosImage.Canvas.Rectangle(0,0,MainForm.LogosImage.Width,MainForm.LogosImage.Height);\r
750 \r
751   MainForm.LogosImage.Canvas.Pen.Color := PreviewColor;\r
752   MainForm.LogosImage.Canvas.Rectangle(0,0,xsize*pointsize+xsize-1,ysize*pointsize+ysize-1);\r
753 \r
754   MainForm.LogosImage.Canvas.Brush.Color := PreviewColor;\r
755   MainForm.LogosImage.Canvas.FloodFill(2,2,PreviewColor,fsBorder);\r
756 \r
757   MainForm.LogosImage.Canvas.Pen.Color := clBlack;\r
758 \r
759   for i:=0 to xsize do\r
760   begin\r
761     MainForm.LogosImage.Canvas.MoveTo(i*pointsize+i-1,0);\r
762     MainForm.LogosImage.Canvas.LineTo(i*pointsize+i-1,ysize*pointsize+ysize-1);\r
763   end;\r
764   for i:=0 to ysize do\r
765   begin\r
766     MainForm.LogosImage.Canvas.MoveTo(0,i*pointsize+i-1);\r
767     MainForm.LogosImage.Canvas.LineTo(xsize*pointsize+xsize-1,i*pointsize+i-1);\r
768   end;\r
769 \r
770   MainForm.Image1.Picture.Assign(MainForm.Image2.Picture);\r
771   MainForm.Image1.Canvas.Pen.Mode := pmCopy;\r
772   for i:=0 to xsize-1 do\r
773   begin\r
774    for j:=0 to ysize-1 do\r
775     begin\r
776       UpdatePointBitmap(i,j);\r
777     end;\r
778   end;\r
779 end;\r
780 \r
781 procedure TMainForm.Image1MouseDown(Sender: TObject; Button: TMouseButton;\r
782   Shift: TShiftState; X, Y: Integer);\r
783 var\r
784   sr: TSearchRec;\r
785   filefound:integer;\r
786 begin\r
787   filefound:=0;\r
788   if FindFirst(ExtractFilePath(Application.ExeName)+'\*bmp', faAnyFile, sr) = 0 then\r
789   begin\r
790     repeat\r
791       if (sr.Attr and faAnyFile) = sr.Attr then\r
792       begin\r
793         if sr.Size=57814 then\r
794         begin\r
795           case filefound of\r
796             1:begin\r
797                 Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\'+sr.name);\r
798                 PreviewColor:=Image2.Canvas.Pixels[70,170];\r
799                 DrawBitmap;\r
800                 filefound:=2;\r
801                 logofilename:=sr.name;\r
802               end;\r
803             0:if logofilename=sr.Name then filefound:=1;\r
804           end;\r
805           if filefound=2 then break;\r
806         end;\r
807       end;\r
808     until FindNext(sr) <> 0;\r
809     FindClose(sr);\r
810   end;\r
811   if filefound<>2 then\r
812   begin\r
813     if FindFirst(ExtractFilePath(Application.ExeName)+'\*bmp', faAnyFile, sr) = 0 then\r
814     begin\r
815       Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\'+sr.name);\r
816       DrawBitmap;\r
817       logofilename:=sr.name;\r
818     end;\r
819   end;\r
820 end;\r
821 \r
822 procedure LogosMousePos(x,y:integer);\r
823 var\r
824   i:integer;\r
825 begin\r
826   i:=0;x2:=0;\r
827   while i<=x do\r
828   begin\r
829     i:=i+pointsize+1;\r
830     x2:=x2+1;\r
831   end;\r
832   i:=0;y2:=0;\r
833   while i<=y do\r
834   begin\r
835     i:=i+pointsize+1;\r
836     y2:=y2+1;\r
837   end;\r
838 end;\r
839 \r
840 procedure TMainForm.ComboBox2Select(Sender: TObject);\r
841 var\r
842   bittype:integer;\r
843 begin\r
844   case ComboBox2.ItemIndex of\r
845     0:bittype:=GSM_CallerLogo;\r
846     1:begin\r
847         bittype:=GSM_OperatorLogo;\r
848         if GSMPhoneConnected then\r
849         begin\r
850           case GSM_GetModelFeature(FN_STARTUP) of\r
851             F_STA62:bittype:=GSM_7110OperatorLogo;\r
852             F_STA71:bittype:=GSM_7110OperatorLogo;\r
853           end;\r
854         end;\r
855       end;\r
856     2:bittype:=GSM_PictureImage;\r
857     3:begin\r
858         bittype:=GSM_StartupLogo;\r
859         if GSMPhoneConnected then\r
860         begin\r
861           case GSM_GetModelFeature(FN_STARTUP) of\r
862             F_STA62:bittype:=GSM_6210StartupLogo;\r
863             F_STA71:bittype:=GSM_7110StartupLogo;\r
864           end;\r
865         end;\r
866       end;\r
867   else\r
868     bittype:=GSM_StartupLogo;\r
869     if GSMPhoneConnected then\r
870     begin\r
871       case GSM_GetModelFeature(FN_STARTUP) of\r
872         F_STA62:bittype:=GSM_6210StartupLogo;\r
873         F_STA71:bittype:=GSM_7110StartupLogo;\r
874       end;\r
875     end;\r
876   end;\r
877   GSM_ResizeBitmap(@bitma,bittype);\r
878   DrawBitmap();\r
879   if (bitma.type2<>GSM_OperatorLogo) and\r
880      (bitma.type2<>GSM_7110OperatorLogo) then\r
881     Button8.Enabled:=false\r
882   else\r
883     Button8.Enabled:=true;\r
884 end;\r
885 \r
886 procedure TMainForm.LogosImageMouseMove(Sender: TObject; Shift: TShiftState;\r
887   X, Y: Integer);\r
888 begin\r
889   LogosMousePos(x,y);\r
890   if x2<=bitma.width then\r
891   begin\r
892     if y2<=bitma.heigh then\r
893       MainForm.StatusBar1.Panels[0].Text:=inttostr(x2)+','+inttostr(y2)\r
894     else\r
895       MainForm.StatusBar1.Panels[0].Text:='';\r
896   end else\r
897     MainForm.StatusBar1.Panels[0].Text:='';\r
898 end;\r
899 \r
900 procedure TMainForm.LogosTabSheetShow(Sender: TObject);\r
901 begin\r
902   DrawBitmap();\r
903 end;\r
904 \r
905 procedure TMainForm.Button7Click(Sender: TObject);\r
906 var\r
907   i:integer;\r
908 begin\r
909   LogosRingForm.Label1.Caption:='What logo do you want to get ?';\r
910   LogosRingForm.ComboBox3.Items.Clear;\r
911   case bitma.type2 of\r
912     GSM_CallerLogo:\r
913       begin\r
914         LogosRingForm.ComboBox3.Visible:=true;\r
915         ReadAllCallerGroups();\r
916         for i:=1 to 5 do\r
917         begin\r
918           LogosRingForm.ComboBox3.Items.Add(caller[i].text);\r
919         end;\r
920         LogosRingForm.ComboBox3.ItemIndex:=0;\r
921         LogosRingForm.ShowModal();\r
922         if (LogosRingForm.ComboBox3.Visible) then\r
923         begin\r
924           bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
925           MainForm.Timer2.Enabled:=false;\r
926           GSM_GetBitmap(@bitma);\r
927           MainForm.Timer2.Enabled:=true;\r
928           DrawBitmap();\r
929         end;\r
930       end;\r
931     GSM_PictureImage:\r
932       begin\r
933         LogosRingForm.ComboBox3.Visible:=true;\r
934         for i:=1 to 20 do\r
935         begin\r
936           LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
937         end;\r
938         LogosRingForm.ComboBox3.ItemIndex:=0;\r
939         LogosRingForm.ShowModal();\r
940         if (LogosRingForm.ComboBox3.Visible) then\r
941         begin\r
942           bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
943           MainForm.Timer2.Enabled:=false;\r
944           GSM_GetBitmap(@bitma);\r
945           MainForm.Timer2.Enabled:=true;\r
946           DrawBitmap();\r
947         end;\r
948       end;\r
949     else\r
950     begin\r
951       MainForm.Timer2.Enabled:=false;\r
952       GSM_GetBitmap(@bitma);\r
953       MainForm.Timer2.Enabled:=true;\r
954       DrawBitmap();\r
955     end;\r
956   end;\r
957 end;\r
958 \r
959 procedure TMainForm.Button4Click(Sender: TObject);\r
960 var\r
961   bit:GSM_Bitmap;\r
962 begin\r
963   if OpenDialog1.Execute then\r
964   begin\r
965     if GSM_ReadBitmapFile(PChar(OpenDialog1.FileName),@bit)=0 then\r
966     begin\r
967       bitma:=bit;\r
968       DrawBitmap();\r
969       case bitma.type2 of\r
970         GSM_CallerLogo  :ComboBox2.ItemIndex:=0;\r
971         GSM_OperatorLogo:ComboBox2.ItemIndex:=1;\r
972         GSM_7110OperatorLogo:ComboBox2.ItemIndex:=1;\r
973         GSM_PictureImage:ComboBox2.ItemIndex:=2;\r
974         GSM_StartupLogo :ComboBox2.ItemIndex:=3;\r
975         GSM_7110StartupLogo :ComboBox2.ItemIndex:=3;\r
976         GSM_6210StartupLogo :ComboBox2.ItemIndex:=3;\r
977       end;\r
978     end;\r
979   end;\r
980 end;\r
981 \r
982 procedure TMainForm.LogosImageMouseDown(Sender: TObject; Button: TMouseButton;\r
983   Shift: TShiftState; X, Y: Integer);\r
984 begin\r
985   LogosMousePos(x,y);\r
986   if x2<=bitma.width then\r
987   begin\r
988     if y2<=bitma.heigh then\r
989     begin\r
990       if ssLeft in Shift then\r
991         GSM_SetPointBitmap(@bitma,x2-1,y2-1)\r
992       else\r
993         GSM_ClearPointBitmap(@bitma,x2-1,y2-1);\r
994 \r
995       UpdatePointBitmap(x2-1,y2-1);\r
996     end;\r
997   end;\r
998 end;\r
999 \r
1000 procedure TMainForm.Button6Click(Sender: TObject);\r
1001 var\r
1002   i,j:integer;\r
1003   Name,Data:array[1..255] of char;\r
1004   oldbitma:GSM_Bitmap;\r
1005 begin\r
1006   LogosRingForm.Label1.Caption:='Do you want to set logo ?';\r
1007   LogosRingForm.ComboBox3.Items.Clear;\r
1008   case bitma.type2 of\r
1009     GSM_StartupLogo:\r
1010       begin\r
1011         LogosRingForm.ComboBox3.Visible:=false;\r
1012         LogosRingForm.ShowModal();\r
1013         if (LogosRingForm.ComboBox3.Visible) then\r
1014           GSM_SetBitmap(@bitma);\r
1015       end;\r
1016     GSM_7110OperatorLogo:\r
1017       begin\r
1018         LogosRingForm.ComboBox3.Visible:=true;\r
1019         LogosRingForm.ComboBox3.Items.Add('Preview');\r
1020         //preparing network names\r
1021         i:=0;\r
1022         while true do\r
1023         begin\r
1024           GSM_GetNetworkData(i,@Name,@Data);\r
1025 \r
1026           // conversion problems\r
1027           Label14.Caption:=Name;\r
1028           if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
1029 \r
1030           // conversion problems\r
1031           Label14.Caption:=' - '+Label14.Caption;\r
1032           for j:=6 downto 1 do\r
1033           begin\r
1034             Label14.Caption:=Data[j]+Label14.Caption;\r
1035           end;\r
1036 \r
1037           LogosRingForm.ComboBox3.Items.Add(Pchar(Label14.Caption));\r
1038           i:=i+1;\r
1039         end;\r
1040         //looking for current network\r
1041         if GSMPhoneConnected then\r
1042         begin\r
1043           // conversion problems\r
1044           Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
1045           Label14.Caption:=' - '+Label14.Caption;\r
1046           for j:=6 downto 1 do\r
1047           begin\r
1048             Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
1049           end;\r
1050 \r
1051           i:=1;\r
1052           while true do\r
1053           begin\r
1054             if strcomp(pchar(LogosRingForm.ComboBox3.Items[i]),pchar(Label14.Caption))=0\r
1055               then break;\r
1056             i:=i+1;\r
1057           end;\r
1058           LogosRingForm.ComboBox3.ItemIndex:=i;\r
1059         end;\r
1060         LogosRingForm.ShowModal();\r
1061         if (LogosRingForm.ComboBox3.Visible) then\r
1062         begin\r
1063           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
1064           begin\r
1065             bitma.number:=255;\r
1066             for i:=1 to 6 do\r
1067             begin\r
1068               bitma.netcode[i]:=GSMNetworkInfo.NetworkCode[i];\r
1069             end;\r
1070             bitma.netcode[7]:=chr(0);\r
1071           end else\r
1072           begin\r
1073             GSM_GetNetworkData(LogosRingForm.ComboBox3.ItemIndex-1,@Name,@bitma.netcode);\r
1074           end;\r
1075           GSM_SetBitmap(@bitma);\r
1076         end;\r
1077       end;\r
1078     GSM_OperatorLogo:\r
1079       begin\r
1080         LogosRingForm.ComboBox3.Visible:=true;\r
1081         LogosRingForm.ComboBox3.Items.Add('Preview');\r
1082         //preparing network names\r
1083         i:=0;\r
1084         while true do\r
1085         begin\r
1086           GSM_GetNetworkData(i,@Name,@Data);\r
1087 \r
1088           // conversion problems\r
1089           Label14.Caption:=Name;\r
1090           if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
1091 \r
1092           // conversion problems\r
1093           Label14.Caption:=' - '+Label14.Caption;\r
1094           for j:=6 downto 1 do\r
1095           begin\r
1096             Label14.Caption:=Data[j]+Label14.Caption;\r
1097           end;\r
1098 \r
1099           LogosRingForm.ComboBox3.Items.Add(Pchar(Label14.Caption));\r
1100           i:=i+1;\r
1101         end;\r
1102         //looking for current network\r
1103         if GSMPhoneConnected then\r
1104         begin\r
1105           // conversion problems\r
1106           Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
1107           Label14.Caption:=' - '+Label14.Caption;\r
1108           for j:=6 downto 1 do\r
1109           begin\r
1110             Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
1111           end;\r
1112 \r
1113           i:=1;\r
1114           while true do\r
1115           begin\r
1116             if strcomp(pchar(LogosRingForm.ComboBox3.Items[i]),pchar(Label14.Caption))=0\r
1117               then break;\r
1118             i:=i+1;\r
1119           end;\r
1120           LogosRingForm.ComboBox3.ItemIndex:=i;\r
1121         end;\r
1122         LogosRingForm.ShowModal();\r
1123         if (LogosRingForm.ComboBox3.Visible) then\r
1124         begin\r
1125           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
1126           begin\r
1127             bitma.number:=255;\r
1128             for i:=1 to 6 do\r
1129             begin\r
1130               bitma.netcode[i]:=GSMNetworkInfo.NetworkCode[i];\r
1131             end;\r
1132             bitma.netcode[7]:=chr(0);\r
1133           end else\r
1134           begin\r
1135             GSM_GetNetworkData(LogosRingForm.ComboBox3.ItemIndex-1,@Name,@bitma.netcode);\r
1136           end;\r
1137           GSM_SetBitmap(@bitma);\r
1138         end;\r
1139       end;\r
1140     GSM_PictureImage:\r
1141       begin\r
1142         LogosRingForm.ComboBox3.Visible:=true;\r
1143         for i:=1 to 20 do\r
1144         begin\r
1145           LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
1146         end;\r
1147         LogosRingForm.ComboBox3.ItemIndex:=0;\r
1148         LogosRingForm.ShowModal();\r
1149         if (LogosRingForm.ComboBox3.Visible) then\r
1150         begin\r
1151           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
1152           begin\r
1153             bitma.number:=255;\r
1154           end else\r
1155           begin\r
1156             bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
1157           end;\r
1158           GSM_SetBitmap(@bitma);\r
1159         end;\r
1160       end;\r
1161     GSM_CallerLogo:\r
1162       begin\r
1163         LogosRingForm.ComboBox3.Visible:=true;\r
1164         LogosRingForm.ComboBox3.Items.Add('Preview');\r
1165         ReadAllCallerGroups();\r
1166         for i:=1 to 5 do\r
1167         begin\r
1168           LogosRingForm.ComboBox3.Items.Add(caller[i].text);\r
1169         end;\r
1170         LogosRingForm.ComboBox3.ItemIndex:=1;\r
1171         LogosRingForm.ShowModal();\r
1172         if (LogosRingForm.ComboBox3.Visible) then\r
1173         begin\r
1174           if LogosRingForm.ComboBox3.ItemIndex=0 then\r
1175           begin\r
1176             bitma.number:=255;\r
1177           end else\r
1178           begin\r
1179             bitma.number:=LogosRingForm.ComboBox3.ItemIndex-1;\r
1180             //we need to get old caller group datas\r
1181             oldbitma.type2:=bitma.type2;\r
1182             oldbitma.number:=bitma.number;\r
1183             GSM_GetBitmap(@oldbitma);\r
1184             bitma.ringtone:=oldbitma.ringtone;\r
1185             bitma.text:=oldbitma.text;\r
1186           end;\r
1187           GSM_SetBitmap(@bitma);\r
1188         end;\r
1189       end;\r
1190   end;\r
1191 end;\r
1192 \r
1193 procedure TMainForm.Button5Click(Sender: TObject);\r
1194 begin\r
1195   if SaveDialog1.Execute then\r
1196   begin\r
1197     GSM_SaveBitmapFile(PChar(SaveDialog1.FileName),@bitma);\r
1198   end;\r
1199 end;\r
1200 \r
1201 procedure TMainForm.Button8Click(Sender: TObject);\r
1202 var\r
1203   bitma2:GSM_Bitmap;\r
1204 begin\r
1205   if MessageDlg('Restore logo to default ?',\r
1206     mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
1207   begin\r
1208     bitma2:=bitma;\r
1209     bitma2.netcode[1]:='0';\r
1210     bitma2.netcode[2]:='0';\r
1211     bitma2.netcode[3]:='0';\r
1212     bitma2.netcode[4]:=' ';\r
1213     bitma2.netcode[5]:='0';\r
1214     bitma2.netcode[6]:='0';\r
1215     bitma2.netcode[7]:=chr(0);\r
1216     GSM_ClearBitmap(@bitma2);\r
1217     GSM_SetBitmap(@bitma2);\r
1218   end;\r
1219 end;\r
1220 \r
1221 procedure TMainForm.Button12Click(Sender: TObject);\r
1222 begin\r
1223   GSM_ClearBitmap(@bitma);\r
1224   DrawBitmap();\r
1225 end;\r
1226 \r
1227 //MainForm main functions\r
1228 procedure TMainForm.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
1229   Shift: TShiftState; X, Y: Integer);\r
1230 begin\r
1231   MainForm.TreeView1.FullExpand;\r
1232   case MainForm.TreeView1.Selected.ImageIndex of\r
1233     0: MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
1234     1: MainForm.PageControl1.ActivePage:=CalendarTabSheet;\r
1235     2: MainForm.PageControl1.ActivePage:=DivertTabSheet;\r
1236     3: MainForm.PageControl1.ActivePage:=CallerTabSheet;\r
1237     4: MainForm.PageControl1.ActivePage:=LogosTabSheet;\r
1238     5: MainForm.PageControl1.ActivePage:=NetmonitorTabSheet;\r
1239     6: MainForm.PageControl1.ActivePage:=PhonebookTabSheet;\r
1240     7: MainForm.PageControl1.ActivePage:=ProfileTabSheet;\r
1241     8: MainForm.PageControl1.ActivePage:=RingtonesTabSheet;\r
1242     9: MainForm.PageControl1.ActivePage:=SMSTabSheet;\r
1243     10: MainForm.PageControl1.ActivePage:=SMSCTabSheet;\r
1244     11: MainForm.PageControl1.ActivePage:=SpeedTabSheet;\r
1245     12: MainForm.PageControl1.ActivePage:=WAPBookTabSheet;\r
1246     13: MainForm.PageControl1.ActivePage:=WAPSettTabSheet;\r
1247     14: MainForm.PageControl1.ActivePage:=PCOfflineTabSheet;\r
1248     15: MainForm.PageControl1.ActivePage:=PCCalendarTabSheet;\r
1249     16: MainForm.PageControl1.ActivePage:=PCPBKTabSheet;\r
1250     17: MainForm.PageControl1.ActivePage:=PCSMSTabSheet;\r
1251   end;\r
1252 end;\r
1253 \r
1254 procedure TMainForm.Configuration1Click(Sender: TObject);\r
1255 begin\r
1256   MainForm.PageControl1.ActivePage:=ConfigTabSheet;\r
1257 end;\r
1258 \r
1259 procedure TMainForm.TreeView1KeyUp(Sender: TObject; var Key: Word;\r
1260   Shift: TShiftState);\r
1261 begin\r
1262   MainForm.TreeView1.FullExpand;\r
1263 end;\r
1264 \r
1265 procedure TMainForm.FormCreate(Sender: TObject);\r
1266 begin\r
1267   MainForm.PhonebookTabSheet.TabVisible:=false;\r
1268   MainForm.NetmonitorTabSheet.TabVisible:=false;\r
1269   MainForm.LogosTabSheet.TabVisible:=false;\r
1270   MainForm.PhoneTabSheet.TabVisible:=false;\r
1271   MainForm.RingtonesTabSheet.TabVisible:=false;\r
1272   MainForm.SMSTabSheet.TabVisible:=false;\r
1273   MainForm.SMSCTabSheet.TabVisible:=false;\r
1274   MainForm.SpeedTabSheet.TabVisible:=false;\r
1275   MainForm.CalendarTabSheet.TabVisible:=false;\r
1276   MainForm.CallerTabSheet.TabVisible:=false;\r
1277   MainForm.ProfileTabSheet.TabVisible:=false;\r
1278   MainForm.WAPBookTabSheet.TabVisible:=false;\r
1279   MainForm.WAPSettTabSheet.TabVisible:=false;\r
1280   MainForm.DivertTabSheet.TabVisible:=false;\r
1281   MainForm.ConfigTabSheet.TabVisible:=false;\r
1282   MainForm.AboutTabSheet.TabVisible:=false;\r
1283   MainForm.PCSMSTabSheet.TabVisible:=false;\r
1284   MainForm.PCCalendarTabSheet.TabVisible:=false;\r
1285   MainForm.PCOfflineTabSheet.TabVisible:=false;\r
1286   MainForm.PCPBKTabSheet.TabVisible:=false;\r
1287   MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
1288 \r
1289   PreviewColor:=Image2.Canvas.Pixels[70,170];\r
1290 \r
1291   bitma.size:=126;\r
1292   bitma.width:=72;\r
1293   bitma.heigh:=14;\r
1294   bitma.type2:=GSM_OperatorLogo;\r
1295   GSM_ClearBitmap(@bitma);\r
1296 \r
1297   pointsize:=3;\r
1298   MainForm.LogosImage.Width:=96*pointsize+96-1;\r
1299   MainForm.LogosImage.Height:=65*pointsize+65-1;\r
1300 \r
1301   netmonnum:=1;\r
1302 \r
1303   MainForm.Width:=660;\r
1304   MainForm.Height:=470;\r
1305 \r
1306   callerinit:=false;\r
1307   phoneinfo:=false;\r
1308   smscinit:=false;\r
1309 \r
1310   smsofflinenumber:=0;\r
1311   calendarofflinenumber:=0;\r
1312   pbkofflinenumber:=0;\r
1313   \r
1314   readcalendar:=false;\r
1315 end;\r
1316 \r
1317 procedure TMainForm.Timer1Timer(Sender: TObject);\r
1318 var\r
1319   NetworkName:array[1..255] of char;\r
1320 begin\r
1321   if GSMPhoneConnected then\r
1322   begin\r
1323     // Here we should enable interface\r
1324     GSM_GetNetworkName(@NetworkName,@GSMNetworkInfo.NetworkCode);\r
1325     MainForm.StatusBar1.Panels[1].Text:=NetworkName;\r
1326     if PhonebookThread=nil then\r
1327       ComboBox1.Enabled:=true;\r
1328 \r
1329     SaveBackupTofile1.Enabled:=true;\r
1330     Restorebackupfromfile1.Enabled:=true;\r
1331 \r
1332     ListView1.Enabled:=true;\r
1333     NetmonGroupBox.Enabled:=true;\r
1334     SpinEdit1.Enabled:=true;\r
1335     Button2.Enabled:=true;\r
1336     Button3.Enabled:=true;\r
1337     Button6.Enabled:=true;\r
1338     Button7.Enabled:=true;\r
1339     Button9.Enabled:=true;\r
1340     Button11.Enabled:=true;\r
1341 \r
1342     //ringtones\r
1343     Button16.Enabled:=true;\r
1344     if Edit1.Text<>'' then Edit1.Enabled:=true;\r
1345     if Edit2.Text<>'' then Edit2.Enabled:=true;\r
1346     Button22.Enabled:=true;\r
1347 \r
1348     If MainForm.PageControl1.ActivePage=MainForm.NetmonitorTabSheet then\r
1349       NetmonitorTabSheetShow(Sender);\r
1350 \r
1351     If MainForm.PageControl1.ActivePage=MainForm.PhoneTabSheet then\r
1352     begin\r
1353       if not phoneinfo then\r
1354         PhoneTabSheetShow(Sender);\r
1355     end;\r
1356 \r
1357     If MainForm.PageControl1.ActivePage=MainForm.SpeedTabSheet then\r
1358     begin\r
1359       if speednum<>10 then\r
1360         SpeedTabSheetShow(Sender);\r
1361     end;\r
1362 \r
1363     if (bitma.type2<>GSM_OperatorLogo) and\r
1364        (bitma.type2<>GSM_7110OperatorLogo) then\r
1365       Button8.Enabled:=false\r
1366     else\r
1367       Button8.Enabled:=true;\r
1368 \r
1369     if Edit2.Text<>'' then\r
1370       Button14.Enabled:=true\r
1371     else\r
1372       Button14.Enabled:=false;\r
1373 \r
1374     if Edit1.Text<>'' then\r
1375     begin\r
1376       Button2.Enabled:=true;\r
1377       Button17.Enabled:=true;\r
1378       if PlayRingtoneThread<>nil then\r
1379       begin\r
1380         Button3.Enabled:=false;\r
1381         Button16.Enabled:=true;\r
1382       end\r
1383       else\r
1384       begin\r
1385         Button3.Enabled:=true;\r
1386         Button16.Enabled:=false;\r
1387       end;\r
1388     end else\r
1389     begin\r
1390       Button2.Enabled:=false;\r
1391       Button17.Enabled:=false;\r
1392       Button16.Enabled:=false;\r
1393       Button3.Enabled:=false;\r
1394     end;\r
1395 \r
1396     Button18.Enabled:=false;\r
1397     if bitma.type2=GSM_PictureImage then\r
1398       Button18.Enabled:=true;\r
1399     if (bitma.type2=GSM_OperatorLogo) or\r
1400        (bitma.type2=GSM_7110OperatorLogo) then\r
1401       Button18.Enabled:=true;\r
1402     if bitma.type2=GSM_CallerLogo then\r
1403       Button18.Enabled:=true;\r
1404 \r
1405     //wap settings\r
1406     WAPSettTabSheet.Enabled:=true;\r
1407     if GSM_GetModelFeature(FN_WAP)=0 then\r
1408     begin\r
1409       Button23.Enabled:=false;\r
1410       GroupBox19.Enabled:=false;\r
1411       groupbox19.Ctl3D:=false;\r
1412       ComboBox7.enabled:=false;\r
1413       ComboBox8.enabled:=false;\r
1414       ComboBox9.enabled:=false;\r
1415       ComboBox10.enabled:=false;\r
1416       ComboBox11.enabled:=false;\r
1417       ComboBox12.enabled:=false;\r
1418       ComboBox13.enabled:=false;\r
1419       ComboBox14.enabled:=false;\r
1420       Edit6.Enabled:=false;\r
1421       Edit8.Enabled:=false;\r
1422       Edit9.Enabled:=false;\r
1423       Edit10.Enabled:=false;\r
1424       Edit11.Enabled:=false;\r
1425       Edit12.Enabled:=false;\r
1426       Edit13.Enabled:=false;\r
1427       Edit14.Enabled:=false;\r
1428       Edit15.Enabled:=false;\r
1429     end else\r
1430     begin\r
1431       GroupBox19.Enabled:=true;\r
1432       groupbox19.Ctl3D:=true;\r
1433       ComboBox7.enabled:=true;\r
1434       ComboBox8.enabled:=true;\r
1435       ComboBox9.enabled:=true;\r
1436       ComboBox10.enabled:=true;\r
1437       ComboBox11.enabled:=true;\r
1438       ComboBox12.enabled:=true;\r
1439       ComboBox13.enabled:=true;\r
1440       ComboBox14.enabled:=true;\r
1441       Edit6.Enabled:=true;\r
1442       Edit8.Enabled:=true;\r
1443       Edit9.Enabled:=true;\r
1444       Edit10.Enabled:=true;\r
1445       Edit11.Enabled:=true;\r
1446       Edit12.Enabled:=true;\r
1447       Edit13.Enabled:=true;\r
1448       Edit14.Enabled:=true;\r
1449       Edit15.Enabled:=true;\r
1450       Button23.Enabled:=false;\r
1451       if ComboBox7.ItemIndex<>0 then Button23.Enabled:=true;\r
1452     end;\r
1453 \r
1454     button19.Enabled:=true;\r
1455     button20.Enabled:=true;\r
1456   end else\r
1457   begin\r
1458     // Here we should disabled interface\r
1459     MainForm.StatusBar1.Panels[1].Text:='Not connected';\r
1460 \r
1461     SaveBackupTofile1.Enabled:=false;\r
1462     Restorebackupfromfile1.Enabled:=false;\r
1463 \r
1464     callerinit:=false;\r
1465 \r
1466     MainForm.ComboBox1.Enabled:=false;\r
1467     MainForm.ListView1.Enabled:=false;\r
1468     MainForm.NetmonGroupBox.Enabled:=false;\r
1469     MainForm.SpinEdit1.Enabled:=false;\r
1470     MainForm.Button2.Enabled:=false;\r
1471     MainForm.Button3.Enabled:=false;\r
1472     MainForm.Button6.Enabled:=false;\r
1473     MainForm.Button7.Enabled:=false;\r
1474     MainForm.Button8.Enabled:=false;\r
1475     MainForm.Button9.Enabled:=false;\r
1476     MainForm.Button11.Enabled:=false;\r
1477     Button18.Enabled:=false;\r
1478 \r
1479     //ringtones\r
1480     Button16.Enabled:=false;\r
1481     Button14.Enabled:=false;\r
1482     Button17.Enabled:=false;\r
1483     Edit1.Enabled:=false;\r
1484     Edit2.Enabled:=false;\r
1485     Button22.Enabled:=false;\r
1486 \r
1487     MainForm.NetmonitorTabSheetHide(Sender);\r
1488     MainForm.PhonebookTabSheetHide(Sender);\r
1489     MainForm.SpeedTabSheetHide(Sender);\r
1490 \r
1491     //WAP settings\r
1492     ComboBox7.enabled:=false;\r
1493     ComboBox8.enabled:=false;\r
1494     ComboBox9.enabled:=false;\r
1495     ComboBox10.enabled:=false;\r
1496     ComboBox11.enabled:=false;\r
1497     ComboBox12.enabled:=false;\r
1498     ComboBox13.enabled:=false;\r
1499     ComboBox14.enabled:=false;\r
1500     Edit6.Enabled:=false;\r
1501     Edit8.Enabled:=false;\r
1502     Edit9.Enabled:=false;\r
1503     Edit10.Enabled:=false;\r
1504     Edit11.Enabled:=false;\r
1505     Edit12.Enabled:=false;\r
1506     Edit13.Enabled:=false;\r
1507     Edit14.Enabled:=false;\r
1508     Edit15.Enabled:=false;\r
1509     Button23.Enabled:=false;\r
1510 \r
1511     button19.Enabled:=false;\r
1512     button20.Enabled:=false;\r
1513 \r
1514     phoneinfo:=false;\r
1515   end;\r
1516 end;\r
1517 \r
1518 procedure TMainForm.Quit1Click(Sender: TObject);\r
1519 begin\r
1520   if GSMPhoneConnected then GSM_Terminate();\r
1521   SaveMainConfig;\r
1522   Halt;\r
1523 end;\r
1524 \r
1525 procedure TMainForm.FormResize(Sender: TObject);\r
1526 begin\r
1527   MainForm.StatusBar1.Panels[0].Width:=MainForm.Width-150;\r
1528 end;\r
1529 \r
1530 procedure TMainForm.About1Click(Sender: TObject);\r
1531 begin\r
1532   AboutTabSheet.Show;\r
1533 end;\r
1534 \r
1535 //netmonitor sheet functions\r
1536 \r
1537 procedure TNetmonThread.Execute;\r
1538 var\r
1539   netmon:array[1..255] of char;\r
1540 begin\r
1541   while not Terminated do\r
1542   begin\r
1543     GSM_Netmonitor(netmonnum,@netmon);\r
1544     MainForm.NetmonLabel.Caption:=netmon;\r
1545     MainForm.NetmonGroupBox.Caption:=' Screen ' + IntToStr(netmonnum) + ' ';\r
1546   end;\r
1547 end;\r
1548 \r
1549 procedure TMainForm.NetmonitorTabSheetShow(Sender: TObject);\r
1550 begin\r
1551   if NetmonThread<>nil then\r
1552   else begin\r
1553     if GSMPhoneConnected then\r
1554     begin\r
1555       MainForm.Timer2.Enabled:=false;\r
1556       NetmonThread:=TNetmonThread.Create(false);\r
1557     end;\r
1558   end;\r
1559 end;\r
1560 \r
1561 procedure TMainForm.NetmonitorTabSheetHide(Sender: TObject);\r
1562 begin\r
1563   if (NetmonThread<>nil) then\r
1564   begin\r
1565     NetmonThread.Terminate();\r
1566     MainForm.Timer2.Enabled:=true;\r
1567     NetmonThread:=nil;\r
1568   end;\r
1569 end;\r
1570 \r
1571 procedure TMainForm.SpinEdit1Change(Sender: TObject);\r
1572 begin\r
1573   netmonnum:=SpinEdit1.Value;\r
1574 end;\r
1575 \r
1576 procedure TMainForm.Button11Click(Sender: TObject);\r
1577 var\r
1578   netmon:array[1..255] of char;\r
1579 begin\r
1580   NetmonForm.ShowModal;\r
1581   if NetmonForm.RadioGroup1.ItemIndex<>-1 then\r
1582   begin\r
1583     GSM_Netmonitor(241+NetmonForm.RadioGroup1.ItemIndex,@netmon);\r
1584   end;\r
1585 end;\r
1586 \r
1587 //phonebook sheet functions\r
1588 \r
1589 procedure EndPhonebookThread;\r
1590 begin\r
1591   if (PhonebookThread<>nil) then\r
1592   begin\r
1593     PhonebookThread.Terminate();\r
1594     MainForm.Timer2.Enabled:=true;\r
1595     PhonebookThread:=nil;\r
1596     MainForm.ComboBox1.Enabled:=true;\r
1597   end;\r
1598 end;\r
1599 \r
1600 procedure AddPBKEntry(MyListView:TListView;x:GSM_PhonebookEntry;number:integer);\r
1601 var j:integer;\r
1602 begin\r
1603   MyListView.Items.Item[number].Subitems.Add(x.Name);\r
1604 \r
1605   if (x.Number[1]<>chr(0)) then\r
1606     MyListView.Items.Item[number].Subitems.Add(x.Number)\r
1607   else begin\r
1608     for j:=1 to x.SubEntriesCount do\r
1609     begin\r
1610       if x.SubEntries[j].EntryType=GSM_Number then\r
1611       begin\r
1612         MyListView.Items.Item[number].Subitems.Add(x.subentries[j].Number);\r
1613         break;\r
1614       end;\r
1615     end;\r
1616   end;\r
1617 \r
1618   case x.Group of\r
1619     0:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
1620     1:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
1621     2:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
1622     3:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
1623     4:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
1624   else\r
1625     MyListView.Items.Item[number].Subitems.Add('not set');\r
1626   end;\r
1627 \r
1628   for j:=1 to x.SubEntriesCount do\r
1629   begin\r
1630     if x.SubEntries[j].EntryType=GSM_Date then\r
1631     begin\r
1632       MyListView.Items.Item[number].Subitems.Add(\r
1633         DayOfweek2(x.SubEntries[j].Date.Day,x.SubEntries[j].Date.Month,x.SubEntries[j].Date.Year)+' '+\r
1634         inttostr2(x.SubEntries[j].Date.Day,2)+'-'+inttostr2(x.SubEntries[j].Date.Month,2)+'-'+\r
1635         inttostr(x.SubEntries[j].Date.Year));\r
1636       MyListView.Items.Item[number].Subitems.Add(\r
1637         inttostr2(x.SubEntries[j].Date.Hour,2)+':'+inttostr2(x.SubEntries[j].Date.Minute,2)+':'+\r
1638         inttostr2(x.SubEntries[j].Date.Second,2));\r
1639       break;\r
1640     end;\r
1641   end;\r
1642 end;\r
1643 \r
1644 procedure TPhonebookThread.Execute;\r
1645 var\r
1646   x:GSM_PhonebookEntry;\r
1647 begin\r
1648   while not Terminated do\r
1649   begin\r
1650     if (phonebookcur<phonebookstatus.Used+phonebookstatus.Free) then\r
1651     begin\r
1652       phonebookcur:=phonebookcur+1;\r
1653       MainForm.StatusBar1.Panels[0].Text:='Reading '+inttostr(phonebookcur)+'/'+inttostr(phonebookstatus.Free+phonebookstatus.Used);\r
1654       MainForm.ListView1.Items.Add;\r
1655       MainForm.ListView1.Items.Item[phonebookcur-1].Caption:=inttostr(phonebookcur);\r
1656       if (phonebookfound<phonebookstatus.Used) then\r
1657       begin\r
1658         x.MemoryType:=phonebookstatus.MemoryType;\r
1659         x.Location:=phonebookcur;\r
1660         if (x.MemoryType=GMT_ON) then x.Location:=x.Location-1;\r
1661         if (x.MemoryType=GMT_DC) then x.Location:=x.Location-1;\r
1662         if (x.MemoryType=GMT_MC) then x.Location:=x.Location-1;\r
1663         if (x.MemoryType=GMT_RC) then x.Location:=x.Location-1;\r
1664         if GSM_GetMemoryLocation(@x)=0 then\r
1665         begin\r
1666 \r
1667           if (x.MemoryType=GMT_ME) then\r
1668           begin\r
1669             PhoneBackup.PhonePhonebookUsed:=PhoneBackup.PhonePhonebookUsed+1;\r
1670           end;\r
1671 \r
1672           PBKOfflineNumber:=PBKOfflineNumber+1;\r
1673           PhoneBackup.PhonePhonebook[PBKOfflineNumber]:=x;\r
1674 \r
1675           if (x.MemoryType=GMT_SM) then\r
1676           begin\r
1677             PhoneBackup.SIMPhonebookUsed:=PhoneBackup.SIMPhonebookUsed+1;\r
1678             PhoneBackup.SIMPhonebook[PhoneBackup.SIMPhonebookUsed]:=x;\r
1679           end;\r
1680           AddPBKEntry(MainForm.ListView1,x,phonebookcur-1);\r
1681           if (x.Name[1]<>chr(0)) then phonebookfound:=phonebookfound+1;\r
1682         end;\r
1683       end;\r
1684     end else\r
1685     begin\r
1686       MainForm.StatusBar1.Panels[0].Text:=inttostr(phonebookstatus.Used)+'/'+inttostr(phonebookstatus.Free+phonebookstatus.Used)+' entries';\r
1687       EndPhonebookThread;\r
1688     end;\r
1689   end;\r
1690 end;\r
1691 \r
1692 procedure TMainForm.PhonebookTabSheetShow(Sender: TObject);\r
1693 begin\r
1694   if GSMPhoneConnected then ComboBox1.Enabled:=true;\r
1695 end;\r
1696 \r
1697 procedure TMainForm.Button10Click(Sender: TObject);\r
1698 var\r
1699   i:integer;\r
1700   FileHandle:integer;\r
1701 begin\r
1702   if SaveDialog1.Execute then\r
1703   begin\r
1704     FileHandle := FileCreate(SaveDialog1.FileName);\r
1705     for i:=1 to ListView1.Items.Count do\r
1706     begin\r
1707       FileWrite(FileHandle,ListView1.Items.Item[i].Caption, SizeOf(ListView1.Items.Item[i].Caption));\r
1708     end;\r
1709     FileClose(FileHandle);\r
1710   end;\r
1711 end;\r
1712 \r
1713 procedure TMainForm.ComboBox1Change(Sender: TObject);\r
1714 begin\r
1715   if (ComboBox1.ItemIndex<>0) then\r
1716   begin\r
1717     case ComboBox1.ItemIndex of\r
1718       1:phonebookstatus.MemoryType:=GMT_DC;\r
1719       2:phonebookstatus.MemoryType:=GMT_MC;\r
1720       3:phonebookstatus.MemoryType:=GMT_ON;\r
1721       4:phonebookstatus.MemoryType:=GMT_ME;\r
1722       5:phonebookstatus.MemoryType:=GMT_SM;\r
1723       6:phonebookstatus.MemoryType:=GMT_RC;\r
1724     end;\r
1725     if GSM_GetMemoryStatus(@phonebookstatus)<>0 then\r
1726     begin\r
1727       phonebookstatus.Free:=0;\r
1728       phonebookstatus.Used:=30;\r
1729     end;\r
1730     phonebookcur:=0;\r
1731     phonebookfound:=0;\r
1732 \r
1733     PBKOfflineNumber:=0;\r
1734     PhoneBackup.PhonePhonebookUsed:=0;\r
1735     PhoneBackup.SIMPhonebookUsed:=0;\r
1736     if (phonebookstatus.MemoryType=GMT_ME) then\r
1737     begin\r
1738       PhoneBackup.PhonePhonebookSize:=phonebookstatus.Free+phonebookstatus.Used;\r
1739     end;\r
1740     if (phonebookstatus.MemoryType=GMT_SM) then\r
1741     begin\r
1742       PhoneBackup.SIMPhonebookSize:=phonebookstatus.Free+phonebookstatus.Used;\r
1743     end;\r
1744 \r
1745     ComboBox1.Enabled:=false;\r
1746 \r
1747     ReadAllCallerGroups();\r
1748 \r
1749     MainForm.ListView1.Items.Clear;\r
1750 \r
1751     MainForm.Timer2.Enabled:=false;\r
1752     PhonebookThread:=TPhonebookThread.Create(false);\r
1753   end;\r
1754 end;\r
1755 \r
1756 procedure TMainForm.PhonebookTabSheetHide(Sender: TObject);\r
1757 begin\r
1758   EndPhonebookThread;\r
1759 end;\r
1760 \r
1761 //ringtones\r
1762 procedure TMainForm.Button1Click(Sender: TObject);\r
1763 var\r
1764   ring:GSM_Ringtone;\r
1765 begin\r
1766   if OpenDialog1.Execute then\r
1767   begin\r
1768     if GSM_ReadRingtoneFile(PChar(OpenDialog1.FileName),@ring)=0 then\r
1769     begin\r
1770       Edit1.Text:=ring.Name;\r
1771       rington:=ring;\r
1772     end;\r
1773   end;\r
1774 end;\r
1775 \r
1776 procedure EndPlayRingtoneThread;\r
1777 begin\r
1778   if (PlayRingtoneThread<>nil) then\r
1779   begin\r
1780     PlayRingtoneThread.Terminate();\r
1781     GSM_PlayTone(255*255,0);\r
1782     MainForm.Timer2.Enabled:=true;\r
1783     PlayRingtoneThread:=nil;\r
1784   end;\r
1785 end;\r
1786 \r
1787 procedure TPlayRingtoneThread.Execute;\r
1788 begin\r
1789   while not Terminated do\r
1790   begin\r
1791     GSM_PlayNote(rington.notes[ringindex]);\r
1792     ringindex:=ringindex+1;\r
1793     if ringindex>rington.NrNotes then\r
1794       EndPlayRingtoneThread;\r
1795   end;\r
1796 end;\r
1797 \r
1798 procedure TMainForm.Button16Click(Sender: TObject);\r
1799 begin\r
1800   EndPlayRingtoneThread;\r
1801 end;\r
1802 \r
1803 procedure TMainForm.Button3Click(Sender: TObject);\r
1804 begin\r
1805   ringindex:=1;\r
1806   MainForm.Timer2.Enabled:=false;\r
1807   PlayRingtoneThread:=TPlayRingtoneThread.Create(false);\r
1808 end;\r
1809 \r
1810 procedure TMainForm.Button2Click(Sender: TObject);\r
1811 var\r
1812   i:integer;\r
1813   mybinring:GSM_BinRingtone;\r
1814   myring:GSM_Ringtone;\r
1815 begin\r
1816   LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
1817   LogosRingForm.ComboBox3.Visible:=true;\r
1818   LogosRingForm.ComboBox3.Items.Clear();\r
1819   LogosRingForm.ComboBox3.Items.Add('Preview');\r
1820   MainForm.Timer2.Enabled:=false;\r
1821   for i:=1 to GSM_GetModelFeature(FN_RINGNUMBER) do\r
1822   begin\r
1823     mybinring.location:=i;\r
1824     if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
1825     begin\r
1826       if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
1827       begin\r
1828         LogosRingForm.ComboBox3.Items.Add(myring.name);\r
1829       end else\r
1830       begin\r
1831         LogosRingForm.ComboBox3.Items.Add(mybinring.name);\r
1832       end;\r
1833     end else\r
1834       LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
1835   end;\r
1836   MainForm.Timer2.Enabled:=true;\r
1837   LogosRingForm.ComboBox3.ItemIndex:=1;\r
1838   LogosRingForm.ShowModal;\r
1839   if LogosRingForm.ComboBox3.Visible then\r
1840   begin\r
1841     if LogosRingForm.ComboBox3.ItemIndex=0 then\r
1842       rington.location:=255\r
1843     else\r
1844       rington.location:=LogosRingForm.ComboBox3.ItemIndex;\r
1845     MainForm.Timer2.Enabled:=false;\r
1846     GSM_SetRingtone(@rington,@i);\r
1847     MainForm.Timer2.Enabled:=true;\r
1848   end;\r
1849 end;\r
1850 \r
1851 //phone sheet\r
1852 procedure TMainForm.PhoneTabSheetShow(Sender: TObject);\r
1853 var\r
1854   xxxx,xxx:array[1..256] of char;\r
1855   time:GSM_DateTime;\r
1856   siml:GSM_AllSimlocks;\r
1857   i:integer;\r
1858   code:GSM_SecurityCode;\r
1859 begin\r
1860   if GSMPhoneConnected then\r
1861   begin\r
1862     GSM_GetRevision(@xxx);\r
1863     Label9.Caption:=xxx;\r
1864     GSM_GetImei(@xxx);\r
1865     Label7.Caption:=xxx;\r
1866     GSM_GetModel(@xxx);\r
1867     GSM_GetModelNumber(@xxx,@xxxx);\r
1868     Label5.Caption:=xxx;\r
1869     Label5.Caption:=Label5.Caption+' ('+xxxx;\r
1870     Label5.Caption:=Label5.Caption+')';\r
1871     GSM_GetAlarm(1,@time);\r
1872     if time.isSet<>0 then\r
1873       CheckBox1.Checked:=true\r
1874     else\r
1875       CheckBox1.Checked:=false;\r
1876     DateTimePicker1.Time:=EncodeTime(time.Hour,time.Minute,0,0);\r
1877     ListView8.Items.Clear();\r
1878     GSM_GetSimlock(@siml);\r
1879     for i:=1 to 4 do\r
1880     begin\r
1881       MainForm.ListView8.Items.Add;\r
1882       MainForm.ListView8.Items.Item[i-1].Caption:=inttostr(i);\r
1883       MainForm.ListView8.Items.Item[i-1].Subitems.Add(siml.simlocks[i].data);\r
1884       if siml.simlocks[i].enabled=0 then\r
1885         MainForm.ListView8.Items.Item[i-1].Subitems.Add('disabled')\r
1886       else\r
1887       begin\r
1888         if siml.simlocks[i].factory<>0 then\r
1889           MainForm.ListView8.Items.Item[i-1].Subitems.Add('factory')\r
1890         else\r
1891           MainForm.ListView8.Items.Item[i-1].Subitems.Add('user');\r
1892       end;\r
1893       MainForm.ListView8.Items.Item[i-1].Subitems.Add(inttostr(siml.simlocks[i].counter));\r
1894     end;\r
1895     code.Type2:=GSCT_SecurityCode;\r
1896     GSM_GetSecurityCode(@code);\r
1897     Label18.Caption:=code.Code;\r
1898 \r
1899     phoneinfo:=true;\r
1900   end;\r
1901 end;\r
1902 \r
1903 procedure TMainForm.Button9Click(Sender: TObject);\r
1904 begin\r
1905   GSM_Reset(GSM_SoftReset);\r
1906 end;\r
1907 \r
1908 //speed dials\r
1909 procedure TMainForm.SpeedTabSheetShow(Sender: TObject);\r
1910 begin\r
1911   if SpeedThread<>nil then\r
1912   else begin\r
1913     if GSMPhoneConnected then\r
1914     begin\r
1915       MainForm.ListView3.Items.Clear;\r
1916       speednum:=1;\r
1917       MainForm.Timer2.Enabled:=false;\r
1918       SpeedThread:=TSpeedThread.Create(false);\r
1919     end;\r
1920   end;\r
1921 end;\r
1922 \r
1923 procedure EndSpeedThread();\r
1924 begin\r
1925   if (SpeedThread<>nil) then\r
1926   begin\r
1927     SpeedThread.Terminate();\r
1928     MainForm.Timer2.Enabled:=true;\r
1929     SpeedThread:=nil;\r
1930   end;\r
1931 end;\r
1932 \r
1933 procedure TMainForm.SpeedTabSheetHide(Sender: TObject);\r
1934 begin\r
1935   EndSpeedThread();\r
1936 end;\r
1937 \r
1938 procedure TSpeedThread.Execute;\r
1939 var\r
1940   entry1:GSM_SpeedDial;\r
1941   entry2:GSM_PhonebookEntry;\r
1942   i:integer;\r
1943 begin\r
1944   while not Terminated do\r
1945   begin\r
1946     entry1.Number:=speednum;\r
1947     if GSM_GetSpeedDial(@entry1)=0 then\r
1948     begin\r
1949       entry2.Location:=entry1.Location;\r
1950       entry2.MemoryType:=entry1.MemoryType;\r
1951       if entry2.Location=0 then\r
1952         entry2.Location:=speednum;\r
1953       GSM_GetMemoryLocation(@entry2);\r
1954       MainForm.ListView3.Items.Add;\r
1955       MainForm.ListView3.Items.Item[speednum-1].Caption:=inttostr(speednum);\r
1956       MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.Name);\r
1957       if entry2.Number[1]<>chr(0) then\r
1958         MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.Number)\r
1959       else begin\r
1960         for i:=1 to entry2.SubEntriesCount do\r
1961         begin\r
1962           if entry2.SubEntries[i].EntryType=GSM_Number then\r
1963           begin\r
1964             MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.SubEntries[i].Number);\r
1965             break;\r
1966           end;\r
1967         end;\r
1968       end;\r
1969       speednum:=speednum+1;\r
1970     end;\r
1971     if speednum=10 then\r
1972       EndSpeedThread();\r
1973   end;\r
1974 end;\r
1975 \r
1976 //calendar\r
1977 procedure EndCalendarThread();\r
1978 begin\r
1979   if (CalendarThread<>nil) then\r
1980   begin\r
1981     CalendarThread.Terminate();\r
1982     MainForm.Timer2.Enabled:=true;\r
1983     CalendarThread:=nil;\r
1984   end;\r
1985 end;\r
1986 \r
1987 procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
1988 var\r
1989   j,z:integer;\r
1990   found:boolean;\r
1991 begin\r
1992   myview.Items.Add;\r
1993   myview.Items.Item[myview.Items.Count-1].Caption:=inttostr(myview.Items.Count);\r
1994   case note.Type2 of\r
1995     GCN_Reminder:myview.Items.Item[myview.Items.Count-1].Subitems.Add('Reminder');\r
1996     GCN_Call    :myview.Items.Item[myview.Items.Count-1].Subitems.Add('Call');\r
1997     GCN_Meeting :myview.Items.Item[myview.Items.Count-1].Subitems.Add('Meeting');\r
1998     GCN_Birthday:myview.Items.Item[myview.Items.Count-1].Subitems.Add('Birthday');\r
1999   end;\r
2000   myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Text);\r
2001 \r
2002   found:=false;\r
2003   if note.Type2=GCN_Call then\r
2004   begin\r
2005     MainForm.Label14.Caption:=note.Phone;\r
2006     for z:=1 to PBKOfflineNumber do\r
2007     begin\r
2008       if (PhoneBackup.PhonePhonebook[z].Number[1]<>chr(0)) then\r
2009       begin\r
2010         MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[z].Number;\r
2011         if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
2012         begin\r
2013           myview.Items.Item[myview.Items.Count-1].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
2014           found:=true;\r
2015           break;\r
2016         end;\r
2017       end;\r
2018       for j:=1 to PhoneBackup.PhonePhonebook[z].SubEntriesCount do\r
2019       begin\r
2020         MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[z].SubEntries[j].Number;\r
2021         if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
2022         begin\r
2023           myview.Items.Item[myview.Items.Count-1].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
2024           found:=true;\r
2025           break;\r
2026         end;\r
2027       end;\r
2028     end;\r
2029   end;\r
2030   if not found then\r
2031     myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Phone);\r
2032 \r
2033   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
2034   if note.Alarm.Year<>0 then\r
2035      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
2036   else\r
2037      myview.Items.Item[myview.Items.Count-1].Subitems.Add('');\r
2038 end;\r
2039 \r
2040 procedure TCalendarThread.Execute;\r
2041 var\r
2042   note:GSM_CalendarNote;\r
2043 begin\r
2044   while not Terminated do\r
2045   begin\r
2046     note.Location:=calendarnum;\r
2047     if GSM_GetCalendarNote(@note)=0 then\r
2048     begin\r
2049       AddCalendarNote(note,MainForm.ListView4);\r
2050       calendarnum:=calendarnum+1;\r
2051     end else begin\r
2052       readcalendar:=true;\r
2053       EndCalendarThread();\r
2054     end;\r
2055   end;\r
2056 end;\r
2057 \r
2058 procedure TMainForm.CalendarTabSheetShow(Sender: TObject);\r
2059 begin\r
2060   if CalendarThread=nil then\r
2061   begin\r
2062     if GSMPhoneConnected then\r
2063     begin\r
2064       if (GSM_GetModelFeature(FN_Calendar)<>0) then\r
2065       begin\r
2066         ListView4.Enabled:=true;\r
2067         ListView4.Ctl3D:=true;\r
2068         GroupBox8.Ctl3D:=true;\r
2069 \r
2070         MainForm.ListView4.Items.Clear;\r
2071         CalendarNum:=1;\r
2072         MainForm.Timer2.Enabled:=false;\r
2073         readcalendar:=false;\r
2074 \r
2075         ReadPBKOffline;\r
2076 \r
2077         CalendarThread:=TCalendarThread.Create(false);\r
2078       end else\r
2079       begin\r
2080         ListView4.Enabled:=false;\r
2081         ListView4.Ctl3D:=false;\r
2082         GroupBox8.Ctl3D:=false;\r
2083       end;\r
2084     end;\r
2085   end;\r
2086 end;\r
2087 \r
2088 procedure TMainForm.CalendarTabSheetHide(Sender: TObject);\r
2089 begin\r
2090   EndCalendarThread();\r
2091 end;\r
2092 \r
2093 procedure TMainForm.New1Click(Sender: TObject);\r
2094 var i,j:integer;\r
2095 begin\r
2096   setcalendarnote.Location:=MainForm.ListView4.Items.Count+1;\r
2097   CalendarForm.ComboBox1.ItemIndex:=0;\r
2098   CalendarForm.ComboBox1.OnSelect(nil);\r
2099   CalendarForm.Edit2.Text:='';\r
2100   CalendarForm.ComboBox3.Text:='';\r
2101   CalendarForm.DateTimePicker1.DateTime:=Date;\r
2102   CalendarForm.DateTimePicker3.Time:=Time;\r
2103   CalendarForm.DateTimePicker2.DateTime:=Date;\r
2104   CalendarForm.DateTimePicker4.Time:=Time;\r
2105 \r
2106   ReadPBKOffline;\r
2107   CalendarForm.ComboBox3.Items.Clear;\r
2108   CalendarForm.ComboBox3.Sorted:=false;\r
2109   for i:=1 to PBKOfflineNumber do\r
2110   begin\r
2111     if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
2112     begin\r
2113       CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
2114     end else\r
2115     begin\r
2116       for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
2117       begin\r
2118         if PhoneBackup.PhonePhonebook[i].SubEntries[j].EntryType=GSM_Number then\r
2119         begin\r
2120           CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
2121           break;\r
2122         end;\r
2123       end;\r
2124     end;\r
2125   end;\r
2126   CalendarForm.ComboBox3.Sorted:=true;\r
2127 \r
2128   CalendarForm.ShowModal;\r
2129 end;\r
2130 \r
2131 procedure EditCalendarNote;\r
2132 var i,j,z:integer;\r
2133 begin\r
2134   i:=0;\r
2135 \r
2136   CalendarForm.DateTimePicker1.Date:=EncodeDate(setcalendarnote.Time.Year,\r
2137                                                 setcalendarnote.Time.Month,\r
2138                                                 setcalendarnote.Time.Day);\r
2139   CalendarForm.DateTimePicker3.Time:=EncodeTime(setcalendarnote.Time.Hour,\r
2140                                                 setcalendarnote.Time.Minute,\r
2141                                                 setcalendarnote.Time.Second,i);\r
2142   case setcalendarnote.Type2  of\r
2143     GCN_BIRTHDAY:    CalendarForm.ComboBox1.ItemIndex:=0;\r
2144     GCN_CALL:        CalendarForm.ComboBox1.ItemIndex:=1;\r
2145     GCN_MEETING:     CalendarForm.ComboBox1.ItemIndex:=2;\r
2146     GCN_REMINDER:    CalendarForm.ComboBox1.ItemIndex:=3;\r
2147   end;\r
2148 \r
2149   CalendarForm.Edit2.Text:=setcalendarnote.Text;\r
2150   CalendarForm.ComboBox3.Text:=setcalendarnote.Phone;\r
2151 \r
2152   if setcalendarnote.Alarm.Year<>0 then\r
2153   begin\r
2154     CalendarForm.CheckBox1.checked:=true;\r
2155     CalendarForm.DateTimePicker2.Date:=EncodeDate(setcalendarnote.Alarm.Year,\r
2156                                                   setcalendarnote.Alarm.Month,\r
2157                                                   setcalendarnote.Alarm.Day);\r
2158     CalendarForm.DateTimePicker4.Time:=EncodeTime(setcalendarnote.Alarm.Hour,\r
2159                                                   setcalendarnote.Alarm.Minute,\r
2160                                                   setcalendarnote.Alarm.Second,i);\r
2161   end else\r
2162   begin\r
2163     CalendarForm.CheckBox1.checked:=false;\r
2164     CalendarForm.DateTimePicker2.Date:=CalendarForm.DateTimePicker1.Date;\r
2165     CalendarForm.DateTimePicker4.Time:=CalendarForm.DateTimePicker3.Time;\r
2166   end;\r
2167 \r
2168   if GSM_GetModelFeature(FN_CALENDAR)=F_CAL71 then\r
2169   begin\r
2170     if setcalendarnote.Type2<>GCN_BIRTHDAY then\r
2171     begin\r
2172       CalendarForm.CheckBox2.Checked:=True;\r
2173       case setcalendarnote.Recurrance of\r
2174         0     :begin\r
2175                  CalendarForm.CheckBox2.Checked:=False;\r
2176                  CalendarForm.ComboBox2.Enabled:=False;\r
2177                end;\r
2178         1*24  :CalendarForm.ComboBox2.ItemIndex:=0;\r
2179         7*24  :CalendarForm.ComboBox2.ItemIndex:=1;\r
2180         14*24 :CalendarForm.ComboBox2.ItemIndex:=2;\r
2181         365*24:CalendarForm.ComboBox2.ItemIndex:=3;\r
2182       end;\r
2183       CalendarForm.RadioButton1.Enabled:=False;\r
2184       CalendarForm.RadioButton2.Enabled:=False;\r
2185     end else begin\r
2186       CalendarForm.ComboBox2.ItemIndex:=0;\r
2187       CalendarForm.CheckBox2.Checked:=False;\r
2188       CalendarForm.ComboBox2.Enabled:=False;\r
2189       CalendarForm.RadioButton1.Enabled:=True;\r
2190       CalendarForm.RadioButton2.Enabled:=True;\r
2191       if setcalendarnote.AlarmType=1 then\r
2192         CalendarForm.RadioButton1.Checked:=True\r
2193       else\r
2194         CalendarForm.RadioButton2.Checked:=True;\r
2195     end;\r
2196   end;\r
2197   CalendarForm.ComboBox1.OnSelect(nil);\r
2198 \r
2199   ReadPBKOffline;\r
2200   CalendarForm.ComboBox3.Items.Clear;\r
2201   CalendarForm.ComboBox3.Sorted:=false;\r
2202   for i:=1 to PBKOfflineNumber do\r
2203   begin\r
2204     if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
2205     begin\r
2206       CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
2207     end else\r
2208     begin\r
2209       for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
2210       begin\r
2211         if PhoneBackup.PhonePhonebook[i].SubEntries[j].EntryType=GSM_Number then\r
2212         begin\r
2213           CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
2214           break;\r
2215         end;\r
2216       end;\r
2217     end;\r
2218   end;\r
2219   CalendarForm.ComboBox3.Sorted:=true;\r
2220 \r
2221   if setcalendarnote.Type2=GCN_Call then\r
2222   begin\r
2223     MainForm.Label14.Caption:=setcalendarnote.Phone;\r
2224     for i:=1 to PBKOfflineNumber do\r
2225     begin\r
2226       if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
2227       begin\r
2228         MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].Number;\r
2229         if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
2230         begin\r
2231           MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
2232           for z:=0 to CalendarForm.ComboBox3.Items.Count do\r
2233           begin\r
2234             if (MainForm.Label14.Caption=CalendarForm.ComboBox3.Items[z]) then\r
2235             begin\r
2236               CalendarForm.ComboBox3.ItemIndex:=z;\r
2237               break;\r
2238             end;\r
2239           end;\r
2240           break;\r
2241         end;\r
2242       end;\r
2243       for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
2244       begin\r
2245         MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].SubEntries[j].Number;\r
2246         if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
2247         begin\r
2248           MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
2249           for z:=0 to CalendarForm.ComboBox3.Items.Count do\r
2250           begin\r
2251             if (MainForm.Label14.Caption=CalendarForm.ComboBox3.Items[z]) then\r
2252             begin\r
2253               CalendarForm.ComboBox3.ItemIndex:=z;\r
2254               break;\r
2255             end;\r
2256           end;\r
2257           break;\r
2258         end;\r
2259       end;\r
2260     end;\r
2261   end;\r
2262 \r
2263   CalendarForm.ShowModal;\r
2264 end;\r
2265 \r
2266 procedure TMainForm.Edit3Click(Sender: TObject);\r
2267 begin\r
2268   setcalendarnote.Location:=calendarselect;\r
2269 \r
2270   mainform.Timer2.Enabled:=false;\r
2271   GSM_GetCalendarNote(@setcalendarnote);\r
2272   mainform.Timer2.Enabled:=true;\r
2273 \r
2274   EditCalendarNote;\r
2275 end;\r
2276 \r
2277 procedure TMainForm.ListView4SelectItem(Sender: TObject; Item: TListItem;\r
2278   Selected: Boolean);\r
2279 begin\r
2280   if Selected then\r
2281   begin\r
2282     calendarselect:=Item.Index+1;\r
2283   end;\r
2284 end;\r
2285 \r
2286 procedure TMainForm.Delete1Click(Sender: TObject);\r
2287 begin\r
2288 //  if listview4.selected<>nil then\r
2289 //  begin\r
2290     if MessageDlg('Do you want to delete this calendar note ?',\r
2291        mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
2292     begin\r
2293       setcalendarnote.Location:=calendarselect;\r
2294       GSM_DeleteCalendarNote(@setcalendarnote);\r
2295       MainForm.CalendarTabSheetShow(nil);\r
2296     end;\r
2297 //  end;\r
2298 end;\r
2299 \r
2300 //caller groups\r
2301 procedure EndCallerThread();\r
2302 begin\r
2303   if (CallerThread<>nil) then\r
2304   begin\r
2305     CallerThread.Terminate();\r
2306     CallerThread:=nil;\r
2307   end;\r
2308 end;\r
2309 \r
2310 procedure TCallerThread.Execute;\r
2311 begin\r
2312   while not Terminated do\r
2313   begin\r
2314     ReadCallerGroup();\r
2315     if callerinit then EndCallerThread();\r
2316   end;\r
2317 end;\r
2318 \r
2319 procedure TMainForm.CallerTabSheetShow(Sender: TObject);\r
2320 begin\r
2321   if CallerThread=nil then\r
2322   begin\r
2323     if GSMPhoneConnected then\r
2324     begin\r
2325       MainForm.ListView5.Items.Clear;\r
2326       callerinit:=false;\r
2327       callernum:=1;\r
2328       CallerThread:=TCallerThread.Create(false);\r
2329     end;\r
2330   end;\r
2331 end;\r
2332 \r
2333 procedure TMainForm.CallerTabSheetHide(Sender: TObject);\r
2334 begin\r
2335   EndCallerThread();\r
2336 end;\r
2337 \r
2338 //smsc\r
2339 procedure TMainForm.SMSCTabSheetShow(Sender: TObject);\r
2340 begin\r
2341   if SMSCThread<>nil then\r
2342   else begin\r
2343     if GSMPhoneConnected then\r
2344     begin\r
2345       MainForm.ListView6.Items.Clear;\r
2346       smscinit:=false;\r
2347       smscnum:=1;\r
2348       MainForm.Timer2.Enabled:=false;\r
2349       SMSCThread:=TSMSCThread.Create(false);\r
2350     end;\r
2351   end;\r
2352 end;\r
2353 \r
2354 procedure SMSCTabHide();\r
2355 begin\r
2356   if (SMSCThread<>nil) then\r
2357   begin\r
2358     SMSCThread.Terminate();\r
2359     MainForm.Timer2.Enabled:=true;\r
2360     SMSCThread:=nil;\r
2361   end;\r
2362 end;\r
2363 \r
2364 procedure TMainForm.SMSCTabSheetHide(Sender: TObject);\r
2365 begin\r
2366   SMSCTabHide();\r
2367 end;\r
2368 \r
2369 procedure ReadSMSC();\r
2370 var\r
2371   smsc:GSM_MessageCenter;\r
2372 begin\r
2373     smsc.No:=smscnum;\r
2374     MainForm.StatusBar1.Panels[0].Text:='Reading SMSC '+inttostr(smscnum);\r
2375     if GSM_GetSMSCenter(@smsc)=0 then\r
2376     begin\r
2377       SMSC2[smscnum]:=smsc;\r
2378       MainForm.ListView6.Items.Add;\r
2379       MainForm.ListView6.Items.Item[smscnum-1].Caption:=inttostr(smscnum);\r
2380       MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.name);\r
2381       MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.number);\r
2382       case smsc.Validity of\r
2383         GSMV_1_Hour   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 hour');\r
2384         GSMV_6_Hours  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('6 hours');\r
2385         GSMV_24_Hours : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 day');\r
2386         GSMV_72_Hours : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('3 days');\r
2387         GSMV_1_Week   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 week');\r
2388         GSMV_Max_Time : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('max. time');\r
2389       else\r
2390         MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('unknown');\r
2391       end;\r
2392       case smsc.Format of\r
2393         GSMF_Text   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('text');\r
2394         GSMF_Fax    : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('fax');\r
2395         GSMF_Voice  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('voice');\r
2396         GSMF_ERMES  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('ERMES');\r
2397         GSMF_Paging : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('paging');\r
2398         GSMF_UCI    : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('UCI');\r
2399         GSMF_Email  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('email');\r
2400         GSMF_X400   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('X400');\r
2401       else\r
2402         MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('unknown');\r
2403       end;\r
2404       MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.defaultrecipient);\r
2405       smscnum:=smscnum+1;\r
2406     end else\r
2407     begin\r
2408       MainForm.StatusBar1.Panels[0].Text:='';\r
2409       smscinit:=true;\r
2410     end;\r
2411 end;\r
2412 \r
2413 procedure TSMSCThread.Execute;\r
2414 begin\r
2415   while not Terminated do\r
2416   begin\r
2417     ReadSMSC();\r
2418     if smscinit then SMSCTabHide();\r
2419   end;\r
2420 end;\r
2421 \r
2422 //profiles\r
2423 procedure ProfileTabHide();\r
2424 begin\r
2425   if (ProfileThread<>nil) then\r
2426   begin\r
2427     ProfileThread.Terminate();\r
2428     MainForm.Timer2.Enabled:=true;\r
2429     ProfileThread:=nil;\r
2430   end;\r
2431 end;\r
2432 \r
2433 procedure TProfileThread.Execute;\r
2434 var\r
2435   profile:GSM_Profile;\r
2436 begin\r
2437   while not Terminated do\r
2438   begin\r
2439     profile.number:=profilenum-1;\r
2440     GSM_GetProfile(@profile);\r
2441     MainForm.ListView7.Items.Add;\r
2442     MainForm.ListView7.Items.Item[profilenum-1].Caption:=inttostr(profilenum);\r
2443     MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(profile.name);\r
2444     case profile.CallAlert of\r
2445       PROFILE_CALLALERT_RINGING  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ringing');\r
2446       PROFILE_CALLALERT_BEEPONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('beep once');\r
2447       PROFILE_CALLALERT_OFF      :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2448       PROFILE_CALLALERT_RINGONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ring once');\r
2449       PROFILE_CALLALERT_ASCENDING:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ascending');\r
2450       PROFILE_CALLALERT_CALLERGROUPS:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('caller groups');\r
2451     end;\r
2452     MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(inttostr(profile.Ringtone));\r
2453     case profile.Volume of\r
2454       PROFILE_VOLUME_LEVEL1:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 1');\r
2455       PROFILE_VOLUME_LEVEL2:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 2');\r
2456       PROFILE_VOLUME_LEVEL3:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 3');\r
2457       PROFILE_VOLUME_LEVEL4:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 4');\r
2458       PROFILE_VOLUME_LEVEL5:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 5');\r
2459     end;\r
2460     case profile.Vibration of\r
2461       PROFILE_VIBRATION_OFF  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2462       PROFILE_VIBRATION_ON   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('on');\r
2463       PROFILE_VIBRATION_FIRST:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('vibrate first');\r
2464     end;\r
2465     case profile.MessageTone of\r
2466       PROFILE_MESSAGE_NOTONE   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('no tone');\r
2467       PROFILE_MESSAGE_STANDARD :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('standard');\r
2468       PROFILE_MESSAGE_SPECIAL  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('special');\r
2469       PROFILE_MESSAGE_BEEPONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('beep once');\r
2470       PROFILE_MESSAGE_ASCENDING:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ascending');\r
2471     end;\r
2472     case profile.KeypadTone of\r
2473       PROFILE_KEYPAD_OFF   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2474       PROFILE_KEYPAD_LEVEL1:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 1');\r
2475       PROFILE_KEYPAD_LEVEL2:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 2');\r
2476       PROFILE_KEYPAD_LEVEL3:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 3');\r
2477     end;\r
2478     case profile.WarningTone of\r
2479      PROFILE_WARNING_OFF:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
2480      PROFILE_WARNING_ON :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('on');\r
2481     end;\r
2482     MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(inttostr(profile.CallerGroups));\r
2483     profilenum:=profilenum+1;\r
2484     case GSM_GetModelFeature(FN_PROFILES) of\r
2485       F_PROF61:if profilenum=8 then ProfileTabHide();\r
2486       F_PROF51:if profilenum=3 then ProfileTabHide();\r
2487       F_PROF33:if profilenum=7 then ProfileTabHide();\r
2488     end;\r
2489   end;\r
2490 end;\r
2491 \r
2492 procedure TMainForm.ProfileTabSheetShow(Sender: TObject);\r
2493 begin\r
2494   if ProfileThread<>nil then\r
2495   else begin\r
2496     if GSMPhoneConnected then\r
2497     begin\r
2498       MainForm.ListView7.Items.Clear;\r
2499       profilenum:=1;\r
2500       MainForm.Timer2.Enabled:=false;\r
2501       ProfileThread:=TProfileThread.Create(false);\r
2502     end;\r
2503   end;\r
2504 end;\r
2505 \r
2506 procedure TMainForm.ProfileTabSheetHide(Sender: TObject);\r
2507 begin\r
2508   ProfileTabHide();\r
2509 end;\r
2510 \r
2511 //sms\r
2512 procedure AddSMSInfo(myobject:TListView;mysms:GSM_SMSMessage);\r
2513 var number,i,z:integer;\r
2514     found:boolean;\r
2515 begin\r
2516   number:=myobject.Items.Count;\r
2517 \r
2518   myobject.Items.Add;\r
2519   myobject.Items.Item[number].Caption:=inttostr(number+1);\r
2520   myobject.Items.Item[number].Subitems.Add(mysms.MessageText);\r
2521 \r
2522   found:=false;\r
2523   for z:=1 to PBKOfflineNumber do\r
2524   begin\r
2525     mainform.Label14.Caption:=mysms.Sender;\r
2526     mainform.Label16.Caption:=PhoneBackup.PhonePhonebook[z].Number;\r
2527     if (PhoneBackup.PhonePhonebook[z].Number[1]<>chr(0)) then\r
2528     begin\r
2529       if (mainform.Label14.Caption=mainform.Label16.Caption) then\r
2530       begin\r
2531         myobject.Items.Item[number].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
2532         found:=true;\r
2533         break;\r
2534       end;\r
2535     end;\r
2536     for i:=1 to PhoneBackup.PhonePhonebook[z].SubEntriesCount do\r
2537     begin\r
2538       mainform.Label16.Caption:=PhoneBackup.PhonePhonebook[z].SubEntries[i].Number;\r
2539       if (PhoneBackup.PhonePhonebook[z].SubEntries[i].EntryType=GSM_Number)\r
2540          and (mainform.Label14.Caption=mainform.Label16.Caption) then\r
2541       begin\r
2542         myobject.Items.Item[number].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
2543         found:=true;\r
2544         break;\r
2545       end;\r
2546     end;\r
2547     if found then break;\r
2548   end;\r
2549   if not found then myobject.Items.Item[number].Subitems.Add(mysms.Sender);\r
2550 \r
2551   if mysms.SMSData=1 then\r
2552   begin\r
2553     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
2554     myobject.Items.Item[number].Subitems.Add(inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2));\r
2555   end;\r
2556 end;\r
2557 \r
2558 procedure DisplaySMSfolder();\r
2559 var\r
2560   i:integer;\r
2561 begin\r
2562   MainForm.ListView2.Items.Clear();\r
2563   i:=0;\r
2564   while i<>SMSstatus.Number do\r
2565   begin\r
2566     i:=i+1;\r
2567     if (SMSfolders.Folder[SMS[i].folder].Name=\r
2568         SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
2569     begin\r
2570       AddSMSInfo(MainForm.ListView2,SMS[i]);\r
2571     end;\r
2572   end;\r
2573 end;\r
2574 \r
2575 procedure SendSaveSMS(mysms:GSM_SMSMessage);\r
2576 var i,j,z:integer;\r
2577 begin\r
2578   //text\r
2579   SMSEditForm.Memo1.Text:=mysms.MessageText;\r
2580 \r
2581   //number\r
2582   SMSEditForm.ComboBox9.Text:=mysms.sender;\r
2583   AddSMSEditSenderList;\r
2584   MainForm.Label14.Caption:=mysms.sender;\r
2585   for i:=1 to PBKOfflineNumber do\r
2586   begin\r
2587     if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
2588     begin\r
2589       MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].Number;\r
2590       if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
2591       begin\r
2592         MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
2593         for z:=0 to SMSEditForm.ComboBox9.Items.Count do\r
2594         begin\r
2595           if (MainForm.Label14.Caption=SMSEditForm.ComboBox9.Items[z]) then\r
2596           begin\r
2597             SMSEditForm.ComboBox9.ItemIndex:=z;\r
2598             break;\r
2599           end;\r
2600         end;\r
2601         break;\r
2602       end;\r
2603     end;\r
2604     for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
2605     begin\r
2606       MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].SubEntries[j].Number;\r
2607       if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
2608       begin\r
2609         MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
2610         for z:=0 to SMSEditForm.ComboBox9.Items.Count do\r
2611         begin\r
2612           if (MainForm.Label14.Caption=SMSEditForm.ComboBox9.Items[z]) then\r
2613           begin\r
2614             SMSEditForm.ComboBox9.ItemIndex:=z;\r
2615             break;\r
2616           end;\r
2617         end;\r
2618         break;\r
2619       end;\r
2620     end;\r
2621   end;\r
2622 \r
2623   //sms folder\r
2624   SMSEditForm.ComboBox1.Items.Clear;\r
2625   for i:=0 to MainForm.ComboBox3.items.count-1 do\r
2626   begin\r
2627     SMSEditForm.ComboBox1.Items.Add(MainForm.ComboBox3.Items.Strings[i]);\r
2628   end;\r
2629   SMSEditForm.ComboBox1.ItemIndex:=MainForm.ComboBox3.ItemIndex;\r
2630 \r
2631   //smsc\r
2632   SetSMSC(1);\r
2633   SMSEditForm.ComboBox2.Items.Clear;\r
2634   SMSEditForm.ComboBox2.Items.Add('custom');\r
2635   for i:=1 to smscnum-1 do\r
2636   begin\r
2637     if SMSC2[i].Name[1]<>chr(0) then\r
2638       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2639     else\r
2640       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2641   end;\r
2642   SMSEditForm.ComboBox2.ItemIndex:=0;\r
2643 \r
2644   if mysms.ReplyViaSameSMSC<>0 then\r
2645     SMSEditForm.CheckBox3.Checked:=true\r
2646   else\r
2647     SMSEditForm.CheckBox3.Checked:=false;\r
2648 \r
2649   if mysms.Class2=1 then\r
2650     SMSEditForm.CheckBox1.Checked:=true\r
2651   else\r
2652     SMSEditForm.CheckBox1.Checked:=false;\r
2653 \r
2654   if mysms.status=GSS_SENTREAD then\r
2655     SMSEditForm.CheckBox4.Checked:=true\r
2656   else\r
2657     SMSEditForm.CheckBox4.Checked:=false;\r
2658 \r
2659   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2660   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2661   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2662   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2663   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
2664   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
2665   SMSEditForm.PbkSMSTabSheet.TabVisible:=false;\r
2666   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
2667 \r
2668   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2669   begin\r
2670     SMSEditForm.edit3.Visible:=true;\r
2671     SMSEditForm.label14.Visible:=true;\r
2672   end else\r
2673   begin\r
2674     SMSEditForm.edit3.Visible:=false;\r
2675     SMSEditForm.label14.Visible:=false;\r
2676   end;\r
2677 \r
2678   SMSEditForm.ShowModal;\r
2679 end;\r
2680 \r
2681 procedure TMainForm.Edit4Click(Sender: TObject);\r
2682 begin\r
2683   setsmslocation:=SMS[smsnumindex].Location;\r
2684   SendSaveSMS(SMS[smsnumindex]);\r
2685 end;\r
2686 \r
2687 procedure TMainForm.New2Click(Sender: TObject);\r
2688 var i:integer;\r
2689 begin\r
2690   setsmslocation:=0;\r
2691 \r
2692   //sms text\r
2693   SMSEditForm.Memo1.Text:='';\r
2694 \r
2695   //number\r
2696   SMSEditForm.ComboBox9.Text:='';\r
2697   AddSMSEditSenderList;\r
2698 \r
2699   //folders\r
2700   SMSEditForm.ComboBox1.Items.Clear;\r
2701   for i:=0 to ComboBox3.items.count-1 do\r
2702   begin\r
2703     SMSEditForm.ComboBox1.Items.Add(ComboBox3.Items.Strings[i]);\r
2704   end;\r
2705   SMSEditForm.ComboBox1.ItemIndex:=ComboBox3.ItemIndex;\r
2706 \r
2707   //smsc\r
2708   SetSMSC(1);\r
2709   SMSEditForm.ComboBox2.Items.Clear;\r
2710   SMSEditForm.ComboBox2.Items.Add('custom');\r
2711   for i:=1 to smscnum-1 do\r
2712   begin\r
2713     if SMSC2[i].Name[1]<>chr(0) then\r
2714       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
2715     else\r
2716       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
2717   end;\r
2718   SMSEditForm.ComboBox2.ItemIndex:=1;\r
2719 \r
2720   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
2721   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
2722   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
2723   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
2724   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
2725   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
2726   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
2727   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
2728 \r
2729   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
2730   begin\r
2731     SMSEditForm.edit3.Visible:=true;\r
2732     SMSEditForm.label14.Visible:=true;\r
2733   end else\r
2734   begin\r
2735     SMSEditForm.edit3.Visible:=false;\r
2736     SMSEditForm.label14.Visible:=false;\r
2737   end;\r
2738 \r
2739   SMSEditForm.ShowModal;\r
2740 end;\r
2741 \r
2742 procedure EndSMSThread;\r
2743 begin\r
2744   if (SMSThread<>nil) then\r
2745   begin\r
2746     SMSThread.Terminate();\r
2747     MainForm.Timer2.Enabled:=true;\r
2748     SMSThread:=nil;\r
2749   end;\r
2750 end;\r
2751 \r
2752 procedure TSMSThread.Execute;\r
2753 var\r
2754   error:integer;\r
2755 begin\r
2756   while not Terminated do\r
2757   begin\r
2758     if SMSnum<>SMSstatus.Number then\r
2759     begin\r
2760       if GSM_GetModelFeature(FN_SMS)=F_SMS71 then\r
2761         SMS[SMSnum+1].Location:=0\r
2762       else\r
2763         SMS[SMSnum+1].Location:=smsnum2;\r
2764       error:=GSM_GetSMSMessage(@SMS[SMSnum+1]);\r
2765       if error=0 then\r
2766       begin\r
2767         if SMS[SMSnum+1].Time.year<1900 then\r
2768         begin\r
2769           SMS[SMSnum+1].Time.year:=SMS[SMSnum+1].Time.year+2000;\r
2770         end;\r
2771         if (SMSfolders.Folder[SMS[SMSnum+1].folder].Name=\r
2772             SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
2773         begin\r
2774           AddSMSInfo(MainForm.ListView2,SMS[SMSnum+1]);\r
2775         end;\r
2776         SMSnum:=SMSnum+1;\r
2777       end;\r
2778       if error=GE_SMSTOOLONG then\r
2779       begin\r
2780         SMSstatus.Number:=SMSstatus.Number-1;\r
2781       end;\r
2782 \r
2783       smsnum2:=smsnum2+1;\r
2784     end else\r
2785     begin\r
2786       MainForm.ComboBox3.Enabled:=true;\r
2787       EndSMSThread;\r
2788     end;\r
2789   end;\r
2790 end;\r
2791 \r
2792 procedure TMainForm.SMSTabSheetShow(Sender: TObject);\r
2793 var\r
2794   i:integer;\r
2795 begin\r
2796   MainForm.ComboBox3.Enabled:=false;\r
2797   if GSMPhoneConnected then\r
2798   begin\r
2799     if smscinit=false then\r
2800     begin\r
2801       MainForm.ListView6.Items.Clear;\r
2802       smscnum:=1;\r
2803       while true do\r
2804       begin\r
2805         ReadSMSC;\r
2806         if smscinit then break;\r
2807       end;\r
2808     end;\r
2809 \r
2810     MainForm.Memo1.Lines.Clear;\r
2811     MainForm.Memo2.Lines.Clear;\r
2812     GSM_GetSMSFolders(@SMSfolders);\r
2813     MainForm.ComboBox3.Items.Clear();\r
2814     for i:=1 to SMSfolders.number do\r
2815     begin\r
2816       MainForm.ComboBox3.Items.Add(SMSfolders.folder[i].Name);\r
2817     end;\r
2818     MainForm.ComboBox3.ItemIndex:=0;\r
2819 \r
2820     SMSnum:=0;\r
2821     GSM_GetSMSStatus(@SMSstatus);\r
2822     smsnum2:=1;\r
2823     MainForm.ListView2.Items.Clear;\r
2824     MainForm.Timer2.Enabled:=false;\r
2825     ReadPBKOffline;\r
2826     SMSThread:=TSMSThread.Create(false);\r
2827   end;\r
2828 end;\r
2829 \r
2830 procedure TMainForm.ComboBox3Change(Sender: TObject);\r
2831 begin\r
2832   ReadPBKOffline;\r
2833   DisplaySMSfolder();\r
2834 end;\r
2835 \r
2836 procedure AddSMSDescription(mysms:GSM_SMSMessage;firstmemo:TMemo;secondmemo:TMemo);\r
2837 var\r
2838   ch:tcaption;\r
2839   z:integer;\r
2840 begin\r
2841   firstmemo.Lines.Clear;\r
2842   firstmemo.Lines.Add(pchar('Sender: '+mysms.Sender));\r
2843 \r
2844   if mysms.SMSData=1 then\r
2845   begin\r
2846     ch:=mysms.MessageCenter.Number;\r
2847     MainForm.Label14.Caption:=mysms.MessageCenter.Number;\r
2848     if (smscinit) and (GSMPhoneConnected) then\r
2849     begin\r
2850       for z:=1 to smscnum-1 do\r
2851       begin\r
2852         MainForm.Label16.Caption:=SMSC2[z].Number;\r
2853         if MainForm.Label14.Caption=MainForm.Label16.caption then\r
2854           ch:=SMSC2[z].Name;\r
2855         end;\r
2856       end;\r
2857       if mysms.ReplyViaSameSMSC<>0 then\r
2858          ch:=' (reply via the same SMSC) '+ch;\r
2859          firstmemo.Lines.Add('SMSC: '+ch);\r
2860 \r
2861         if (mysms.type2=GST_DR) and (mysms.MessageText[1]='D') then\r
2862         begin\r
2863           firstmemo.Lines.Add(pchar('Date & time: '+\r
2864             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
2865             inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2))+\r
2866             '   SMSC response date & time: '+\r
2867             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
2868             inttostr2(mysms.SMSCTime.Hour,2)+':'+inttostr2(mysms.SMSCTime.Minute,2)+':'+inttostr2(mysms.SMSCTime.Second,2));\r
2869         end else\r
2870         begin\r
2871           firstmemo.Lines.Add(pchar('Date & time: '+\r
2872             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
2873             inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2)));\r
2874         end;\r
2875       end;\r
2876 \r
2877   secondmemo.Lines.Clear;\r
2878   secondmemo.Lines.Add(pchar(''+mysms.MessageText));\r
2879 end;\r
2880 \r
2881 procedure TMainForm.ListView2SelectItem(Sender: TObject; Item: TListItem;\r
2882   Selected: Boolean);\r
2883 var\r
2884   i:integer;\r
2885   j:integer;\r
2886 begin\r
2887   j:=0;\r
2888   i:=0;\r
2889   while i<>SMSstatus.Number do\r
2890   begin\r
2891     i:=i+1;\r
2892     if (SMSfolders.Folder[SMS[i].folder].Name=\r
2893         SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
2894     begin\r
2895       if (j=MainForm.ListView2.ItemIndex) then\r
2896       begin\r
2897         smsnumindex:=i;\r
2898         AddSMSDescription(SMS[i],MainForm.Memo1,MainForm.Memo2);\r
2899       end;\r
2900       j:=j+1;\r
2901     end;\r
2902   end;\r
2903 end;\r
2904 \r
2905 procedure TMainForm.SMSTabSheetHide(Sender: TObject);\r
2906 begin\r
2907   EndSMSThread;\r
2908 end;\r
2909 \r
2910 procedure TMainForm.SMSPopupMenuPopup(Sender: TObject);\r
2911 begin\r
2912   New2.Enabled:=false;\r
2913   Edit4.Enabled:=false;\r
2914   CopyToPC1.Enabled:=false;\r
2915   Delete2.Enabled:=false;\r
2916   if GSMPhoneConnected then\r
2917   begin\r
2918     New2.Enabled:=true;\r
2919     if listview2.selected<>nil then\r
2920     begin\r
2921       Edit4.Enabled:=true;\r
2922       CopyToPC1.Enabled:=true;\r
2923       Delete2.Enabled:=true;\r
2924     end;\r
2925   end;\r
2926 end;\r
2927 \r
2928 procedure TMainForm.CalendarPopupMenuPopup(Sender: TObject);\r
2929 begin\r
2930   if GSMPhoneConnected then\r
2931   begin\r
2932     New1.Enabled:=true;\r
2933     if listview4.selected<>nil then\r
2934     begin\r
2935       Edit3.Enabled:=true;\r
2936       Delete1.Enabled:=true;\r
2937       SMS1.Enabled:=true;\r
2938       CopyToPC2.Enabled:=true;\r
2939     end else\r
2940     begin\r
2941       Edit3.Enabled:=false;\r
2942       Delete1.Enabled:=false;\r
2943       SMS1.Enabled:=false;\r
2944       CopyToPC2.Enabled:=false;\r
2945     end;\r
2946   end else\r
2947   begin\r
2948     New1.Enabled:=false;\r
2949     Delete1.Enabled:=false;\r
2950     Edit3.Enabled:=false;\r
2951     SMS1.Enabled:=false;\r
2952     CopyToPC2.Enabled:=false;\r
2953   end;\r
2954 end;\r
2955 \r
2956 procedure TMainForm.Edit1Change(Sender: TObject);\r
2957 var\r
2958   i:integer;\r
2959 begin\r
2960   for i:=1 to 20 do\r
2961     rington.name[i]:=chr(0);\r
2962   for i:=1 to strlen(pchar(edit1.text)) do\r
2963     rington.name[i]:=edit1.text[i];\r
2964 end;\r
2965 \r
2966 procedure TMainForm.Delete2Click(Sender: TObject);\r
2967 var\r
2968   mysms:GSM_SMSMessage;\r
2969 begin\r
2970   if MessageDlg('Do you want to delete this SMS ?',\r
2971       mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
2972   begin\r
2973     mysms.Location:=SMS[smsnumindex].Location;\r
2974     MainForm.Timer2.Enabled:=false;\r
2975     GSM_DeleteSMSMessage(@mysms);\r
2976     MainForm.Timer2.Enabled:=true;\r
2977     MainForm.SMSTabSheetShow(nil);\r
2978   end;\r
2979 end;\r
2980 \r
2981 procedure TMainForm.Edit5Click(Sender: TObject);\r
2982 begin\r
2983 //  if listview6.selected<>nil then\r
2984 //  begin\r
2985       smsceditform.edit1.Text:=smsc2[smscselectitem].name;\r
2986       smsceditform.edit2.Text:=smsc2[smscselectitem].number;\r
2987       smsceditform.edit3.Text:=smsc2[smscselectitem].DefaultRecipient;\r
2988       case smsc2[smscselectitem].Validity of\r
2989         GSMV_1_Hour   : SMSCEditForm.combobox1.itemindex:=0;\r
2990         GSMV_6_Hours  : SMSCEditForm.combobox1.itemindex:=1;\r
2991         GSMV_24_Hours : SMSCEditForm.combobox1.itemindex:=2;\r
2992         GSMV_72_Hours : SMSCEditForm.combobox1.itemindex:=3;\r
2993         GSMV_1_Week   : SMSCEditForm.combobox1.itemindex:=4;\r
2994       else\r
2995         SMSCEditForm.combobox1.itemindex:=5;\r
2996       end;\r
2997       case smsc2[smscselectitem].Format of\r
2998         GSMF_Text   : SMSCEditForm.combobox2.itemindex:=0;\r
2999         GSMF_Fax    : SMSCEditForm.combobox2.itemindex:=1;\r
3000         GSMF_Email  : SMSCEditForm.combobox2.itemindex:=2;\r
3001       else\r
3002         SMSCEditForm.combobox2.itemindex:=3;\r
3003       end;\r
3004   SMSCEditForm.ShowModal;\r
3005 //  end;\r
3006 end;\r
3007 \r
3008 procedure TMainForm.SMSCPopupMenuPopup(Sender: TObject);\r
3009 begin\r
3010   if GSMPhoneConnected then\r
3011   begin\r
3012     if listview6.selected<>nil then\r
3013       Edit5.Enabled:=true\r
3014     else\r
3015       Edit5.Enabled:=false;\r
3016   end else\r
3017   begin\r
3018     Edit5.Enabled:=false;\r
3019   end;\r
3020 \r
3021 end;\r
3022 \r
3023 procedure TMainForm.ListView6SelectItem(Sender: TObject; Item: TListItem;\r
3024   Selected: Boolean);\r
3025 begin\r
3026   if Selected then\r
3027   begin\r
3028     smscselectitem:=Item.Index+1;\r
3029   end;\r
3030 end;\r
3031 \r
3032 procedure TMainForm.ListView1SelectItem(Sender: TObject; Item: TListItem;\r
3033   Selected: Boolean);\r
3034 begin\r
3035  if Selected then\r
3036   begin\r
3037     pbknumberentry:=Item.Index+1;\r
3038   end;\r
3039 end;\r
3040 \r
3041 procedure TMainForm.Edit7Click(Sender: TObject);\r
3042 var\r
3043   current:integer;\r
3044   i:integer;\r
3045 begin\r
3046 //  if listview1.Selected<>nil then\r
3047 //  begin\r
3048     pbk.Location:=pbknumberentry;\r
3049     case ComboBox1.ItemIndex of\r
3050       1:begin pbk.MemoryType:=GMT_DC;pbk.Location:=pbk.Location-1;end;\r
3051       2:begin pbk.MemoryType:=GMT_MC;pbk.Location:=pbk.Location-1;end;\r
3052       3:begin pbk.MemoryType:=GMT_ON;pbk.Location:=pbk.Location-1;end;\r
3053       4:pbk.MemoryType:=GMT_ME;\r
3054       5:pbk.MemoryType:=GMT_SM;\r
3055       6:begin pbk.MemoryType:=GMT_RC;pbk.Location:=pbk.Location-1;end;\r
3056     end;\r
3057     GSM_GetMemoryLocation(@pbk);\r
3058     current:=0;\r
3059     pbkform.ListView1.Items.Clear;\r
3060     pbkform.ListView1.Items.Add;\r
3061     pbkform.ListView1.Items.Item[0].Caption:='Name';\r
3062     pbkform.ListView1.Items.Item[0].SubItems.Add(pbk.name);\r
3063     if (pbk.Number[1]<>chr(0)) then\r
3064     begin\r
3065       current:=current+1;\r
3066       pbkform.ListView1.Items.Add;\r
3067       pbkform.ListView1.Items.Item[current].Caption:='Number';\r
3068       pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.number);\r
3069     end;\r
3070     for i:=1 to pbk.SubEntriesCount do\r
3071     begin\r
3072       current:=current+1;\r
3073       pbkform.ListView1.Items.Add;\r
3074       case pbk.SubEntries[i].EntryType of\r
3075         GSM_Number:case pbk.SubEntries[i].NumberType of\r
3076                      GSM_General :pbkform.ListView1.Items.Item[current].Caption:='General number';\r
3077                      GSM_General2:pbkform.ListView1.Items.Item[current].Caption:='General number';\r
3078                      GSM_Mobile  :pbkform.ListView1.Items.Item[current].Caption:='Mobile';\r
3079                      GSM_Work    :pbkform.ListView1.Items.Item[current].Caption:='Work';\r
3080                      GSM_Fax     :pbkform.ListView1.Items.Item[current].Caption:='Fax';\r
3081                      GSM_Home    :pbkform.ListView1.Items.Item[current].Caption:='Home';\r
3082                    else\r
3083                      pbkform.ListView1.Items.Item[current].Caption:=inttostr(pbk.SubEntries[i].NumberType);\r
3084                    end;\r
3085         GSM_Note  :pbkform.ListView1.Items.Item[current].Caption:='Note';\r
3086         GSM_Postal:pbkform.ListView1.Items.Item[current].Caption:='Address';\r
3087         GSM_Email :pbkform.ListView1.Items.Item[current].Caption:='Email';\r
3088         GSM_Date  :begin\r
3089                      pbkform.ListView1.Items.Item[current].Caption:='Date';\r
3090                      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
3091                    end;\r
3092       end;\r
3093       if (pbk.SubEntries[i].EntryType<>GSM_Date) then\r
3094          pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.SubEntries[i].Number);\r
3095     end;\r
3096 \r
3097     if (pbk.Group>=0) and (pbk.Group<=4) then\r
3098     begin\r
3099       current:=current+1;\r
3100       pbkform.ListView1.Items.Add;\r
3101       pbkform.ListView1.Items.Item[current].Caption:='Caller group';\r
3102       pbkform.ListView1.Items.Item[current].SubItems.Add(caller[pbk.Group+1].text);\r
3103     end;\r
3104     pbkform.showmodal;\r
3105 //  end;\r
3106 end;\r
3107 \r
3108 procedure TMainForm.Button18Click(Sender: TObject);\r
3109 var\r
3110   i,j:integer;\r
3111   Name,Data:array[1..255] of char;\r
3112 begin\r
3113   if smscinit=false then\r
3114   begin\r
3115     MainForm.ListView6.Items.Clear;\r
3116     smscnum:=1;\r
3117     while true do\r
3118     begin\r
3119       ReadSMSC;\r
3120       if smscinit then break;\r
3121     end;\r
3122   end;\r
3123 \r
3124   //sms text\r
3125   SMSEditForm.Memo1.Text:='';\r
3126 \r
3127   //number\r
3128   SMSEditForm.ComboBox9.Text:='';\r
3129   AddSMSEditSenderList;\r
3130   \r
3131   //folders\r
3132   GSM_GetSMSFolders(@SMSfolders);\r
3133   SMSEditForm.ComboBox1.Items.Clear;\r
3134   for i:=1 to SMSFolders.number do\r
3135   begin\r
3136     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
3137   end;\r
3138   SMSEditForm.ComboBox1.ItemIndex:=0;\r
3139 \r
3140   //smsc\r
3141   SetSMSC(1);\r
3142   SMSEditForm.ComboBox2.Items.Clear;\r
3143   SMSEditForm.ComboBox2.Items.Add('custom');\r
3144   for i:=1 to smscnum-1 do\r
3145   begin\r
3146     if SMSC2[i].Name[1]<>chr(0) then\r
3147       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
3148     else\r
3149       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
3150   end;\r
3151   SMSEditForm.ComboBox2.ItemIndex:=1;\r
3152 \r
3153   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
3154   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
3155   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
3156   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
3157   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
3158   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
3159   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
3160   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.BitmapSMSTabSheet;\r
3161 \r
3162   SMSEditForm.Image1.Picture:=Image1.Picture;\r
3163 \r
3164   SMSEditForm.Memo2.Text:='';\r
3165   SMSEditForm.CheckBox5.Checked:=false;\r
3166   if bitma.type2<>GSM_PictureImage then\r
3167   begin\r
3168     SMSEditForm.Memo2.Visible:=false;\r
3169     SMSEditForm.Label10.Visible:=false;\r
3170     SMSEditForm.CheckBox5.Visible:=false;\r
3171     SMSEditForm.CheckBox6.Visible:=false;\r
3172   end else\r
3173   begin\r
3174     SMSEditForm.Memo2.Visible:=true;\r
3175     SMSEditForm.Label10.Visible:=true;\r
3176     SMSEditForm.CheckBox5.Visible:=true;\r
3177     SMSEditForm.CheckBox6.Visible:=true;\r
3178   end;\r
3179 \r
3180   SMSEditForm.Label9.Visible:=false;\r
3181   SMSEditForm.ComboBox7.Visible:=false;\r
3182   if bitma.type2=GSM_OperatorLogo then\r
3183   begin\r
3184     SMSEditForm.Label9.Visible:=true;\r
3185     SMSEditForm.ComboBox7.Visible:=true;\r
3186     //preparing network names\r
3187     i:=0;\r
3188     while true do\r
3189     begin\r
3190       GSM_GetNetworkData(i,@Name,@Data);\r
3191 \r
3192       // conversion problems\r
3193       Label14.Caption:=Name;\r
3194       if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
3195 \r
3196       // conversion problems\r
3197       Label14.Caption:=' - '+Label14.Caption;\r
3198       for j:=6 downto 1 do\r
3199       begin\r
3200         Label14.Caption:=Data[j]+Label14.Caption;\r
3201       end;\r
3202 \r
3203       SMSEditForm.ComboBox7.Items.Add(Pchar(Label14.Caption));\r
3204       i:=i+1;\r
3205     end;\r
3206     //looking for current network\r
3207     if GSMPhoneConnected then\r
3208     begin\r
3209       // conversion problems\r
3210       Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
3211       Label14.Caption:=' - '+Label14.Caption;\r
3212       for j:=6 downto 1 do\r
3213       begin\r
3214         Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
3215       end;\r
3216 \r
3217       i:=1;\r
3218       while true do\r
3219       begin\r
3220         if strcomp(pchar(SMSEditForm.ComboBox7.Items[i]),pchar(Label14.Caption))=0\r
3221           then break;\r
3222         i:=i+1;\r
3223       end;\r
3224       SMSEditForm.ComboBox7.ItemIndex:=i;\r
3225     end;\r
3226   end;\r
3227 \r
3228   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
3229   begin\r
3230     SMSEditForm.edit3.Visible:=true;\r
3231     SMSEditForm.label14.Visible:=true;\r
3232   end else\r
3233   begin\r
3234     SMSEditForm.edit3.Visible:=false;\r
3235     SMSEditForm.label14.Visible:=false;\r
3236   end;\r
3237 \r
3238   SMSEditForm.ShowModal;\r
3239 end;\r
3240 \r
3241 procedure TMainForm.Button17Click(Sender: TObject);\r
3242 var\r
3243   i:integer;\r
3244 begin\r
3245   if smscinit=false then\r
3246   begin\r
3247     MainForm.ListView6.Items.Clear;\r
3248     smscnum:=1;\r
3249     while true do\r
3250     begin\r
3251       ReadSMSC;\r
3252       if smscinit then break;\r
3253     end;\r
3254   end;\r
3255 \r
3256   //sms text\r
3257   SMSEditForm.Memo1.Text:='';\r
3258 \r
3259   //number\r
3260   SMSEditForm.ComboBox9.Text:='';\r
3261   AddSMSEditSenderList;\r
3262   \r
3263   //folders\r
3264   GSM_GetSMSFolders(@SMSfolders);\r
3265   SMSEditForm.ComboBox1.Items.Clear;\r
3266   for i:=1 to SMSFolders.number do\r
3267   begin\r
3268     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
3269   end;\r
3270   SMSEditForm.ComboBox1.ItemIndex:=0;\r
3271 \r
3272   //smsc\r
3273   SetSMSC(1);\r
3274   SMSEditForm.ComboBox2.Items.Clear;\r
3275   SMSEditForm.ComboBox2.Items.Add('custom');\r
3276   for i:=1 to smscnum-1 do\r
3277   begin\r
3278     if SMSC2[i].Name[1]<>chr(0) then\r
3279       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
3280     else\r
3281       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
3282   end;\r
3283   SMSEditForm.ComboBox2.ItemIndex:=1;\r
3284 \r
3285   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
3286   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
3287   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
3288   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
3289   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
3290   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
3291   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
3292   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.RingtoneSMSTabSheet;\r
3293 \r
3294   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
3295   begin\r
3296     SMSEditForm.edit3.Visible:=true;\r
3297     SMSEditForm.label14.Visible:=true;\r
3298   end else\r
3299   begin\r
3300     SMSEditForm.edit3.Visible:=false;\r
3301     SMSEditForm.label14.Visible:=false;\r
3302   end;\r
3303 \r
3304   SMSEditForm.ShowModal;\r
3305 end;\r
3306 \r
3307 procedure TMainForm.SMS1Click(Sender: TObject);\r
3308 var\r
3309   i:integer;\r
3310 begin\r
3311   if smscinit=false then\r
3312   begin\r
3313     MainForm.ListView6.Items.Clear;\r
3314     smscnum:=1;\r
3315     while true do\r
3316     begin\r
3317       ReadSMSC;\r
3318       if smscinit then break;\r
3319     end;\r
3320   end;\r
3321 \r
3322   //sms text\r
3323   SMSEditForm.Memo1.Text:='';\r
3324 \r
3325   //number\r
3326   SMSEditForm.ComboBox9.Text:='';\r
3327   AddSMSEditSenderList;\r
3328   \r
3329   //folders\r
3330   GSM_GetSMSFolders(@SMSfolders);\r
3331   SMSEditForm.ComboBox1.Items.Clear;\r
3332   for i:=1 to SMSFolders.number do\r
3333   begin\r
3334     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
3335   end;\r
3336   SMSEditForm.ComboBox1.ItemIndex:=0;\r
3337 \r
3338   //smsc\r
3339   SetSMSC(1);\r
3340   SMSEditForm.ComboBox2.Items.Clear;\r
3341   SMSEditForm.ComboBox2.Items.Add('custom');\r
3342   for i:=1 to smscnum-1 do\r
3343   begin\r
3344     if SMSC2[i].Name[1]<>chr(0) then\r
3345       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
3346     else\r
3347       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
3348   end;\r
3349   SMSEditForm.ComboBox2.ItemIndex:=1;\r
3350 \r
3351   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
3352   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
3353   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
3354   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
3355   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
3356   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
3357   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
3358   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.CalendarSMSTabSheet;\r
3359 \r
3360   calenda.Location:=calendarselect;\r
3361   MainForm.Timer2.Enabled:=false;\r
3362   GSM_GetCalendarNote(@calenda);\r
3363   MainForm.Timer2.Enabled:=true;\r
3364 \r
3365   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
3366   begin\r
3367     SMSEditForm.edit3.Visible:=true;\r
3368     SMSEditForm.label14.Visible:=true;\r
3369   end else\r
3370   begin\r
3371     SMSEditForm.edit3.Visible:=false;\r
3372     SMSEditForm.label14.Visible:=false;\r
3373   end;\r
3374 \r
3375   SMSEditForm.ShowModal;\r
3376 end;\r
3377 \r
3378 procedure TMainForm.SMSSendSave1Click(Sender: TObject);\r
3379 var\r
3380   i:integer;\r
3381 begin\r
3382   if smscinit=false then\r
3383   begin\r
3384     MainForm.ListView6.Items.Clear;\r
3385     smscnum:=1;\r
3386     while true do\r
3387     begin\r
3388       ReadSMSC;\r
3389       if smscinit then break;\r
3390     end;\r
3391   end;\r
3392 \r
3393   //sms text\r
3394   SMSEditForm.Memo1.Text:='';\r
3395 \r
3396   //number\r
3397   SMSEditForm.ComboBox9.Text:='';\r
3398   AddSMSEditSenderList;\r
3399   \r
3400   //folders\r
3401   GSM_GetSMSFolders(@SMSfolders);\r
3402   SMSEditForm.ComboBox1.Items.Clear;\r
3403   for i:=1 to SMSFolders.number do\r
3404   begin\r
3405     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
3406   end;\r
3407   SMSEditForm.ComboBox1.ItemIndex:=0;\r
3408 \r
3409   //smsc\r
3410   SetSMSC(1);\r
3411   SMSEditForm.ComboBox2.Items.Clear;\r
3412   SMSEditForm.ComboBox2.Items.Add('custom');\r
3413   for i:=1 to smscnum-1 do\r
3414   begin\r
3415     if SMSC2[i].Name[1]<>chr(0) then\r
3416       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
3417     else\r
3418       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
3419   end;\r
3420   SMSEditForm.ComboBox2.ItemIndex:=1;\r
3421 \r
3422   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
3423   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
3424   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
3425   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
3426   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
3427   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
3428   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
3429   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.PBKSMSTabSheet;\r
3430 \r
3431   pbk.Location:=pbknumberentry-1;\r
3432   case ComboBox1.ItemIndex of\r
3433     1:pbk.MemoryType:=GMT_DC;\r
3434     2:pbk.MemoryType:=GMT_MC;\r
3435     3:pbk.MemoryType:=GMT_ON;\r
3436     4:pbk.MemoryType:=GMT_ME;\r
3437     5:pbk.MemoryType:=GMT_SM;\r
3438     6:pbk.MemoryType:=GMT_RC;\r
3439   end;\r
3440   MainForm.Timer2.Enabled:=false;\r
3441   GSM_GetMemoryLocation(@pbk);\r
3442   MainForm.Timer2.Enabled:=true;\r
3443 \r
3444   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
3445   begin\r
3446     SMSEditForm.edit3.Visible:=true;\r
3447     SMSEditForm.label14.Visible:=true;\r
3448   end else\r
3449   begin\r
3450     SMSEditForm.edit3.Visible:=false;\r
3451     SMSEditForm.label14.Visible:=false;\r
3452   end;\r
3453 \r
3454   SMSEditForm.ShowModal;\r
3455 end;\r
3456 \r
3457 procedure TMainForm.Button13Click(Sender: TObject);\r
3458 var\r
3459   ring:GSM_BinRingtone;\r
3460 begin\r
3461   if OpenDialog1.Execute then\r
3462   begin\r
3463     if GSM_ReadBinRingtoneFile(PChar(OpenDialog1.FileName),@ring)=0 then\r
3464     begin\r
3465       Edit2.Text:=ring.Name;\r
3466       binring:=ring;\r
3467     end;\r
3468   end;\r
3469 \r
3470 end;\r
3471 \r
3472 procedure TMainForm.Button14Click(Sender: TObject);\r
3473 var\r
3474   i:integer;\r
3475   mybinring:GSM_BinRingtone;\r
3476   myring:GSM_Ringtone;\r
3477 begin\r
3478   LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
3479   LogosRingForm.ComboBox3.Visible:=true;\r
3480   LogosRingForm.ComboBox3.Items.Clear();\r
3481   MainForm.Timer2.Enabled:=false;\r
3482   for i:=1 to GSM_GetModelFeature(FN_RINGNUMBER) do\r
3483   begin\r
3484     mybinring.location:=i;\r
3485     if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
3486     begin\r
3487       if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
3488       begin\r
3489         LogosRingForm.ComboBox3.Items.Add(myring.name);\r
3490       end else\r
3491       begin\r
3492         LogosRingForm.ComboBox3.Items.Add(mybinring.name);\r
3493       end;\r
3494     end else\r
3495       LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
3496   end;\r
3497   MainForm.Timer2.Enabled:=true;\r
3498   LogosRingForm.ComboBox3.ItemIndex:=0;\r
3499   LogosRingForm.ShowModal;\r
3500   if LogosRingForm.ComboBox3.Visible then\r
3501   begin\r
3502     binring.location:=LogosRingForm.ComboBox3.ItemIndex+1;\r
3503     MainForm.Timer2.Enabled:=false;\r
3504     GSM_SetBinRingtone(@binring);\r
3505     MainForm.Timer2.Enabled:=true;\r
3506   end;\r
3507 end;\r
3508 \r
3509 procedure TMainForm.ConfigTabSheetHide(Sender: TObject);\r
3510 var\r
3511   MyIniFile: TIniFile;\r
3512 begin\r
3513   if MessageDlg('Do you want to save config ?',\r
3514     mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
3515   begin\r
3516     MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
3517     case MainForm.ComboBox4.ItemIndex of\r
3518       0:MyIniFile.WriteString('global', 'connection', 'mbus');\r
3519       1:MyIniFile.WriteString('global', 'connection', 'fbus');\r
3520       2:MyIniFile.WriteString('global', 'connection', 'dlr3');\r
3521       3:MyIniFile.WriteString('global', 'connection', 'infrared');\r
3522     end;\r
3523     MyIniFile.WriteString('global', 'model', MainForm.ComboBox6.Text);\r
3524     MyIniFile.WriteString('global', 'port', MainForm.ComboBox5.Text);\r
3525     if MainForm.CheckBox2.Checked then\r
3526       MyIniFile.WriteString('global', 'synchronizetime', 'yes')\r
3527     else\r
3528       MyIniFile.WriteString('global', 'synchronizetime', 'no');\r
3529     MyIniFile.Free;\r
3530   end;\r
3531 end;\r
3532 \r
3533 procedure TMainForm.ConfigTabSheetShow(Sender: TObject);\r
3534 var\r
3535   MyIniFile: TIniFile;\r
3536   x:string;\r
3537   i:integer;\r
3538 begin\r
3539   MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
3540 \r
3541   x:=MyInifile.ReadString('global', 'connection', 'fbus');\r
3542   MainForm.ComboBox4.ItemIndex:=0;\r
3543   if x='fbus' then MainForm.ComboBox4.ItemIndex:=1;\r
3544   if x='dlr3' then MainForm.ComboBox4.ItemIndex:=2;\r
3545   if x='infrared' then MainForm.ComboBox4.ItemIndex:=3;\r
3546 \r
3547   x:=MyInifile.ReadString('global', 'port', 'com2:');\r
3548   MainForm.ComboBox5.ItemIndex:=0;\r
3549   for i:=1 to MainForm.ComboBox5.Items.Count do\r
3550   begin\r
3551     if MainForm.ComboBox5.Items.Strings[i-1]=x then\r
3552       MainForm.ComboBox5.ItemIndex:=i-1;\r
3553   end;\r
3554 \r
3555   x:=MyInifile.ReadString('global', 'model', 'auto');\r
3556   MainForm.ComboBox6.ItemIndex:=0;\r
3557   for i:=1 to MainForm.ComboBox6.Items.Count do\r
3558   begin\r
3559     if MainForm.ComboBox6.Items.Strings[i-1]=x then\r
3560       MainForm.ComboBox6.ItemIndex:=i-1;\r
3561   end;\r
3562 \r
3563   x:=MyInifile.ReadString('global', 'synchronizetime', 'no');\r
3564   if x='yes' then\r
3565     MainForm.CheckBox2.Checked:=True\r
3566   else\r
3567     MainForm.CheckBox2.Checked:=False;\r
3568   MyIniFile.Free;\r
3569 end;\r
3570 \r
3571 procedure TMainForm.Timer2Timer(Sender: TObject);\r
3572 begin\r
3573   if SparkyThread.Suspended then SparkyThread.Resume;\r
3574   Timer2.Interval:=2000;\r
3575 end;\r
3576 \r
3577 procedure TMainForm.AboutTabSheetShow(Sender: TObject);\r
3578 var\r
3579   xxx:array[1..256] of char;\r
3580 begin\r
3581   GSM_GetDLLVersion(@xxx);\r
3582   Label20.Caption:=xxx;\r
3583 end;\r
3584 \r
3585 procedure SaveSMSOffline;\r
3586 var F:file of GSM_SMSMessage;\r
3587     i:integer;\r
3588 begin\r
3589   AssignFile(F, 'gnokiisms');\r
3590   Rewrite(F);\r
3591   for i:=1 to SMSOfflineNumber do\r
3592   begin\r
3593     Write(f,SMSOffline[i]);\r
3594   end;\r
3595   CloseFile(F);\r
3596 end;\r
3597 \r
3598 procedure ReadSMSOffline;\r
3599 var F:file of GSM_SMSMessage;\r
3600 begin\r
3601   MainForm.ListView10.items.Clear;\r
3602   AssignFile(F, 'gnokiisms');\r
3603   Reset(F);\r
3604   if (ioresult=0) then\r
3605   begin\r
3606     ReadPBKOffline;\r
3607     smsofflinenumber:=0;\r
3608     while not eof(f) do\r
3609     begin\r
3610       smsofflinenumber:=smsofflinenumber+1;\r
3611       read(f,smsoffline[smsofflinenumber]);\r
3612       AddSMSInfo(MainForm.ListView10,smsoffline[smsofflinenumber]);\r
3613     end;\r
3614     CloseFile(F);\r
3615   end;\r
3616 end;\r
3617 \r
3618 procedure TMainForm.PCSMSTabSheetShow(Sender: TObject);\r
3619 begin\r
3620   ReadSMSOffline;\r
3621 end;\r
3622 \r
3623 procedure TMainForm.CopytoPC1Click(Sender: TObject);\r
3624 begin\r
3625   SMSofflinenumber:=smsofflinenumber+1;\r
3626   SMSoffline[SMSofflinenumber]:=SMS[smsnumindex];\r
3627   SaveSMSOffline;\r
3628 end;\r
3629 \r
3630 procedure TMainForm.ListView10SelectItem(Sender: TObject; Item: TListItem;\r
3631   Selected: Boolean);\r
3632 begin\r
3633   AddSMSDescription(SMSOffline[Item.Index+1],MainForm.Memo4,MainForm.Memo5);\r
3634 end;\r
3635 \r
3636 procedure TMainForm.PCSMSPopupMenuPopup(Sender: TObject);\r
3637 begin\r
3638   SendSave1.Enabled:=False;\r
3639   if GSMPhoneConnected then SendSave1.Enabled:=True;\r
3640 \r
3641   Delete3.Enabled:=false;\r
3642   if listview10.selected<>nil then Delete3.Enabled:=True;\r
3643 end;\r
3644 \r
3645 procedure TMainForm.Delete3Click(Sender: TObject);\r
3646 var\r
3647   i:integer;\r
3648 begin\r
3649   if Application.MessageBox('Do you want to delete this SMS ?','Question',MB_YESNO)=IDYES then\r
3650   begin\r
3651     for i:=MainForm.ListView10.ItemIndex to smsofflinenumber-1 do\r
3652     begin\r
3653       SMSOffline[i]:=SMSOffline[i+1];\r
3654     end;\r
3655     Smsofflinenumber:=smsofflinenumber-1;\r
3656     SaveSMSOffline;\r
3657     ReadSMSOffline;\r
3658   end;\r
3659 end;\r
3660 \r
3661 procedure TMainForm.SendSave1Click(Sender: TObject);\r
3662 var i:integer;\r
3663 begin\r
3664   GSM_GetSMSFolders(@SMSfolders);\r
3665   MainForm.ComboBox3.Items.Clear();\r
3666   for i:=1 to SMSfolders.number do\r
3667   begin\r
3668     MainForm.ComboBox3.Items.Add(SMSfolders.folder[i].Name);\r
3669   end;\r
3670   MainForm.ComboBox3.ItemIndex:=0;\r
3671   setsmslocation:=0;\r
3672   SendSaveSMS(SMSOffline[MainForm.ListView10.ItemIndex+1]);\r
3673 end;\r
3674 \r
3675 \r
3676 procedure EndWAPBookmarkThread;\r
3677 begin\r
3678   if (WAPBookmarkThread<>nil) then\r
3679   begin\r
3680     WAPBookmarkThread.Terminate();\r
3681     MainForm.Timer2.Enabled:=true;\r
3682     WAPBookmarkThread:=nil;\r
3683   end;\r
3684 end;\r
3685 \r
3686 procedure TWAPBookmarkThread.Execute;\r
3687 var\r
3688   bookmark:GSM_WAPBookmark;\r
3689   i:integer;\r
3690 begin\r
3691   while not Terminated do\r
3692   begin\r
3693     bookmark.location:=bookmarknum;\r
3694     i:=GSM_GetWAPBookmark(@bookmark);\r
3695     MainForm.ListView9.Items.Add;\r
3696     MainForm.ListView9.Items.Item[bookmarknum-1].Caption:=inttostr(bookmarknum);\r
3697     if (i=0) then\r
3698     begin\r
3699       MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add(bookmark.title);\r
3700       MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add(bookmark.adress);\r
3701     end else\r
3702     begin\r
3703       MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add('');\r
3704     end;\r
3705     bookmarknum:=bookmarknum+1;\r
3706     if bookmarknum=15 then EndWAPBookmarkThread;\r
3707   end;\r
3708 end;\r
3709 \r
3710 procedure TMainForm.WapBookTabSheetHide(Sender: TObject);\r
3711 begin\r
3712   EndWAPBookmarkThread;\r
3713 end;\r
3714 \r
3715 procedure TMainForm.WapBookTabSheetShow(Sender: TObject);\r
3716 begin\r
3717   if GSMPhoneConnected then\r
3718   begin\r
3719     if GSM_GetModelFeature(FN_WAP)<>0 then\r
3720     begin\r
3721       GroupBox17.Ctl3D:=true;\r
3722       ListView9.Ctl3D:=true;\r
3723       ListView9.Enabled:=true;\r
3724       bookmarknum:=1;\r
3725       MainForm.ListView9.Items.Clear;\r
3726       MainForm.Timer2.Enabled:=false;\r
3727       WAPBookmarkThread:=TWAPBookmarkThread.Create(false);\r
3728     end else\r
3729     begin\r
3730       GroupBox17.Ctl3D:=false;\r
3731       ListView9.Ctl3D:=false;\r
3732       ListView9.Enabled:=false;\r
3733     end;\r
3734   end;\r
3735 end;\r
3736 \r
3737 procedure TMainForm.ComboBox7Change(Sender: TObject);\r
3738 var\r
3739   settings:GSM_WAPSettings;\r
3740 begin\r
3741   if combobox7.ItemIndex>0 then\r
3742   begin\r
3743     settings.location:=combobox7.ItemIndex;\r
3744     MainForm.Timer2.Enabled:=false;\r
3745     GSM_GetWAPSettings(@settings);\r
3746     MainForm.Timer2.Enabled:=true;\r
3747 \r
3748     if (settings.title[1]<>chr(0)) then\r
3749       Edit6.Text:=settings.title\r
3750     else\r
3751       edit6.Text:='set '+inttostr(combobox7.ItemIndex);\r
3752 \r
3753     edit8.Text:=settings.homepage;\r
3754 \r
3755     combobox10.itemindex:=1;\r
3756     if settings.iscontinuous<>0 then combobox10.Itemindex:=0;\r
3757 \r
3758     combobox9.itemindex:=1;\r
3759     if settings.issecurity<>0 then combobox9.Itemindex:=0;\r
3760 \r
3761     if (settings.bearer>=0) and (settings.bearer<3) then\r
3762     begin\r
3763       combobox8.ItemIndex:=settings.bearer;\r
3764 \r
3765       Label27.enabled:=false;\r
3766       Label28.enabled:=false;\r
3767       Label29.enabled:=false;\r
3768       label30.enabled:=false;\r
3769       label31.enabled:=false;\r
3770       label32.enabled:=false;\r
3771       label33.enabled:=false;\r
3772       label34.enabled:=false;\r
3773       label35.enabled:=false;\r
3774       label36.enabled:=false;\r
3775       label37.enabled:=false;\r
3776       edit9.enabled:=false;\r
3777       edit10.enabled:=false;\r
3778       edit11.enabled:=false;\r
3779       edit12.enabled:=false;\r
3780       edit13.enabled:=false;\r
3781       edit14.enabled:=false;\r
3782       edit15.enabled:=false;\r
3783       combobox11.enabled:=false;\r
3784       combobox12.enabled:=false;\r
3785       combobox13.enabled:=false;\r
3786       combobox14.enabled:=false;\r
3787 \r
3788       case settings.bearer of\r
3789         WAPSETTINGS_BEARER_SMS:\r
3790           begin\r
3791             label27.enabled:=true;\r
3792             edit9.text:=settings.server;\r
3793             edit9.enabled:=true;\r
3794 \r
3795             label28.enabled:=true;\r
3796             edit10.text:=settings.service;\r
3797             edit10.enabled:=true;\r
3798           end;\r
3799         WAPSETTINGS_BEARER_DATA:\r
3800           begin\r
3801             label29.enabled:=true;\r
3802             edit11.text:=settings.dialup;\r
3803             edit11.enabled:=true;\r
3804 \r
3805             label34.enabled:=true;\r
3806             edit13.text:=settings.user;\r
3807             edit13.enabled:=true;\r
3808 \r
3809             label35.enabled:=true;\r
3810             edit14.text:=settings.password;\r
3811             edit14.enabled:=true;\r
3812 \r
3813             label30.enabled:=true;\r
3814             edit12.text:=settings.ipaddress;\r
3815             edit12.enabled:=true;\r
3816 \r
3817             label31.enabled:=true;\r
3818             combobox11.enabled:=true;\r
3819             combobox11.ItemIndex:=0;\r
3820             if settings.isnormalauthentication=0 then\r
3821               combobox11.ItemIndex:=1;\r
3822 \r
3823             label32.enabled:=true;\r
3824             combobox12.enabled:=true;\r
3825             combobox12.ItemIndex:=0;\r
3826             if settings.isISDNcall=0 then\r
3827               combobox12.ItemIndex:=1;\r
3828 \r
3829             label33.enabled:=true;\r
3830             combobox13.enabled:=true;\r
3831             combobox13.ItemIndex:=1;\r
3832             if settings.isspeed14400=0 then\r
3833               combobox13.ItemIndex:=0;\r
3834           end;\r
3835         WAPSETTINGS_BEARER_USSD:\r
3836           begin\r
3837             label36.enabled:=true;\r
3838             edit15.text:=settings.code;\r
3839             edit15.enabled:=true;\r
3840 \r
3841             label37.enabled:=true;\r
3842             combobox14.Enabled:=true;\r
3843             combobox14.ItemIndex:=1;\r
3844             if settings.isIP=0 then\r
3845             begin\r
3846               combobox14.ItemIndex:=1;\r
3847 \r
3848               label28.enabled:=true;\r
3849               edit10.text:=settings.service;\r
3850               edit10.enabled:=true;\r
3851             end else\r
3852             begin\r
3853               label30.enabled:=true;\r
3854               edit12.text:=settings.ipaddress;\r
3855               edit12.enabled:=true;\r
3856             end;\r
3857           end;\r
3858       end;\r
3859     end;\r
3860   end;\r
3861 end;\r
3862 \r
3863 procedure TMainForm.Button19Click(Sender: TObject);\r
3864 var\r
3865   Divert:GSM_CallDivert;\r
3866 begin\r
3867   MainForm.Timer2.Enabled:=false;\r
3868 \r
3869   divert.DType:=GSM_CDV_Busy;\r
3870   divert.ctype:=GSM_CDV_VoiceCalls;\r
3871   divert.Operation:=GSM_CDV_Query;\r
3872   if gsm_calldivertoperation(@divert)=0 then\r
3873   begin\r
3874     if divert.enabled=0 then\r
3875     begin\r
3876       Label38.enabled:=false;\r
3877       edit16.enabled:=false;\r
3878       edit16.Text:='Not active';\r
3879     end else\r
3880     begin\r
3881       Label38.enabled:=true;\r
3882       edit16.enabled:=true;\r
3883       edit16.Text:=divert.Number;\r
3884     end;\r
3885   end;\r
3886 \r
3887   divert.DType:=GSM_CDV_NoAnswer;\r
3888   divert.ctype:=GSM_CDV_VoiceCalls;\r
3889   divert.Operation:=GSM_CDV_Query;\r
3890   if gsm_calldivertoperation(@divert)=0 then\r
3891   begin\r
3892     if divert.enabled=0 then\r
3893     begin\r
3894       Label39.enabled:=false;\r
3895       edit17.enabled:=false;\r
3896       edit17.Text:='Not active';\r
3897       label40.Enabled:=false;\r
3898       combobox15.Enabled:=false;\r
3899     end else\r
3900     begin\r
3901       Label39.enabled:=true;\r
3902       edit17.enabled:=true;\r
3903       edit17.Text:=divert.Number;\r
3904       label40.Enabled:=true;\r
3905       combobox15.Enabled:=true;\r
3906       case divert.timeout of\r
3907          5:combobox15.ItemIndex:=0;\r
3908         10:combobox15.ItemIndex:=1;\r
3909         15:combobox15.ItemIndex:=2;\r
3910         20:combobox15.ItemIndex:=3;\r
3911         25:combobox15.ItemIndex:=4;\r
3912         30:combobox15.ItemIndex:=5;\r
3913       end;\r
3914     end;\r
3915   end;\r
3916 \r
3917   divert.DType:=GSM_CDV_OutOfreach;\r
3918   divert.ctype:=GSM_CDV_VoiceCalls;\r
3919   divert.Operation:=GSM_CDV_Query;\r
3920   if gsm_calldivertoperation(@divert)=0 then\r
3921   begin\r
3922     if divert.enabled=0 then\r
3923     begin\r
3924       Label41.enabled:=false;\r
3925       edit18.enabled:=false;\r
3926       edit18.Text:='Not active';\r
3927     end else\r
3928     begin\r
3929       Label41.enabled:=true;\r
3930       edit18.enabled:=true;\r
3931       edit18.Text:=divert.Number;\r
3932     end;\r
3933   end;\r
3934 \r
3935   MainForm.Timer2.Enabled:=true;\r
3936 end;\r
3937 \r
3938 procedure TMainForm.Button20Click(Sender: TObject);\r
3939 var\r
3940   Divert:GSM_CallDivert;\r
3941 begin\r
3942   MainForm.Timer2.Enabled:=false;\r
3943 \r
3944   divert.DType:=GSM_CDV_AllTypes;\r
3945   divert.ctype:=GSM_CDV_AllCalls;\r
3946   divert.Operation:=GSM_CDV_Erasure;\r
3947   gsm_calldivertoperation(@divert);\r
3948 \r
3949   MainForm.Timer2.Enabled:=true;\r
3950 \r
3951 end;\r
3952 \r
3953 procedure ReadCalendarOffline;\r
3954 var F:file of GSM_calendarnote;\r
3955 begin\r
3956   MainForm.ListView11.items.Clear;\r
3957   AssignFile(F, 'gnokiicalendar');\r
3958   Reset(F);\r
3959   if (ioresult=0) then\r
3960   begin\r
3961     calendarofflinenumber:=0;\r
3962     while not eof(f) do\r
3963     begin\r
3964       calendarofflinenumber:=calendarofflinenumber+1;\r
3965       read(f,calendaroffline[calendarofflinenumber]);\r
3966       AddCalendarNote(calendaroffline[calendarofflinenumber],mainform.ListView11);\r
3967     end;\r
3968     CloseFile(F);\r
3969   end;\r
3970 end;\r
3971 \r
3972 procedure TMainForm.PCOfflineTabSheetShow(Sender: TObject);\r
3973 begin\r
3974   ReadSMSOffline;\r
3975   Label43.Caption:=inttostr(smsofflinenumber);\r
3976   ReadCalendarOffline;\r
3977   Label45.Caption:=inttostr(calendarofflinenumber);\r
3978 end;\r
3979 \r
3980 procedure SaveCalendarOffline;\r
3981 var F:file of GSM_CalendarNote;\r
3982     i:integer;\r
3983 begin\r
3984   AssignFile(F, 'gnokiicalendar');\r
3985   Rewrite(F);\r
3986   for i:=1 to CalendarOfflineNumber do\r
3987   begin\r
3988     Write(f,CalendarOffline[i]);\r
3989   end;\r
3990   CloseFile(F);\r
3991 end;\r
3992 \r
3993 procedure TMainForm.PCCalendarTabSheetShow(Sender: TObject);\r
3994 begin\r
3995   ReadCalendarOffline;\r
3996 end;\r
3997 \r
3998 procedure TMainForm.CopytoPC2Click(Sender: TObject);\r
3999 begin\r
4000   setcalendarnote.Location:=calendarselect;\r
4001   mainform.Timer2.Enabled:=false;\r
4002   GSM_GetCalendarNote(@setcalendarnote);\r
4003   mainform.Timer2.Enabled:=true;\r
4004   Calendarofflinenumber:=calendarofflinenumber+1;\r
4005   Calendaroffline[Calendarofflinenumber]:=setcalendarnote;\r
4006   SaveCalendarOffline;\r
4007 end;\r
4008 \r
4009 procedure TMainForm.Delete5Click(Sender: TObject);\r
4010 var\r
4011   i:integer;\r
4012 begin\r
4013   if Application.MessageBox('Do you want to delete this note ?','Question',MB_YESNO)=IDYES then\r
4014   begin\r
4015     for i:=MainForm.ListView11.ItemIndex to calendarofflinenumber-1 do\r
4016     begin\r
4017       CalendarOffline[i]:=CalendarOffline[i+1];\r
4018     end;\r
4019     Calendarofflinenumber:=calendarofflinenumber-1;\r
4020     SaveCalendarOffline;\r
4021     ReadCalendarOffline;\r
4022   end;\r
4023 end;\r
4024 \r
4025 procedure TMainForm.Copytocalendar1Click(Sender: TObject);\r
4026 begin\r
4027   if not readcalendar then\r
4028   begin\r
4029     application.MessageBox('Please read first calendar notes from phone','info',mb_ok);\r
4030   end else begin\r
4031     setcalendarnote:=calendaroffline[mainform.listview11.itemindex+1];\r
4032     setcalendarnote.Location:=MainForm.ListView4.Items.Count+1;\r
4033 \r
4034     EditCalendarNote;\r
4035   end;\r
4036 end;\r
4037 \r
4038 procedure TMainForm.PCCalendarPopupMenuPopup(Sender: TObject);\r
4039 begin\r
4040   CopyTocalendar1.Enabled:=False;\r
4041   if (GSMPhoneConnected) and (GSM_GetModelFeature(FN_Calendar)<>0)\r
4042                          and (listview11.selected<>nil) then copytocalendar1.Enabled:=True;\r
4043 \r
4044   Delete5.Enabled:=false;\r
4045   if listview11.selected<>nil then Delete5.Enabled:=True;\r
4046 end;\r
4047 \r
4048 procedure TMainForm.Savebackuptofile1Click(Sender: TObject);\r
4049 begin\r
4050   PhoneBackup.PhonePhonebookUsed:=0;\r
4051   PhoneBackup.SIMPhonebookUsed:=0;\r
4052   PhoneBackup.CallerAvailable:=0;\r
4053   PhoneBackup.StartupLogoAvailable:=0;\r
4054   PhoneBackup.StartupText.text[1]:=chr(0);\r
4055   PhoneBackup.OperatorLogoAvailable:=0;\r
4056   PhoneBackup.SpeedAvailable:=0;\r
4057 \r
4058   BackupForm.CheckBox3.Enabled:=true;\r
4059   BackupForm.CheckBox4.Enabled:=true;\r
4060   BackupForm.CheckBox2.Enabled:=true;\r
4061   BackupForm.CheckBox1.Enabled:=true;\r
4062   BackupForm.CheckBox5.Enabled:=true;\r
4063 \r
4064   BackupForm.GroupBox1.Caption:=' What do you want to backup ? ';\r
4065   PhoneBackupAvailable:=True;\r
4066   BackupForm.ListBox1.ItemIndex:=0;\r
4067   BackupForm.GroupBox2.Visible:=true;\r
4068   BackupForm.ShowModal;\r
4069   if PhoneBackupAvailable then\r
4070   begin\r
4071     BackupProgressForm.ShowModal;\r
4072   end;\r
4073 end;\r
4074 \r
4075 procedure TMainForm.Restorebackupfromfile1Click(Sender: TObject);\r
4076 begin\r
4077   if OpenDialog1.Execute then\r
4078   begin\r
4079     if GSM_ReadBackupFile(PChar(OpenDialog1.FileName),@phonebackup)=0 then\r
4080     begin\r
4081       BackupForm.CheckBox3.Enabled:=true;\r
4082       if PhoneBackup.CallerAvailable=0 then\r
4083         BackupForm.CheckBox3.Enabled:=false;\r
4084 \r
4085       BackupForm.CheckBox4.Enabled:=true;\r
4086       if PhoneBackup.OperatorLogoAvailable=0 then\r
4087         BackupForm.CheckBox4.Enabled:=false;\r
4088 \r
4089       BackupForm.CheckBox2.Enabled:=true;\r
4090       if PhoneBackup.PhonePhonebookUsed=0 then\r
4091         BackupForm.CheckBox2.Enabled:=false;\r
4092 \r
4093       BackupForm.CheckBox1.Enabled:=true;\r
4094       if PhoneBackup.SIMPhonebookUsed=0 then\r
4095         BackupForm.CheckBox1.Enabled:=false;\r
4096 \r
4097       BackupForm.CheckBox5.Enabled:=true;\r
4098 \r
4099       BackupForm.GroupBox1.Caption:=' What do you want to restore ? ';\r
4100       PhoneBackupAvailable:=true;\r
4101       BackupForm.GroupBox2.Visible:=false;\r
4102       BackupForm.ShowModal;\r
4103       if PhoneBackupAvailable then\r
4104       begin\r
4105         PhoneBackupAvailable:=false;\r
4106         BackupProgressForm.ShowModal;\r
4107       end;\r
4108     end;\r
4109   end;\r
4110 end;\r
4111 \r
4112 procedure TMainForm.PBKPopupMenuPopup(Sender: TObject);\r
4113 begin\r
4114   Savephonebooktofileanotherapplication1.enabled:=false;\r
4115   Delete4.enabled:=false;\r
4116   Edit19.Enabled:=false;\r
4117   Edit7.Enabled:=false;\r
4118   SMSSendSave1.Enabled:=false;\r
4119   copyphonebooktopc1.Enabled:=false;\r
4120   if GSMPhoneConnected then\r
4121   begin\r
4122     if (pbkofflinenumber<>0) then copyphonebooktopc1.Enabled:=true;\r
4123     if (ComboBox1.ItemIndex=4) or (ComboBox1.ItemIndex=5) then\r
4124     begin\r
4125       Savephonebooktofileanotherapplication1.enabled:=true;\r
4126       if listview1.Selected<>nil then\r
4127       begin\r
4128         Delete4.enabled:=true;\r
4129         Edit19.Enabled:=true;\r
4130       end;\r
4131     end;\r
4132     if listview1.Selected<>nil then\r
4133     begin\r
4134       SMSSendSave1.Enabled:=true;\r
4135       Edit7.Enabled:=true;\r
4136     end;\r
4137   end;\r
4138 end;\r
4139 \r
4140 procedure TMainForm.Savephonebooktofileanotherapplication1Click(\r
4141   Sender: TObject);\r
4142 begin\r
4143   PhoneBackup.CallerAvailable:=0;\r
4144   PhoneBackup.StartupLogoAvailable:=0;\r
4145   PhoneBackup.StartupText.text[1]:=chr(0);\r
4146   PhoneBackup.OperatorLogoAvailable:=0;\r
4147 \r
4148   BackupForm.CheckBox3.Enabled:=false;\r
4149   BackupForm.CheckBox4.Enabled:=false;\r
4150 \r
4151   BackupForm.CheckBox2.Enabled:=true;\r
4152   if PhoneBackup.PhonePhonebookUsed=0 then\r
4153     BackupForm.CheckBox2.Enabled:=false;\r
4154 \r
4155   BackupForm.CheckBox1.Enabled:=true;\r
4156   if PhoneBackup.SIMPhonebookUsed=0 then\r
4157     BackupForm.CheckBox1.Enabled:=false;\r
4158 \r
4159   BackupForm.CheckBox5.Enabled:=false;\r
4160 \r
4161   BackupForm.GroupBox1.Caption:=' What do you want to backup ? ';\r
4162   PhoneBackupAvailable:=True;\r
4163   BackupForm.ListBox1.ItemIndex:=0;\r
4164   BackupForm.GroupBox2.Visible:=true;\r
4165   BackupForm.ShowModal;\r
4166   if PhoneBackupAvailable then\r
4167   begin\r
4168     if MainForm.SaveDialog1.Execute then\r
4169     begin\r
4170       GSM_SaveBackupFile(PChar(MainForm.SaveDialog1.FileName),@phonebackup);\r
4171     end;\r
4172   end;\r
4173 end;\r
4174 \r
4175 procedure TMainForm.ListView4DblClick(Sender: TObject);\r
4176 begin\r
4177 //  if (GSMPhoneConnected) and (ListView4.Selected<>nil) then\r
4178 //    Edit3Click(Sender);\r
4179 end;\r
4180 \r
4181 procedure TMainForm.Edit19Click(Sender: TObject);\r
4182 var\r
4183   i,j:integer;\r
4184   num_num,text_num:integer;\r
4185 begin\r
4186   if listview1.Selected<>nil then\r
4187   begin\r
4188     PBKEditForm.ComboBox1.ItemIndex:=1;\r
4189     PBKEditForm.COmboBox2.Items:=PBKEditForm.COmboBox1.Items;\r
4190     PBKEditForm.ComboBox2.ItemIndex:=1;\r
4191     PBKEditForm.COmboBox3.Items:=PBKEditForm.COmboBox1.Items;\r
4192     PBKEditForm.ComboBox3.ItemIndex:=1;\r
4193     PBKEditForm.COmboBox4.Items:=PBKEditForm.COmboBox1.Items;\r
4194     PBKEditForm.ComboBox4.ItemIndex:=1;\r
4195     PBKEditForm.COmboBox5.Items:=PBKEditForm.COmboBox1.Items;\r
4196     PBKEditForm.ComboBox5.ItemIndex:=1;\r
4197     PBKEditForm.ComboBox6.ItemIndex:=0;\r
4198     PBKEditForm.COmboBox7.Items:=PBKEditForm.COmboBox6.Items;\r
4199     PBKEditForm.ComboBox7.ItemIndex:=0;\r
4200     PbkEditForm.Edit2.Text:='';\r
4201 \r
4202     num_num:=1;\r
4203     text_num:=1;\r
4204     pbk.Location:=pbknumberentry;\r
4205     case ComboBox1.ItemIndex of\r
4206       4:pbk.MemoryType:=GMT_ME;\r
4207       5:pbk.MemoryType:=GMT_SM;\r
4208     end;\r
4209     GSM_GetMemoryLocation(@pbk);\r
4210 \r
4211     pbkeditform.ComboBox1.enabled:=false;\r
4212     pbkeditform.ComboBox2.enabled:=false;\r
4213     pbkeditform.ComboBox3.enabled:=false;\r
4214     pbkeditform.ComboBox4.enabled:=false;\r
4215     pbkeditform.ComboBox5.enabled:=false;\r
4216     pbkeditform.ComboBox6.enabled:=false;\r
4217     pbkeditform.ComboBox7.enabled:=false;\r
4218     pbkeditform.Edit3.enabled:=false;\r
4219     pbkeditform.Edit4.enabled:=false;\r
4220     pbkeditform.Edit5.enabled:=false;\r
4221     pbkeditform.Edit6.enabled:=false;\r
4222     pbkeditform.Edit7.enabled:=false;\r
4223     pbkeditform.Edit8.enabled:=false;\r
4224     PbkEditForm.Edit3.Text:='Not available';\r
4225     PbkEditForm.Edit4.Text:='Not available';\r
4226     PbkEditForm.Edit5.Text:='Not available';\r
4227     PbkEditForm.Edit6.Text:='Not available';\r
4228     PbkEditForm.Edit7.Text:='Not available';\r
4229     PbkEditForm.Edit8.Text:='Not available';\r
4230     if (pbk.MemoryType=GMT_ME) and\r
4231        (GSM_GetModelFeature(FN_PHONEBOOK)=F_PBK71INT) then\r
4232     begin\r
4233       pbkeditform.ComboBox1.enabled:=true;\r
4234       pbkeditform.ComboBox2.enabled:=true;\r
4235       pbkeditform.ComboBox3.enabled:=true;\r
4236       pbkeditform.ComboBox4.enabled:=true;\r
4237       pbkeditform.ComboBox5.enabled:=true;\r
4238       pbkeditform.ComboBox6.enabled:=true;\r
4239       pbkeditform.ComboBox7.enabled:=true;\r
4240       pbkeditform.Edit3.enabled:=true;\r
4241       pbkeditform.Edit4.enabled:=true;\r
4242       pbkeditform.Edit5.enabled:=true;\r
4243       pbkeditform.Edit6.enabled:=true;\r
4244       pbkeditform.Edit7.enabled:=true;\r
4245       pbkeditform.Edit8.enabled:=true;\r
4246       PbkEditForm.Edit3.Text:='';\r
4247       PbkEditForm.Edit4.Text:='';\r
4248       PbkEditForm.Edit5.Text:='';\r
4249       PbkEditForm.Edit6.Text:='';\r
4250       PbkEditForm.Edit7.Text:='';\r
4251       PbkEditForm.Edit8.Text:='';\r
4252     end;\r
4253 \r
4254     pbkeditform.Label2.Enabled:=true;\r
4255     pbkeditform.ComboBox8.Enabled:=true;\r
4256     if (GSM_GetModelFeature(FN_CALLERGROUPS)=0) then\r
4257     begin\r
4258       pbkeditform.Label2.Enabled:=false;\r
4259       pbkeditform.ComboBox8.Enabled:=false;\r
4260     end;\r
4261 \r
4262     pbkeditform.Edit1.Text:=pbk.name;\r
4263     if (pbk.Number[1]<>chr(0)) then\r
4264     begin\r
4265       pbkeditform.ComboBox1.ItemIndex:=1;\r
4266       pbkeditform.Edit2.Text:=pbk.number;\r
4267       num_num:=num_num+1;\r
4268     end;\r
4269     for i:=1 to pbk.SubEntriesCount do\r
4270     begin\r
4271       case pbk.SubEntries[i].EntryType of\r
4272         GSM_Number:\r
4273           begin\r
4274             j:=1;\r
4275             case pbk.SubEntries[i].NumberType of\r
4276               GSM_General :j:=1;\r
4277               GSM_General2:j:=1;\r
4278               GSM_Mobile  :j:=3;\r
4279               GSM_Work    :j:=4;\r
4280               GSM_Fax     :j:=0;\r
4281               GSM_Home    :j:=2;\r
4282             end;\r
4283             case num_num of\r
4284               1:begin\r
4285                   pbkeditform.ComboBox1.ItemIndex:=j;\r
4286                   pbkeditform.edit2.text:=pbk.SubEntries[i].Number;\r
4287                 end;\r
4288               2:begin\r
4289                   pbkeditform.ComboBox2.ItemIndex:=j;\r
4290                   pbkeditform.edit3.text:=pbk.SubEntries[i].Number;\r
4291                 end;\r
4292               3:begin\r
4293                   pbkeditform.ComboBox3.ItemIndex:=j;\r
4294                   pbkeditform.edit4.text:=pbk.SubEntries[i].Number;\r
4295                 end;\r
4296               4:begin\r
4297                   pbkeditform.ComboBox4.ItemIndex:=j;\r
4298                   pbkeditform.edit5.text:=pbk.SubEntries[i].Number;\r
4299                 end;\r
4300               5:begin\r
4301                   pbkeditform.ComboBox5.ItemIndex:=j;\r
4302                   pbkeditform.edit6.text:=pbk.SubEntries[i].Number;\r
4303                 end;\r
4304             end;\r
4305             num_num:=num_num+1;\r
4306           end;\r
4307         GSM_Note  :\r
4308           begin\r
4309             j:=1;\r
4310             case text_num of\r
4311               1:begin\r
4312                   pbkeditform.ComboBox6.ItemIndex:=j;\r
4313                   pbkeditform.edit7.text:=pbk.SubEntries[i].Number;\r
4314                 end;\r
4315               2:begin\r
4316                   pbkeditform.ComboBox7.ItemIndex:=j;\r
4317                   pbkeditform.edit8.text:=pbk.SubEntries[i].Number;\r
4318                 end;\r
4319             end;\r
4320             text_num:=text_num+1;\r
4321           end;\r
4322         GSM_Postal:\r
4323           begin\r
4324             j:=2;\r
4325             case text_num of\r
4326               1:begin\r
4327                   pbkeditform.ComboBox6.ItemIndex:=j;\r
4328                   pbkeditform.edit7.text:=pbk.SubEntries[i].Number;\r
4329                 end;\r
4330               2:begin\r
4331                   pbkeditform.ComboBox7.ItemIndex:=j;\r
4332                   pbkeditform.edit8.text:=pbk.SubEntries[i].Number;\r
4333                 end;\r
4334             end;\r
4335             text_num:=text_num+1;\r
4336           end;\r
4337         GSM_Email :\r
4338           begin\r
4339             j:=0;\r
4340             case text_num of\r
4341               1:begin\r
4342                   pbkeditform.ComboBox6.ItemIndex:=j;\r
4343                   pbkeditform.edit7.text:=pbk.SubEntries[i].Number;\r
4344                 end;\r
4345               2:begin\r
4346                   pbkeditform.ComboBox7.ItemIndex:=j;\r
4347                   pbkeditform.edit8.text:=pbk.SubEntries[i].Number;\r
4348                 end;\r
4349             end;\r
4350             text_num:=text_num+1;\r
4351           end;\r
4352 \r
4353       end;\r
4354     end;\r
4355 \r
4356     pbkeditform.ComboBox8.items.clear;\r
4357     pbkeditform.ComboBox8.items.add('Not assigned');\r
4358     for i:=1 to 5 do\r
4359     begin\r
4360       pbkeditform.ComboBox8.items.add(caller[i].text);\r
4361     end;\r
4362     pbkeditform.ComboBox8.itemindex:=0;\r
4363     if (GSM_GetModelFeature(FN_CALLERGROUPS)<>0) then\r
4364     begin\r
4365       if (pbk.Group>=0) and (pbk.Group<=4) then\r
4366       begin\r
4367         pbkeditform.ComboBox8.itemindex:=pbk.Group+1;\r
4368       end;\r
4369     end;\r
4370     \r
4371     PbkEditForm.ShowModal;\r
4372   end;\r
4373 \r
4374 end;\r
4375 \r
4376 procedure TMainForm.Delete4Click(Sender: TObject);\r
4377 begin\r
4378   if Application.MessageBox('Do you want to delete this phonebook entry ?','Question',MB_YESNO)=IDYES then\r
4379   begin\r
4380 \r
4381     pbk.Location:=pbknumberentry;\r
4382     case ComboBox1.ItemIndex of\r
4383       4:pbk.MemoryType:=GMT_ME;\r
4384       5:pbk.MemoryType:=GMT_SM;\r
4385     end;\r
4386 \r
4387     MainForm.Timer2.Enabled:=false;\r
4388     GSM_GetMemoryLocation(@pbk);\r
4389 \r
4390     pbk.SubEntriesCount:=0;\r
4391     pbk.Name[1]:=chr(0);\r
4392     pbk.Number[1]:=chr(0);\r
4393     GSM_WritePhonebookLocation(@pbk);\r
4394     MainForm.Timer2.Enabled:=true;\r
4395     MainForm.ComboBox1Change(nil);\r
4396   end;\r
4397 end;\r
4398 \r
4399 \r
4400 procedure TMainForm.Button22Click(Sender: TObject);\r
4401 var\r
4402   i:integer;\r
4403   mybinring:GSM_BinRingtone;\r
4404   myring:GSM_Ringtone;\r
4405 begin\r
4406   LogosRingForm.Label1.Caption:='Do you want to get ringtone ?';\r
4407   LogosRingForm.ComboBox3.Visible:=true;\r
4408   LogosRingForm.ComboBox3.Items.Clear();\r
4409   MainForm.Timer2.Enabled:=false;\r
4410   for i:=1 to GSM_GetModelFeature(FN_RINGNUMBER) do\r
4411   begin\r
4412     mybinring.location:=i;\r
4413     if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
4414     begin\r
4415       if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
4416       begin\r
4417         LogosRingForm.ComboBox3.Items.Add(myring.name);\r
4418       end else\r
4419       begin\r
4420         LogosRingForm.ComboBox3.Items.Add(mybinring.name);\r
4421       end;\r
4422     end else\r
4423       LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
4424   end;\r
4425   MainForm.Timer2.Enabled:=true;\r
4426   LogosRingForm.ComboBox3.ItemIndex:=0;\r
4427   LogosRingForm.ShowModal;\r
4428   if LogosRingForm.ComboBox3.Visible then\r
4429   begin\r
4430     mybinring.location:=LogosRingForm.ComboBox3.ItemIndex+1;\r
4431     MainForm.Timer2.Enabled:=false;\r
4432     if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
4433     begin\r
4434       MainForm.Timer2.Enabled:=true;\r
4435       if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
4436       begin\r
4437         application.MessageBox('Smart Messaging format','',0);\r
4438         if SaveDialog1.Execute then\r
4439         begin\r
4440           GSM_SaveRingtoneFile(PChar(SaveDialog1.FileName),@myring);\r
4441         end;\r
4442       end else\r
4443       begin\r
4444         application.MessageBox('Binary format','',0);\r
4445         if SaveDialog1.Execute then\r
4446         begin\r
4447           GSM_SaveBinRingtoneFile(PChar(SaveDialog1.FileName),@mybinring);\r
4448         end;\r
4449       end;\r
4450     end;\r
4451 \r
4452     MainForm.Timer2.Enabled:=true;\r
4453   end;\r
4454 \r
4455 end;\r
4456 \r
4457 procedure TMainForm.New20Click(Sender: TObject);\r
4458 begin\r
4459   bookmarknum:=65535;\r
4460   WAPBookForm.Edit1.Text:='';\r
4461   WAPBookForm.Edit2.Text:='';\r
4462   WAPBookForm.ShowModal;\r
4463 end;\r
4464 \r
4465 procedure TMainForm.ListView9SelectItem(Sender: TObject; Item: TListItem;\r
4466   Selected: Boolean);\r
4467 begin\r
4468   if Selected then bookmarknum2:=item.Index+1;\r
4469 end;\r
4470 \r
4471 procedure TMainForm.Edit20Click(Sender: TObject);\r
4472 var\r
4473   bookmark:GSM_WAPBookmark;\r
4474 begin\r
4475   bookmark.location:=bookmarknum2;\r
4476   mainform.Timer2.Enabled:=false;\r
4477   GSM_GetWAPBookmark(@bookmark);\r
4478   mainform.Timer2.Enabled:=true;\r
4479   WAPBookForm.Edit1.Text:=bookmark.title;\r
4480   WAPBookForm.Edit2.Text:=bookmark.adress;\r
4481   WAPBookForm.ShowModal;\r
4482 end;\r
4483 \r
4484 procedure TMainForm.WAPBookPopupMenuPopup(Sender: TObject);\r
4485 begin\r
4486   New20.Enabled:=false;\r
4487   Edit20.Enabled:=false;\r
4488   SMSSendSave2.Enabled:=false;\r
4489   if (WAPBookmarkThread=nil) and (GSMPhoneConnected) then\r
4490   begin\r
4491     New20.Enabled:=true;\r
4492     if (ListView9.Selected<>nil) and\r
4493        (ListView9.Selected.SubItems[0]<>'') then\r
4494     begin\r
4495       Edit20.Enabled:=true;\r
4496       SMSSendSave2.Enabled:=true;\r
4497     end;\r
4498   end;\r
4499 end;\r
4500 \r
4501 procedure TMainForm.SMSSendSave2Click(Sender: TObject);\r
4502 var\r
4503   i:integer;\r
4504 begin\r
4505   if smscinit=false then\r
4506   begin\r
4507     MainForm.ListView6.Items.Clear;\r
4508     smscnum:=1;\r
4509     while true do\r
4510     begin\r
4511       ReadSMSC;\r
4512       if smscinit then break;\r
4513     end;\r
4514   end;\r
4515 \r
4516   //sms text\r
4517   SMSEditForm.Memo1.Text:='';\r
4518 \r
4519   //number\r
4520   SMSEditForm.ComboBox9.Text:='';\r
4521   AddSMSEditSenderList;\r
4522   \r
4523   //folders\r
4524   GSM_GetSMSFolders(@SMSfolders);\r
4525   SMSEditForm.ComboBox1.Items.Clear;\r
4526   for i:=1 to SMSFolders.number do\r
4527   begin\r
4528     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
4529   end;\r
4530   SMSEditForm.ComboBox1.ItemIndex:=0;\r
4531 \r
4532   //smsc\r
4533   SetSMSC(1);\r
4534   SMSEditForm.ComboBox2.Items.Clear;\r
4535   SMSEditForm.ComboBox2.Items.Add('custom');\r
4536   for i:=1 to smscnum-1 do\r
4537   begin\r
4538     if SMSC2[i].Name[1]<>chr(0) then\r
4539       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
4540     else\r
4541       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
4542   end;\r
4543   SMSEditForm.ComboBox2.ItemIndex:=1;\r
4544 \r
4545   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
4546   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
4547   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
4548   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
4549   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
4550   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
4551   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
4552   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.WAPBookTabSheet;\r
4553 \r
4554   bookma.location:=bookmarknum2;\r
4555   mainform.Timer2.Enabled:=false;\r
4556   GSM_GetWAPBookmark(@bookma);\r
4557   mainform.Timer2.Enabled:=true;\r
4558 \r
4559   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
4560   begin\r
4561     SMSEditForm.edit3.Visible:=true;\r
4562     SMSEditForm.label14.Visible:=true;\r
4563   end else\r
4564   begin\r
4565     SMSEditForm.edit3.Visible:=false;\r
4566     SMSEditForm.label14.Visible:=false;\r
4567   end;\r
4568 \r
4569   SMSEditForm.ShowModal;\r
4570 end;\r
4571 \r
4572 procedure TMainForm.Button23Click(Sender: TObject);\r
4573 var\r
4574   i:integer;\r
4575 begin\r
4576   if smscinit=false then\r
4577   begin\r
4578     MainForm.ListView6.Items.Clear;\r
4579     smscnum:=1;\r
4580     while true do\r
4581     begin\r
4582       ReadSMSC;\r
4583       if smscinit then break;\r
4584     end;\r
4585   end;\r
4586 \r
4587   //sms text\r
4588   SMSEditForm.Memo1.Text:='';\r
4589 \r
4590   //number\r
4591   SMSEditForm.ComboBox9.Text:='';\r
4592   AddSMSEditSenderList;\r
4593   \r
4594   //folders\r
4595   GSM_GetSMSFolders(@SMSfolders);\r
4596   SMSEditForm.ComboBox1.Items.Clear;\r
4597   for i:=1 to SMSFolders.number do\r
4598   begin\r
4599     SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
4600   end;\r
4601   SMSEditForm.ComboBox1.ItemIndex:=0;\r
4602 \r
4603   //smsc\r
4604   SetSMSC(1);\r
4605   SMSEditForm.ComboBox2.Items.Clear;\r
4606   SMSEditForm.ComboBox2.Items.Add('custom');\r
4607   for i:=1 to smscnum-1 do\r
4608   begin\r
4609     if SMSC2[i].Name[1]<>chr(0) then\r
4610       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
4611     else\r
4612       SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
4613   end;\r
4614   SMSEditForm.ComboBox2.ItemIndex:=1;\r
4615 \r
4616   SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
4617   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
4618   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
4619   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
4620   SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
4621   SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
4622   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
4623   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.WAPSettTabSheet;\r
4624 \r
4625   Wapset.location:=combobox7.ItemIndex;\r
4626   MainForm.Timer2.Enabled:=false;\r
4627   GSM_GetWAPSettings(@wapset);\r
4628   MainForm.Timer2.Enabled:=true;\r
4629 \r
4630   if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
4631   begin\r
4632     SMSEditForm.edit3.Visible:=true;\r
4633     SMSEditForm.label14.Visible:=true;\r
4634   end else\r
4635   begin\r
4636     SMSEditForm.edit3.Visible:=false;\r
4637     SMSEditForm.label14.Visible:=false;\r
4638   end;\r
4639 \r
4640   SMSEditForm.ShowModal;\r
4641 end;\r
4642 \r
4643 procedure TMainForm.CopyphonebooktoPC1Click(Sender: TObject);\r
4644 begin\r
4645   SavePBKOffline;\r
4646 end;\r
4647 \r
4648 procedure TMainForm.PCPBKTabSheetShow(Sender: TObject);\r
4649 var i:integer;\r
4650 begin\r
4651   ReadPBKOffline;\r
4652   ListView12.Items.Clear;\r
4653   for i:=1 to PBKOfflineNumber do\r
4654   begin\r
4655     MainForm.ListView12.Items.Add;\r
4656     MainForm.ListView12.Items.Item[i-1].Caption:=inttostr(PhoneBackup.PhonePhonebook[i].Location);\r
4657     AddPBKEntry(ListView12,PhoneBackup.PhonePhonebook[i],i-1);\r
4658   end;\r
4659 end;\r
4660 \r
4661 procedure TMainForm.FormShow(Sender: TObject);\r
4662 var\r
4663   MyIniFile: TIniFile;\r
4664   x:string;\r
4665 begin\r
4666   MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
4667 \r
4668   x:=MyInifile.ReadString('win32gui', 'x', '100');\r
4669   MainForm.Left:=strtoint(x);\r
4670 \r
4671   x:=MyInifile.ReadString('win32gui', 'y', '100');\r
4672   MainForm.Top:=strtoint(x);\r
4673 \r
4674   x:=MyInifile.ReadString('win32gui', 'treewidth', '93');\r
4675   MainForm.TreeView1.Width:=strtoint(x);\r
4676 \r
4677   x:=MyInifile.ReadString('win32gui', 'width', '655');\r
4678   MainForm.Width:=strtoint(x);\r
4679 \r
4680   x:=MyInifile.ReadString('win32gui', 'height', '431');\r
4681   MainForm.Height:=strtoint(x);\r
4682 \r
4683   MyIniFile.Free;\r
4684 \r
4685 end;\r
4686 \r
4687 procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);\r
4688 begin\r
4689   SaveMainConfig;\r
4690 end;\r
4691 \r
4692 end.\r