http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / win32_makefile / gui_delphi / mainunit.pas
index 9bf8351..6461f68 100644 (file)
@@ -222,6 +222,25 @@ type
     Label45: TLabel;\r
     TabSheet2: TTabSheet;\r
     TabSheet3: TTabSheet;\r
+    N6: TMenuItem;\r
+    Savebackuptofile1: TMenuItem;\r
+    Restorebackupfromfile1: TMenuItem;\r
+    N7: TMenuItem;\r
+    Savephonebooktofileanotherapplication1: TMenuItem;\r
+    PCPBKTabSheet: TTabSheet;\r
+    GroupBox25: TGroupBox;\r
+    ListView12: TListView;\r
+    Edit19: TMenuItem;\r
+    N10: TMenuItem;\r
+    Delete4: TMenuItem;\r
+    Button22: TButton;\r
+    WAPBookPopupMenu: TPopupMenu;\r
+    New20: TMenuItem;\r
+    SMSSendSave2: TMenuItem;\r
+    N8: TMenuItem;\r
+    Edit20: TMenuItem;\r
+    Button23: TButton;\r
+    CopyphonebooktoPC1: TMenuItem;\r
     procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;\r
       Shift: TShiftState; X, Y: Integer);\r
     procedure FormCreate(Sender: TObject);\r
@@ -321,6 +340,23 @@ type
     procedure Delete5Click(Sender: TObject);\r
     procedure Copytocalendar1Click(Sender: TObject);\r
     procedure PCCalendarPopupMenuPopup(Sender: TObject);\r
+    procedure Savebackuptofile1Click(Sender: TObject);\r
+    procedure Restorebackupfromfile1Click(Sender: TObject);\r
+    procedure PBKPopupMenuPopup(Sender: TObject);\r
+    procedure Savephonebooktofileanotherapplication1Click(Sender: TObject);\r
+    procedure ListView4DblClick(Sender: TObject);\r
+    procedure Edit19Click(Sender: TObject);\r
+    procedure Delete4Click(Sender: TObject);\r
+    procedure Button22Click(Sender: TObject);\r
+    procedure New20Click(Sender: TObject);\r
+    procedure ListView9SelectItem(Sender: TObject; Item: TListItem;\r
+      Selected: Boolean);\r
+    procedure Edit20Click(Sender: TObject);\r
+    procedure WAPBookPopupMenuPopup(Sender: TObject);\r
+    procedure SMSSendSave2Click(Sender: TObject);\r
+    procedure Button23Click(Sender: TObject);\r
+    procedure CopyphonebooktoPC1Click(Sender: TObject);\r
+    procedure PCPBKTabSheetShow(Sender: TObject);\r
   private\r
     { Private declarations }\r
   public\r
@@ -338,14 +374,23 @@ var
   calenda:GSM_CalendarNote;\r
   pbk:GSM_PhonebookEntry;\r
   previewcolor:TColor;\r
+  bookmarknum2:integer;\r
+  bookma:GSM_WAPBookmark;\r
+  wapset:GSM_WAPSettings;\r
+  pbkofflinenumber:integer;\r
+  \r
+  PhoneBackup: GSM_Backup;\r
+  PhoneBackupAvailable:boolean;\r
 \r
 procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
 function DayOFweek3(date:TDateTime):string;\r
 procedure SetSMSC(num:integer);\r
+procedure ReadPBKOffline;\r
 \r
 implementation\r
 \r
-uses Calendar, SMSEdit, LogosRing, Netmon, smscedit, pbkedit;\r
+uses Calendar, SMSEdit, LogosRing, Netmon, smscedit, pbkedit, backup,\r
+  backup2, pbkedit2, wapbook;\r
 \r
 {$R *.dfm}\r
 \r
@@ -405,7 +450,7 @@ var
   phonebookfound:integer;\r
   PhonebookThread: TPhonebookThread;\r
   pbknumberentry:integer;\r
-\r
+  \r
   //logos\r
   pointsize:integer;\r
   x2,y2:byte;\r
@@ -438,6 +483,9 @@ var
   calendarselect:integer;\r
   readcalendar:boolean;\r
 \r
+  CalendarOffline:array[1..300] of GSM_CalendarNote;\r
+  CalendarOfflineNumber:integer;\r
+\r
   //profiles\r
   profilenum:integer;\r
   ProfileThread: TProfileThread;\r
@@ -457,9 +505,6 @@ var
   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
@@ -520,6 +565,63 @@ begin
   end;\r
 end;\r
 \r
+procedure ReadPBKOffline;\r
+var F:file of GSM_PhonebookEntry;\r
+begin\r
+  AssignFile(F, 'gnokiipbk');\r
+  Reset(F);\r
+  if (ioresult=0) then\r
+  begin\r
+    phonebackup.PhonePhonebookUsed:=0;\r
+    pbkofflinenumber:=0;\r
+    while not eof(f) do\r
+    begin\r
+      pbkofflinenumber:=pbkofflinenumber+1;\r
+      read(f,PhoneBackup.PhonePhonebook[pbkofflinenumber]);\r
+    end;\r
+    CloseFile(F);\r
+  end;\r
+end;\r
+\r
+procedure SavePBKOffline;\r
+var F:file of GSM_PhonebookEntry;\r
+    i:integer;\r
+begin\r
+  AssignFile(F, 'gnokiipbk');\r
+  Rewrite(F);\r
+  for i:=1 to PBKOfflineNumber do\r
+  begin\r
+    Write(f,PhoneBackup.PhonePhonebook[i]);\r
+  end;\r
+  CloseFile(F);\r
+end;\r
+\r
+procedure AddSMSEditSenderList;\r
+var i,j:integer;\r
+begin\r
+  ReadPBKOffline;\r
+  SMSEditForm.ComboBox9.Items.Clear;\r
+  SMSEditForm.ComboBox9.Sorted:=false;\r
+  for i:=1 to PBKOfflineNumber do\r
+  begin\r
+    if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
+    begin\r
+      SMSEditForm.ComboBox9.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
+    end else\r
+    begin\r
+      for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
+      begin\r
+        if PhoneBackup.PhonePhonebook[i].SubEntries[j].EntryType=GSM_Number then\r
+        begin\r
+          SMSEditForm.ComboBox9.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
+          break;\r
+        end;\r
+      end;\r
+    end;\r
+  end;\r
+  SMSEditForm.ComboBox9.Sorted:=true;\r
+end;\r
+\r
 procedure ReadCallerGroup();\r
 var\r
   logo:GSM_Bitmap;\r
@@ -574,15 +676,20 @@ end;
 \r
 procedure ReadAllCallerGroups();\r
 begin\r
-  if callerinit=false then\r
+  if (GSM_GetModelFeature(FN_CALLERGROUPS)<>0) then\r
   begin\r
-    MainForm.ListView5.Items.Clear;\r
-    callernum:=1;\r
-    while callerinit=false do\r
+    if callerinit=false then\r
     begin\r
-      ReadCallerGroup();\r
-      if callerinit then break;\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 else\r
+  begin\r
   end;\r
 end;\r
 \r
@@ -715,15 +822,41 @@ var
 begin\r
   case ComboBox2.ItemIndex of\r
     0:bittype:=GSM_CallerLogo;\r
