http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / win32_makefile / gui_delphi / backup2.pas
diff --git a/win32_makefile/gui_delphi/backup2.pas b/win32_makefile/gui_delphi/backup2.pas
new file mode 100644 (file)
index 0000000..e5908e6
--- /dev/null
@@ -0,0 +1,295 @@
+unit backup2;\r
+\r
+interface\r
+\r
+uses\r
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\r
+  Dialogs, ComCtrls, StdCtrls, GnokiiAPI;\r
+\r
+type\r
+  TBackupThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+\r
+type\r
+  TBackupProgressForm = class(TForm)\r
+    GroupBox1: TGroupBox;\r
+    Button1: TButton;\r
+    Label1: TLabel;\r
+    ProgressBar1: TProgressBar;\r
+    ProgressBar2: TProgressBar;\r
+    Label2: TLabel;\r
+    Label3: TLabel;\r
+    ProgressBar3: TProgressBar;\r
+    Label4: TLabel;\r
+    Label5: TLabel;\r
+    Label6: TLabel;\r
+    Label7: TLabel;\r
+    procedure FormActivate(Sender: TObject);\r
+    procedure Button1Click(Sender: TObject);\r
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\r
+  private\r
+    { Private declarations }\r
+  public\r
+    { Public declarations }\r
+  end;\r
+\r
+var\r
+  BackupProgressForm: TBackupProgressForm;\r
+  BackupThread: TBackupThread;\r
+\r
+implementation\r
+\r
+uses MainUnit, backup;\r
+\r
+{$R *.dfm}\r
+\r
+procedure TBackupThread.Execute;\r
+var\r
+  pbkstatus:GSM_MemoryStatus;\r
+  bitmap:GSM_Bitmap;\r
+  pbkentry:GSM_PhonebookEntry;\r
+  i,j:integer;\r
+begin\r
+  if PhoneBackupAvailable then //backup\r
+  begin\r
+    if backupform.checkbox3.checked then\r
+    begin\r
+      PhoneBackup.CallerAvailable:=1;\r
+      for i:=1 to 5 do\r
+      begin\r
+        bitmap.type2:=GSM_CallerLogo;\r
+        bitmap.number:=i-1;\r
+        GSM_GetBitmap(@bitmap);\r
+        PhoneBackup.CallerGroups[i]:=bitmap;\r
+        backupprogressform.ProgressBar3.StepIt;\r
+        if Terminated then exit;\r
+      end;\r
+    end;\r
+    if backupform.checkbox4.checked then\r
+    begin\r
+      bitmap.type2:=GSM_7110OperatorLogo;\r
+      if (GSM_GetBitmap(@bitmap)<>0) then\r
+      begin\r
+        if Terminated then exit;\r
+        bitmap.type2:=GSM_OperatorLogo;\r
+        if (GSM_GetBitmap(@bitmap)=0) then\r
+        begin\r
+          PhoneBackup.OperatorLogoAvailable:=1;\r
+        end\r
+      end else PhoneBackup.OperatorLogoAvailable:=1;\r
+      if Terminated then exit;\r
+      if PhoneBackup.OperatorLogoAvailable=1 then\r
+      begin\r
+        PhoneBackup.OperatorLogo:=Bitmap;\r
+        BackupProgressForm.Label5.Caption:='Done';\r
+      end else\r
+      begin\r
+        BackupProgressForm.Label5.Caption:='Failed';\r
+      end;\r
+    end;\r
+    if backupform.checkbox2.checked then\r
+    begin\r
+      pbkstatus.MemoryType:=GMT_ME;\r
+      GSM_GetMemoryStatus(@pbkstatus);\r
+      if Terminated then exit;\r
+      backupprogressform.ProgressBar1.Max:=pbkstatus.Used;\r
+      PhoneBackup.PhonePhonebookSize:=pbkstatus.Used+pbkstatus.Free;\r
+      i:=1;j:=0;\r
+      while (i<>pbkstatus.Used+pbkstatus.Free) do\r
+      begin\r
+        pbkentry.MemoryType:=GMT_ME;\r
+        pbkentry.Location:=i;\r
+        GSM_GetMemoryLocation(@pbkentry);\r
+        if Terminated then exit;\r
+        if (pbkentry.Name[1]<>chr(0)) then\r
+        begin\r
+          PhoneBackup.PhonePhonebookUsed:=PhoneBackup.PhonePhonebookUsed+1;\r
+          PhoneBackup.PhonePhonebook[PhoneBackup.PhonePhonebookUsed]:=pbkentry;\r
+          backupprogressform.ProgressBar1.StepIt;\r
+          j:=j+1;\r
+        end;\r
+        if j=pbkstatus.Used then break;\r
+        i:=i+1;\r
+      end;\r
+    end;\r
+    if backupform.checkbox1.checked then\r
+    begin\r
+      pbkstatus.MemoryType:=GMT_SM;\r
+      GSM_GetMemoryStatus(@pbkstatus);\r
+      if Terminated then exit;\r
+      backupprogressform.ProgressBar2.Max:=pbkstatus.Used;\r
+      PhoneBackup.SIMPhonebookSize:=pbkstatus.Used+pbkstatus.Free;\r
+      i:=1;j:=0;\r
+      while (i<>pbkstatus.Used+pbkstatus.Free) do\r
+      begin\r
+        pbkentry.MemoryType:=GMT_SM;\r
+        pbkentry.Location:=i;\r
+        GSM_GetMemoryLocation(@pbkentry);\r
+        if Terminated then exit;\r
+        if (pbkentry.Name[1]<>chr(0)) then\r
+        begin\r
+          PhoneBackup.SIMPhonebookUsed:=PhoneBackup.SIMPhonebookUsed+1;\r
+          PhoneBackup.SIMPhonebook[PhoneBackup.SIMPhonebookUsed]:=pbkentry;\r
+          backupprogressform.ProgressBar2.StepIt;\r
+          j:=j+1;\r
+        end;\r
+        if j=pbkstatus.Used then break;\r
+        i:=i+1;\r
+      end;\r
+    end;\r
+    if backupform.checkbox5.checked then\r
+    begin\r
+      case GSM_GetModelFeature(FN_STARTUP) of\r
+        F_STANIM  :PhoneBackup.StartupLogo.type2:=GSM_StartupLogo;\r
+        F_STA     :PhoneBackup.StartupLogo.type2:=GSM_StartupLogo;\r
+        F_STA62   :PhoneBackup.StartupLogo.type2:=GSM_6210StartupLogo;\r
+        F_STA71   :PhoneBackup.StartupLogo.type2:=GSM_7110StartupLogo;\r
+      end;\r
+      if GSM_GetModelFeature(FN_STARTUP)<>0 then\r
+      begin\r
+        PhoneBackup.StartupLogoAvailable:=1;\r
+        GSM_GetBitmap(@PhoneBackup.StartupLogo);\r
+        if Terminated then exit;\r
+      end;\r
+      PhoneBackup.StartupText.type2:=GSM_WelcomeNoteText;\r
+      GSM_GetBitmap(@PhoneBackup.StartupText);\r
+      BackupProgressForm.Label7.Caption:='Done';\r
+      if Terminated then exit;\r
+    end;\r
+    if not Terminated then\r
+    begin\r
+      if MainForm.SaveDialog1.Execute then\r
+      begin\r
+        GSM_SaveBackupFile(PChar(MainForm.SaveDialog1.FileName),@phonebackup);\r
+      end;\r
+      BackupProgressForm.Close;\r
+    end;\r
+  end else //restore\r
+  begin\r
+    if backupform.checkbox3.checked then\r
+    begin\r
+      for i:=1 to 5 do\r
+      begin\r
+        GSM_SetBitmap(@PhoneBackup.CallerGroups[i]);\r
+        backupprogressform.ProgressBar3.StepIt;\r
+        if Terminated then exit;\r
+      end;\r
+    end;\r
+    if backupform.checkbox4.checked then\r
+    begin\r
+      GSM_SetBitmap(@PhoneBackup.OperatorLogo);\r
+      if Terminated then exit;\r
+      BackupProgressForm.Label5.Caption:='Done';\r
+    end;\r
+    if backupform.checkbox2.checked then\r
+    begin\r
+      pbkstatus.MemoryType:=GMT_ME;\r
+      GSM_GetMemoryStatus(@pbkstatus);\r
+      if Terminated then exit;\r
+      backupprogressform.ProgressBar1.Max:=pbkstatus.Used+pbkstatus.Free;\r
+      i:=1;j:=1;\r
+      while (i<>pbkstatus.Used+pbkstatus.Free) do\r
+      begin\r
+        pbkentry.MemoryType:=GMT_ME;\r
+        pbkentry.Location:=i;\r
+        pbkentry.Name[1]:=chr(0);\r
+        pbkentry.Number[1]:=chr(0);\r
+        pbkentry.SubEntriesCount:=0;\r
+        if j<=PhoneBackup.PhonePhonebookUsed then\r
+        begin\r
+          if PhoneBackup.PhonePhonebook[j].Location=pbkentry.Location then\r
+          begin\r
+            pbkentry:=PhoneBackup.PhonePhonebook[j];\r
+            j:=j+1;\r
+          end;\r
+        end;\r
+        GSM_WritePhonebookLocation(@pbkentry);\r
+        if Terminated then exit;\r
+        backupprogressform.ProgressBar1.StepIt;\r
+        i:=i+1;\r
+      end;\r
+    end;\r
+    if backupform.checkbox1.checked then\r
+    begin\r
+      pbkstatus.MemoryType:=GMT_SM;\r
+      GSM_GetMemoryStatus(@pbkstatus);\r
+      if Terminated then exit;\r
+      backupprogressform.ProgressBar2.Max:=pbkstatus.Used+pbkstatus.Free;\r
+      i:=1;j:=1;\r
+      while (i<>pbkstatus.Used+pbkstatus.Free) do\r
+      begin\r
+        pbkentry.MemoryType:=GMT_SM;\r
+        pbkentry.Location:=i;\r
+        pbkentry.Name[1]:=chr(0);\r
+        pbkentry.Number[1]:=chr(0);\r
+        pbkentry.SubEntriesCount:=0;\r
+        if j<=PhoneBackup.SIMPhonebookUsed then\r
+        begin\r
+          if PhoneBackup.SIMPhonebook[j].Location=pbkentry.Location then\r
+          begin\r
+            pbkentry:=PhoneBackup.SIMPhonebook[j];\r
+            j:=j+1;\r
+          end;\r
+        end;\r
+        GSM_WritePhonebookLocation(@pbkentry);\r
+        if Terminated then exit;\r
+        backupprogressform.ProgressBar2.StepIt;\r
+        i:=i+1;\r
+      end;\r
+    end;\r
+    if backupform.checkbox5.checked then\r
+    begin\r
+      if GSM_GetModelFeature(FN_STARTUP)<>0 then\r
+      begin\r
+        if PhoneBackup.StartupLogoAvailable<>0 then\r
+        begin\r
+          GSM_SetBitmap(@PhoneBackup.StartupLogo);\r
+          if Terminated then exit;\r
+        end;\r
+      end;\r
+      GSM_SetBitmap(@PhoneBackup.StartupText);\r
+    end;\r
+    if not Terminated then\r
+    begin\r
+      BackupProgressForm.Close;\r
+    end;\r
+  end;\r
+end;\r
+\r
+procedure TBackupProgressForm.FormActivate(Sender: TObject);\r
+begin\r
+  MainForm.Timer2.Enabled:=false;\r
+\r
+  BackupProgressForm.Label5.Caption:='';\r
+  BackupProgressForm.Label7.Caption:='';\r
+\r
+  ProgressBar1.Position:=0;\r
+  ProgressBar2.Position:=0;\r
+  ProgressBar3.Position:=0;\r
+\r
+  Label3.Enabled:=backupform.checkbox3.checked;\r
+  Label4.Enabled:=backupform.checkbox4.checked;\r
+  Label1.Enabled:=backupform.checkbox2.checked;\r
+  Label2.Enabled:=backupform.checkbox1.checked;\r
+  Label6.Enabled:=backupform.checkbox5.checked;\r
+\r
+  BackupThread:=TBackupThread.Create(false);\r
+end;\r
+\r
+procedure TBackupProgressForm.Button1Click(Sender: TObject);\r
+begin\r
+  BackupProgressForm.Close;\r
+end;\r
+\r
+procedure TBackupProgressForm.FormCloseQuery(Sender: TObject;\r
+  var CanClose: Boolean);\r
+begin\r
+  BackupThread.Terminate();\r
+  BackupProgressForm.Close;\r
+  MainForm.Timer2.Enabled:=true;\r
+  CanClose:=true;\r
+end;\r
+\r
+end.\r