--- /dev/null
+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