-    1:bittype:=GSM_OperatorLogo;\r
+    1:begin\r
+        bittype:=GSM_OperatorLogo;\r
+        if GSMPhoneConnected then\r
+        begin\r
+          case GSM_GetModelFeature(FN_STARTUP) of\r
+            F_STA62:bittype:=GSM_7110OperatorLogo;\r
+            F_STA71:bittype:=GSM_7110OperatorLogo;\r
+          end;\r
+        end;\r
+      end;\r
     2:bittype:=GSM_PictureImage;\r
-    3:bittype:=GSM_StartupLogo;\r
+    3:begin\r
+        bittype:=GSM_StartupLogo;\r
+        if GSMPhoneConnected then\r
+        begin\r
+          case GSM_GetModelFeature(FN_STARTUP) of\r
+            F_STA62:bittype:=GSM_6210StartupLogo;\r
+            F_STA71:bittype:=GSM_7110StartupLogo;\r
+          end;\r
+        end;\r
+      end;\r
   else\r
     bittype:=GSM_StartupLogo;\r
+    if GSMPhoneConnected then\r
+    begin\r
+      case GSM_GetModelFeature(FN_STARTUP) of\r
+        F_STA62:bittype:=GSM_6210StartupLogo;\r
+        F_STA71:bittype:=GSM_7110StartupLogo;\r
+      end;\r
+    end;\r
   end;\r
   GSM_ResizeBitmap(@bitma,bittype);\r
   DrawBitmap();\r
-  if bitma.type2<>GSM_OperatorLogo then\r
+  if (bitma.type2<>GSM_OperatorLogo) and\r
+     (bitma.type2<>GSM_7110OperatorLogo) then\r
     Button8.Enabled:=false\r
   else\r
     Button8.Enabled:=true;\r
@@ -815,8 +948,11 @@ begin
       case bitma.type2 of\r
         GSM_CallerLogo  :ComboBox2.ItemIndex:=0;\r
         GSM_OperatorLogo:ComboBox2.ItemIndex:=1;\r
+        GSM_7110OperatorLogo:ComboBox2.ItemIndex:=1;\r
         GSM_PictureImage:ComboBox2.ItemIndex:=2;\r
         GSM_StartupLogo :ComboBox2.ItemIndex:=3;\r
+        GSM_7110StartupLogo :ComboBox2.ItemIndex:=3;\r
+        GSM_6210StartupLogo :ComboBox2.ItemIndex:=3;\r
       end;\r
     end;\r
   end;\r
@@ -856,6 +992,68 @@ begin
         if (LogosRingForm.ComboBox3.Visible) then\r
           GSM_SetBitmap(@bitma);\r
       end;\r
+    GSM_7110OperatorLogo:\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_OperatorLogo:\r
       begin\r
         LogosRingForm.ComboBox3.Visible:=true;\r
@@ -1027,7 +1225,8 @@ begin
     13: MainForm.PageControl1.ActivePage:=WAPSettTabSheet;\r
     14: MainForm.PageControl1.ActivePage:=PCOfflineTabSheet;\r
     15: MainForm.PageControl1.ActivePage:=PCCalendarTabSheet;\r
-    16: MainForm.PageControl1.ActivePage:=PCSMSTabSheet;\r
+    16: MainForm.PageControl1.ActivePage:=PCPBKTabSheet;\r
+    17: MainForm.PageControl1.ActivePage:=PCSMSTabSheet;\r
   end;\r
 end;\r
 \r
@@ -1063,6 +1262,7 @@ begin
   MainForm.PCSMSTabSheet.TabVisible:=false;\r
   MainForm.PCCalendarTabSheet.TabVisible:=false;\r
   MainForm.PCOfflineTabSheet.TabVisible:=false;\r
+  MainForm.PCPBKTabSheet.TabVisible:=false;\r
   MainForm.PageControl1.ActivePage:=PhoneTabSheet;\r
 \r
   PreviewColor:=Image2.Canvas.Pixels[70,170];\r
@@ -1088,7 +1288,8 @@ begin
 \r
   smsofflinenumber:=0;\r
   calendarofflinenumber:=0;\r
-\r
+  pbkofflinenumber:=0;\r
+  \r
   readcalendar:=false;\r
 end;\r
 \r
@@ -1104,6 +1305,9 @@ begin
     if PhonebookThread=nil then\r
       ComboBox1.Enabled:=true;\r
 \r
+    SaveBackupTofile1.Enabled:=true;\r
+    Restorebackupfromfile1.Enabled:=true;\r
+\r
     ListView1.Enabled:=true;\r
     NetmonGroupBox.Enabled:=true;\r
     SpinEdit1.Enabled:=true;\r
@@ -1116,10 +1320,9 @@ begin
 \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
+    if Edit1.Text<>'' then Edit1.Enabled:=true;\r
+    if Edit2.Text<>'' then Edit2.Enabled:=true;\r
+    Button22.Enabled:=true;\r
 \r
     If MainForm.PageControl1.ActivePage=MainForm.NetmonitorTabSheet then\r
       NetmonitorTabSheetShow(Sender);\r
@@ -1136,7 +1339,8 @@ begin
         SpeedTabSheetShow(Sender);\r
     end;\r
 \r
-    if bitma.type2<>GSM_OperatorLogo then\r
+    if (bitma.type2<>GSM_OperatorLogo) and\r
+       (bitma.type2<>GSM_7110OperatorLogo) then\r
       Button8.Enabled:=false\r
     else\r
       Button8.Enabled:=true;\r
@@ -1171,7 +1375,8 @@ begin
     Button18.Enabled:=false;\r
     if bitma.type2=GSM_PictureImage then\r
       Button18.Enabled:=true;\r
-    if bitma.type2=GSM_OperatorLogo then\r
+    if (bitma.type2=GSM_OperatorLogo) or\r
+       (bitma.type2=GSM_7110OperatorLogo) then\r
       Button18.Enabled:=true;\r
     if bitma.type2=GSM_CallerLogo then\r
       Button18.Enabled:=true;\r
@@ -1180,6 +1385,7 @@ begin
     WAPSettTabSheet.Enabled:=true;\r
     if GSM_GetModelFeature(FN_WAP)=0 then\r
     begin\r
+      Button23.Enabled:=false;\r
       GroupBox19.Enabled:=false;\r
       groupbox19.Ctl3D:=false;\r
       ComboBox7.enabled:=false;\r
@@ -1220,6 +1426,8 @@ begin
       Edit13.Enabled:=true;\r
       Edit14.Enabled:=true;\r
       Edit15.Enabled:=true;\r
+      Button23.Enabled:=false;\r
+      if ComboBox7.ItemIndex<>0 then Button23.Enabled:=true;\r
     end;\r
 \r
     button19.Enabled:=true;\r
@@ -1229,6 +1437,9 @@ begin
     // Here we should disabled interface\r
     MainForm.StatusBar1.Panels[1].Text:='Not connected';\r
 \r
+    SaveBackupTofile1.Enabled:=false;\r
+    Restorebackupfromfile1.Enabled:=false;\r
+\r
     callerinit:=false;\r
 \r
     MainForm.ComboBox1.Enabled:=false;\r
