http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / win32_makefile / gui_delphi / backup2.pas
1 unit backup2;\r
2 \r
3 interface\r
4 \r
5 uses\r
6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\r
7   Dialogs, ComCtrls, StdCtrls, GnokiiAPI;\r
8 \r
9 type\r
10   TBackupThread = class(TThread)\r
11     public\r
12       procedure Execute; override;\r
13   end;\r
14 \r
15 type\r
16   TBackupProgressForm = class(TForm)\r
17     GroupBox1: TGroupBox;\r
18     Button1: TButton;\r
19     Label1: TLabel;\r
20     ProgressBar1: TProgressBar;\r
21     ProgressBar2: TProgressBar;\r
22     Label2: TLabel;\r
23     Label3: TLabel;\r
24     ProgressBar3: TProgressBar;\r
25     Label4: TLabel;\r
26     Label5: TLabel;\r
27     Label6: TLabel;\r
28     Label7: TLabel;\r
29     procedure FormActivate(Sender: TObject);\r
30     procedure Button1Click(Sender: TObject);\r
31     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\r
32   private\r
33     { Private declarations }\r
34   public\r
35     { Public declarations }\r
36   end;\r
37 \r
38 var\r
39   BackupProgressForm: TBackupProgressForm;\r
40   BackupThread: TBackupThread;\r
41 \r
42 implementation\r
43 \r
44 uses MainUnit, backup;\r
45 \r
46 {$R *.dfm}\r
47 \r
48 procedure TBackupThread.Execute;\r
49 var\r
50   pbkstatus:GSM_MemoryStatus;\r
51   bitmap:GSM_Bitmap;\r
52   pbkentry:GSM_PhonebookEntry;\r
53   i,j:integer;\r
54 begin\r
55   if PhoneBackupAvailable then //backup\r
56   begin\r
57     if backupform.checkbox3.checked then\r
58     begin\r
59       PhoneBackup.CallerAvailable:=1;\r
60       for i:=1 to 5 do\r
61       begin\r
62         bitmap.type2:=GSM_CallerLogo;\r
63         bitmap.number:=i-1;\r
64         GSM_GetBitmap(@bitmap);\r
65         PhoneBackup.CallerGroups[i]:=bitmap;\r
66         backupprogressform.ProgressBar3.StepIt;\r
67         if Terminated then exit;\r
68       end;\r
69     end;\r
70     if backupform.checkbox4.checked then\r
71     begin\r
72       bitmap.type2:=GSM_7110OperatorLogo;\r
73       if (GSM_GetBitmap(@bitmap)<>0) then\r
74       begin\r
75         if Terminated then exit;\r
76         bitmap.type2:=GSM_OperatorLogo;\r
77         if (GSM_GetBitmap(@bitmap)=0) then\r
78         begin\r
79           PhoneBackup.OperatorLogoAvailable:=1;\r
80         end\r
81       end else PhoneBackup.OperatorLogoAvailable:=1;\r
82       if Terminated then exit;\r
83       if PhoneBackup.OperatorLogoAvailable=1 then\r
84       begin\r
85         PhoneBackup.OperatorLogo:=Bitmap;\r
86         BackupProgressForm.Label5.Caption:='Done';\r
87       end else\r
88       begin\r
89         BackupProgressForm.Label5.Caption:='Failed';\r
90       end;\r
91     end;\r
92     if backupform.checkbox2.checked then\r
93     begin\r
94       pbkstatus.MemoryType:=GMT_ME;\r
95       GSM_GetMemoryStatus(@pbkstatus);\r
96       if Terminated then exit;\r
97       backupprogressform.ProgressBar1.Max:=pbkstatus.Used;\r
98       PhoneBackup.PhonePhonebookSize:=pbkstatus.Used+pbkstatus.Free;\r
99       i:=1;j:=0;\r
100       while (i<>pbkstatus.Used+pbkstatus.Free) do\r
101       begin\r
102         pbkentry.MemoryType:=GMT_ME;\r
103         pbkentry.Location:=i;\r
104         GSM_GetMemoryLocation(@pbkentry);\r
105         if Terminated then exit;\r
106         if (pbkentry.Name[1]<>chr(0)) then\r
107         begin\r
108           PhoneBackup.PhonePhonebookUsed:=PhoneBackup.PhonePhonebookUsed+1;\r
109           PhoneBackup.PhonePhonebook[PhoneBackup.PhonePhonebookUsed]:=pbkentry;\r
110           backupprogressform.ProgressBar1.StepIt;\r
111           j:=j+1;\r
112         end;\r
113         if j=pbkstatus.Used then break;\r
114         i:=i+1;\r
115       end;\r
116     end;\r
117     if backupform.checkbox1.checked then\r
118     begin\r
119       pbkstatus.MemoryType:=GMT_SM;\r
120       GSM_GetMemoryStatus(@pbkstatus);\r
121       if Terminated then exit;\r
122       backupprogressform.ProgressBar2.Max:=pbkstatus.Used;\r
123       PhoneBackup.SIMPhonebookSize:=pbkstatus.Used+pbkstatus.Free;\r
124       i:=1;j:=0;\r
125       while (i<>pbkstatus.Used+pbkstatus.Free) do\r
126       begin\r
127         pbkentry.MemoryType:=GMT_SM;\r
128         pbkentry.Location:=i;\r
129         GSM_GetMemoryLocation(@pbkentry);\r
130         if Terminated then exit;\r
131         if (pbkentry.Name[1]<>chr(0)) then\r
132         begin\r
133           PhoneBackup.SIMPhonebookUsed:=PhoneBackup.SIMPhonebookUsed+1;\r
134           PhoneBackup.SIMPhonebook[PhoneBackup.SIMPhonebookUsed]:=pbkentry;\r
135           backupprogressform.ProgressBar2.StepIt;\r
136           j:=j+1;\r
137         end;\r
138         if j=pbkstatus.Used then break;\r
139         i:=i+1;\r
140       end;\r
141     end;\r
142     if backupform.checkbox5.checked then\r
143     begin\r
144       case GSM_GetModelFeature(FN_STARTUP) of\r
145         F_STANIM  :PhoneBackup.StartupLogo.type2:=GSM_StartupLogo;\r
146         F_STA     :PhoneBackup.StartupLogo.type2:=GSM_StartupLogo;\r
147         F_STA62   :PhoneBackup.StartupLogo.type2:=GSM_6210StartupLogo;\r
148         F_STA71   :PhoneBackup.StartupLogo.type2:=GSM_7110StartupLogo;\r
149       end;\r
150       if GSM_GetModelFeature(FN_STARTUP)<>0 then\r
151       begin\r
152         PhoneBackup.StartupLogoAvailable:=1;\r
153         GSM_GetBitmap(@PhoneBackup.StartupLogo);\r
154         if Terminated then exit;\r
155       end;\r
156       PhoneBackup.StartupText.type2:=GSM_WelcomeNoteText;\r
157       GSM_GetBitmap(@PhoneBackup.StartupText);\r
158       BackupProgressForm.Label7.Caption:='Done';\r
159       if Terminated then exit;\r
160     end;\r
161     if not Terminated then\r
162     begin\r
163       if MainForm.SaveDialog1.Execute then\r
164       begin\r
165         GSM_SaveBackupFile(PChar(MainForm.SaveDialog1.FileName),@phonebackup);\r
166       end;\r
167       BackupProgressForm.Close;\r
168     end;\r
169   end else //restore\r
170   begin\r
171     if backupform.checkbox3.checked then\r
172     begin\r
173       for i:=1 to 5 do\r
174       begin\r
175         GSM_SetBitmap(@PhoneBackup.CallerGroups[i]);\r
176         backupprogressform.ProgressBar3.StepIt;\r
177         if Terminated then exit;\r
178       end;\r
179     end;\r
180     if backupform.checkbox4.checked then\r
181     begin\r
182       GSM_SetBitmap(@PhoneBackup.OperatorLogo);\r
183       if Terminated then exit;\r
184       BackupProgressForm.Label5.Caption:='Done';\r
185     end;\r
186     if backupform.checkbox2.checked then\r
187     begin\r
188       pbkstatus.MemoryType:=GMT_ME;\r
189       GSM_GetMemoryStatus(@pbkstatus);\r
190       if Terminated then exit;\r
191       backupprogressform.ProgressBar1.Max:=pbkstatus.Used+pbkstatus.Free;\r
192       i:=1;j:=1;\r
193       while (i<>pbkstatus.Used+pbkstatus.Free) do\r
194       begin\r
195         pbkentry.MemoryType:=GMT_ME;\r
196         pbkentry.Location:=i;\r
197         pbkentry.Name[1]:=chr(0);\r
198         pbkentry.Number[1]:=chr(0);\r
199         pbkentry.SubEntriesCount:=0;\r
200         if j<=PhoneBackup.PhonePhonebookUsed then\r
201         begin\r
202           if PhoneBackup.PhonePhonebook[j].Location=pbkentry.Location then\r
203           begin\r
204             pbkentry:=PhoneBackup.PhonePhonebook[j];\r
205             j:=j+1;\r
206           end;\r
207         end;\r
208         GSM_WritePhonebookLocation(@pbkentry);\r
209         if Terminated then exit;\r
210         backupprogressform.ProgressBar1.StepIt;\r
211         i:=i+1;\r
212       end;\r
213     end;\r
214     if backupform.checkbox1.checked then\r
215     begin\r
216       pbkstatus.MemoryType:=GMT_SM;\r
217       GSM_GetMemoryStatus(@pbkstatus);\r
218       if Terminated then exit;\r
219       backupprogressform.ProgressBar2.Max:=pbkstatus.Used+pbkstatus.Free;\r
220       i:=1;j:=1;\r
221       while (i<>pbkstatus.Used+pbkstatus.Free) do\r
222       begin\r
223         pbkentry.MemoryType:=GMT_SM;\r
224         pbkentry.Location:=i;\r
225         pbkentry.Name[1]:=chr(0);\r
226         pbkentry.Number[1]:=chr(0);\r
227         pbkentry.SubEntriesCount:=0;\r
228         if j<=PhoneBackup.SIMPhonebookUsed then\r
229         begin\r
230           if PhoneBackup.SIMPhonebook[j].Location=pbkentry.Location then\r
231           begin\r
232             pbkentry:=PhoneBackup.SIMPhonebook[j];\r
233             j:=j+1;\r
234           end;\r
235         end;\r
236         GSM_WritePhonebookLocation(@pbkentry);\r
237         if Terminated then exit;\r
238         backupprogressform.ProgressBar2.StepIt;\r
239         i:=i+1;\r
240       end;\r
241     end;\r
242     if backupform.checkbox5.checked then\r
243     begin\r
244       if GSM_GetModelFeature(FN_STARTUP)<>0 then\r
245       begin\r
246         if PhoneBackup.StartupLogoAvailable<>0 then\r
247         begin\r
248           GSM_SetBitmap(@PhoneBackup.StartupLogo);\r
249           if Terminated then exit;\r
250         end;\r
251       end;\r
252       GSM_SetBitmap(@PhoneBackup.StartupText);\r
253     end;\r
254     if not Terminated then\r
255     begin\r
256       BackupProgressForm.Close;\r
257     end;\r
258   end;\r
259 end;\r
260 \r
261 procedure TBackupProgressForm.FormActivate(Sender: TObject);\r
262 begin\r
263   MainForm.Timer2.Enabled:=false;\r
264 \r
265   BackupProgressForm.Label5.Caption:='';\r
266   BackupProgressForm.Label7.Caption:='';\r
267 \r
268   ProgressBar1.Position:=0;\r
269   ProgressBar2.Position:=0;\r
270   ProgressBar3.Position:=0;\r
271 \r
272   Label3.Enabled:=backupform.checkbox3.checked;\r
273   Label4.Enabled:=backupform.checkbox4.checked;\r
274   Label1.Enabled:=backupform.checkbox2.checked;\r
275   Label2.Enabled:=backupform.checkbox1.checked;\r
276   Label6.Enabled:=backupform.checkbox5.checked;\r
277 \r
278   BackupThread:=TBackupThread.Create(false);\r
279 end;\r
280 \r
281 procedure TBackupProgressForm.Button1Click(Sender: TObject);\r
282 begin\r
283   BackupProgressForm.Close;\r
284 end;\r
285 \r
286 procedure TBackupProgressForm.FormCloseQuery(Sender: TObject;\r
287   var CanClose: Boolean);\r
288 begin\r
289   BackupThread.Terminate();\r
290   BackupProgressForm.Close;\r
291   MainForm.Timer2.Enabled:=true;\r
292   CanClose:=true;\r
293 end;\r
294 \r
295 end.\r