http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / win32_makefile / gui_delphi / mainunit.pas
diff --git a/win32_makefile/gui_delphi/mainunit.pas b/win32_makefile/gui_delphi/mainunit.pas
new file mode 100644 (file)
index 0000000..9bf8351
--- /dev/null
@@ -0,0 +1,3524 @@
+unit MainUnit;\r
+\r
+interface\r
+\r
+{$I-}\r
+\r
+uses\r
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,\r
+  Dialogs, ComCtrls, GnokiiAPI, ExtCtrls, Menus, StdCtrls, Spin, IniFiles;\r
+\r
+type\r
+  TMainForm = class(TForm)\r
+    StatusBar1: TStatusBar;\r
+    TreeView1: TTreeView;\r
+    Splitter1: TSplitter;\r
+    MainMenu1: TMainMenu;\r
+    File1: TMenuItem;\r
+    Quit1: TMenuItem;\r
+    Help1: TMenuItem;\r
+    About1: TMenuItem;\r
+    Timer1: TTimer;\r
+    OpenDialog1: TOpenDialog;\r
+    SaveDialog1: TSaveDialog;\r
+    PageControl1: TPageControl;\r
+    NetmonitorTabSheet: TTabSheet;\r
+    GroupBox1: TGroupBox;\r
+    Label1: TLabel;\r
+    NetmonGroupBox: TGroupBox;\r
+    NetmonLabel: TLabel;\r
+    SpinEdit1: TSpinEdit;\r
+    Button11: TButton;\r
+    PhonebookTabSheet: TTabSheet;\r
+    GroupBox2: TGroupBox;\r
+    Panel1: TPanel;\r
+    Label2: TLabel;\r
+    ComboBox1: TComboBox;\r
+    ListView1: TListView;\r
+    PhoneTabSheet: TTabSheet;\r
+    GroupBox3: TGroupBox;\r
+    GroupBox12: TGroupBox;\r
+    Label4: TLabel;\r
+    Label5: TLabel;\r
+    Label7: TLabel;\r
+    Label8: TLabel;\r
+    Label9: TLabel;\r
+    Label6: TLabel;\r
+    Button9: TButton;\r
+    GroupBox14: TGroupBox;\r
+    ListView8: TListView;\r
+    GroupBox11: TGroupBox;\r
+    CheckBox1: TCheckBox;\r
+    LogosTabSheet: TTabSheet;\r
+    GroupBox4: TGroupBox;\r
+    LogosImage: TImage;\r
+    Image1: TImage;\r
+    Image2: TImage;\r
+    ComboBox2: TComboBox;\r
+    Button6: TButton;\r
+    Button7: TButton;\r
+    Button8: TButton;\r
+    Button12: TButton;\r
+    Button4: TButton;\r
+    Button5: TButton;\r
+    RingtonesTabSheet: TTabSheet;\r
+    GroupBox5: TGroupBox;\r
+    Label11: TLabel;\r
+    Button1: TButton;\r
+    Button2: TButton;\r
+    Button3: TButton;\r
+    SMSTabSheet: TTabSheet;\r
+    GroupBox6: TGroupBox;\r
+    Panel2: TPanel;\r
+    Label10: TLabel;\r
+    ComboBox3: TComboBox;\r
+    ListView2: TListView;\r
+    SpeedTabSheet: TTabSheet;\r
+    GroupBox7: TGroupBox;\r
+    ListView3: TListView;\r
+    CalendarTabSheet: TTabSheet;\r
+    GroupBox8: TGroupBox;\r
+    ListView4: TListView;\r
+    SMSCTabSheet: TTabSheet;\r
+    GroupBox9: TGroupBox;\r
+    ListView6: TListView;\r
+    CallerTabSheet: TTabSheet;\r
+    GroupBox10: TGroupBox;\r
+    ListView5: TListView;\r
+    ProfileTabSheet: TTabSheet;\r
+    GroupBox13: TGroupBox;\r
+    ListView7: TListView;\r
+    Panel3: TPanel;\r
+    Splitter2: TSplitter;\r
+    GroupBox15: TGroupBox;\r
+    GroupBox16: TGroupBox;\r
+    Button13: TButton;\r
+    Button14: TButton;\r
+    Label15: TLabel;\r
+    Edit1: TEdit;\r
+    Edit2: TEdit;\r
+    Button16: TButton;\r
+    CalendarPopupMenu: TPopupMenu;\r
+    New1: TMenuItem;\r
+    Edit3: TMenuItem;\r
+    Delete1: TMenuItem;\r
+    SMSPopupMenu: TPopupMenu;\r
+    Edit4: TMenuItem;\r
+    Memo1: TMemo;\r
+    Memo2: TMemo;\r
+    New2: TMenuItem;\r
+    Label14: TLabel;\r
+    Label16: TLabel;\r
+    WapBookTabSheet: TTabSheet;\r
+    GroupBox17: TGroupBox;\r
+    DateTimePicker1: TDateTimePicker;\r
+    ConfigTabSheet: TTabSheet;\r
+    GroupBox18: TGroupBox;\r
+    Configuration1: TMenuItem;\r
+    N1: TMenuItem;\r
+    Delete2: TMenuItem;\r
+    SMSCPopupMenu: TPopupMenu;\r
+    Edit5: TMenuItem;\r
+    Label3: TLabel;\r
+    ComboBox4: TComboBox;\r
+    Label12: TLabel;\r
+    ComboBox5: TComboBox;\r
+    Label13: TLabel;\r
+    CheckBox2: TCheckBox;\r
+    Label17: TLabel;\r
+    Label18: TLabel;\r
+    PBKPopupMenu: TPopupMenu;\r
+    Edit7: TMenuItem;\r
+    Button17: TButton;\r
+    SMS1: TMenuItem;\r
+    Button18: TButton;\r
+    SMSSendSave1: TMenuItem;\r
+    ComboBox6: TComboBox;\r
+    WAPSettTabSheet: TTabSheet;\r
+    DivertTabSheet: TTabSheet;\r
+    GroupBox19: TGroupBox;\r
+    GroupBox20: TGroupBox;\r
+    Timer2: TTimer;\r
+    ListView9: TListView;\r
+    AboutTabSheet: TTabSheet;\r
+    GroupBox21: TGroupBox;\r
+    Label19: TLabel;\r
+    Label20: TLabel;\r
+    PCSMSTabSheet: TTabSheet;\r
+    GroupBox22: TGroupBox;\r
+    Panel4: TPanel;\r
+    Splitter3: TSplitter;\r
+    Panel5: TPanel;\r
+    ListView10: TListView;\r
+    CopytoPC1: TMenuItem;\r
+    N2: TMenuItem;\r
+    Memo4: TMemo;\r
+    Memo5: TMemo;\r
+    PCSMSPopupMenu: TPopupMenu;\r
+    SendSave1: TMenuItem;\r
+    N3: TMenuItem;\r
+    Delete3: TMenuItem;\r
+    Label21: TLabel;\r
+    ComboBox7: TComboBox;\r
+    Label22: TLabel;\r
+    Edit6: TEdit;\r
+    Label23: TLabel;\r
+    Edit8: TEdit;\r
+    Label24: TLabel;\r
+    ComboBox8: TComboBox;\r
+    Label25: TLabel;\r
+    ComboBox9: TComboBox;\r
+    Label26: TLabel;\r
+    ComboBox10: TComboBox;\r
+    Label27: TLabel;\r
+    Edit9: TEdit;\r
+    Label28: TLabel;\r
+    Edit10: TEdit;\r
+    Label29: TLabel;\r
+    Edit11: TEdit;\r
+    Label30: TLabel;\r
+    Edit12: TEdit;\r
+    Label31: TLabel;\r
+    ComboBox11: TComboBox;\r
+    Label32: TLabel;\r
+    ComboBox12: TComboBox;\r
+    Label33: TLabel;\r
+    ComboBox13: TComboBox;\r
+    Label34: TLabel;\r
+    Edit13: TEdit;\r
+    Label35: TLabel;\r
+    Edit14: TEdit;\r
+    Label36: TLabel;\r
+    Edit15: TEdit;\r
+    Label37: TLabel;\r
+    ComboBox14: TComboBox;\r
+    Memo3: TMemo;\r
+    PageControl2: TPageControl;\r
+    TabSheet1: TTabSheet;\r
+    Button19: TButton;\r
+    Label38: TLabel;\r
+    Edit16: TEdit;\r
+    Label39: TLabel;\r
+    Edit17: TEdit;\r
+    Label40: TLabel;\r
+    ComboBox15: TComboBox;\r
+    Label41: TLabel;\r
+    Edit18: TEdit;\r
+    Button20: TButton;\r
+    PCCalendarTabSheet: TTabSheet;\r
+    GroupBox23: TGroupBox;\r
+    ListView11: TListView;\r
+    N4: TMenuItem;\r
+    CopytoPC2: TMenuItem;\r
+    PCCalendarPopupMenu: TPopupMenu;\r
+    Copytocalendar1: TMenuItem;\r
+    N5: TMenuItem;\r
+    Delete5: TMenuItem;\r
+    PCOfflineTabSheet: TTabSheet;\r
+    GroupBox24: TGroupBox;\r
+    Label42: TLabel;\r
+    Label43: TLabel;\r
+    Label44: TLabel;\r
+    Label45: TLabel;\r
+    TabSheet2: TTabSheet;\r
+    TabSheet3: TTabSheet;\r
+    procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
+      Shift: TShiftState; X, Y: Integer);\r
+    procedure FormCreate(Sender: TObject);\r
+    procedure Timer1Timer(Sender: TObject);\r
+    procedure NetmonitorTabSheetShow(Sender: TObject);\r
+    procedure NetmonitorTabSheetHide(Sender: TObject);\r
+    procedure SpinEdit1Change(Sender: TObject);\r
+    procedure ComboBox1Change(Sender: TObject);\r
+    procedure PhonebookTabSheetHide(Sender: TObject);\r
+    procedure Quit1Click(Sender: TObject);\r
+    procedure FormResize(Sender: TObject);\r
+    procedure About1Click(Sender: TObject);\r
+    procedure LogosImageMouseMove(Sender: TObject; Shift: TShiftState; X,\r
+      Y: Integer);\r
+    procedure Button1Click(Sender: TObject);\r
+    procedure Button4Click(Sender: TObject);\r
+    procedure Button3Click(Sender: TObject);\r
+    procedure PhoneTabSheetShow(Sender: TObject);\r
+    procedure Button2Click(Sender: TObject);\r
+    procedure LogosTabSheetShow(Sender: TObject);\r
+    procedure ComboBox2Select(Sender: TObject);\r
+    procedure Button7Click(Sender: TObject);\r
+    procedure LogosImageMouseDown(Sender: TObject; Button: TMouseButton;\r
+      Shift: TShiftState; X, Y: Integer);\r
+    procedure Button6Click(Sender: TObject);\r
+    procedure Button5Click(Sender: TObject);\r
+    procedure Button8Click(Sender: TObject);\r
+    procedure SpeedTabSheetShow(Sender: TObject);\r
+    procedure Button9Click(Sender: TObject);\r
+    procedure SpeedTabSheetHide(Sender: TObject);\r
+    procedure Button11Click(Sender: TObject);\r
+    procedure Button12Click(Sender: TObject);\r
+    procedure CalendarTabSheetShow(Sender: TObject);\r
+    procedure CallerTabSheetShow(Sender: TObject);\r
+    procedure SMSCTabSheetShow(Sender: TObject);\r
+    procedure Button10Click(Sender: TObject);\r
+    procedure ProfileTabSheetShow(Sender: TObject);\r
+    procedure SMSCTabSheetHide(Sender: TObject);\r
+    procedure CalendarTabSheetHide(Sender: TObject);\r
+    procedure CallerTabSheetHide(Sender: TObject);\r
+    procedure ProfileTabSheetHide(Sender: TObject);\r
+    procedure PhonebookTabSheetShow(Sender: TObject);\r
+    procedure SMSTabSheetShow(Sender: TObject);\r
+    procedure ComboBox3Change(Sender: TObject);\r
+    procedure ListView2SelectItem(Sender: TObject; Item: TListItem;\r
+      Selected: Boolean);\r
+    procedure New1Click(Sender: TObject);\r
+    procedure Edit3Click(Sender: TObject);\r
+    procedure ListView4SelectItem(Sender: TObject; Item: TListItem;\r
+      Selected: Boolean);\r
+    procedure Delete1Click(Sender: TObject);\r
+    procedure Button16Click(Sender: TObject);\r
+    procedure Edit4Click(Sender: TObject);\r
+    procedure New2Click(Sender: TObject);\r
+    procedure Configuration1Click(Sender: TObject);\r
+    procedure TreeView1KeyUp(Sender: TObject; var Key: Word;\r
+      Shift: TShiftState);\r
+    procedure SMSTabSheetHide(Sender: TObject);\r
+    procedure SMSPopupMenuPopup(Sender: TObject);\r
+    procedure CalendarPopupMenuPopup(Sender: TObject);\r
+    procedure Edit1Change(Sender: TObject);\r
+    procedure Delete2Click(Sender: TObject);\r
+    procedure Edit5Click(Sender: TObject);\r
+    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;\r
+      Shift: TShiftState; X, Y: Integer);\r
+    procedure SMSCPopupMenuPopup(Sender: TObject);\r
+    procedure ListView6SelectItem(Sender: TObject; Item: TListItem;\r
+      Selected: Boolean);\r
+    procedure ListView1SelectItem(Sender: TObject; Item: TListItem;\r
+      Selected: Boolean);\r
+    procedure Edit7Click(Sender: TObject);\r
+    procedure Button18Click(Sender: TObject);\r
+    procedure Button17Click(Sender: TObject);\r
+    procedure SMS1Click(Sender: TObject);\r
+    procedure SMSSendSave1Click(Sender: TObject);\r
+    procedure Button13Click(Sender: TObject);\r
+    procedure Button14Click(Sender: TObject);\r
+    procedure ConfigTabSheetHide(Sender: TObject);\r
+    procedure ConfigTabSheetShow(Sender: TObject);\r
+    procedure Timer2Timer(Sender: TObject);\r
+    procedure AboutTabSheetShow(Sender: TObject);\r
+    procedure PCSMSTabSheetShow(Sender: TObject);\r
+    procedure CopytoPC1Click(Sender: TObject);\r
+    procedure ListView10SelectItem(Sender: TObject; Item: TListItem;\r
+      Selected: Boolean);\r
+    procedure PCSMSPopupMenuPopup(Sender: TObject);\r
+    procedure Delete3Click(Sender: TObject);\r
+    procedure SendSave1Click(Sender: TObject);\r
+    procedure WapBookTabSheetHide(Sender: TObject);\r
+    procedure WapBookTabSheetShow(Sender: TObject);\r
+    procedure ComboBox7Change(Sender: TObject);\r
+    procedure Button19Click(Sender: TObject);\r
+    procedure Button20Click(Sender: TObject);\r
+    procedure PCOfflineTabSheetShow(Sender: TObject);\r
+    procedure PCCalendarTabSheetShow(Sender: TObject);\r
+    procedure CopytoPC2Click(Sender: TObject);\r
+    procedure Delete5Click(Sender: TObject);\r
+    procedure Copytocalendar1Click(Sender: TObject);\r
+    procedure PCCalendarPopupMenuPopup(Sender: TObject);\r
+  private\r
+    { Private declarations }\r
+  public\r
+    { Public declarations }\r
+  end;\r
+\r
+var\r
+  MainForm: TMainForm;\r
+  setcalendarnote:GSM_CalendarNote;\r
+  setsms:GSM_MultiSMSMessage;\r
+  setsmslocation:integer;\r
+  smscselectitem:integer;\r
+  bitma:GSM_Bitmap;\r
+  rington:GSM_Ringtone;\r
+  calenda:GSM_CalendarNote;\r
+  pbk:GSM_PhonebookEntry;\r
+  previewcolor:TColor;\r
+\r
+procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
+function DayOFweek3(date:TDateTime):string;\r
+procedure SetSMSC(num:integer);\r
+\r
+implementation\r
+\r
+uses Calendar, SMSEdit, LogosRing, Netmon, smscedit, pbkedit;\r
+\r
+{$R *.dfm}\r
+\r
+type\r
+  TNetmonThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TPhonebookThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TSpeedThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TSMSCThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TSMSThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TCalendarThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TCallerThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TProfileThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TPlayRingtoneThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+  TWAPBookmarkThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+\r
+var\r
+  //phone sheet\r
+  phoneinfo:boolean;\r
+\r
+  //reading netmonitor variables\r
+  netmonnum: integer; //number of netmon screen\r
+  NetmonThread: TNetmonThread;\r
+\r
+  //reading phonebook memories variables\r
+  phonebookstatus:GSM_MemoryStatus;\r
+  phonebookcur:integer;\r
+  phonebookfound:integer;\r
+  PhonebookThread: TPhonebookThread;\r
+  pbknumberentry:integer;\r
+\r
+  //logos\r
+  pointsize:integer;\r
+  x2,y2:byte;\r
+  logofilename:string='xxx';\r
+\r
+  //ringtones\r
+  PlayRingtoneThread: TPlayRingtoneThread;\r
+  ringindex:integer;\r
+  binring:GSM_BinRingtone;\r
+\r
+  //speeddials\r
+  speednum:integer;\r
+  SpeedThread: TSpeedThread;\r
+\r
+  //caller groups\r
+  caller:array[1..5] of GSM_Bitmap;\r
+  callerinit:boolean;\r
+  callernum:integer;\r
+  CallerThread: TCallerThread;\r
+\r
+  //smsc\r
+  smscnum:integer;\r
+  SMSCThread: TSMSCThread;\r
+  smscinit: boolean;\r
+  SMSC2:array[1..10] of GSM_MessageCenter;\r
+\r
+  //calendar\r
+  calendarnum:integer;\r
+  CalendarThread: TCalendarThread;\r
+  calendarselect:integer;\r
+  readcalendar:boolean;\r
+\r
+  //profiles\r
+  profilenum:integer;\r
+  ProfileThread: TProfileThread;\r
+\r
+  SMS:array[1..200] of GSM_SMSMessage;\r
+  SMSnum:integer;\r
+  SMSfolders:GSM_SMSFolders;\r
+  SMSstatus:GSM_SMSStatus;\r
+  smsnumindex:integer;\r
+  SMSThread: TSMSThread;\r
+  smsnum2:integer;\r
+\r
+  SMSOffline:array[1..300] of GSM_SMSMessage;\r
+  SMSOfflineNumber:integer;\r
+\r
+  //wap bookmarks\r
+  WAPBookmarkThread: TWAPBookmarkThread;\r
+  bookmarknum:integer;\r
+\r
+  CalendarOffline:array[1..300] of GSM_CalendarNote;\r
+  CalendarOfflineNumber:integer;\r
+\r
+function Inttostr2(I: Longint;digits:integer): string;\r
+\r
+{ Convert any integer type to a string }\r
+var\r
+  S: string[11];\r
+  j:integer;\r
+begin\r
+  Str(I:digits, S);\r
+  for  j:=1 to 11 do\r
+  begin\r
+    if s[j]<>' ' then break;\r
+    s[j]:='0';\r
+  end;\r
+  Result:= S;\r
+end;\r
+\r
+function DayOFweek3(date:TDateTime):string;\r
+var\r
+  days: array[1..7] of string;\r
+begin\r
+  days[1] := 'Sun';\r
+  days[2] := 'Mon';\r
+  days[3] := 'Tue';\r
+  days[4] := 'Wed';\r
+  days[5] := 'Thu';\r
+  days[6] := 'Fri';\r
+  days[7] := 'Sat';\r
+  DayOfWeek3:= days[DayOfWeek(date)];\r
+end;\r
+\r
+function DayOFweek2(day:integer;month:integer;year:integer):string;\r
+var\r
+  date:TDateTime;\r
+begin\r
+  Date:=EncodeDate(Year,Month,Day);\r
+  DayOfWeek2:= DayOfWeek3(Date);\r
+end;\r
+\r
+procedure SetSMSC(num:integer);\r
+begin\r
+  SMSEditForm.Edit1.Text:=SMSC2[num].Number;\r
+  case SMSC2[num].Validity of\r
+    GSMV_1_Hour   : SMSEditForm.ComboBox3.ItemIndex:=0;\r
+    GSMV_6_Hours  : SMSEditForm.ComboBox3.ItemIndex:=1;\r
+    GSMV_24_Hours : SMSEditForm.ComboBox3.ItemIndex:=2;\r
+    GSMV_72_Hours : SMSEditForm.ComboBox3.ItemIndex:=3;\r
+    GSMV_1_Week   : SMSEditForm.ComboBox3.ItemIndex:=4;\r
+  else\r
+    SMSEditForm.ComboBox3.ItemIndex:=5;\r
+\r
+  end;\r
+  case SMSC2[num].Format of\r
+    GSMF_Text   : SMSEditForm.ComboBox4.ItemIndex:=0;\r
+    GSMF_Fax    : SMSEditForm.ComboBox4.ItemIndex:=1;\r
+    GSMF_Email  : SMSEditForm.ComboBox4.ItemIndex:=2;\r
+  else\r
+    SMSEditForm.ComboBox4.ItemIndex:=3;\r
+  end;\r
+end;\r
+\r
+procedure ReadCallerGroup();\r
+var\r
+  logo:GSM_Bitmap;\r
+  name:Pchar;\r
+  i:integer;\r
+begin\r
+  if callernum<6 then\r
+  begin\r
+    i:=1;\r
+    while i<>0 do\r
+    begin\r
+      logo.type2:=GSM_CallerLogo;\r
+      logo.number:=callernum-1;\r
+      MainForm.Timer2.Enabled:=false;\r
+      i:=GSM_GetBitmap(@logo);\r
+      MainForm.Timer2.Enabled:=true;\r
+    end;\r
+    caller[callernum]:=logo;\r
+    MainForm.ListView5.Items.Add;\r
+    MainForm.ListView5.Items.Item[callernum-1].Caption:=inttostr(callernum);\r
+    if logo.text[1]=chr(0) then\r
+    begin\r
+      name:='';\r
+      case callernum of\r
+        1:name:='Family';\r
+        2:name:='VIP';\r
+        3:name:='Friends';\r
+        4:name:='Colleagues';\r
+        5:name:='Other';\r
+      end;\r
+      for i:=1 to 255 do\r
+      begin\r
+        caller[callernum].text[i]:=chr(0);\r
+      end;\r
+      for i:=1 to strlen(name) do\r
+      begin\r
+        caller[callernum].text[i]:=name[i-1];\r
+      end;\r
+    end;\r
+    MainForm.ListView5.Items.Item[callernum-1].Subitems.Add(caller[callernum].text);\r
+    if logo.ringtone=16 then\r
+      MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('default')\r
+    else\r
+      MainForm.ListView5.Items.Item[callernum-1].Subitems.Add(inttostr(logo.ringtone));\r
+    if logo.enabled<>0 then\r
+      MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('logo enabled')\r
+    else\r
+      MainForm.ListView5.Items.Item[callernum-1].Subitems.Add('logo disabled');\r
+  end else callerinit:=true;\r
+  callernum:=callernum+1;\r
+end;\r
+\r
+procedure ReadAllCallerGroups();\r
+begin\r
+  if callerinit=false then\r
+  begin\r
+    MainForm.ListView5.Items.Clear;\r
+    callernum:=1;\r
+    while callerinit=false do\r
+    begin\r
+      ReadCallerGroup();\r
+      if callerinit then break;\r
+    end;\r
+  end;\r
+end;\r
+\r
+//logos sheet\r
+procedure UpdatePointBitmap(i,j:integer);\r
+begin\r
+  if GSM_IsPointBitmap(@bitma,i,j)<>0 then\r
+  begin\r
+    MainForm.LogosImage.Canvas.Brush.Color := clBlack;\r
+    MainForm.Image1.Canvas.Pen.Color := clBlack;\r
+  end else\r
+  begin\r
+    MainForm.LogosImage.Canvas.Brush.Color := PreviewColor;//$0063cf63\r
+    MainForm.Image1.Canvas.Pen.Color := PreviewColor;\r
+  end;\r
+  MainForm.LogosImage.Canvas.FillRect(Rect(i*pointsize+i,j*pointsize+j,(i+1)*pointsize+i,(j+1)*pointsize+j));\r
+  MainForm.Image1.Canvas.Polyline([Point(28+i, 145+j), Point(29+i,146+j)]);\r
+end;\r
+\r
+procedure DrawBitmap();\r
+var\r
+  xsize:integer;\r
+  ysize:integer;\r
+  i,j:integer;\r
+begin\r
+  MainForm.StatusBar1.Panels[0].Text:=inttostr(bitma.width);\r
+  xsize:=bitma.width;\r
+  ysize:=bitma.heigh;\r
+\r
+  MainForm.LogosImage.Canvas.Brush.Style := bsSolid;\r
+  MainForm.LogosImage.Canvas.Brush.Color := clScrollBar;\r
+\r
+  MainForm.LogosImage.Canvas.Pen.Mode := pmCopy;\r
+\r
+  MainForm.LogosImage.Canvas.Pen.Color := clScrollBar;\r
+  MainForm.LogosImage.Canvas.Rectangle(0,0,MainForm.LogosImage.Width,MainForm.LogosImage.Height);\r
+\r
+  MainForm.LogosImage.Canvas.Pen.Color := PreviewColor;\r
+  MainForm.LogosImage.Canvas.Rectangle(0,0,xsize*pointsize+xsize-1,ysize*pointsize+ysize-1);\r
+\r
+  MainForm.LogosImage.Canvas.Brush.Color := PreviewColor;\r
+  MainForm.LogosImage.Canvas.FloodFill(2,2,PreviewColor,fsBorder);\r
+\r
+  MainForm.LogosImage.Canvas.Pen.Color := clBlack;\r
+\r
+  for i:=0 to xsize do\r
+  begin\r
+    MainForm.LogosImage.Canvas.MoveTo(i*pointsize+i-1,0);\r
+    MainForm.LogosImage.Canvas.LineTo(i*pointsize+i-1,ysize*pointsize+ysize-1);\r
+  end;\r
+  for i:=0 to ysize do\r
+  begin\r
+    MainForm.LogosImage.Canvas.MoveTo(0,i*pointsize+i-1);\r
+    MainForm.LogosImage.Canvas.LineTo(xsize*pointsize+xsize-1,i*pointsize+i-1);\r
+  end;\r
+\r
+  MainForm.Image1.Picture.Assign(MainForm.Image2.Picture);\r
+  MainForm.Image1.Canvas.Pen.Mode := pmCopy;\r
+  for i:=0 to xsize-1 do\r
+  begin\r
+   for j:=0 to ysize-1 do\r
+    begin\r
+      UpdatePointBitmap(i,j);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Image1MouseDown(Sender: TObject; Button: TMouseButton;\r
+  Shift: TShiftState; X, Y: Integer);\r
+var\r
+  sr: TSearchRec;\r
+  filefound:integer;\r
+begin\r
+  filefound:=0;\r
+  if FindFirst(ExtractFilePath(Application.ExeName)+'\*bmp', faAnyFile, sr) = 0 then\r
+  begin\r
+    repeat\r
+      if (sr.Attr and faAnyFile) = sr.Attr then\r
+      begin\r
+        if sr.Size=57814 then\r
+        begin\r
+          case filefound of\r
+            1:begin\r
+                Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\'+sr.name);\r
+                PreviewColor:=Image2.Canvas.Pixels[70,170];\r
+                DrawBitmap;\r
+                filefound:=2;\r
+                logofilename:=sr.name;\r
+              end;\r
+            0:if logofilename=sr.Name then filefound:=1;\r
+          end;\r
+          if filefound=2 then break;\r
+        end;\r
+      end;\r
+    until FindNext(sr) <> 0;\r
+    FindClose(sr);\r
+  end;\r
+  if filefound<>2 then\r
+  begin\r
+    if FindFirst(ExtractFilePath(Application.ExeName)+'\*bmp', faAnyFile, sr) = 0 then\r
+    begin\r
+      Image2.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\'+sr.name);\r
+      DrawBitmap;\r
+      logofilename:=sr.name;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure LogosMousePos(x,y:integer);\r
+var\r
+  i:integer;\r
+begin\r
+  i:=0;x2:=0;\r
+  while i<=x do\r
+  begin\r
+    i:=i+pointsize+1;\r
+    x2:=x2+1;\r
+  end;\r
+  i:=0;y2:=0;\r
+  while i<=y do\r
+  begin\r
+    i:=i+pointsize+1;\r
+    y2:=y2+1;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ComboBox2Select(Sender: TObject);\r
+var\r
+  bittype:integer;\r
+begin\r
+  case ComboBox2.ItemIndex of\r
+    0:bittype:=GSM_CallerLogo;\r
+    1:bittype:=GSM_OperatorLogo;\r
+    2:bittype:=GSM_PictureImage;\r
+    3:bittype:=GSM_StartupLogo;\r
+  else\r
+    bittype:=GSM_StartupLogo;\r
+  end;\r
+  GSM_ResizeBitmap(@bitma,bittype);\r
+  DrawBitmap();\r
+  if bitma.type2<>GSM_OperatorLogo then\r
+    Button8.Enabled:=false\r
+  else\r
+    Button8.Enabled:=true;\r
+end;\r
+\r
+procedure TMainForm.LogosImageMouseMove(Sender: TObject; Shift: TShiftState;\r
+  X, Y: Integer);\r
+begin\r
+  LogosMousePos(x,y);\r
+  if x2<=bitma.width then\r
+  begin\r
+    if y2<=bitma.heigh then\r
+      MainForm.StatusBar1.Panels[0].Text:=inttostr(x2)+','+inttostr(y2)\r
+    else\r
+      MainForm.StatusBar1.Panels[0].Text:='';\r
+  end else\r
+    MainForm.StatusBar1.Panels[0].Text:='';\r
+end;\r
+\r
+procedure TMainForm.LogosTabSheetShow(Sender: TObject);\r
+begin\r
+  DrawBitmap();\r
+end;\r
+\r
+procedure TMainForm.Button7Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  LogosRingForm.Label1.Caption:='What logo do you want to get ?';\r
+  LogosRingForm.ComboBox3.Items.Clear;\r
+  case bitma.type2 of\r
+    GSM_CallerLogo:\r
+      begin\r
+        LogosRingForm.ComboBox3.Visible:=true;\r
+        ReadAllCallerGroups();\r
+        for i:=1 to 5 do\r
+        begin\r
+          LogosRingForm.ComboBox3.Items.Add(caller[i].text);\r
+        end;\r
+        LogosRingForm.ComboBox3.ItemIndex:=0;\r
+        LogosRingForm.ShowModal();\r
+        if (LogosRingForm.ComboBox3.Visible) then\r
+        begin\r
+          bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
+          MainForm.Timer2.Enabled:=false;\r
+          GSM_GetBitmap(@bitma);\r
+          MainForm.Timer2.Enabled:=true;\r
+          DrawBitmap();\r
+        end;\r
+      end;\r
+    GSM_PictureImage:\r
+      begin\r
+        LogosRingForm.ComboBox3.Visible:=true;\r
+        for i:=1 to 20 do\r
+        begin\r
+          LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+        end;\r
+        LogosRingForm.ComboBox3.ItemIndex:=0;\r
+        LogosRingForm.ShowModal();\r
+        if (LogosRingForm.ComboBox3.Visible) then\r
+        begin\r
+          bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
+          MainForm.Timer2.Enabled:=false;\r
+          GSM_GetBitmap(@bitma);\r
+          MainForm.Timer2.Enabled:=true;\r
+          DrawBitmap();\r
+        end;\r
+      end;\r
+    else\r
+    begin\r
+      MainForm.Timer2.Enabled:=false;\r
+      GSM_GetBitmap(@bitma);\r
+      MainForm.Timer2.Enabled:=true;\r
+      DrawBitmap();\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button4Click(Sender: TObject);\r
+var\r
+  bit:GSM_Bitmap;\r
+begin\r
+  if OpenDialog1.Execute then\r
+  begin\r
+    if GSM_ReadBitmapFile(PChar(OpenDialog1.FileName),@bit)=0 then\r
+    begin\r
+      bitma:=bit;\r
+      DrawBitmap();\r
+      case bitma.type2 of\r
+        GSM_CallerLogo  :ComboBox2.ItemIndex:=0;\r
+        GSM_OperatorLogo:ComboBox2.ItemIndex:=1;\r
+        GSM_PictureImage:ComboBox2.ItemIndex:=2;\r
+        GSM_StartupLogo :ComboBox2.ItemIndex:=3;\r
+      end;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.LogosImageMouseDown(Sender: TObject; Button: TMouseButton;\r
+  Shift: TShiftState; X, Y: Integer);\r
+begin\r
+  LogosMousePos(x,y);\r
+  if x2<=bitma.width then\r
+  begin\r
+    if y2<=bitma.heigh then\r
+    begin\r
+      if ssLeft in Shift then\r
+        GSM_SetPointBitmap(@bitma,x2-1,y2-1)\r
+      else\r
+        GSM_ClearPointBitmap(@bitma,x2-1,y2-1);\r
+\r
+      UpdatePointBitmap(x2-1,y2-1);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button6Click(Sender: TObject);\r
+var\r
+  i,j:integer;\r
+  Name,Data:array[1..255] of char;\r
+  oldbitma:GSM_Bitmap;\r
+begin\r
+  LogosRingForm.Label1.Caption:='Do you want to set logo ?';\r
+  LogosRingForm.ComboBox3.Items.Clear;\r
+  case bitma.type2 of\r
+    GSM_StartupLogo:\r
+      begin\r
+        LogosRingForm.ComboBox3.Visible:=false;\r
+        LogosRingForm.ShowModal();\r
+        if (LogosRingForm.ComboBox3.Visible) then\r
+          GSM_SetBitmap(@bitma);\r
+      end;\r
+    GSM_OperatorLogo:\r
+      begin\r
+        LogosRingForm.ComboBox3.Visible:=true;\r
+        LogosRingForm.ComboBox3.Items.Add('Preview');\r
+        //preparing network names\r
+        i:=0;\r
+        while true do\r
+        begin\r
+          GSM_GetNetworkData(i,@Name,@Data);\r
+\r
+          // conversion problems\r
+          Label14.Caption:=Name;\r
+          if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
+\r
+          // conversion problems\r
+          Label14.Caption:=' - '+Label14.Caption;\r
+          for j:=6 downto 1 do\r
+          begin\r
+            Label14.Caption:=Data[j]+Label14.Caption;\r
+          end;\r
+\r
+          LogosRingForm.ComboBox3.Items.Add(Pchar(Label14.Caption));\r
+          i:=i+1;\r
+        end;\r
+        //looking for current network\r
+        if GSMPhoneConnected then\r
+        begin\r
+          // conversion problems\r
+          Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
+          Label14.Caption:=' - '+Label14.Caption;\r
+          for j:=6 downto 1 do\r
+          begin\r
+            Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
+          end;\r
+\r
+          i:=1;\r
+          while true do\r
+          begin\r
+            if strcomp(pchar(LogosRingForm.ComboBox3.Items[i]),pchar(Label14.Caption))=0\r
+              then break;\r
+            i:=i+1;\r
+          end;\r
+          LogosRingForm.ComboBox3.ItemIndex:=i;\r
+        end;\r
+        LogosRingForm.ShowModal();\r
+        if (LogosRingForm.ComboBox3.Visible) then\r
+        begin\r
+          if LogosRingForm.ComboBox3.ItemIndex=0 then\r
+          begin\r
+            bitma.number:=255;\r
+            for i:=1 to 6 do\r
+            begin\r
+              bitma.netcode[i]:=GSMNetworkInfo.NetworkCode[i];\r
+            end;\r
+            bitma.netcode[7]:=chr(0);\r
+          end else\r
+          begin\r
+            GSM_GetNetworkData(LogosRingForm.ComboBox3.ItemIndex-1,@Name,@bitma.netcode);\r
+          end;\r
+          GSM_SetBitmap(@bitma);\r
+        end;\r
+      end;\r
+    GSM_PictureImage:\r
+      begin\r
+        LogosRingForm.ComboBox3.Visible:=true;\r
+        for i:=1 to 20 do\r
+        begin\r
+          LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+        end;\r
+        LogosRingForm.ComboBox3.ItemIndex:=0;\r
+        LogosRingForm.ShowModal();\r
+        if (LogosRingForm.ComboBox3.Visible) then\r
+        begin\r
+          if LogosRingForm.ComboBox3.ItemIndex=0 then\r
+          begin\r
+            bitma.number:=255;\r
+          end else\r
+          begin\r
+            bitma.number:=LogosRingForm.ComboBox3.ItemIndex;\r
+          end;\r
+          GSM_SetBitmap(@bitma);\r
+        end;\r
+      end;\r
+    GSM_CallerLogo:\r
+      begin\r
+        LogosRingForm.ComboBox3.Visible:=true;\r
+        LogosRingForm.ComboBox3.Items.Add('Preview');\r
+        ReadAllCallerGroups();\r
+        for i:=1 to 5 do\r
+        begin\r
+          LogosRingForm.ComboBox3.Items.Add(caller[i].text);\r
+        end;\r
+        LogosRingForm.ComboBox3.ItemIndex:=1;\r
+        LogosRingForm.ShowModal();\r
+        if (LogosRingForm.ComboBox3.Visible) then\r
+        begin\r
+          if LogosRingForm.ComboBox3.ItemIndex=0 then\r
+          begin\r
+            bitma.number:=255;\r
+          end else\r
+          begin\r
+            bitma.number:=LogosRingForm.ComboBox3.ItemIndex-1;\r
+            //we need to get old caller group datas\r
+            oldbitma.type2:=bitma.type2;\r
+            oldbitma.number:=bitma.number;\r
+            GSM_GetBitmap(@oldbitma);\r
+            bitma.ringtone:=oldbitma.ringtone;\r
+            bitma.text:=oldbitma.text;\r
+          end;\r
+          GSM_SetBitmap(@bitma);\r
+        end;\r
+      end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button5Click(Sender: TObject);\r
+begin\r
+  if SaveDialog1.Execute then\r
+  begin\r
+    GSM_SaveBitmapFile(PChar(SaveDialog1.FileName),@bitma);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button8Click(Sender: TObject);\r
+var\r
+  bitma2:GSM_Bitmap;\r
+begin\r
+  if MessageDlg('Restore logo to default ?',\r
+    mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
+  begin\r
+    bitma2:=bitma;\r
+    bitma2.netcode[1]:='0';\r
+    bitma2.netcode[2]:='0';\r
+    bitma2.netcode[3]:='0';\r
+    bitma2.netcode[4]:=' ';\r
+    bitma2.netcode[5]:='0';\r
+    bitma2.netcode[6]:='0';\r
+    bitma2.netcode[7]:=chr(0);\r
+    GSM_ClearBitmap(@bitma2);\r
+    GSM_SetBitmap(@bitma2);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button12Click(Sender: TObject);\r
+begin\r
+  GSM_ClearBitmap(@bitma);\r
+  DrawBitmap();\r
+end;\r
+\r
+//MainForm main functions\r
+procedure TMainForm.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
+  Shift: TShiftState; X, Y: Integer);\r
+begin\r
+  MainForm.TreeView1.FullExpand;\r
+  case MainForm.TreeView1.Selected.ImageIndex of\r
+    0: MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
+    1: MainForm.PageControl1.ActivePage:=CalendarTabSheet;\r
+    2: MainForm.PageControl1.ActivePage:=DivertTabSheet;\r
+    3: MainForm.PageControl1.ActivePage:=CallerTabSheet;\r
+    4: MainForm.PageControl1.ActivePage:=LogosTabSheet;\r
+    5: MainForm.PageControl1.ActivePage:=NetmonitorTabSheet;\r
+    6: MainForm.PageControl1.ActivePage:=PhonebookTabSheet;\r
+    7: MainForm.PageControl1.ActivePage:=ProfileTabSheet;\r
+    8: MainForm.PageControl1.ActivePage:=RingtonesTabSheet;\r
+    9: MainForm.PageControl1.ActivePage:=SMSTabSheet;\r
+    10: MainForm.PageControl1.ActivePage:=SMSCTabSheet;\r
+    11: MainForm.PageControl1.ActivePage:=SpeedTabSheet;\r
+    12: MainForm.PageControl1.ActivePage:=WAPBookTabSheet;\r
+    13: MainForm.PageControl1.ActivePage:=WAPSettTabSheet;\r
+    14: MainForm.PageControl1.ActivePage:=PCOfflineTabSheet;\r
+    15: MainForm.PageControl1.ActivePage:=PCCalendarTabSheet;\r
+    16: MainForm.PageControl1.ActivePage:=PCSMSTabSheet;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Configuration1Click(Sender: TObject);\r
+begin\r
+  MainForm.PageControl1.ActivePage:=ConfigTabSheet;\r
+end;\r
+\r
+procedure TMainForm.TreeView1KeyUp(Sender: TObject; var Key: Word;\r
+  Shift: TShiftState);\r
+begin\r
+  MainForm.TreeView1.FullExpand;\r
+end;\r
+\r
+procedure TMainForm.FormCreate(Sender: TObject);\r
+begin\r
+  MainForm.PhonebookTabSheet.TabVisible:=false;\r
+  MainForm.NetmonitorTabSheet.TabVisible:=false;\r
+  MainForm.LogosTabSheet.TabVisible:=false;\r
+  MainForm.PhoneTabSheet.TabVisible:=false;\r
+  MainForm.RingtonesTabSheet.TabVisible:=false;\r
+  MainForm.SMSTabSheet.TabVisible:=false;\r
+  MainForm.SMSCTabSheet.TabVisible:=false;\r
+  MainForm.SpeedTabSheet.TabVisible:=false;\r
+  MainForm.CalendarTabSheet.TabVisible:=false;\r
+  MainForm.CallerTabSheet.TabVisible:=false;\r
+  MainForm.ProfileTabSheet.TabVisible:=false;\r
+  MainForm.WAPBookTabSheet.TabVisible:=false;\r
+  MainForm.WAPSettTabSheet.TabVisible:=false;\r
+  MainForm.DivertTabSheet.TabVisible:=false;\r
+  MainForm.ConfigTabSheet.TabVisible:=false;\r
+  MainForm.AboutTabSheet.TabVisible:=false;\r
+  MainForm.PCSMSTabSheet.TabVisible:=false;\r
+  MainForm.PCCalendarTabSheet.TabVisible:=false;\r
+  MainForm.PCOfflineTabSheet.TabVisible:=false;\r
+  MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
+\r
+  PreviewColor:=Image2.Canvas.Pixels[70,170];\r
+\r
+  bitma.size:=126;\r
+  bitma.width:=72;\r
+  bitma.heigh:=14;\r
+  bitma.type2:=GSM_OperatorLogo;\r
+  GSM_ClearBitmap(@bitma);\r
+\r
+  pointsize:=3;\r
+  MainForm.LogosImage.Width:=96*pointsize+96-1;\r
+  MainForm.LogosImage.Height:=65*pointsize+65-1;\r
+\r
+  netmonnum:=1;\r
+\r
+  MainForm.Width:=660;\r
+  MainForm.Height:=470;\r
+\r
+  callerinit:=false;\r
+  phoneinfo:=false;\r
+  smscinit:=false;\r
+\r
+  smsofflinenumber:=0;\r
+  calendarofflinenumber:=0;\r
+\r
+  readcalendar:=false;\r
+end;\r
+\r
+procedure TMainForm.Timer1Timer(Sender: TObject);\r
+var\r
+  NetworkName:array[1..255] of char;\r
+begin\r
+  if GSMPhoneConnected then\r
+  begin\r
+    // Here we should enable interface\r
+    GSM_GetNetworkName(@NetworkName,@GSMNetworkInfo.NetworkCode);\r
+    MainForm.StatusBar1.Panels[1].Text:=NetworkName;\r
+    if PhonebookThread=nil then\r
+      ComboBox1.Enabled:=true;\r
+\r
+    ListView1.Enabled:=true;\r
+    NetmonGroupBox.Enabled:=true;\r
+    SpinEdit1.Enabled:=true;\r
+    Button2.Enabled:=true;\r
+    Button3.Enabled:=true;\r
+    Button6.Enabled:=true;\r
+    Button7.Enabled:=true;\r
+    Button9.Enabled:=true;\r
+    Button11.Enabled:=true;\r
+\r
+    //ringtones\r
+    Button16.Enabled:=true;\r
+    if Edit1.Text<>'' then\r
+      Edit1.Enabled:=true;\r
+    if Edit2.Text<>'' then\r
+      Edit2.Enabled:=true;\r
+\r
+    If MainForm.PageControl1.ActivePage=MainForm.NetmonitorTabSheet then\r
+      NetmonitorTabSheetShow(Sender);\r
+\r
+    If MainForm.PageControl1.ActivePage=MainForm.PhoneTabSheet then\r
+    begin\r
+      if not phoneinfo then\r
+        PhoneTabSheetShow(Sender);\r
+    end;\r
+\r
+    If MainForm.PageControl1.ActivePage=MainForm.SpeedTabSheet then\r
+    begin\r
+      if speednum<>10 then\r
+        SpeedTabSheetShow(Sender);\r
+    end;\r
+\r
+    if bitma.type2<>GSM_OperatorLogo then\r
+      Button8.Enabled:=false\r
+    else\r
+      Button8.Enabled:=true;\r
+\r
+    if Edit2.Text<>'' then\r
+      Button14.Enabled:=true\r
+    else\r
+      Button14.Enabled:=false;\r
+\r
+    if Edit1.Text<>'' then\r
+    begin\r
+      Button2.Enabled:=true;\r
+      Button17.Enabled:=true;\r
+      if PlayRingtoneThread<>nil then\r
+      begin\r
+        Button3.Enabled:=false;\r
+        Button16.Enabled:=true;\r
+      end\r
+      else\r
+      begin\r
+        Button3.Enabled:=true;\r
+        Button16.Enabled:=false;\r
+      end;\r
+    end else\r
+    begin\r
+      Button2.Enabled:=false;\r
+      Button17.Enabled:=false;\r
+      Button16.Enabled:=false;\r
+      Button3.Enabled:=false;\r
+    end;\r
+\r
+    Button18.Enabled:=false;\r
+    if bitma.type2=GSM_PictureImage then\r
+      Button18.Enabled:=true;\r
+    if bitma.type2=GSM_OperatorLogo then\r
+      Button18.Enabled:=true;\r
+    if bitma.type2=GSM_CallerLogo then\r
+      Button18.Enabled:=true;\r
+\r
+    //wap settings\r
+    WAPSettTabSheet.Enabled:=true;\r
+    if GSM_GetModelFeature(FN_WAP)=0 then\r
+    begin\r
+      GroupBox19.Enabled:=false;\r
+      groupbox19.Ctl3D:=false;\r
+      ComboBox7.enabled:=false;\r
+      ComboBox8.enabled:=false;\r
+      ComboBox9.enabled:=false;\r
+      ComboBox10.enabled:=false;\r
+      ComboBox11.enabled:=false;\r
+      ComboBox12.enabled:=false;\r
+      ComboBox13.enabled:=false;\r
+      ComboBox14.enabled:=false;\r
+      Edit6.Enabled:=false;\r
+      Edit8.Enabled:=false;\r
+      Edit9.Enabled:=false;\r
+      Edit10.Enabled:=false;\r
+      Edit11.Enabled:=false;\r
+      Edit12.Enabled:=false;\r
+      Edit13.Enabled:=false;\r
+      Edit14.Enabled:=false;\r
+      Edit15.Enabled:=false;\r
+    end else\r
+    begin\r
+      GroupBox19.Enabled:=true;\r
+      groupbox19.Ctl3D:=true;\r
+      ComboBox7.enabled:=true;\r
+      ComboBox8.enabled:=true;\r
+      ComboBox9.enabled:=true;\r
+      ComboBox10.enabled:=true;\r
+      ComboBox11.enabled:=true;\r
+      ComboBox12.enabled:=true;\r
+      ComboBox13.enabled:=true;\r
+      ComboBox14.enabled:=true;\r
+      Edit6.Enabled:=true;\r
+      Edit8.Enabled:=true;\r
+      Edit9.Enabled:=true;\r
+      Edit10.Enabled:=true;\r
+      Edit11.Enabled:=true;\r
+      Edit12.Enabled:=true;\r
+      Edit13.Enabled:=true;\r
+      Edit14.Enabled:=true;\r
+      Edit15.Enabled:=true;\r
+    end;\r
+\r
+    button19.Enabled:=true;\r
+    button20.Enabled:=true;\r
+  end else\r
+  begin\r
+    // Here we should disabled interface\r
+    MainForm.StatusBar1.Panels[1].Text:='Not connected';\r
+\r
+    callerinit:=false;\r
+\r
+    MainForm.ComboBox1.Enabled:=false;\r
+    MainForm.ListView1.Enabled:=false;\r
+    MainForm.NetmonGroupBox.Enabled:=false;\r
+    MainForm.SpinEdit1.Enabled:=false;\r
+    MainForm.Button2.Enabled:=false;\r
+    MainForm.Button3.Enabled:=false;\r
+    MainForm.Button6.Enabled:=false;\r
+    MainForm.Button7.Enabled:=false;\r
+    MainForm.Button8.Enabled:=false;\r
+    MainForm.Button9.Enabled:=false;\r
+    MainForm.Button11.Enabled:=false;\r
+    Button18.Enabled:=false;\r
+\r
+    //ringtones\r
+    Button16.Enabled:=false;\r
+    Button14.Enabled:=false;\r
+    Button17.Enabled:=false;\r
+    Edit1.Enabled:=false;\r
+    Edit2.Enabled:=false;\r
+\r
+    MainForm.NetmonitorTabSheetHide(Sender);\r
+    MainForm.PhonebookTabSheetHide(Sender);\r
+    MainForm.SpeedTabSheetHide(Sender);\r
+\r
+    //WAP settings\r
+    ComboBox7.enabled:=false;\r
+    ComboBox8.enabled:=false;\r
+    ComboBox9.enabled:=false;\r
+    ComboBox10.enabled:=false;\r
+    ComboBox11.enabled:=false;\r
+    ComboBox12.enabled:=false;\r
+    ComboBox13.enabled:=false;\r
+    ComboBox14.enabled:=false;\r
+    Edit6.Enabled:=false;\r
+    Edit8.Enabled:=false;\r
+    Edit9.Enabled:=false;\r
+    Edit10.Enabled:=false;\r
+    Edit11.Enabled:=false;\r
+    Edit12.Enabled:=false;\r
+    Edit13.Enabled:=false;\r
+    Edit14.Enabled:=false;\r
+    Edit15.Enabled:=false;\r
+\r
+    button19.Enabled:=false;\r
+    button20.Enabled:=false;\r
+\r
+    phoneinfo:=false;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Quit1Click(Sender: TObject);\r
+begin\r
+  if GSMPhoneConnected then GSM_Terminate();\r
+  Halt;\r
+end;\r
+\r
+procedure TMainForm.FormResize(Sender: TObject);\r
+begin\r
+  MainForm.StatusBar1.Panels[0].Width:=MainForm.Width-150;\r
+end;\r
+\r
+procedure TMainForm.About1Click(Sender: TObject);\r
+begin\r
+  AboutTabSheet.Show;\r
+end;\r
+\r
+//netmonitor sheet functions\r
+\r
+procedure TNetmonThread.Execute;\r
+var\r
+  netmon:array[1..255] of char;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    GSM_Netmonitor(netmonnum,@netmon);\r
+    MainForm.NetmonLabel.Caption:=netmon;\r
+    MainForm.NetmonGroupBox.Caption:=' Screen ' + IntToStr(netmonnum) + ' ';\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.NetmonitorTabSheetShow(Sender: TObject);\r
+begin\r
+  if NetmonThread<>nil then\r
+  else begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      MainForm.Timer2.Enabled:=false;\r
+      NetmonThread:=TNetmonThread.Create(false);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.NetmonitorTabSheetHide(Sender: TObject);\r
+begin\r
+  if (NetmonThread<>nil) then\r
+  begin\r
+    NetmonThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    NetmonThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SpinEdit1Change(Sender: TObject);\r
+begin\r
+  netmonnum:=SpinEdit1.Value;\r
+end;\r
+\r
+procedure TMainForm.Button11Click(Sender: TObject);\r
+var\r
+  netmon:array[1..255] of char;\r
+begin\r
+  NetmonForm.ShowModal;\r
+  if NetmonForm.RadioGroup1.ItemIndex<>-1 then\r
+  begin\r
+    GSM_Netmonitor(241+NetmonForm.RadioGroup1.ItemIndex,@netmon);\r
+  end;\r
+end;\r
+\r
+//phonebook sheet functions\r
+\r
+procedure EndPhonebookThread;\r
+begin\r
+  if (PhonebookThread<>nil) then\r
+  begin\r
+    PhonebookThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    PhonebookThread:=nil;\r
+    MainForm.ComboBox1.Enabled:=true;\r
+  end;\r
+end;\r
+\r
+procedure TPhonebookThread.Execute;\r
+var\r
+  x:GSM_PhonebookEntry;\r
+  i,j:integer;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    if (phonebookcur<phonebookstatus.Used+phonebookstatus.Free) then\r
+    begin\r
+      phonebookcur:=phonebookcur+1;\r
+      MainForm.StatusBar1.Panels[0].Text:='Reading '+inttostr(phonebookcur)+'/'+inttostr(phonebookstatus.Free+phonebookstatus.Used);\r
+      MainForm.ListView1.Items.Add;\r
+      MainForm.ListView1.Items.Item[phonebookcur-1].Caption:=inttostr(phonebookcur);\r
+      if (phonebookfound<phonebookstatus.Used) then\r
+      begin\r
+        x.MemoryType:=phonebookstatus.MemoryType;\r
+        x.Location:=phonebookcur;\r
+        if (x.MemoryType=GMT_ON) then x.Location:=x.Location-1;\r
+        if (x.MemoryType=GMT_DC) then x.Location:=x.Location-1;\r
+        if (x.MemoryType=GMT_MC) then x.Location:=x.Location-1;\r
+        if (x.MemoryType=GMT_RC) then x.Location:=x.Location-1;\r
+        if GSM_GetMemoryLocation(@x)=0 then\r
+        begin\r
+          MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(x.Name);\r
+\r
+          if (x.Number[1]<>chr(0)) then\r
+            MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(x.Number)\r
+          else begin\r
+            for j:=1 to x.SubEntriesCount do\r
+            begin\r
+              if x.SubEntries[j].EntryType=GSM_Number then\r
+              begin\r
+                MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(x.subentries[j].Number);\r
+                break;\r
+              end;\r
+            end;\r
+          end;\r
+\r
+          case x.Group of\r
+            0:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
+            1:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
+            2:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
+            3:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
+            4:MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(caller[x.Group+1].text);\r
+          else\r
+            MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add('not set');\r
+          end;\r
+\r
+          for i:=1 to x.SubEntriesCount do\r
+          begin\r
+            if x.SubEntries[i].EntryType=GSM_Date then\r
+            begin\r
+              MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(DayOfweek2(x.SubEntries[i].Date.Day,x.SubEntries[i].Date.Month,x.SubEntries[i].Date.Year)+' '+inttostr2(x.SubEntries[i].Date.Day,2)+'-'+inttostr2(x.SubEntries[i].Date.Month,2)+'-'+inttostr(x.SubEntries[i].Date.Year));\r
+              MainForm.ListView1.Items.Item[phonebookcur-1].Subitems.Add(inttostr2(x.SubEntries[i].Date.Hour,2)+':'+inttostr2(x.SubEntries[i].Date.Minute,2)+':'+inttostr2(x.SubEntries[i].Date.Second,2));\r
+              break;\r
+            end;\r
+          end;\r
+          if (x.Name[1]<>chr(0)) then phonebookfound:=phonebookfound+1;\r
+        end;\r
+      end;\r
+    end else\r
+    begin\r
+      MainForm.StatusBar1.Panels[0].Text:=inttostr(phonebookstatus.Used)+'/'+inttostr(phonebookstatus.Free+phonebookstatus.Used)+' entries';\r
+      EndPhonebookThread;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.PhonebookTabSheetShow(Sender: TObject);\r
+begin\r
+  if GSMPhoneConnected then ComboBox1.Enabled:=true;\r
+end;\r
+\r
+procedure TMainForm.Button10Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+  FileHandle:integer;\r
+begin\r
+  if SaveDialog1.Execute then\r
+  begin\r
+    FileHandle := FileCreate(SaveDialog1.FileName);\r
+    for i:=1 to ListView1.Items.Count do\r
+    begin\r
+      FileWrite(FileHandle,ListView1.Items.Item[i].Caption, SizeOf(ListView1.Items.Item[i].Caption));\r
+    end;\r
+    FileClose(FileHandle);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ComboBox1Change(Sender: TObject);\r
+begin\r
+  if (ComboBox1.ItemIndex<>0) then\r
+  begin\r
+    case ComboBox1.ItemIndex of\r
+      1:phonebookstatus.MemoryType:=GMT_DC;\r
+      2:phonebookstatus.MemoryType:=GMT_MC;\r
+      3:phonebookstatus.MemoryType:=GMT_ON;\r
+      4:phonebookstatus.MemoryType:=GMT_ME;\r
+      5:phonebookstatus.MemoryType:=GMT_SM;\r
+      6:phonebookstatus.MemoryType:=GMT_RC;\r
+    end;\r
+    if GSM_GetMemoryStatus(@phonebookstatus)<>0 then\r
+    begin\r
+      phonebookstatus.Free:=0;\r
+      phonebookstatus.Used:=30;\r
+    end;\r
+    phonebookcur:=0;\r
+    phonebookfound:=0;\r
+\r
+    ComboBox1.Enabled:=false;\r
+\r
+    ReadAllCallerGroups();\r
+\r
+    MainForm.ListView1.Items.Clear;\r
+    MainForm.Timer2.Enabled:=false;\r
+    PhonebookThread:=TPhonebookThread.Create(false);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.PhonebookTabSheetHide(Sender: TObject);\r
+begin\r
+  EndPhonebookThread;\r
+end;\r
+\r
+//ringtones\r
+procedure TMainForm.Button1Click(Sender: TObject);\r
+var\r
+  ring:GSM_Ringtone;\r
+begin\r
+  if OpenDialog1.Execute then\r
+  begin\r
+    if GSM_ReadRingtoneFile(PChar(OpenDialog1.FileName),@ring)=0 then\r
+    begin\r
+      Edit1.Text:=ring.Name;\r
+      rington:=ring;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure EndPlayRingtoneThread;\r
+begin\r
+  if (PlayRingtoneThread<>nil) then\r
+  begin\r
+    PlayRingtoneThread.Terminate();\r
+    GSM_PlayTone(255*255,0);\r
+    MainForm.Timer2.Enabled:=true;\r
+    PlayRingtoneThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TPlayRingtoneThread.Execute;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    GSM_PlayNote(rington.notes[ringindex]);\r
+    ringindex:=ringindex+1;\r
+    if ringindex>rington.NrNotes then\r
+      EndPlayRingtoneThread;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button16Click(Sender: TObject);\r
+begin\r
+  EndPlayRingtoneThread;\r
+end;\r
+\r
+procedure TMainForm.Button3Click(Sender: TObject);\r
+begin\r
+  ringindex:=1;\r
+  MainForm.Timer2.Enabled:=false;\r
+  PlayRingtoneThread:=TPlayRingtoneThread.Create(false);\r
+end;\r
+\r
+procedure TMainForm.Button2Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
+  LogosRingForm.ComboBox3.Items.Clear();\r
+  LogosRingForm.ComboBox3.Items.Add('Preview');\r
+  for i:=1 to 7 do\r
+  begin\r
+    LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+  end;\r
+  LogosRingForm.ComboBox3.ItemIndex:=1;\r
+  LogosRingForm.ShowModal;\r
+  if LogosRingForm.ComboBox3.Visible then\r
+  begin\r
+    if LogosRingForm.ComboBox3.ItemIndex=0 then\r
+      rington.location:=255\r
+    else\r
+      rington.location:=LogosRingForm.ComboBox3.ItemIndex;\r
+    MainForm.Timer2.Enabled:=false;\r
+    GSM_SetRingtone(@rington,@i);\r
+    MainForm.Timer2.Enabled:=true;\r
+  end;\r
+end;\r
+\r
+//phone sheet\r
+procedure TMainForm.PhoneTabSheetShow(Sender: TObject);\r
+var\r
+  xxxx,xxx:array[1..256] of char;\r
+  time:GSM_DateTime;\r
+  siml:GSM_AllSimlocks;\r
+  i:integer;\r
+  code:GSM_SecurityCode;\r
+begin\r
+  if GSMPhoneConnected then\r
+  begin\r
+    GSM_GetRevision(@xxx);\r
+    Label9.Caption:=xxx;\r
+    GSM_GetImei(@xxx);\r
+    Label7.Caption:=xxx;\r
+    GSM_GetModel(@xxx);\r
+    GSM_GetModelNumber(@xxx,@xxxx);\r
+    Label5.Caption:=xxx;\r
+    Label5.Caption:=Label5.Caption+' ('+xxxx;\r
+    Label5.Caption:=Label5.Caption+')';\r
+    GSM_GetAlarm(1,@time);\r
+    if time.isSet<>0 then\r
+      CheckBox1.Checked:=true\r
+    else\r
+      CheckBox1.Checked:=false;\r
+    DateTimePicker1.Time:=EncodeTime(time.Hour,time.Minute,0,0);\r
+    ListView8.Items.Clear();\r
+    GSM_GetSimlock(@siml);\r
+    for i:=1 to 4 do\r
+    begin\r
+      MainForm.ListView8.Items.Add;\r
+      MainForm.ListView8.Items.Item[i-1].Caption:=inttostr(i);\r
+      MainForm.ListView8.Items.Item[i-1].Subitems.Add(siml.simlocks[i].data);\r
+      if siml.simlocks[i].enabled=0 then\r
+        MainForm.ListView8.Items.Item[i-1].Subitems.Add('disabled')\r
+      else\r
+      begin\r
+        if siml.simlocks[i].factory<>0 then\r
+          MainForm.ListView8.Items.Item[i-1].Subitems.Add('factory')\r
+        else\r
+          MainForm.ListView8.Items.Item[i-1].Subitems.Add('user');\r
+      end;\r
+      MainForm.ListView8.Items.Item[i-1].Subitems.Add(inttostr(siml.simlocks[i].counter));\r
+    end;\r
+    code.Type2:=GSCT_SecurityCode;\r
+    GSM_GetSecurityCode(@code);\r
+    Label18.Caption:=code.Code;\r
+\r
+    phoneinfo:=true;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button9Click(Sender: TObject);\r
+begin\r
+  GSM_Reset(GSM_SoftReset);\r
+end;\r
+\r
+//speed dials\r
+procedure TMainForm.SpeedTabSheetShow(Sender: TObject);\r
+begin\r
+  if SpeedThread<>nil then\r
+  else begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      MainForm.ListView3.Items.Clear;\r
+      speednum:=1;\r
+      MainForm.Timer2.Enabled:=false;\r
+      SpeedThread:=TSpeedThread.Create(false);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure EndSpeedThread();\r
+begin\r
+  if (SpeedThread<>nil) then\r
+  begin\r
+    SpeedThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    SpeedThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SpeedTabSheetHide(Sender: TObject);\r
+begin\r
+  EndSpeedThread();\r
+end;\r
+\r
+procedure TSpeedThread.Execute;\r
+var\r
+  entry1:GSM_SpeedDial;\r
+  entry2:GSM_PhonebookEntry;\r
+  i:integer;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    entry1.Number:=speednum;\r
+    if GSM_GetSpeedDial(@entry1)=0 then\r
+    begin\r
+      entry2.Location:=entry1.Location;\r
+      entry2.MemoryType:=entry1.MemoryType;\r
+      if entry2.Location=0 then\r
+        entry2.Location:=speednum;\r
+      GSM_GetMemoryLocation(@entry2);\r
+      MainForm.ListView3.Items.Add;\r
+      MainForm.ListView3.Items.Item[speednum-1].Caption:=inttostr(speednum);\r
+      MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.Name);\r
+      if entry2.Number[1]<>chr(0) then\r
+        MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.Number)\r
+      else begin\r
+        for i:=1 to entry2.SubEntriesCount do\r
+        begin\r
+          if entry2.SubEntries[i].EntryType=GSM_Number then\r
+          begin\r
+            MainForm.ListView3.Items.Item[speednum-1].Subitems.Add(entry2.SubEntries[i].Number);\r
+            break;\r
+          end;\r
+        end;\r
+      end;\r
+      speednum:=speednum+1;\r
+    end;\r
+    if speednum=10 then\r
+      EndSpeedThread();\r
+  end;\r
+end;\r
+\r
+//calendar\r
+procedure EndCalendarThread();\r
+begin\r
+  if (CalendarThread<>nil) then\r
+  begin\r
+    CalendarThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    CalendarThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
+begin\r
+  myview.Items.Add;\r
+  myview.Items.Item[myview.Items.Count-1].Caption:=inttostr(myview.Items.Count);\r
+  case note.Type2 of\r
+    GCN_Reminder:myview.Items.Item[myview.Items.Count-1].Subitems.Add('Reminder');\r
+    GCN_Call    :myview.Items.Item[myview.Items.Count-1].Subitems.Add('Call');\r
+    GCN_Meeting :myview.Items.Item[myview.Items.Count-1].Subitems.Add('Meeting');\r
+    GCN_Birthday:myview.Items.Item[myview.Items.Count-1].Subitems.Add('Birthday');\r
+  end;\r
+  myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Text);\r
+  myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Phone);\r
+  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
+  if note.Alarm.Year<>0 then\r
+     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
+  else\r
+     myview.Items.Item[myview.Items.Count-1].Subitems.Add('');\r
+end;\r
+\r
+procedure TCalendarThread.Execute;\r
+var\r
+  note:GSM_CalendarNote;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    note.Location:=calendarnum;\r
+    if GSM_GetCalendarNote(@note)=0 then\r
+    begin\r
+      AddCalendarNote(note,MainForm.ListView4);\r
+      calendarnum:=calendarnum+1;\r
+    end else begin\r
+      readcalendar:=true;\r
+      EndCalendarThread();\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.CalendarTabSheetShow(Sender: TObject);\r
+begin\r
+  if CalendarThread=nil then\r
+  begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      if (GSM_GetModelFeature(FN_Calendar)<>0) then\r
+      begin\r
+        ListView4.Enabled:=true;\r
+        ListView4.Ctl3D:=true;\r
+        GroupBox8.Ctl3D:=true;\r
+\r
+        MainForm.ListView4.Items.Clear;\r
+        CalendarNum:=1;\r
+        MainForm.Timer2.Enabled:=false;\r
+        readcalendar:=false;\r
+        CalendarThread:=TCalendarThread.Create(false);\r
+      end else\r
+      begin\r
+        ListView4.Enabled:=false;\r
+        ListView4.Ctl3D:=false;\r
+        GroupBox8.Ctl3D:=false;\r
+      end;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.CalendarTabSheetHide(Sender: TObject);\r
+begin\r
+  EndCalendarThread();\r
+end;\r
+\r
+procedure TMainForm.New1Click(Sender: TObject);\r
+begin\r
+  setcalendarnote.Location:=MainForm.ListView4.Items.Count+1;\r
+  CalendarForm.ComboBox1.ItemIndex:=0;\r
+  CalendarForm.ComboBox1.OnSelect(nil);\r
+  CalendarForm.Edit2.Text:='';\r
+  CalendarForm.Edit1.Text:='';\r
+  CalendarForm.DateTimePicker1.DateTime:=Date;\r
+  CalendarForm.DateTimePicker3.Time:=Time;\r
+  CalendarForm.DateTimePicker2.DateTime:=Date;\r
+  CalendarForm.DateTimePicker4.Time:=Time;\r
+  CalendarForm.ShowModal;\r
+end;\r
+\r
+procedure EditCalendarNote;\r
+var i:integer;\r
+begin\r
+  i:=0;\r
+\r
+  CalendarForm.DateTimePicker1.Date:=EncodeDate(setcalendarnote.Time.Year,\r
+                                                setcalendarnote.Time.Month,\r
+                                                setcalendarnote.Time.Day);\r
+  CalendarForm.DateTimePicker3.Time:=EncodeTime(setcalendarnote.Time.Hour,\r
+                                                setcalendarnote.Time.Minute,\r
+                                                setcalendarnote.Time.Second,i);\r
+  case setcalendarnote.Type2  of\r
+    GCN_BIRTHDAY:    CalendarForm.ComboBox1.ItemIndex:=0;\r
+    GCN_CALL:        CalendarForm.ComboBox1.ItemIndex:=1;\r
+    GCN_MEETING:     CalendarForm.ComboBox1.ItemIndex:=2;\r
+    GCN_REMINDER:    CalendarForm.ComboBox1.ItemIndex:=3;\r
+  end;\r
+\r
+  CalendarForm.Edit2.Text:=setcalendarnote.Text;\r
+  CalendarForm.Edit1.Text:=setcalendarnote.Phone;\r
+\r
+  if setcalendarnote.Alarm.Year<>0 then\r
+  begin\r
+    CalendarForm.CheckBox1.checked:=true;\r
+    CalendarForm.DateTimePicker2.Date:=EncodeDate(setcalendarnote.Alarm.Year,\r
+                                                  setcalendarnote.Alarm.Month,\r
+                                                  setcalendarnote.Alarm.Day);\r
+    CalendarForm.DateTimePicker4.Time:=EncodeTime(setcalendarnote.Alarm.Hour,\r
+                                                  setcalendarnote.Alarm.Minute,\r
+                                                  setcalendarnote.Alarm.Second,i);\r
+  end else\r
+  begin\r
+    CalendarForm.CheckBox1.checked:=false;\r
+    CalendarForm.DateTimePicker2.Date:=CalendarForm.DateTimePicker1.Date;\r
+    CalendarForm.DateTimePicker4.Time:=CalendarForm.DateTimePicker3.Time;\r
+  end;\r
+\r
+  if GSM_GetModelFeature(FN_CALENDAR)=F_CAL71 then\r
+  begin\r
+    if setcalendarnote.Type2<>GCN_BIRTHDAY then\r
+    begin\r
+      CalendarForm.CheckBox2.Checked:=True;\r
+      case setcalendarnote.Recurrance of\r
+        0     :begin\r
+                 CalendarForm.CheckBox2.Checked:=False;\r
+                 CalendarForm.ComboBox2.Enabled:=False;\r
+               end;\r
+        1*24  :CalendarForm.ComboBox2.ItemIndex:=0;\r
+        7*24  :CalendarForm.ComboBox2.ItemIndex:=1;\r
+        14*24 :CalendarForm.ComboBox2.ItemIndex:=2;\r
+        365*24:CalendarForm.ComboBox2.ItemIndex:=3;\r
+      end;\r
+      CalendarForm.RadioButton1.Enabled:=False;\r
+      CalendarForm.RadioButton2.Enabled:=False;\r
+    end else begin\r
+      CalendarForm.ComboBox2.ItemIndex:=0;\r
+      CalendarForm.CheckBox2.Checked:=False;\r
+      CalendarForm.ComboBox2.Enabled:=False;\r
+      CalendarForm.RadioButton1.Enabled:=True;\r
+      CalendarForm.RadioButton2.Enabled:=True;\r
+      if setcalendarnote.AlarmType=1 then\r
+        CalendarForm.RadioButton1.Checked:=True\r
+      else\r
+        CalendarForm.RadioButton2.Checked:=True;\r
+    end;\r
+  end;\r
+  CalendarForm.ComboBox1.OnSelect(nil);\r
+\r
+  CalendarForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.Edit3Click(Sender: TObject);\r
+begin\r
+  setcalendarnote.Location:=calendarselect;\r
+\r
+  mainform.Timer2.Enabled:=false;\r
+  GSM_GetCalendarNote(@setcalendarnote);\r
+  mainform.Timer2.Enabled:=true;\r
+\r
+  EditCalendarNote;\r
+end;\r
+\r
+procedure TMainForm.ListView4SelectItem(Sender: TObject; Item: TListItem;\r
+  Selected: Boolean);\r
+begin\r
+  if Selected then\r
+  begin\r
+    calendarselect:=Item.Index+1;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Delete1Click(Sender: TObject);\r
+begin\r
+//  if listview4.selected<>nil then\r
+//  begin\r
+    if MessageDlg('Do you want to delete this calendar note ?',\r
+       mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
+    begin\r
+      setcalendarnote.Location:=calendarselect;\r
+      GSM_DeleteCalendarNote(@setcalendarnote);\r
+      MainForm.CalendarTabSheetShow(nil);\r
+    end;\r
+//  end;\r
+end;\r
+\r
+//caller groups\r
+procedure EndCallerThread();\r
+begin\r
+  if (CallerThread<>nil) then\r
+  begin\r
+    CallerThread.Terminate();\r
+    CallerThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TCallerThread.Execute;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    ReadCallerGroup();\r
+    if callerinit then EndCallerThread();\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.CallerTabSheetShow(Sender: TObject);\r
+begin\r
+  if CallerThread=nil then\r
+  begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      MainForm.ListView5.Items.Clear;\r
+      callerinit:=false;\r
+      callernum:=1;\r
+      CallerThread:=TCallerThread.Create(false);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.CallerTabSheetHide(Sender: TObject);\r
+begin\r
+  EndCallerThread();\r
+end;\r
+\r
+//smsc\r
+procedure TMainForm.SMSCTabSheetShow(Sender: TObject);\r
+begin\r
+  if SMSCThread<>nil then\r
+  else begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      MainForm.ListView6.Items.Clear;\r
+      smscinit:=false;\r
+      smscnum:=1;\r
+      MainForm.Timer2.Enabled:=false;\r
+      SMSCThread:=TSMSCThread.Create(false);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure SMSCTabHide();\r
+begin\r
+  if (SMSCThread<>nil) then\r
+  begin\r
+    SMSCThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    SMSCThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SMSCTabSheetHide(Sender: TObject);\r
+begin\r
+  SMSCTabHide();\r
+end;\r
+\r
+procedure ReadSMSC();\r
+var\r
+  smsc:GSM_MessageCenter;\r
+begin\r
+    smsc.No:=smscnum;\r
+    MainForm.StatusBar1.Panels[0].Text:='Reading SMSC '+inttostr(smscnum);\r
+    if GSM_GetSMSCenter(@smsc)=0 then\r
+    begin\r
+      SMSC2[smscnum]:=smsc;\r
+      MainForm.ListView6.Items.Add;\r
+      MainForm.ListView6.Items.Item[smscnum-1].Caption:=inttostr(smscnum);\r
+      MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.name);\r
+      MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.number);\r
+      case smsc.Validity of\r
+        GSMV_1_Hour   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 hour');\r
+        GSMV_6_Hours  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('6 hours');\r
+        GSMV_24_Hours : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 day');\r
+        GSMV_72_Hours : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('3 days');\r
+        GSMV_1_Week   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('1 week');\r
+        GSMV_Max_Time : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('max. time');\r
+      else\r
+        MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('unknown');\r
+      end;\r
+      case smsc.Format of\r
+        GSMF_Text   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('text');\r
+        GSMF_Fax    : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('fax');\r
+        GSMF_Voice  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('voice');\r
+        GSMF_ERMES  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('ERMES');\r
+        GSMF_Paging : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('paging');\r
+        GSMF_UCI    : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('UCI');\r
+        GSMF_Email  : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('email');\r
+        GSMF_X400   : MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('X400');\r
+      else\r
+        MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add('unknown');\r
+      end;\r
+      MainForm.ListView6.Items.Item[smscnum-1].Subitems.Add(smsc.defaultrecipient);\r
+      smscnum:=smscnum+1;\r
+    end else\r
+    begin\r
+      MainForm.StatusBar1.Panels[0].Text:='';\r
+      smscinit:=true;\r
+    end;\r
+end;\r
+\r
+procedure TSMSCThread.Execute;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    ReadSMSC();\r
+    if smscinit then SMSCTabHide();\r
+  end;\r
+end;\r
+\r
+//profiles\r
+procedure ProfileTabHide();\r
+begin\r
+  if (ProfileThread<>nil) then\r
+  begin\r
+    ProfileThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    ProfileThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TProfileThread.Execute;\r
+var\r
+  profile:GSM_Profile;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    profile.number:=profilenum-1;\r
+    GSM_GetProfile(@profile);\r
+    MainForm.ListView7.Items.Add;\r
+    MainForm.ListView7.Items.Item[profilenum-1].Caption:=inttostr(profilenum);\r
+    MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(profile.name);\r
+    case profile.CallAlert of\r
+      PROFILE_CALLALERT_RINGING  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ringing');\r
+      PROFILE_CALLALERT_BEEPONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('beep once');\r
+      PROFILE_CALLALERT_OFF      :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
+      PROFILE_CALLALERT_RINGONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ring once');\r
+      PROFILE_CALLALERT_ASCENDING:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ascending');\r
+      PROFILE_CALLALERT_CALLERGROUPS:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('caller groups');\r
+    end;\r
+    MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(inttostr(profile.Ringtone));\r
+    case profile.Volume of\r
+      PROFILE_VOLUME_LEVEL1:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 1');\r
+      PROFILE_VOLUME_LEVEL2:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 2');\r
+      PROFILE_VOLUME_LEVEL3:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 3');\r
+      PROFILE_VOLUME_LEVEL4:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 4');\r
+      PROFILE_VOLUME_LEVEL5:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 5');\r
+    end;\r
+    case profile.Vibration of\r
+      PROFILE_VIBRATION_OFF  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
+      PROFILE_VIBRATION_ON   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('on');\r
+      PROFILE_VIBRATION_FIRST:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('vibrate first');\r
+    end;\r
+    case profile.MessageTone of\r
+      PROFILE_MESSAGE_NOTONE   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('no tone');\r
+      PROFILE_MESSAGE_STANDARD :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('standard');\r
+      PROFILE_MESSAGE_SPECIAL  :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('special');\r
+      PROFILE_MESSAGE_BEEPONCE :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('beep once');\r
+      PROFILE_MESSAGE_ASCENDING:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('ascending');\r
+    end;\r
+    case profile.KeypadTone of\r
+      PROFILE_KEYPAD_OFF   :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
+      PROFILE_KEYPAD_LEVEL1:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 1');\r
+      PROFILE_KEYPAD_LEVEL2:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 2');\r
+      PROFILE_KEYPAD_LEVEL3:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('volume 3');\r
+    end;\r
+    case profile.WarningTone of\r
+     PROFILE_WARNING_OFF:MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('off');\r
+     PROFILE_WARNING_ON :MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add('on');\r
+    end;\r
+    MainForm.ListView7.Items.Item[profilenum-1].Subitems.Add(inttostr(profile.CallerGroups));\r
+    profilenum:=profilenum+1;\r
+    case GSM_GetModelFeature(FN_PROFILES) of\r
+      F_PROF61:if profilenum=8 then ProfileTabHide();\r
+      F_PROF51:if profilenum=3 then ProfileTabHide();\r
+      F_PROF33:if profilenum=7 then ProfileTabHide();\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ProfileTabSheetShow(Sender: TObject);\r
+begin\r
+  if ProfileThread<>nil then\r
+  else begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      MainForm.ListView7.Items.Clear;\r
+      profilenum:=1;\r
+      MainForm.Timer2.Enabled:=false;\r
+      ProfileThread:=TProfileThread.Create(false);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ProfileTabSheetHide(Sender: TObject);\r
+begin\r
+  ProfileTabHide();\r
+end;\r
+\r
+//sms\r
+procedure AddSMSInfo(myobject:TListView;mysms:GSM_SMSMessage);\r
+var number:integer;\r
+begin\r
+  number:=myobject.Items.Count;\r
+\r
+  myobject.Items.Add;\r
+  myobject.Items.Item[number].Caption:=inttostr(number+1);\r
+  myobject.Items.Item[number].Subitems.Add(mysms.MessageText);\r
+  myobject.Items.Item[number].Subitems.Add(mysms.Sender);\r
+  if mysms.SMSData=1 then\r
+  begin\r
+    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
+    myobject.Items.Item[number].Subitems.Add(inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2));\r
+  end;\r
+end;\r
+\r
+procedure DisplaySMSfolder();\r
+var\r
+  i:integer;\r
+begin\r
+  MainForm.ListView2.Items.Clear();\r
+  i:=0;\r
+  while i<>SMSstatus.Number do\r
+  begin\r
+    i:=i+1;\r
+    if (SMSfolders.Folder[SMS[i].folder].Name=\r
+        SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
+    begin\r
+      AddSMSInfo(MainForm.ListView2,SMS[i]);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure SendSaveSMS(mysms:GSM_SMSMessage);\r
+var i:integer;\r
+begin\r
+  //text\r
+  SMSEditForm.Memo1.Text:=mysms.MessageText;\r
+\r
+  //number\r
+  SMSEditForm.Edit2.Text:=mysms.sender;\r
+\r
+  //sms folder\r
+  SMSEditForm.ComboBox1.Items.Clear;\r
+  for i:=0 to MainForm.ComboBox3.items.count-1 do\r
+  begin\r
+    SMSEditForm.ComboBox1.Items.Add(MainForm.ComboBox3.Items.Strings[i]);\r
+  end;\r
+  SMSEditForm.ComboBox1.ItemIndex:=MainForm.ComboBox3.ItemIndex;\r
+\r
+  //smsc\r
+  SetSMSC(1);\r
+  SMSEditForm.ComboBox2.Items.Clear;\r
+  SMSEditForm.ComboBox2.Items.Add('custom');\r
+  for i:=1 to smscnum-1 do\r
+  begin\r
+    if SMSC2[i].Name[1]<>chr(0) then\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
+    else\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
+  end;\r
+  SMSEditForm.ComboBox2.ItemIndex:=0;\r
+\r
+  if mysms.ReplyViaSameSMSC<>0 then\r
+    SMSEditForm.CheckBox3.Checked:=true\r
+  else\r
+    SMSEditForm.CheckBox3.Checked:=false;\r
+\r
+  if mysms.Class2=1 then\r
+    SMSEditForm.CheckBox1.Checked:=true\r
+  else\r
+    SMSEditForm.CheckBox1.Checked:=false;\r
+\r
+  if mysms.status=GSS_SENTREAD then\r
+    SMSEditForm.CheckBox4.Checked:=true\r
+  else\r
+    SMSEditForm.CheckBox4.Checked:=false;\r
+\r
+  SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.PbkSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
+\r
+  if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
+  begin\r
+    SMSEditForm.edit3.Visible:=true;\r
+    SMSEditForm.label14.Visible:=true;\r
+  end else\r
+  begin\r
+    SMSEditForm.edit3.Visible:=false;\r
+    SMSEditForm.label14.Visible:=false;\r
+  end;\r
+\r
+  SMSEditForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.Edit4Click(Sender: TObject);\r
+begin\r
+  setsmslocation:=SMS[smsnumindex].Location;\r
+  SendSaveSMS(SMS[smsnumindex]);\r
+end;\r
+\r
+procedure TMainForm.New2Click(Sender: TObject);\r
+var i:integer;\r
+begin\r
+  setsmslocation:=0;\r
+\r
+  //sms text\r
+  SMSEditForm.Memo1.Text:='';\r
+\r
+  //number\r
+  SMSEditForm.Edit2.Text:='';\r
+\r
+  //folders\r
+  SMSEditForm.ComboBox1.Items.Clear;\r
+  for i:=0 to ComboBox3.items.count-1 do\r
+  begin\r
+    SMSEditForm.ComboBox1.Items.Add(ComboBox3.Items.Strings[i]);\r
+  end;\r
+  SMSEditForm.ComboBox1.ItemIndex:=ComboBox3.ItemIndex;\r
+\r
+  //smsc\r
+  SetSMSC(1);\r
+  SMSEditForm.ComboBox2.Items.Clear;\r
+  SMSEditForm.ComboBox2.Items.Add('custom');\r
+  for i:=1 to smscnum-1 do\r
+  begin\r
+    if SMSC2[i].Name[1]<>chr(0) then\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
+    else\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
+  end;\r
+  SMSEditForm.ComboBox2.ItemIndex:=1;\r
+\r
+  SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
+\r
+  if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
+  begin\r
+    SMSEditForm.edit3.Visible:=true;\r
+    SMSEditForm.label14.Visible:=true;\r
+  end else\r
+  begin\r
+    SMSEditForm.edit3.Visible:=false;\r
+    SMSEditForm.label14.Visible:=false;\r
+  end;\r
+\r
+  SMSEditForm.ShowModal;\r
+end;\r
+\r
+procedure EndSMSThread;\r
+begin\r
+  if (SMSThread<>nil) then\r
+  begin\r
+    SMSThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    SMSThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TSMSThread.Execute;\r
+var\r
+  error:integer;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    if SMSnum<>SMSstatus.Number then\r
+    begin\r
+      if GSM_GetModelFeature(FN_SMS)=F_SMS71 then\r
+        SMS[SMSnum+1].Location:=0\r
+      else\r
+        SMS[SMSnum+1].Location:=smsnum2;\r
+      error:=GSM_GetSMSMessage(@SMS[SMSnum+1]);\r
+      if error=0 then\r
+      begin\r
+        if SMS[SMSnum+1].Time.year<1900 then\r
+        begin\r
+          SMS[SMSnum+1].Time.year:=SMS[SMSnum+1].Time.year+2000;\r
+        end;\r
+        if (SMSfolders.Folder[SMS[SMSnum+1].folder].Name=\r
+            SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
+        begin\r
+          AddSMSInfo(MainForm.ListView2,SMS[SMSnum+1]);\r
+        end;\r
+        SMSnum:=SMSnum+1;\r
+      end;\r
+      if error=GE_SMSTOOLONG then\r
+      begin\r
+        SMSstatus.Number:=SMSstatus.Number-1;\r
+      end;\r
+\r
+      smsnum2:=smsnum2+1;\r
+    end else\r
+    begin\r
+      MainForm.ComboBox3.Enabled:=true;\r
+      EndSMSThread;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SMSTabSheetShow(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  MainForm.ComboBox3.Enabled:=false;\r
+  if GSMPhoneConnected then\r
+  begin\r
+    if smscinit=false then\r
+    begin\r
+      MainForm.ListView6.Items.Clear;\r
+      smscnum:=1;\r
+      while true do\r
+      begin\r
+        ReadSMSC;\r
+        if smscinit then break;\r
+      end;\r
+    end;\r
+\r
+    MainForm.Memo1.Lines.Clear;\r
+    MainForm.Memo2.Lines.Clear;\r
+    GSM_GetSMSFolders(@SMSfolders);\r
+    MainForm.ComboBox3.Items.Clear();\r
+    for i:=1 to SMSfolders.number do\r
+    begin\r
+      MainForm.ComboBox3.Items.Add(SMSfolders.folder[i].Name);\r
+    end;\r
+    MainForm.ComboBox3.ItemIndex:=0;\r
+\r
+    SMSnum:=0;\r
+    GSM_GetSMSStatus(@SMSstatus);\r
+    smsnum2:=1;\r
+    MainForm.ListView2.Items.Clear;\r
+    MainForm.Timer2.Enabled:=false;\r
+    SMSThread:=TSMSThread.Create(false);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ComboBox3Change(Sender: TObject);\r
+begin\r
+  DisplaySMSfolder();\r
+end;\r
+\r
+procedure AddSMSDescription(mysms:GSM_SMSMessage;firstmemo:TMemo;secondmemo:TMemo);\r
+var\r
+  ch:tcaption;\r
+  z:integer;\r
+begin\r
+  firstmemo.Lines.Clear;\r
+  firstmemo.Lines.Add(pchar('Sender: '+mysms.Sender));\r
+\r
+  if mysms.SMSData=1 then\r
+  begin\r
+    ch:=mysms.MessageCenter.Number;\r
+    MainForm.Label14.Caption:=mysms.MessageCenter.Number;\r
+    if (smscinit) and (GSMPhoneConnected) then\r
+    begin\r
+      for z:=1 to smscnum-1 do\r
+      begin\r
+        MainForm.Label16.Caption:=SMSC2[z].Number;\r
+        if MainForm.Label14.Caption=MainForm.Label16.caption then\r
+          ch:=SMSC2[z].Name;\r
+        end;\r
+      end;\r
+      if mysms.ReplyViaSameSMSC<>0 then\r
+         ch:=' (reply via the same SMSC) '+ch;\r
+         firstmemo.Lines.Add('SMSC: '+ch);\r
+\r
+        if mysms.type2=GST_DR then\r
+        begin\r
+          firstmemo.Lines.Add(pchar('Date & time: '+\r
+            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
+            inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2))+\r
+            '   SMSC desponse date & time: '+\r
+            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
+            inttostr2(mysms.SMSCTime.Hour,2)+':'+inttostr2(mysms.SMSCTime.Minute,2)+':'+inttostr2(mysms.SMSCTime.Second,2));\r
+        end else\r
+        begin\r
+          firstmemo.Lines.Add(pchar('Date & time: '+\r
+            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
+            inttostr2(mysms.Time.Hour,2)+':'+inttostr2(mysms.Time.Minute,2)+':'+inttostr2(mysms.Time.Second,2)));\r
+        end;\r
+      end;\r
+\r
+  secondmemo.Lines.Clear;\r
+  secondmemo.Lines.Add(pchar(''+mysms.MessageText));\r
+end;\r
+\r
+procedure TMainForm.ListView2SelectItem(Sender: TObject; Item: TListItem;\r
+  Selected: Boolean);\r
+var\r
+  i:integer;\r
+  j:integer;\r
+begin\r
+  j:=0;\r
+  i:=0;\r
+  while i<>SMSstatus.Number do\r
+  begin\r
+    i:=i+1;\r
+    if (SMSfolders.Folder[SMS[i].folder].Name=\r
+        SMSfolders.Folder[MainForm.ComboBox3.ItemIndex].Name) then\r
+    begin\r
+      if (j=MainForm.ListView2.ItemIndex) then\r
+      begin\r
+        smsnumindex:=i;\r
+        AddSMSDescription(SMS[i],MainForm.Memo1,MainForm.Memo2);\r
+      end;\r
+      j:=j+1;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SMSTabSheetHide(Sender: TObject);\r
+begin\r
+  EndSMSThread;\r
+end;\r
+\r
+procedure TMainForm.SMSPopupMenuPopup(Sender: TObject);\r
+begin\r
+  New2.Enabled:=false;\r
+  Edit4.Enabled:=false;\r
+  CopyToPC1.Enabled:=false;\r
+  Delete2.Enabled:=false;\r
+  if GSMPhoneConnected then\r
+  begin\r
+    New2.Enabled:=true;\r
+    if listview2.selected<>nil then\r
+    begin\r
+      Edit4.Enabled:=true;\r
+      CopyToPC1.Enabled:=true;\r
+      Delete2.Enabled:=true;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.CalendarPopupMenuPopup(Sender: TObject);\r
+begin\r
+  if GSMPhoneConnected then\r
+  begin\r
+    New1.Enabled:=true;\r
+    if listview4.selected<>nil then\r
+    begin\r
+      Edit3.Enabled:=true;\r
+      Delete1.Enabled:=true;\r
+      SMS1.Enabled:=true;\r
+      CopyToPC2.Enabled:=true;\r
+    end else\r
+    begin\r
+      Edit3.Enabled:=false;\r
+      Delete1.Enabled:=false;\r
+      SMS1.Enabled:=false;\r
+      CopyToPC2.Enabled:=false;\r
+    end;\r
+  end else\r
+  begin\r
+    New1.Enabled:=false;\r
+    Delete1.Enabled:=false;\r
+    Edit3.Enabled:=false;\r
+    SMS1.Enabled:=false;\r
+    CopyToPC2.Enabled:=false;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Edit1Change(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  for i:=1 to 20 do\r
+    rington.name[i]:=chr(0);\r
+  for i:=1 to strlen(pchar(edit1.text)) do\r
+    rington.name[i]:=edit1.text[i];\r
+end;\r
+\r
+procedure TMainForm.Delete2Click(Sender: TObject);\r
+var\r
+  mysms:GSM_SMSMessage;\r
+begin\r
+  if MessageDlg('Do you want to delete this SMS ?',\r
+      mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
+  begin\r
+    mysms.Location:=SMS[smsnumindex].Location;\r
+    MainForm.Timer2.Enabled:=false;\r
+    GSM_DeleteSMSMessage(@mysms);\r
+    MainForm.Timer2.Enabled:=true;\r
+    MainForm.SMSTabSheetShow(nil);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Edit5Click(Sender: TObject);\r
+begin\r
+//  if listview6.selected<>nil then\r
+//  begin\r
+      smsceditform.edit1.Text:=smsc2[smscselectitem].name;\r
+      smsceditform.edit2.Text:=smsc2[smscselectitem].number;\r
+      smsceditform.edit3.Text:=smsc2[smscselectitem].DefaultRecipient;\r
+      case smsc2[smscselectitem].Validity of\r
+        GSMV_1_Hour   : SMSCEditForm.combobox1.itemindex:=0;\r
+        GSMV_6_Hours  : SMSCEditForm.combobox1.itemindex:=1;\r
+        GSMV_24_Hours : SMSCEditForm.combobox1.itemindex:=2;\r
+        GSMV_72_Hours : SMSCEditForm.combobox1.itemindex:=3;\r
+        GSMV_1_Week   : SMSCEditForm.combobox1.itemindex:=4;\r
+      else\r
+        SMSCEditForm.combobox1.itemindex:=5;\r
+      end;\r
+      case smsc2[smscselectitem].Format of\r
+        GSMF_Text   : SMSCEditForm.combobox2.itemindex:=0;\r
+        GSMF_Fax    : SMSCEditForm.combobox2.itemindex:=1;\r
+        GSMF_Email  : SMSCEditForm.combobox2.itemindex:=2;\r
+      else\r
+        SMSCEditForm.combobox2.itemindex:=3;\r
+      end;\r
+  SMSCEditForm.ShowModal;\r
+//  end;\r
+end;\r
+\r
+procedure TMainForm.SMSCPopupMenuPopup(Sender: TObject);\r
+begin\r
+  if GSMPhoneConnected then\r
+  begin\r
+    if listview6.selected<>nil then\r
+      Edit5.Enabled:=true\r
+    else\r
+      Edit5.Enabled:=false;\r
+  end else\r
+  begin\r
+    Edit5.Enabled:=false;\r
+  end;\r
+\r
+end;\r
+\r
+procedure TMainForm.ListView6SelectItem(Sender: TObject; Item: TListItem;\r
+  Selected: Boolean);\r
+begin\r
+  if Selected then\r
+  begin\r
+    smscselectitem:=Item.Index+1;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ListView1SelectItem(Sender: TObject; Item: TListItem;\r
+  Selected: Boolean);\r
+begin\r
+ if Selected then\r
+  begin\r
+    pbknumberentry:=Item.Index+1;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Edit7Click(Sender: TObject);\r
+var\r
+  current:integer;\r
+  i:integer;\r
+begin\r
+  if listview1.Selected<>nil then\r
+  begin\r
+    pbk.Location:=pbknumberentry;\r
+    case ComboBox1.ItemIndex of\r
+      1:begin pbk.MemoryType:=GMT_DC;pbk.Location:=pbk.Location-1;end;\r
+      2:begin pbk.MemoryType:=GMT_MC;pbk.Location:=pbk.Location-1;end;\r
+      3:begin pbk.MemoryType:=GMT_ON;pbk.Location:=pbk.Location-1;end;\r
+      4:pbk.MemoryType:=GMT_ME;\r
+      5:pbk.MemoryType:=GMT_SM;\r
+      6:begin pbk.MemoryType:=GMT_RC;pbk.Location:=pbk.Location-1;end;\r
+    end;\r
+    GSM_GetMemoryLocation(@pbk);\r
+    current:=0;\r
+    pbkform.ListView1.Items.Clear;\r
+    pbkform.ListView1.Items.Add;\r
+    pbkform.ListView1.Items.Item[0].Caption:='Name';\r
+    pbkform.ListView1.Items.Item[0].SubItems.Add(pbk.name);\r
+    if (pbk.Number[1]<>chr(0)) then\r
+    begin\r
+      current:=current+1;\r
+      pbkform.ListView1.Items.Add;\r
+      pbkform.ListView1.Items.Item[current].Caption:='Number';\r
+      pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.number);\r
+    end;\r
+    for i:=1 to pbk.SubEntriesCount do\r
+    begin\r
+      current:=current+1;\r
+      pbkform.ListView1.Items.Add;\r
+      case pbk.SubEntries[i].EntryType of\r
+        GSM_Number:case pbk.SubEntries[i].NumberType of\r
+                     GSM_General :pbkform.ListView1.Items.Item[current].Caption:='General number';\r
+                     GSM_Mobile  :pbkform.ListView1.Items.Item[current].Caption:='Mobile';\r
+                     GSM_Work    :pbkform.ListView1.Items.Item[current].Caption:='Work';\r
+                     GSM_Fax     :pbkform.ListView1.Items.Item[current].Caption:='Fax';\r
+                     GSM_Home    :pbkform.ListView1.Items.Item[current].Caption:='Home';\r
+                   else\r
+                     pbkform.ListView1.Items.Item[current].Caption:=inttostr(pbk.SubEntries[i].NumberType);\r
+                   end;\r
+        GSM_Note  :pbkform.ListView1.Items.Item[current].Caption:='Note';\r
+        GSM_Postal:pbkform.ListView1.Items.Item[current].Caption:='Address';\r
+        GSM_Email :pbkform.ListView1.Items.Item[current].Caption:='Email';\r
+        GSM_Date  :begin\r
+                     pbkform.ListView1.Items.Item[current].Caption:='Date';\r
+                     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
+                   end;\r
+      end;\r
+      if (pbk.SubEntries[i].EntryType<>GSM_Date) then\r
+         pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.SubEntries[i].Number);\r
+    end;\r
+    if (pbk.Group>=0) and (pbk.Group<=4) then\r
+    begin\r
+      current:=current+1;\r
+      pbkform.ListView1.Items.Add;\r
+      pbkform.ListView1.Items.Item[current].Caption:='Caller group';\r
+      pbkform.ListView1.Items.Item[current].SubItems.Add(caller[pbk.Group+1].text);\r
+    end;\r
+    pbkform.showmodal;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button18Click(Sender: TObject);\r
+var\r
+  i,j:integer;\r
+  Name,Data:array[1..255] of char;\r
+begin\r
+  if smscinit=false then\r
+  begin\r
+    MainForm.ListView6.Items.Clear;\r
+    smscnum:=1;\r
+    while true do\r
+    begin\r
+      ReadSMSC;\r
+      if smscinit then break;\r
+    end;\r
+  end;\r
+\r
+  //sms text\r
+  SMSEditForm.Memo1.Text:='';\r
+\r
+  //number\r
+  SMSEditForm.Edit2.Text:='';\r
+\r
+  //folders\r
+  GSM_GetSMSFolders(@SMSfolders);\r
+  SMSEditForm.ComboBox1.Items.Clear;\r
+  for i:=1 to SMSFolders.number do\r
+  begin\r
+    SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
+  end;\r
+  SMSEditForm.ComboBox1.ItemIndex:=0;\r
+\r
+  //smsc\r
+  SetSMSC(1);\r
+  SMSEditForm.ComboBox2.Items.Clear;\r
+  SMSEditForm.ComboBox2.Items.Add('custom');\r
+  for i:=1 to smscnum-1 do\r
+  begin\r
+    if SMSC2[i].Name[1]<>chr(0) then\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
+    else\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
+  end;\r
+  SMSEditForm.ComboBox2.ItemIndex:=1;\r
+\r
+  SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.BitmapSMSTabSheet;\r
+\r
+  SMSEditForm.Image1.Picture:=Image1.Picture;\r
+\r
+  SMSEditForm.Memo2.Text:='';\r
+  SMSEditForm.CheckBox5.Checked:=false;\r
+  if bitma.type2<>GSM_PictureImage then\r
+  begin\r
+    SMSEditForm.Memo2.Visible:=false;\r
+    SMSEditForm.Label10.Visible:=false;\r
+    SMSEditForm.CheckBox5.Visible:=false;\r
+    SMSEditForm.CheckBox6.Visible:=false;\r
+  end else\r
+  begin\r
+    SMSEditForm.Memo2.Visible:=true;\r
+    SMSEditForm.Label10.Visible:=true;\r
+    SMSEditForm.CheckBox5.Visible:=true;\r
+    SMSEditForm.CheckBox6.Visible:=true;\r
+  end;\r
+\r
+  SMSEditForm.Label9.Visible:=false;\r
+  SMSEditForm.ComboBox7.Visible:=false;\r
+  if bitma.type2=GSM_OperatorLogo then\r
+  begin\r
+    SMSEditForm.Label9.Visible:=true;\r
+    SMSEditForm.ComboBox7.Visible:=true;\r
+    //preparing network names\r
+    i:=0;\r
+    while true do\r
+    begin\r
+      GSM_GetNetworkData(i,@Name,@Data);\r
+\r
+      // conversion problems\r
+      Label14.Caption:=Name;\r
+      if strcomp(PChar(Label14.Caption),PChar('unknown'))=0 then break;\r
+\r
+      // conversion problems\r
+      Label14.Caption:=' - '+Label14.Caption;\r
+      for j:=6 downto 1 do\r
+      begin\r
+        Label14.Caption:=Data[j]+Label14.Caption;\r
+      end;\r
+\r
+      SMSEditForm.ComboBox7.Items.Add(Pchar(Label14.Caption));\r
+      i:=i+1;\r
+    end;\r
+    //looking for current network\r
+    if GSMPhoneConnected then\r
+    begin\r
+      // conversion problems\r
+      Label14.Caption:=MainForm.StatusBar1.Panels[1].Text;\r
+      Label14.Caption:=' - '+Label14.Caption;\r
+      for j:=6 downto 1 do\r
+      begin\r
+        Label14.Caption:=GSMNetworkInfo.NetworkCode[j]+Label14.Caption;\r
+      end;\r
+\r
+      i:=1;\r
+      while true do\r
+      begin\r
+        if strcomp(pchar(SMSEditForm.ComboBox7.Items[i]),pchar(Label14.Caption))=0\r
+          then break;\r
+        i:=i+1;\r
+      end;\r
+      SMSEditForm.ComboBox7.ItemIndex:=i;\r
+    end;\r
+  end;\r
+\r
+  if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
+  begin\r
+    SMSEditForm.edit3.Visible:=true;\r
+    SMSEditForm.label14.Visible:=true;\r
+  end else\r
+  begin\r
+    SMSEditForm.edit3.Visible:=false;\r
+    SMSEditForm.label14.Visible:=false;\r
+  end;\r
+\r
+  SMSEditForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.Button17Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  if smscinit=false then\r
+  begin\r
+    MainForm.ListView6.Items.Clear;\r
+    smscnum:=1;\r
+    while true do\r
+    begin\r
+      ReadSMSC;\r
+      if smscinit then break;\r
+    end;\r
+  end;\r
+\r
+  //sms text\r
+  SMSEditForm.Memo1.Text:='';\r
+\r
+  //number\r
+  SMSEditForm.Edit2.Text:='';\r
+\r
+  //folders\r
+  GSM_GetSMSFolders(@SMSfolders);\r
+  SMSEditForm.ComboBox1.Items.Clear;\r
+  for i:=1 to SMSFolders.number do\r
+  begin\r
+    SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
+  end;\r
+  SMSEditForm.ComboBox1.ItemIndex:=0;\r
+\r
+  //smsc\r
+  SetSMSC(1);\r
+  SMSEditForm.ComboBox2.Items.Clear;\r
+  SMSEditForm.ComboBox2.Items.Add('custom');\r
+  for i:=1 to smscnum-1 do\r
+  begin\r
+    if SMSC2[i].Name[1]<>chr(0) then\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
+    else\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
+  end;\r
+  SMSEditForm.ComboBox2.ItemIndex:=1;\r
+\r
+  SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.RingtoneSMSTabSheet;\r
+\r
+  if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
+  begin\r
+    SMSEditForm.edit3.Visible:=true;\r
+    SMSEditForm.label14.Visible:=true;\r
+  end else\r
+  begin\r
+    SMSEditForm.edit3.Visible:=false;\r
+    SMSEditForm.label14.Visible:=false;\r
+  end;\r
+\r
+  SMSEditForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.SMS1Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  if smscinit=false then\r
+  begin\r
+    MainForm.ListView6.Items.Clear;\r
+    smscnum:=1;\r
+    while true do\r
+    begin\r
+      ReadSMSC;\r
+      if smscinit then break;\r
+    end;\r
+  end;\r
+\r
+  //sms text\r
+  SMSEditForm.Memo1.Text:='';\r
+\r
+  //number\r
+  SMSEditForm.Edit2.Text:='';\r
+\r
+  //folders\r
+  GSM_GetSMSFolders(@SMSfolders);\r
+  SMSEditForm.ComboBox1.Items.Clear;\r
+  for i:=1 to SMSFolders.number do\r
+  begin\r
+    SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
+  end;\r
+  SMSEditForm.ComboBox1.ItemIndex:=0;\r
+\r
+  //smsc\r
+  SetSMSC(1);\r
+  SMSEditForm.ComboBox2.Items.Clear;\r
+  SMSEditForm.ComboBox2.Items.Add('custom');\r
+  for i:=1 to smscnum-1 do\r
+  begin\r
+    if SMSC2[i].Name[1]<>chr(0) then\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
+    else\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
+  end;\r
+  SMSEditForm.ComboBox2.ItemIndex:=1;\r
+\r
+  SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.CalendarSMSTabSheet;\r
+\r
+  calenda.Location:=calendarselect;\r
+  MainForm.Timer2.Enabled:=false;\r
+  GSM_GetCalendarNote(@calenda);\r
+  MainForm.Timer2.Enabled:=true;\r
+\r
+  if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
+  begin\r
+    SMSEditForm.edit3.Visible:=true;\r
+    SMSEditForm.label14.Visible:=true;\r
+  end else\r
+  begin\r
+    SMSEditForm.edit3.Visible:=false;\r
+    SMSEditForm.label14.Visible:=false;\r
+  end;\r
+\r
+  SMSEditForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.SMSSendSave1Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  if smscinit=false then\r
+  begin\r
+    MainForm.ListView6.Items.Clear;\r
+    smscnum:=1;\r
+    while true do\r
+    begin\r
+      ReadSMSC;\r
+      if smscinit then break;\r
+    end;\r
+  end;\r
+\r
+  //sms text\r
+  SMSEditForm.Memo1.Text:='';\r
+\r
+  //number\r
+  SMSEditForm.Edit2.Text:='';\r
+\r
+  //folders\r
+  GSM_GetSMSFolders(@SMSfolders);\r
+  SMSEditForm.ComboBox1.Items.Clear;\r
+  for i:=1 to SMSFolders.number do\r
+  begin\r
+    SMSEditForm.ComboBox1.Items.Add(SMSfolders.folder[i].Name);\r
+  end;\r
+  SMSEditForm.ComboBox1.ItemIndex:=0;\r
+\r
+  //smsc\r
+  SetSMSC(1);\r
+  SMSEditForm.ComboBox2.Items.Clear;\r
+  SMSEditForm.ComboBox2.Items.Add('custom');\r
+  for i:=1 to smscnum-1 do\r
+  begin\r
+    if SMSC2[i].Name[1]<>chr(0) then\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i)+' - '+SMSC2[i].Name)\r
+    else\r
+      SMSEditForm.ComboBox2.Items.Add('set '+inttostr(i));\r
+  end;\r
+  SMSEditForm.ComboBox2.ItemIndex:=1;\r
+\r
+  SMSEditForm.TextSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.PBKSMSTabSheet;\r
+\r
+  pbk.Location:=pbknumberentry-1;\r
+  case ComboBox1.ItemIndex of\r
+    1:pbk.MemoryType:=GMT_DC;\r
+    2:pbk.MemoryType:=GMT_MC;\r
+    3:pbk.MemoryType:=GMT_ON;\r
+    4:pbk.MemoryType:=GMT_ME;\r
+    5:pbk.MemoryType:=GMT_SM;\r
+    6:pbk.MemoryType:=GMT_RC;\r
+  end;\r
+  MainForm.Timer2.Enabled:=false;\r
+  GSM_GetMemoryLocation(@pbk);\r
+  MainForm.Timer2.Enabled:=true;\r
+\r
+  if (GSM_GetModelFeature(FN_SMS)=F_SMS71) then\r
+  begin\r
+    SMSEditForm.edit3.Visible:=true;\r
+    SMSEditForm.label14.Visible:=true;\r
+  end else\r
+  begin\r
+    SMSEditForm.edit3.Visible:=false;\r
+    SMSEditForm.label14.Visible:=false;\r
+  end;\r
+\r
+  SMSEditForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.Button13Click(Sender: TObject);\r
+var\r
+  ring:GSM_BinRingtone;\r
+begin\r
+  if OpenDialog1.Execute then\r
+  begin\r
+    if GSM_ReadBinRingtoneFile(PChar(OpenDialog1.FileName),@ring)=0 then\r
+    begin\r
+      Edit2.Text:=ring.Name;\r
+      binring:=ring;\r
+    end;\r
+  end;\r
+\r
+end;\r
+\r
+procedure TMainForm.Button14Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
+  LogosRingForm.ComboBox3.Items.Clear();\r
+  for i:=1 to 7 do\r
+  begin\r
+    LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+  end;\r
+  LogosRingForm.ComboBox3.ItemIndex:=0;\r
+  LogosRingForm.ShowModal;\r
+  if LogosRingForm.ComboBox3.Visible then\r
+  begin\r
+    binring.location:=LogosRingForm.ComboBox3.ItemIndex+1;\r
+    MainForm.Timer2.Enabled:=false;\r
+    GSM_SetBinRingtone(@binring);\r
+    MainForm.Timer2.Enabled:=true;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ConfigTabSheetHide(Sender: TObject);\r
+var\r
+  MyIniFile: TIniFile;\r
+begin\r
+  if MessageDlg('Do you want to save config ?',\r
+    mtConfirmation, [mbYes, mbNo], 0) = mrYes then\r
+  begin\r
+    MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
+    case MainForm.ComboBox4.ItemIndex of\r
+      0:MyIniFile.WriteString('global', 'connection', 'mbus');\r
+      1:MyIniFile.WriteString('global', 'connection', 'fbus');\r
+      2:MyIniFile.WriteString('global', 'connection', 'dlr3');\r
+      3:MyIniFile.WriteString('global', 'connection', 'infrared');\r
+    end;\r
+    MyIniFile.WriteString('global', 'model', MainForm.ComboBox6.Text);\r
+    MyIniFile.WriteString('global', 'port', MainForm.ComboBox5.Text);\r
+    if MainForm.CheckBox2.Checked then\r
+      MyIniFile.WriteString('global', 'synchronizetime', 'yes')\r
+    else\r
+      MyIniFile.WriteString('global', 'synchronizetime', 'no');\r
+    MyIniFile.Free;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ConfigTabSheetShow(Sender: TObject);\r
+var\r
+  MyIniFile: TIniFile;\r
+  x:string;\r
+  i:integer;\r
+begin\r
+  MyIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'\gnokiirc');\r
+\r
+  x:=MyInifile.ReadString('global', 'connection', 'fbus');\r
+  MainForm.ComboBox4.ItemIndex:=0;\r
+  if x='fbus' then MainForm.ComboBox4.ItemIndex:=1;\r
+  if x='dlr3' then MainForm.ComboBox4.ItemIndex:=2;\r
+  if x='infrared' then MainForm.ComboBox4.ItemIndex:=3;\r
+\r
+  x:=MyInifile.ReadString('global', 'port', 'com2:');\r
+  MainForm.ComboBox5.ItemIndex:=0;\r
+  for i:=1 to MainForm.ComboBox5.Items.Count do\r
+  begin\r
+    if MainForm.ComboBox5.Items.Strings[i-1]=x then\r
+      MainForm.ComboBox5.ItemIndex:=i-1;\r
+  end;\r
+\r
+  x:=MyInifile.ReadString('global', 'model', 'auto');\r
+  MainForm.ComboBox6.ItemIndex:=0;\r
+  for i:=1 to MainForm.ComboBox6.Items.Count do\r
+  begin\r
+    if MainForm.ComboBox6.Items.Strings[i-1]=x then\r
+      MainForm.ComboBox6.ItemIndex:=i-1;\r
+  end;\r
+\r
+  x:=MyInifile.ReadString('global', 'synchronizetime', 'no');\r
+  if x='yes' then\r
+    MainForm.CheckBox2.Checked:=True\r
+  else\r
+    MainForm.CheckBox2.Checked:=False;\r
+  MyIniFile.Free;\r
+end;\r
+\r
+procedure TMainForm.Timer2Timer(Sender: TObject);\r
+begin\r
+  if SparkyThread.Suspended then SparkyThread.Resume;\r
+  Timer2.Interval:=4000;\r
+end;\r
+\r
+procedure TMainForm.AboutTabSheetShow(Sender: TObject);\r
+var\r
+  xxx:array[1..256] of char;\r
+begin\r
+  GSM_GetDLLVersion(@xxx);\r
+  Label20.Caption:=xxx;\r
+end;\r
+\r
+procedure SaveSMSOffline;\r
+var F:file of GSM_SMSMessage;\r
+    i:integer;\r
+begin\r
+  AssignFile(F, 'gnokiisms');\r
+  Rewrite(F);\r
+  for i:=1 to SMSOfflineNumber do\r
+  begin\r
+    Write(f,SMSOffline[i]);\r
+  end;\r
+  CloseFile(F);\r
+end;\r
+\r
+procedure ReadSMSOffline;\r
+var F:file of GSM_SMSMessage;\r
+begin\r
+  MainForm.ListView10.items.Clear;\r
+  AssignFile(F, 'gnokiisms');\r
+  Reset(F);\r
+  if (ioresult=0) then\r
+  begin\r
+    smsofflinenumber:=0;\r
+    while not eof(f) do\r
+    begin\r
+      smsofflinenumber:=smsofflinenumber+1;\r
+      read(f,smsoffline[smsofflinenumber]);\r
+      AddSMSInfo(MainForm.ListView10,smsoffline[smsofflinenumber]);\r
+    end;\r
+    CloseFile(F);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.PCSMSTabSheetShow(Sender: TObject);\r
+begin\r
+  ReadSMSOffline;\r
+end;\r
+\r
+procedure TMainForm.CopytoPC1Click(Sender: TObject);\r
+begin\r
+  SMSofflinenumber:=smsofflinenumber+1;\r
+  SMSoffline[SMSofflinenumber]:=SMS[smsnumindex];\r
+  SaveSMSOffline;\r
+end;\r
+\r
+procedure TMainForm.ListView10SelectItem(Sender: TObject; Item: TListItem;\r
+  Selected: Boolean);\r
+begin\r
+  AddSMSDescription(SMSOffline[Item.Index+1],MainForm.Memo4,MainForm.Memo5);\r
+end;\r
+\r
+procedure TMainForm.PCSMSPopupMenuPopup(Sender: TObject);\r
+begin\r
+  SendSave1.Enabled:=False;\r
+  if GSMPhoneConnected then SendSave1.Enabled:=True;\r
+\r
+  Delete3.Enabled:=false;\r
+  if listview10.selected<>nil then Delete3.Enabled:=True;\r
+end;\r
+\r
+procedure TMainForm.Delete3Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  if Application.MessageBox('Do you want to delete this SMS ?','Question',MB_YESNO)=IDYES then\r
+  begin\r
+    for i:=MainForm.ListView10.ItemIndex to smsofflinenumber-1 do\r
+    begin\r
+      SMSOffline[i]:=SMSOffline[i+1];\r
+    end;\r
+    Smsofflinenumber:=smsofflinenumber-1;\r
+    SaveSMSOffline;\r
+    ReadSMSOffline;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SendSave1Click(Sender: TObject);\r
+var i:integer;\r
+begin\r
+  GSM_GetSMSFolders(@SMSfolders);\r
+  MainForm.ComboBox3.Items.Clear();\r
+  for i:=1 to SMSfolders.number do\r
+  begin\r
+    MainForm.ComboBox3.Items.Add(SMSfolders.folder[i].Name);\r
+  end;\r
+  MainForm.ComboBox3.ItemIndex:=0;\r
+  setsmslocation:=0;\r
+  SendSaveSMS(SMSOffline[MainForm.ListView10.ItemIndex+1]);\r
+end;\r
+\r
+\r
+procedure EndWAPBookmarkThread;\r
+begin\r
+  if (WAPBookmarkThread<>nil) then\r
+  begin\r
+    WAPBookmarkThread.Terminate();\r
+    MainForm.Timer2.Enabled:=true;\r
+    WAPBookmarkThread:=nil;\r
+  end;\r
+end;\r
+\r
+procedure TWAPBookmarkThread.Execute;\r
+var\r
+  bookmark:GSM_WAPBookmark;\r
+  i:integer;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    bookmark.location:=bookmarknum;\r
+    i:=GSM_GetWAPBookmark(@bookmark);\r
+    MainForm.ListView9.Items.Add;\r
+    MainForm.ListView9.Items.Item[bookmarknum-1].Caption:=inttostr(bookmarknum);\r
+    if (i=0) then\r
+    begin\r
+      MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add(bookmark.title);\r
+      MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add(bookmark.adress);\r
+    end;\r
+    bookmarknum:=bookmarknum+1;\r
+    if bookmarknum=15 then EndWAPBookmarkThread;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.WapBookTabSheetHide(Sender: TObject);\r
+begin\r
+  EndWAPBookmarkThread;\r
+end;\r
+\r
+procedure TMainForm.WapBookTabSheetShow(Sender: TObject);\r
+begin\r
+  if GSMPhoneConnected then\r
+  begin\r
+    if GSM_GetModelFeature(FN_WAP)<>0 then\r
+    begin\r
+      GroupBox17.Ctl3D:=true;\r
+      ListView9.Ctl3D:=true;\r
+      ListView9.Enabled:=true;\r
+      bookmarknum:=1;\r
+      MainForm.ListView9.Items.Clear;\r
+      MainForm.Timer2.Enabled:=false;\r
+      WAPBookmarkThread:=TWAPBookmarkThread.Create(false);\r
+    end else\r
+    begin\r
+      GroupBox17.Ctl3D:=false;\r
+      ListView9.Ctl3D:=false;\r
+      ListView9.Enabled:=false;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ComboBox7Change(Sender: TObject);\r
+var\r
+  settings:GSM_WAPSettings;\r
+begin\r
+  if combobox7.ItemIndex>0 then\r
+  begin\r
+    settings.location:=combobox7.ItemIndex;\r
+    MainForm.Timer2.Enabled:=false;\r
+    GSM_GetWAPSettings(@settings);\r
+    MainForm.Timer2.Enabled:=true;\r
+\r
+    if (settings.title[1]<>chr(0)) then\r
+      Edit6.Text:=settings.title\r
+    else\r
+      edit6.Text:='set '+inttostr(combobox7.ItemIndex);\r
+\r
+    edit8.Text:=settings.homepage;\r
+\r
+    combobox10.itemindex:=1;\r
+    if settings.iscontinuous<>0 then combobox10.Itemindex:=0;\r
+\r
+    combobox9.itemindex:=1;\r
+    if settings.issecurity<>0 then combobox9.Itemindex:=0;\r
+\r
+    if (settings.bearer>=0) and (settings.bearer<3) then\r
+    begin\r
+      combobox8.ItemIndex:=settings.bearer;\r
+\r
+      Label27.enabled:=false;\r
+      Label28.enabled:=false;\r
+      Label29.enabled:=false;\r
+      label30.enabled:=false;\r
+      label31.enabled:=false;\r
+      label32.enabled:=false;\r
+      label33.enabled:=false;\r
+      label34.enabled:=false;\r
+      label35.enabled:=false;\r
+      label36.enabled:=false;\r
+      label37.enabled:=false;\r
+      edit9.enabled:=false;\r
+      edit10.enabled:=false;\r
+      edit11.enabled:=false;\r
+      edit12.enabled:=false;\r
+      edit13.enabled:=false;\r
+      edit14.enabled:=false;\r
+      edit15.enabled:=false;\r
+      combobox11.enabled:=false;\r
+      combobox12.enabled:=false;\r
+      combobox13.enabled:=false;\r
+      combobox14.enabled:=false;\r
+\r
+      case settings.bearer of\r
+        WAPSETTINGS_BEARER_SMS:\r
+          begin\r
+            label27.enabled:=true;\r
+            edit9.text:=settings.server;\r
+            edit9.enabled:=true;\r
+\r
+            label28.enabled:=true;\r
+            edit10.text:=settings.service;\r
+            edit10.enabled:=true;\r
+          end;\r
+        WAPSETTINGS_BEARER_DATA:\r
+          begin\r
+            label29.enabled:=true;\r
+            edit11.text:=settings.dialup;\r
+            edit11.enabled:=true;\r
+\r
+            label34.enabled:=true;\r
+            edit13.text:=settings.user;\r
+            edit13.enabled:=true;\r
+\r
+            label35.enabled:=true;\r
+            edit14.text:=settings.password;\r
+            edit14.enabled:=true;\r
+\r
+            label30.enabled:=true;\r
+            edit12.text:=settings.ipaddress;\r
+            edit12.enabled:=true;\r
+\r
+            label31.enabled:=true;\r
+            combobox11.enabled:=true;\r
+            combobox11.ItemIndex:=0;\r
+            if settings.isnormalauthentication=0 then\r
+              combobox11.ItemIndex:=1;\r
+\r
+            label32.enabled:=true;\r
+            combobox12.enabled:=true;\r
+            combobox12.ItemIndex:=0;\r
+            if settings.isISDNcall=0 then\r
+              combobox12.ItemIndex:=1;\r
+\r
+            label33.enabled:=true;\r
+            combobox13.enabled:=true;\r
+            combobox13.ItemIndex:=1;\r
+            if settings.isspeed14400=0 then\r
+              combobox13.ItemIndex:=0;\r
+          end;\r
+        WAPSETTINGS_BEARER_USSD:\r
+          begin\r
+            label36.enabled:=true;\r
+            edit15.text:=settings.code;\r
+            edit15.enabled:=true;\r
+\r
+            label37.enabled:=true;\r
+            combobox14.Enabled:=true;\r
+            combobox14.ItemIndex:=1;\r
+            if settings.isIP=0 then\r
+            begin\r
+              combobox14.ItemIndex:=1;\r
+\r
+              label28.enabled:=true;\r
+              edit10.text:=settings.service;\r
+              edit10.enabled:=true;\r
+            end else\r
+            begin\r
+              label30.enabled:=true;\r
+              edit12.text:=settings.ipaddress;\r
+              edit12.enabled:=true;\r
+            end;\r
+          end;\r
+      end;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Button19Click(Sender: TObject);\r
+var\r
+  Divert:GSM_CallDivert;\r
+begin\r
+  MainForm.Timer2.Enabled:=false;\r
+\r
+  divert.DType:=GSM_CDV_Busy;\r
+  divert.ctype:=GSM_CDV_VoiceCalls;\r
+  divert.Operation:=GSM_CDV_Query;\r
+  if gsm_calldivertoperation(@divert)=0 then\r
+  begin\r
+    if divert.enabled=0 then\r
+    begin\r
+      Label38.enabled:=false;\r
+      edit16.enabled:=false;\r
+      edit16.Text:='Not active';\r
+    end else\r
+    begin\r
+      Label38.enabled:=true;\r
+      edit16.enabled:=true;\r
+      edit16.Text:=divert.Number;\r
+    end;\r
+  end;\r
+\r
+  divert.DType:=GSM_CDV_NoAnswer;\r
+  divert.ctype:=GSM_CDV_VoiceCalls;\r
+  divert.Operation:=GSM_CDV_Query;\r
+  if gsm_calldivertoperation(@divert)=0 then\r
+  begin\r
+    if divert.enabled=0 then\r
+    begin\r
+      Label39.enabled:=false;\r
+      edit17.enabled:=false;\r
+      edit17.Text:='Not active';\r
+      label40.Enabled:=false;\r
+      combobox15.Enabled:=false;\r
+    end else\r
+    begin\r
+      Label39.enabled:=true;\r
+      edit17.enabled:=true;\r
+      edit17.Text:=divert.Number;\r
+      label40.Enabled:=true;\r
+      combobox15.Enabled:=true;\r
+      case divert.timeout of\r
+         5:combobox15.ItemIndex:=0;\r
+        10:combobox15.ItemIndex:=1;\r
+        15:combobox15.ItemIndex:=2;\r
+        20:combobox15.ItemIndex:=3;\r
+        25:combobox15.ItemIndex:=4;\r
+        30:combobox15.ItemIndex:=5;\r
+      end;\r
+    end;\r
+  end;\r
+\r
+  divert.DType:=GSM_CDV_OutOfreach;\r
+  divert.ctype:=GSM_CDV_VoiceCalls;\r
+  divert.Operation:=GSM_CDV_Query;\r
+  if gsm_calldivertoperation(@divert)=0 then\r
+  begin\r
+    if divert.enabled=0 then\r
+    begin\r
+      Label41.enabled:=false;\r
+      edit18.enabled:=false;\r
+      edit18.Text:='Not active';\r
+    end else\r
+    begin\r
+      Label41.enabled:=true;\r
+      edit18.enabled:=true;\r
+      edit18.Text:=divert.Number;\r
+    end;\r
+  end;\r
+\r
+  MainForm.Timer2.Enabled:=true;\r
+end;\r
+\r
+procedure TMainForm.Button20Click(Sender: TObject);\r
+var\r
+  Divert:GSM_CallDivert;\r
+begin\r
+  MainForm.Timer2.Enabled:=false;\r
+\r
+  divert.DType:=GSM_CDV_AllTypes;\r
+  divert.ctype:=GSM_CDV_AllCalls;\r
+  divert.Operation:=GSM_CDV_Erasure;\r
+  gsm_calldivertoperation(@divert);\r
+\r
+  MainForm.Timer2.Enabled:=true;\r
+\r
+end;\r
+\r
+procedure ReadCalendarOffline;\r
+var F:file of GSM_calendarnote;\r
+begin\r
+  MainForm.ListView11.items.Clear;\r
+  AssignFile(F, 'gnokiicalendar');\r
+  Reset(F);\r
+  if (ioresult=0) then\r
+  begin\r
+    calendarofflinenumber:=0;\r
+    while not eof(f) do\r
+    begin\r
+      calendarofflinenumber:=calendarofflinenumber+1;\r
+      read(f,calendaroffline[calendarofflinenumber]);\r
+      AddCalendarNote(calendaroffline[calendarofflinenumber],mainform.ListView11);\r
+    end;\r
+    CloseFile(F);\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.PCOfflineTabSheetShow(Sender: TObject);\r
+begin\r
+  ReadSMSOffline;\r
+  Label43.Caption:=inttostr(smsofflinenumber);\r
+  ReadCalendarOffline;\r
+  Label45.Caption:=inttostr(calendarofflinenumber);\r
+end;\r
+\r
+procedure SaveCalendarOffline;\r
+var F:file of GSM_CalendarNote;\r
+    i:integer;\r
+begin\r
+  AssignFile(F, 'gnokiicalendar');\r
+  Rewrite(F);\r
+  for i:=1 to CalendarOfflineNumber do\r
+  begin\r
+    Write(f,CalendarOffline[i]);\r
+  end;\r
+  CloseFile(F);\r
+end;\r
+\r
+procedure TMainForm.PCCalendarTabSheetShow(Sender: TObject);\r
+begin\r
+  ReadCalendarOffline;\r
+end;\r
+\r
+procedure TMainForm.CopytoPC2Click(Sender: TObject);\r
+begin\r
+  setcalendarnote.Location:=calendarselect;\r
+  mainform.Timer2.Enabled:=false;\r
+  GSM_GetCalendarNote(@setcalendarnote);\r
+  mainform.Timer2.Enabled:=true;\r
+  Calendarofflinenumber:=calendarofflinenumber+1;\r
+  Calendaroffline[Calendarofflinenumber]:=setcalendarnote;\r
+  SaveCalendarOffline;\r
+end;\r
+\r
+procedure TMainForm.Delete5Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+begin\r
+  if Application.MessageBox('Do you want to delete this note ?','Question',MB_YESNO)=IDYES then\r
+  begin\r
+    for i:=MainForm.ListView11.ItemIndex to calendarofflinenumber-1 do\r
+    begin\r
+      CalendarOffline[i]:=CalendarOffline[i+1];\r
+    end;\r
+    Calendarofflinenumber:=calendarofflinenumber-1;\r
+    SaveCalendarOffline;\r
+    ReadCalendarOffline;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Copytocalendar1Click(Sender: TObject);\r
+begin\r
+  if not readcalendar then\r
+  begin\r
+    application.MessageBox('Please read first calendar notes from phone','info',mb_ok);\r
+  end else begin\r
+    setcalendarnote:=calendaroffline[mainform.listview11.itemindex+1];\r
+    setcalendarnote.Location:=MainForm.ListView4.Items.Count+1;\r
+\r
+    EditCalendarNote;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.PCCalendarPopupMenuPopup(Sender: TObject);\r
+begin\r
+  CopyTocalendar1.Enabled:=False;\r
+  if (GSMPhoneConnected) and (GSM_GetModelFeature(FN_Calendar)<>0) then copytocalendar1.Enabled:=True;\r
+\r
+  Delete5.Enabled:=false;\r
+  if listview11.selected<>nil then Delete5.Enabled:=True;\r
+end;\r
+\r
+end.\r