@@ -1250,6 +1461,7 @@ begin
     Button17.Enabled:=false;\r
     Edit1.Enabled:=false;\r
     Edit2.Enabled:=false;\r
+    Button22.Enabled:=false;\r
 \r
     MainForm.NetmonitorTabSheetHide(Sender);\r
     MainForm.PhonebookTabSheetHide(Sender);\r
@@ -1273,6 +1485,7 @@ begin
     Edit13.Enabled:=false;\r
     Edit14.Enabled:=false;\r
     Edit15.Enabled:=false;\r
+    Button23.Enabled:=false;\r
 \r
     button19.Enabled:=false;\r
     button20.Enabled:=false;\r
@@ -1362,10 +1575,53 @@ begin
   end;\r
 end;\r
 \r
+procedure AddPBKEntry(MyListView:TListView;x:GSM_PhonebookEntry;number:integer);\r
+var j:integer;\r
+begin\r
+  MyListView.Items.Item[number].Subitems.Add(x.Name);\r
+\r
+  if (x.Number[1]<>chr(0)) then\r
+    MyListView.Items.Item[number].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
+        MyListView.Items.Item[number].Subitems.Add(x.subentries[j].Number);\r
+        break;\r
+      end;\r
+    end;\r
+  end;\r
+\r
+  case x.Group of\r
+    0:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
+    1:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
+    2:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
+    3:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
+    4:MyListView.Items.Item[number].Subitems.Add(caller[x.Group+1].text);\r
+  else\r
+    MyListView.Items.Item[number].Subitems.Add('not set');\r
+  end;\r
+\r
+  for j:=1 to x.SubEntriesCount do\r
+  begin\r
+    if x.SubEntries[j].EntryType=GSM_Date then\r
+    begin\r
+      MyListView.Items.Item[number].Subitems.Add(\r
+        DayOfweek2(x.SubEntries[j].Date.Day,x.SubEntries[j].Date.Month,x.SubEntries[j].Date.Year)+' '+\r
+        inttostr2(x.SubEntries[j].Date.Day,2)+'-'+inttostr2(x.SubEntries[j].Date.Month,2)+'-'+\r
+        inttostr(x.SubEntries[j].Date.Year));\r
+      MyListView.Items.Item[number].Subitems.Add(\r
+        inttostr2(x.SubEntries[j].Date.Hour,2)+':'+inttostr2(x.SubEntries[j].Date.Minute,2)+':'+\r
+        inttostr2(x.SubEntries[j].Date.Second,2));\r
+      break;\r
+    end;\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
@@ -1385,40 +1641,21 @@ begin
         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
+          if (x.MemoryType=GMT_ME) then\r
+          begin\r
+            PhoneBackup.PhonePhonebookUsed:=PhoneBackup.PhonePhonebookUsed+1;\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
+          PBKOfflineNumber:=PBKOfflineNumber+1;\r
+          PhoneBackup.PhonePhonebook[PBKOfflineNumber]:=x;\r
 \r
-          for i:=1 to x.SubEntriesCount do\r
+          if (x.MemoryType=GMT_SM) then\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
+            PhoneBackup.SIMPhonebookUsed:=PhoneBackup.SIMPhonebookUsed+1;\r
+            PhoneBackup.SIMPhonebook[PhoneBackup.SIMPhonebookUsed]:=x;\r
           end;\r
+          AddPBKEntry(MainForm.ListView1,x,phonebookcur-1);\r
           if (x.Name[1]<>chr(0)) then phonebookfound:=phonebookfound+1;\r
         end;\r
       end;\r
@@ -1471,11 +1708,24 @@ begin
     phonebookcur:=0;\r
     phonebookfound:=0;\r
 \r
+    PBKOfflineNumber:=0;\r
+    PhoneBackup.PhonePhonebookUsed:=0;\r
+    PhoneBackup.SIMPhonebookUsed:=0;\r
+    if (phonebookstatus.MemoryType=GMT_ME) then\r
+    begin\r
+      PhoneBackup.PhonePhonebookSize:=phonebookstatus.Free+phonebookstatus.Used;\r
+    end;\r
+    if (phonebookstatus.MemoryType=GMT_SM) then\r
+    begin\r
+      PhoneBackup.SIMPhonebookSize:=phonebookstatus.Free+phonebookstatus.Used;\r
+    end;\r
+\r
     ComboBox1.Enabled:=false;\r
 \r
     ReadAllCallerGroups();\r
 \r
     MainForm.ListView1.Items.Clear;\r
+\r
     MainForm.Timer2.Enabled:=false;\r
     PhonebookThread:=TPhonebookThread.Create(false);\r
   end;\r
@@ -1538,14 +1788,30 @@ end;
 procedure TMainForm.Button2Click(Sender: TObject);\r
 var\r
   i:integer;\r
+  mybinring:GSM_BinRingtone;\r
+  myring:GSM_Ringtone;\r
 begin\r
   LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
+  LogosRingForm.ComboBox3.Visible:=true;\r
   LogosRingForm.ComboBox3.Items.Clear();\r
   LogosRingForm.ComboBox3.Items.Add('Preview');\r
-  for i:=1 to 7 do\r
+  MainForm.Timer2.Enabled:=false;\r
+  for i:=1 to GSM_GetModelFeature(FN_RINGNUMBER) do\r
   begin\r
-    LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+    mybinring.location:=i;\r
+    if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
+    begin\r
+      if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
+      begin\r
+        LogosRingForm.ComboBox3.Items.Add(myring.name);\r
+      end else\r
+      begin\r
+        LogosRingForm.ComboBox3.Items.Add(mybinring.name);\r
+      end;\r
+    end else\r
+      LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
   end;\r
+  MainForm.Timer2.Enabled:=true;\r
   LogosRingForm.ComboBox3.ItemIndex:=1;\r
   LogosRingForm.ShowModal;\r
   if LogosRingForm.ComboBox3.Visible then\r
@@ -1697,6 +1963,9 @@ begin
 end;\r
 \r
 procedure AddCalendarNote(note:GSM_CalendarNote;myview:TListView);\r
+var\r
+  j,z:integer;\r
+  found:boolean;\r
 begin\r
   myview.Items.Add;\r
   myview.Items.Item[myview.Items.Count-1].Caption:=inttostr(myview.Items.Count);\r
@@ -1707,7 +1976,38 @@ begin
     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
+\r
+  found:=false;\r
+  if note.Type2=GCN_Call then\r
+  begin\r
+    MainForm.Label14.Caption:=note.Phone;\r
+    for z:=1 to PBKOfflineNumber do\r
+    begin\r
+      if (PhoneBackup.PhonePhonebook[z].Number[1]<>chr(0)) then\r
+      begin\r
+        MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[z].Number;\r
+        if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
+        begin\r
+          myview.Items.Item[myview.Items.Count-1].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
+          found:=true;\r
+          break;\r
+        end;\r
+      end;\r
+      for j:=1 to PhoneBackup.PhonePhonebook[z].SubEntriesCount do\r
+      begin\r
+        MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[z].SubEntries[j].Number;\r
+        if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
+        begin\r
+          myview.Items.Item[myview.Items.Count-1].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
+          found:=true;\r
+          break;\r
+        end;\r
+      end;\r
+    end;\r
+  end;\r
+  if not found then\r
+    myview.Items.Item[myview.Items.Count-1].Subitems.Add(note.Phone);\r
+\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
@@ -1749,6 +2049,9 @@ begin
         CalendarNum:=1;\r
         MainForm.Timer2.Enabled:=false;\r
         readcalendar:=false;\r
