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