+\r
+        ReadPBKOffline;\r
+\r
         CalendarThread:=TCalendarThread.Create(false);\r
       end else\r
       begin\r
@@ -1766,21 +2069,45 @@ begin
 end;\r
 \r
 procedure TMainForm.New1Click(Sender: TObject);\r
+var i,j:integer;\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.ComboBox3.Text:='';\r
   CalendarForm.DateTimePicker1.DateTime:=Date;\r
   CalendarForm.DateTimePicker3.Time:=Time;\r
   CalendarForm.DateTimePicker2.DateTime:=Date;\r
   CalendarForm.DateTimePicker4.Time:=Time;\r
+\r
+  ReadPBKOffline;\r
+  CalendarForm.ComboBox3.Items.Clear;\r
+  CalendarForm.ComboBox3.Sorted:=false;\r
+  for i:=1 to PBKOfflineNumber do\r
+  begin\r
+    if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
+    begin\r
+      CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
+    end else\r
+    begin\r
+      for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
+      begin\r
+        if PhoneBackup.PhonePhonebook[i].SubEntries[j].EntryType=GSM_Number then\r
+        begin\r
+          CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
+          break;\r
+        end;\r
+      end;\r
+    end;\r
+  end;\r
+  CalendarForm.ComboBox3.Sorted:=true;\r
+\r
   CalendarForm.ShowModal;\r
 end;\r
 \r
 procedure EditCalendarNote;\r
-var i:integer;\r
+var i,j,z:integer;\r
 begin\r
   i:=0;\r
 \r
@@ -1798,7 +2125,7 @@ begin
   end;\r
 \r
   CalendarForm.Edit2.Text:=setcalendarnote.Text;\r
-  CalendarForm.Edit1.Text:=setcalendarnote.Phone;\r
+  CalendarForm.ComboBox3.Text:=setcalendarnote.Phone;\r
 \r
   if setcalendarnote.Alarm.Year<>0 then\r
   begin\r
@@ -1847,6 +2174,70 @@ begin
   end;\r
   CalendarForm.ComboBox1.OnSelect(nil);\r
 \r
+  ReadPBKOffline;\r
+  CalendarForm.ComboBox3.Items.Clear;\r
+  CalendarForm.ComboBox3.Sorted:=false;\r
+  for i:=1 to PBKOfflineNumber do\r
+  begin\r
+    if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
+    begin\r
+      CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
+    end else\r
+    begin\r
+      for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
+      begin\r
+        if PhoneBackup.PhonePhonebook[i].SubEntries[j].EntryType=GSM_Number then\r
+        begin\r
+          CalendarForm.ComboBox3.Items.Add(PhoneBackup.PhonePhonebook[i].Name);\r
+          break;\r
+        end;\r
+      end;\r
+    end;\r
+  end;\r
+  CalendarForm.ComboBox3.Sorted:=true;\r
+\r
+  if setcalendarnote.Type2=GCN_Call then\r
+  begin\r
+    MainForm.Label14.Caption:=setcalendarnote.Phone;\r
+    for i:=1 to PBKOfflineNumber do\r
+    begin\r
+      if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
+      begin\r
+        MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].Number;\r
+        if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
+        begin\r
+          MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
+          for z:=0 to CalendarForm.ComboBox3.Items.Count do\r
+          begin\r
+            if (MainForm.Label14.Caption=CalendarForm.ComboBox3.Items[z]) then\r
+            begin\r
+              CalendarForm.ComboBox3.ItemIndex:=z;\r
+              break;\r
+            end;\r
+          end;\r
+          break;\r
+        end;\r
+      end;\r
+      for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
+      begin\r
+        MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].SubEntries[j].Number;\r
+        if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
+        begin\r
+          MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
+          for z:=0 to CalendarForm.ComboBox3.Items.Count do\r
+          begin\r
+            if (MainForm.Label14.Caption=CalendarForm.ComboBox3.Items[z]) then\r
+            begin\r
+              CalendarForm.ComboBox3.ItemIndex:=z;\r
+              break;\r
+            end;\r
+          end;\r
+          break;\r
+        end;\r
+      end;\r
+    end;\r
+  end;\r
+\r
   CalendarForm.ShowModal;\r
 end;\r
 \r
@@ -2097,14 +2488,44 @@ end;
 \r
 //sms\r
 procedure AddSMSInfo(myobject:TListView;mysms:GSM_SMSMessage);\r
-var number:integer;\r
+var number,i,z:integer;\r
+    found:boolean;\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
+\r
+  found:=false;\r
+  for z:=1 to PBKOfflineNumber do\r
+  begin\r
+    mainform.Label14.Caption:=mysms.Sender;\r
+    mainform.Label16.Caption:=PhoneBackup.PhonePhonebook[z].Number;\r
+    if (PhoneBackup.PhonePhonebook[z].Number[1]<>chr(0)) then\r
+    begin\r
+      if (mainform.Label14.Caption=mainform.Label16.Caption) then\r
+      begin\r
+        myobject.Items.Item[number].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
+        found:=true;\r
+        break;\r
+      end;\r
+    end;\r
+    for i:=1 to PhoneBackup.PhonePhonebook[z].SubEntriesCount do\r
+    begin\r
+      mainform.Label16.Caption:=PhoneBackup.PhonePhonebook[z].SubEntries[i].Number;\r
+      if (PhoneBackup.PhonePhonebook[z].SubEntries[i].EntryType=GSM_Number)\r
+         and (mainform.Label14.Caption=mainform.Label16.Caption) then\r
+      begin\r
+        myobject.Items.Item[number].Subitems.Add(PhoneBackup.PhonePhonebook[z].Name);\r
+        found:=true;\r
+        break;\r
+      end;\r
+    end;\r
+    if found then break;\r
+  end;\r
+  if not found then myobject.Items.Item[number].Subitems.Add(mysms.Sender);\r
+\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
@@ -2130,26 +2551,65 @@ begin
 end;\r
 \r
 procedure SendSaveSMS(mysms:GSM_SMSMessage);\r
-var i:integer;\r
+var i,j,z: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
+  SMSEditForm.ComboBox9.Text:=mysms.sender;\r
+  AddSMSEditSenderList;\r
+  MainForm.Label14.Caption:=mysms.sender;\r
+  for i:=1 to PBKOfflineNumber 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
+    if (PhoneBackup.PhonePhonebook[i].Number[1]<>chr(0)) then\r
+    begin\r
+      MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].Number;\r
+      if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
+      begin\r
+        MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
+        for z:=0 to SMSEditForm.ComboBox9.Items.Count do\r
+        begin\r
+          if (MainForm.Label14.Caption=SMSEditForm.ComboBox9.Items[z]) then\r
+          begin\r
+            SMSEditForm.ComboBox9.ItemIndex:=z;\r
+            break;\r
+          end;\r
+        end;\r
+        break;\r
+      end;\r
+    end;\r
+    for j:=1 to PhoneBackup.PhonePhonebook[i].SubEntriesCount do\r
+    begin\r
+      MainForm.Label16.Caption:=PhoneBackup.PhonePhonebook[i].SubEntries[j].Number;\r
+      if (MainForm.Label14.Caption=MainForm.Label16.Caption) then\r
+      begin\r
+        MainForm.Label14.Caption:=PhoneBackup.PhonePhonebook[i].Name;\r
+        for z:=0 to SMSEditForm.ComboBox9.Items.Count do\r
+        begin\r
+          if (MainForm.Label14.Caption=SMSEditForm.ComboBox9.Items[z]) then\r
+          begin\r
+            SMSEditForm.ComboBox9.ItemIndex:=z;\r
+            break;\r
+          end;\r
+        end;\r
+        break;\r
+      end;\r
+    end;\r
+  end;\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
@@ -2178,6 +2638,8 @@ begin
   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
   SMSEditForm.PbkSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
 \r
@@ -2209,7 +2671,8 @@ begin
   SMSEditForm.Memo1.Text:='';\r
 \r
   //number\r
-  SMSEditForm.Edit2.Text:='';\r
+  SMSEditForm.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\r
 \r
   //folders\r
   SMSEditForm.ComboBox1.Items.Clear;\r
@@ -2236,6 +2699,8 @@ begin
   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.TextSMSTabSheet;\r
 \r
@@ -2335,12 +2800,14 @@ begin
     smsnum2:=1;\r
     MainForm.ListView2.Items.Clear;\r
     MainForm.Timer2.Enabled:=false;\r
+    ReadPBKOffline;\r
     SMSThread:=TSMSThread.Create(false);\r
   end;\r
 end;\r
 \r
 procedure TMainForm.ComboBox3Change(Sender: TObject);\r
 begin\r
+  ReadPBKOffline;\r
   DisplaySMSfolder();\r
 end;\r
 \r
@@ -2369,12 +2836,12 @@ begin
          ch:=' (reply via the same SMSC) '+ch;\r
          firstmemo.Lines.Add('SMSC: '+ch);\r
 \r
-        if mysms.type2=GST_DR then\r
+        if (mysms.type2=GST_DR) and (mysms.MessageText[1]='D') 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
+            '   SMSC response 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
@@ -2554,8 +3021,8 @@ var
   current:integer;\r
   i:integer;\r
 begin\r
-  if listview1.Selected<>nil then\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
@@ -2585,6 +3052,7 @@ begin
       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_General2: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
@@ -2603,6 +3071,7 @@ begin
       if (pbk.SubEntries[i].EntryType<>GSM_Date) then\r
          pbkform.ListView1.Items.Item[current].SubItems.Add(pbk.SubEntries[i].Number);\r
     end;\r
+\r
     if (pbk.Group>=0) and (pbk.Group<=4) then\r
     begin\r
       current:=current+1;\r
@@ -2611,7 +3080,7 @@ begin
       pbkform.ListView1.Items.Item[current].SubItems.Add(caller[pbk.Group+1].text);\r
     end;\r
     pbkform.showmodal;\r
-  end;\r
+//  end;\r
 end;\r
 \r
 procedure TMainForm.Button18Click(Sender: TObject);\r
@@ -2634,8 +3103,9 @@ begin
   SMSEditForm.Memo1.Text:='';\r
 \r
   //number\r
-  SMSEditForm.Edit2.Text:='';\r
-\r
+  SMSEditForm.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\r
+  \r
   //folders\r
   GSM_GetSMSFolders(@SMSfolders);\r
   SMSEditForm.ComboBox1.Items.Clear;\r
@@ -2662,6 +3132,8 @@ begin
   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.BitmapSMSTabSheet;\r
 \r
@@ -2763,8 +3235,9 @@ begin
   SMSEditForm.Memo1.Text:='';\r
 \r
   //number\r
-  SMSEditForm.Edit2.Text:='';\r
-\r
+  SMSEditForm.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\r
+  \r
   //folders\r
   GSM_GetSMSFolders(@SMSfolders);\r
   SMSEditForm.ComboBox1.Items.Clear;\r
@@ -2791,6 +3264,8 @@ begin
   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.RingtoneSMSTabSheet;\r
 \r
@@ -2826,8 +3301,9 @@ begin
   SMSEditForm.Memo1.Text:='';\r
 \r
   //number\r
-  SMSEditForm.Edit2.Text:='';\r
-\r
+  SMSEditForm.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\r
+  \r
   //folders\r
   GSM_GetSMSFolders(@SMSfolders);\r
   SMSEditForm.ComboBox1.Items.Clear;\r
@@ -2854,6 +3330,8 @@ begin
   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.CalendarSMSTabSheet;\r
 \r
@@ -2894,8 +3372,9 @@ begin
   SMSEditForm.Memo1.Text:='';\r
 \r
   //number\r
-  SMSEditForm.Edit2.Text:='';\r
-\r
+  SMSEditForm.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\r
+  \r
   //folders\r
   GSM_GetSMSFolders(@SMSfolders);\r
   SMSEditForm.ComboBox1.Items.Clear;\r
@@ -2922,6 +3401,8 @@ begin
   SMSEditForm.BitmapSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.RingtoneSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.CalendarSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
   SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
   SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.PBKSMSTabSheet;\r
 \r
@@ -2969,13 +3450,29 @@ end;
 procedure TMainForm.Button14Click(Sender: TObject);\r
 var\r
   i:integer;\r
+  mybinring:GSM_BinRingtone;\r
+  myring:GSM_Ringtone;\r
 begin\r
   LogosRingForm.Label1.Caption:='Do you want to set ringtone ?';\r
+  LogosRingForm.ComboBox3.Visible:=true;\r
   LogosRingForm.ComboBox3.Items.Clear();\r
-  for i:=1 to 7 do\r
+  MainForm.Timer2.Enabled:=false;\r
+  for i:=1 to GSM_GetModelFeature(FN_RINGNUMBER) do\r
   begin\r
-    LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+    mybinring.location:=i;\r
+    if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
+    begin\r
+      if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
+      begin\r
+        LogosRingForm.ComboBox3.Items.Add(myring.name);\r
+      end else\r
+      begin\r
+        LogosRingForm.ComboBox3.Items.Add(mybinring.name);\r
+      end;\r
+    end else\r
+      LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
   end;\r
+  MainForm.Timer2.Enabled:=true;\r
   LogosRingForm.ComboBox3.ItemIndex:=0;\r
   LogosRingForm.ShowModal;\r
   if LogosRingForm.ComboBox3.Visible then\r
@@ -3052,7 +3549,7 @@ end;
 procedure TMainForm.Timer2Timer(Sender: TObject);\r
 begin\r
   if SparkyThread.Suspended then SparkyThread.Resume;\r
-  Timer2.Interval:=4000;\r
+  Timer2.Interval:=2000;\r
 end;\r
 \r
 procedure TMainForm.AboutTabSheetShow(Sender: TObject);\r
@@ -3084,6 +3581,7 @@ begin
   Reset(F);\r
   if (ioresult=0) then\r
   begin\r
+    ReadPBKOffline;\r
     smsofflinenumber:=0;\r
     while not eof(f) do\r
     begin\r
@@ -3178,6 +3676,9 @@ begin
     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 else\r
+    begin\r
+      MainForm.ListView9.Items.Item[bookmarknum-1].Subitems.Add('');\r
     end;\r
     bookmarknum:=bookmarknum+1;\r
     if bookmarknum=15 then EndWAPBookmarkThread;\r
@@ -3515,10 +4016,624 @@ end;
 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
+  if (GSMPhoneConnected) and (GSM_GetModelFeature(FN_Calendar)<>0)\r
+                         and (listview11.selected<>nil) then copytocalendar1.Enabled:=True;\r
 \r
   Delete5.Enabled:=false;\r
   if listview11.selected<>nil then Delete5.Enabled:=True;\r
 end;\r
 \r
+procedure TMainForm.Savebackuptofile1Click(Sender: TObject);\r
+begin\r
+  PhoneBackup.PhonePhonebookUsed:=0;\r
+  PhoneBackup.SIMPhonebookUsed:=0;\r
+  PhoneBackup.CallerAvailable:=0;\r
+  PhoneBackup.StartupLogoAvailable:=0;\r
+  PhoneBackup.StartupText.text[1]:=chr(0);\r
+  PhoneBackup.OperatorLogoAvailable:=0;\r
+  PhoneBackup.SpeedAvailable:=0;\r
+\r
+  BackupForm.CheckBox3.Enabled:=true;\r
+  BackupForm.CheckBox4.Enabled:=true;\r
+  BackupForm.CheckBox2.Enabled:=true;\r
+  BackupForm.CheckBox1.Enabled:=true;\r
+  BackupForm.CheckBox5.Enabled:=true;\r
+\r
+  BackupForm.GroupBox1.Caption:=' What do you want to backup ? ';\r
+  PhoneBackupAvailable:=True;\r
+  BackupForm.ListBox1.ItemIndex:=0;\r
+  BackupForm.GroupBox2.Visible:=true;\r
+  BackupForm.ShowModal;\r
+  if PhoneBackupAvailable then\r
+  begin\r
+    BackupProgressForm.ShowModal;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Restorebackupfromfile1Click(Sender: TObject);\r
+begin\r
+  if OpenDialog1.Execute then\r
+  begin\r
+    if GSM_ReadBackupFile(PChar(OpenDialog1.FileName),@phonebackup)=0 then\r
+    begin\r
+      BackupForm.CheckBox3.Enabled:=true;\r
+      if PhoneBackup.CallerAvailable=0 then\r
+        BackupForm.CheckBox3.Enabled:=false;\r
+\r
+      BackupForm.CheckBox4.Enabled:=true;\r
+      if PhoneBackup.OperatorLogoAvailable=0 then\r
+        BackupForm.CheckBox4.Enabled:=false;\r
+\r
+      BackupForm.CheckBox2.Enabled:=true;\r
+      if PhoneBackup.PhonePhonebookUsed=0 then\r
+        BackupForm.CheckBox2.Enabled:=false;\r
+\r
+      BackupForm.CheckBox1.Enabled:=true;\r
+      if PhoneBackup.SIMPhonebookUsed=0 then\r
+        BackupForm.CheckBox1.Enabled:=false;\r
+\r
+      BackupForm.CheckBox5.Enabled:=true;\r
+\r
+      BackupForm.GroupBox1.Caption:=' What do you want to restore ? ';\r
+      PhoneBackupAvailable:=true;\r
+      BackupForm.GroupBox2.Visible:=false;\r
+      BackupForm.ShowModal;\r
+      if PhoneBackupAvailable then\r
+      begin\r
+        PhoneBackupAvailable:=false;\r
+        BackupProgressForm.ShowModal;\r
+      end;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.PBKPopupMenuPopup(Sender: TObject);\r
+begin\r
+  Savephonebooktofileanotherapplication1.enabled:=false;\r
+  Delete4.enabled:=false;\r
+  Edit19.Enabled:=false;\r
+  Edit7.Enabled:=false;\r
+  SMSSendSave1.Enabled:=false;\r
+  copyphonebooktopc1.Enabled:=false;\r
+  if GSMPhoneConnected then\r
+  begin\r
+    if (pbkofflinenumber<>0) then copyphonebooktopc1.Enabled:=true;\r
+    if (ComboBox1.ItemIndex=4) or (ComboBox1.ItemIndex=5) then\r
+    begin\r
+      Savephonebooktofileanotherapplication1.enabled:=true;\r
+      if listview1.Selected<>nil then\r
+      begin\r
+        Delete4.enabled:=true;\r
+        Edit19.Enabled:=true;\r
+      end;\r
+    end;\r
+    if listview1.Selected<>nil then\r
+    begin\r
+      SMSSendSave1.Enabled:=true;\r
+      Edit7.Enabled:=true;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.Savephonebooktofileanotherapplication1Click(\r
+  Sender: TObject);\r
+begin\r
+  PhoneBackup.CallerAvailable:=0;\r
+  PhoneBackup.StartupLogoAvailable:=0;\r
+  PhoneBackup.StartupText.text[1]:=chr(0);\r
+  PhoneBackup.OperatorLogoAvailable:=0;\r
+\r
+  BackupForm.CheckBox3.Enabled:=false;\r
+  BackupForm.CheckBox4.Enabled:=false;\r
+\r
+  BackupForm.CheckBox2.Enabled:=true;\r
+  if PhoneBackup.PhonePhonebookUsed=0 then\r
+    BackupForm.CheckBox2.Enabled:=false;\r
+\r
+  BackupForm.CheckBox1.Enabled:=true;\r
+  if PhoneBackup.SIMPhonebookUsed=0 then\r
+    BackupForm.CheckBox1.Enabled:=false;\r
+\r
+  BackupForm.CheckBox5.Enabled:=false;\r
+\r
+  BackupForm.GroupBox1.Caption:=' What do you want to backup ? ';\r
+  PhoneBackupAvailable:=True;\r
+  BackupForm.ListBox1.ItemIndex:=0;\r
+  BackupForm.GroupBox2.Visible:=true;\r
+  BackupForm.ShowModal;\r
+  if PhoneBackupAvailable then\r
+  begin\r
+    if MainForm.SaveDialog1.Execute then\r
+    begin\r
+      GSM_SaveBackupFile(PChar(MainForm.SaveDialog1.FileName),@phonebackup);\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.ListView4DblClick(Sender: TObject);\r
+begin\r
+//  if (GSMPhoneConnected) and (ListView4.Selected<>nil) then\r
+//    Edit3Click(Sender);\r
+end;\r
+\r
+procedure TMainForm.Edit19Click(Sender: TObject);\r
+var\r
+  i,j:integer;\r
+  num_num,text_num:integer;\r
+begin\r
+  if listview1.Selected<>nil then\r
+  begin\r
+    PBKEditForm.ComboBox1.ItemIndex:=1;\r
+    PBKEditForm.COmboBox2.Items:=PBKEditForm.COmboBox1.Items;\r
+    PBKEditForm.ComboBox2.ItemIndex:=1;\r
+    PBKEditForm.COmboBox3.Items:=PBKEditForm.COmboBox1.Items;\r
+    PBKEditForm.ComboBox3.ItemIndex:=1;\r
+    PBKEditForm.COmboBox4.Items:=PBKEditForm.COmboBox1.Items;\r
+    PBKEditForm.ComboBox4.ItemIndex:=1;\r
+    PBKEditForm.COmboBox5.Items:=PBKEditForm.COmboBox1.Items;\r
+    PBKEditForm.ComboBox5.ItemIndex:=1;\r
+    PBKEditForm.ComboBox6.ItemIndex:=0;\r
+    PBKEditForm.COmboBox7.Items:=PBKEditForm.COmboBox6.Items;\r
+    PBKEditForm.ComboBox7.ItemIndex:=0;\r
+    PbkEditForm.Edit2.Text:='';\r
+\r
+    num_num:=1;\r
+    text_num:=1;\r
+    pbk.Location:=pbknumberentry;\r
+    case ComboBox1.ItemIndex of\r
+      4:pbk.MemoryType:=GMT_ME;\r
+      5:pbk.MemoryType:=GMT_SM;\r
+    end;\r
+    GSM_GetMemoryLocation(@pbk);\r
+\r
+    pbkeditform.ComboBox1.enabled:=false;\r
+    pbkeditform.ComboBox2.enabled:=false;\r
+    pbkeditform.ComboBox3.enabled:=false;\r
+    pbkeditform.ComboBox4.enabled:=false;\r
+    pbkeditform.ComboBox5.enabled:=false;\r
+    pbkeditform.ComboBox6.enabled:=false;\r
+    pbkeditform.ComboBox7.enabled:=false;\r
+    pbkeditform.Edit3.enabled:=false;\r
+    pbkeditform.Edit4.enabled:=false;\r
+    pbkeditform.Edit5.enabled:=false;\r
+    pbkeditform.Edit6.enabled:=false;\r
+    pbkeditform.Edit7.enabled:=false;\r
+    pbkeditform.Edit8.enabled:=false;\r
+    PbkEditForm.Edit3.Text:='Not available';\r
+    PbkEditForm.Edit4.Text:='Not available';\r
+    PbkEditForm.Edit5.Text:='Not available';\r
+    PbkEditForm.Edit6.Text:='Not available';\r
+    PbkEditForm.Edit7.Text:='Not available';\r
+    PbkEditForm.Edit8.Text:='Not available';\r
+    if (pbk.MemoryType=GMT_ME) and\r
+       (GSM_GetModelFeature(FN_PHONEBOOK)=F_PBK71INT) then\r
+    begin\r
+      pbkeditform.ComboBox1.enabled:=true;\r
+      pbkeditform.ComboBox2.enabled:=true;\r
+      pbkeditform.ComboBox3.enabled:=true;\r
+      pbkeditform.ComboBox4.enabled:=true;\r
+      pbkeditform.ComboBox5.enabled:=true;\r
+      pbkeditform.ComboBox6.enabled:=true;\r
+      pbkeditform.ComboBox7.enabled:=true;\r
+      pbkeditform.Edit3.enabled:=true;\r
+      pbkeditform.Edit4.enabled:=true;\r
+      pbkeditform.Edit5.enabled:=true;\r
+      pbkeditform.Edit6.enabled:=true;\r
+      pbkeditform.Edit7.enabled:=true;\r
+      pbkeditform.Edit8.enabled:=true;\r
+      PbkEditForm.Edit3.Text:='';\r
+      PbkEditForm.Edit4.Text:='';\r
+      PbkEditForm.Edit5.Text:='';\r
+      PbkEditForm.Edit6.Text:='';\r
+      PbkEditForm.Edit7.Text:='';\r
+      PbkEditForm.Edit8.Text:='';\r
+    end;\r
+\r
+    pbkeditform.Label2.Enabled:=true;\r
+    pbkeditform.ComboBox8.Enabled:=true;\r
+    if (GSM_GetModelFeature(FN_CALLERGROUPS)=0) then\r
+    begin\r
+      pbkeditform.Label2.Enabled:=false;\r
+      pbkeditform.ComboBox8.Enabled:=false;\r
+    end;\r
+\r
+    pbkeditform.Edit1.Text:=pbk.name;\r
+    if (pbk.Number[1]<>chr(0)) then\r
+    begin\r
+      pbkeditform.ComboBox1.ItemIndex:=1;\r
+      pbkeditform.Edit2.Text:=pbk.number;\r
+      num_num:=num_num+1;\r
+    end;\r
+    for i:=1 to pbk.SubEntriesCount do\r
+    begin\r
+      case pbk.SubEntries[i].EntryType of\r
+        GSM_Number:\r
+          begin\r
+            j:=1;\r
+            case pbk.SubEntries[i].NumberType of\r
+              GSM_General :j:=1;\r
+              GSM_General2:j:=1;\r
+              GSM_Mobile  :j:=3;\r
+              GSM_Work    :j:=4;\r
+              GSM_Fax     :j:=0;\r
+              GSM_Home    :j:=2;\r
+            end;\r
+            case num_num of\r
+              1:begin\r
+                  pbkeditform.ComboBox1.ItemIndex:=j;\r
+                  pbkeditform.edit2.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              2:begin\r
+                  pbkeditform.ComboBox2.ItemIndex:=j;\r
+                  pbkeditform.edit3.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              3:begin\r
+                  pbkeditform.ComboBox3.ItemIndex:=j;\r
+                  pbkeditform.edit4.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              4:begin\r
+                  pbkeditform.ComboBox4.ItemIndex:=j;\r
+                  pbkeditform.edit5.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              5:begin\r
+                  pbkeditform.ComboBox5.ItemIndex:=j;\r
+                  pbkeditform.edit6.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+            end;\r
+            num_num:=num_num+1;\r
+          end;\r
+        GSM_Note  :\r
+          begin\r
+            j:=1;\r
+            case text_num of\r
+              1:begin\r
+                  pbkeditform.ComboBox6.ItemIndex:=j;\r
+                  pbkeditform.edit7.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              2:begin\r
+                  pbkeditform.ComboBox7.ItemIndex:=j;\r
+                  pbkeditform.edit8.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+            end;\r
+            text_num:=text_num+1;\r
+          end;\r
+        GSM_Postal:\r
+          begin\r
+            j:=2;\r
+            case text_num of\r
+              1:begin\r
+                  pbkeditform.ComboBox6.ItemIndex:=j;\r
+                  pbkeditform.edit7.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              2:begin\r
+                  pbkeditform.ComboBox7.ItemIndex:=j;\r
+                  pbkeditform.edit8.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+            end;\r
+            text_num:=text_num+1;\r
+          end;\r
+        GSM_Email :\r
+          begin\r
+            j:=0;\r
+            case text_num of\r
+              1:begin\r
+                  pbkeditform.ComboBox6.ItemIndex:=j;\r
+                  pbkeditform.edit7.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+              2:begin\r
+                  pbkeditform.ComboBox7.ItemIndex:=j;\r
+                  pbkeditform.edit8.text:=pbk.SubEntries[i].Number;\r
+                end;\r
+            end;\r
+            text_num:=text_num+1;\r
+          end;\r
+\r
+      end;\r
+    end;\r
+\r
+    pbkeditform.ComboBox8.items.clear;\r
+    pbkeditform.ComboBox8.items.add('Not assigned');\r
+    for i:=1 to 5 do\r
+    begin\r
+      pbkeditform.ComboBox8.items.add(caller[i].text);\r
+    end;\r
+    pbkeditform.ComboBox8.itemindex:=0;\r
+    if (GSM_GetModelFeature(FN_CALLERGROUPS)<>0) then\r
+    begin\r
+      if (pbk.Group>=0) and (pbk.Group<=4) then\r
+      begin\r
+        pbkeditform.ComboBox8.itemindex:=pbk.Group+1;\r
+      end;\r
+    end;\r
+    \r
+    PbkEditForm.ShowModal;\r
+  end;\r
+\r
+end;\r
+\r
+procedure TMainForm.Delete4Click(Sender: TObject);\r
+begin\r
+  if Application.MessageBox('Do you want to delete this phonebook entry ?','Question',MB_YESNO)=IDYES then\r
+  begin\r
+\r
+    pbk.Location:=pbknumberentry;\r
+    case ComboBox1.ItemIndex of\r
+      4:pbk.MemoryType:=GMT_ME;\r
+      5:pbk.MemoryType:=GMT_SM;\r
+    end;\r
+\r
+    MainForm.Timer2.Enabled:=false;\r
+    GSM_GetMemoryLocation(@pbk);\r
+\r
+    pbk.SubEntriesCount:=0;\r
+    pbk.Name[1]:=chr(0);\r
+    pbk.Number[1]:=chr(0);\r
+    GSM_WritePhonebookLocation(@pbk);\r
+    MainForm.Timer2.Enabled:=true;\r
+    MainForm.ComboBox1Change(nil);\r
+  end;\r
+end;\r
+\r
+\r
+procedure TMainForm.Button22Click(Sender: TObject);\r
+var\r
+  i:integer;\r
+  mybinring:GSM_BinRingtone;\r
+  myring:GSM_Ringtone;\r
+begin\r
+  LogosRingForm.Label1.Caption:='Do you want to get ringtone ?';\r
+  LogosRingForm.ComboBox3.Visible:=true;\r
+  LogosRingForm.ComboBox3.Items.Clear();\r
+  MainForm.Timer2.Enabled:=false;\r
+  for i:=1 to GSM_GetModelFeature(FN_RINGNUMBER) do\r
+  begin\r
+    mybinring.location:=i;\r
+    if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
+    begin\r
+      if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
+      begin\r
+        LogosRingForm.ComboBox3.Items.Add(myring.name);\r
+      end else\r
+      begin\r
+        LogosRingForm.ComboBox3.Items.Add(mybinring.name);\r
+      end;\r
+    end else\r
+      LogosRingForm.ComboBox3.Items.Add('Location '+inttostr(i));\r
+  end;\r
+  MainForm.Timer2.Enabled:=true;\r
+  LogosRingForm.ComboBox3.ItemIndex:=0;\r
+  LogosRingForm.ShowModal;\r
+  if LogosRingForm.ComboBox3.Visible then\r
+  begin\r
+    mybinring.location:=LogosRingForm.ComboBox3.ItemIndex+1;\r
+    MainForm.Timer2.Enabled:=false;\r
+    if (GSM_GetPhoneRingtone(@mybinring,@myring)=0) then\r
+    begin\r
+      MainForm.Timer2.Enabled:=true;\r
+      if GSM_GetModelFeature(FN_RINGTONES)=F_RING_SM then\r
+      begin\r
+        application.MessageBox('Smart Messaging format','',0);\r
+        if SaveDialog1.Execute then\r
+        begin\r
+          GSM_SaveRingtoneFile(PChar(SaveDialog1.FileName),@myring);\r
+        end;\r
+      end else\r
+      begin\r
+        application.MessageBox('Binary format','',0);\r
+        if SaveDialog1.Execute then\r
+        begin\r
+          GSM_SaveBinRingtoneFile(PChar(SaveDialog1.FileName),@mybinring);\r
+        end;\r
+      end;\r
+    end;\r
+\r
+    MainForm.Timer2.Enabled:=true;\r
+  end;\r
+\r
+end;\r
+\r
+procedure TMainForm.New20Click(Sender: TObject);\r
+begin\r
+  bookmarknum:=65535;\r
+  WAPBookForm.Edit1.Text:='';\r
+  WAPBookForm.Edit2.Text:='';\r
+  WAPBookForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.ListView9SelectItem(Sender: TObject; Item: TListItem;\r
+  Selected: Boolean);\r
+begin\r
+  if Selected then bookmarknum2:=item.Index+1;\r
+end;\r
+\r
+procedure TMainForm.Edit20Click(Sender: TObject);\r
+var\r
+  bookmark:GSM_WAPBookmark;\r
+begin\r
+  bookmark.location:=bookmarknum2;\r
+  mainform.Timer2.Enabled:=false;\r
+  GSM_GetWAPBookmark(@bookmark);\r
+  mainform.Timer2.Enabled:=true;\r
+  WAPBookForm.Edit1.Text:=bookmark.title;\r
+  WAPBookForm.Edit2.Text:=bookmark.adress;\r
+  WAPBookForm.ShowModal;\r
+end;\r
+\r
+procedure TMainForm.WAPBookPopupMenuPopup(Sender: TObject);\r
+begin\r
+  New20.Enabled:=false;\r
+  Edit20.Enabled:=false;\r
+  SMSSendSave2.Enabled:=false;\r
+  if (WAPBookmarkThread=nil) and (GSMPhoneConnected) then\r
+  begin\r
+    New20.Enabled:=true;\r
+    if (ListView9.Selected<>nil) and\r
+       (ListView9.Selected.SubItems[0]<>'') then\r
+    begin\r
+      Edit20.Enabled:=true;\r
+      SMSSendSave2.Enabled:=true;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TMainForm.SMSSendSave2Click(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.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\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.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.WAPBookTabSheet;\r
+\r
+  bookma.location:=bookmarknum2;\r
+  mainform.Timer2.Enabled:=false;\r
+  GSM_GetWAPBookmark(@bookma);\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.Button23Click(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.ComboBox9.Text:='';\r
+  AddSMSEditSenderList;\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.WAPBookTabSheet.TabVisible:=false;\r
+  SMSEditForm.WAPSettTabSheet.TabVisible:=false;\r
+  SMSEditForm.PBKSMSTabSheet.TabVisible:=false;\r
+  SMSEditForm.SMSEditPageControl.ActivePage:=Smseditform.WAPSettTabSheet;\r
+\r
+  Wapset.location:=combobox7.ItemIndex;\r
+  MainForm.Timer2.Enabled:=false;\r
+  GSM_GetWAPSettings(@wapset);\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.CopyphonebooktoPC1Click(Sender: TObject);\r
+begin\r
+  SavePBKOffline;\r
+end;\r
+\r
+procedure TMainForm.PCPBKTabSheetShow(Sender: TObject);\r
+var i:integer;\r
+begin\r
+  ReadPBKOffline;\r
+  ListView12.Items.Clear;\r
+  for i:=1 to PBKOfflineNumber do\r
+  begin\r
+    MainForm.ListView12.Items.Add;\r
+    MainForm.ListView12.Items.Item[i-1].Caption:=inttostr(PhoneBackup.PhonePhonebook[i].Location);\r
+    AddPBKEntry(ListView12,PhoneBackup.PhonePhonebook[i],i-1);\r
+  end;\r
+end;\r
+\r
 end.\r