Showing
19 changed files
with
632 additions
and
65 deletions
@@ -21,12 +21,21 @@ | @@ -21,12 +21,21 @@ | ||
21 | 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */; }; | 21 | 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */; }; |
22 | 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */; }; | 22 | 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */; }; |
23 | 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D92850F5F1003F1806 /* SettingsView.swift */; }; | 23 | 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7D92850F5F1003F1806 /* SettingsView.swift */; }; |
24 | - 1738F7DC2850F980003F1806 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1738F7DB2850F980003F1806 /* ProfileView.swift */; }; | ||
25 | - 1778DA3E2850FF89006619C4 /* NotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1778DA3D2850FF89006619C4 /* NotificationsView.swift */; }; | ||
26 | - 1778DA402851042F006619C4 /* EditInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1778DA3F2851042F006619C4 /* EditInfoView.swift */; }; | 24 | + 175DA4722852416D0075F0A9 /* Reusable+cell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175DA4712852416D0075F0A9 /* Reusable+cell.swift */; }; |
25 | + 175DA474285241C90075F0A9 /* SettingsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175DA473285241C90075F0A9 /* SettingsModel.swift */; }; | ||
27 | 178A61D12850DDAA001509A4 /* HomeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */; }; | 26 | 178A61D12850DDAA001509A4 /* HomeTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */; }; |
27 | + 17ABE070285B80DC0006E7EC /* DisplayNameCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABE06F285B80DC0006E7EC /* DisplayNameCell.swift */; }; | ||
28 | + 17ABE072285B810F0006E7EC /* SettingsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABE071285B810F0006E7EC /* SettingsTableViewCell.swift */; }; | ||
29 | + 17ABE074285B81390006E7EC /* SettingsSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABE073285B81390006E7EC /* SettingsSwitchCell.swift */; }; | ||
28 | 17ABFE58284FD20C003B6959 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABFE57284FD20C003B6959 /* HomeViewController.swift */; }; | 30 | 17ABFE58284FD20C003B6959 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABFE57284FD20C003B6959 /* HomeViewController.swift */; }; |
29 | 17ABFE5A284FD293003B6959 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABFE59284FD293003B6959 /* HomeView.swift */; }; | 31 | 17ABFE5A284FD293003B6959 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17ABFE59284FD293003B6959 /* HomeView.swift */; }; |
32 | + 17B0254628587716004225AE /* ChooseApartmentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17B0254528587716004225AE /* ChooseApartmentsViewController.swift */; }; | ||
33 | + 17B0254828587726004225AE /* ChooseApartmentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17B0254728587726004225AE /* ChooseApartmentsView.swift */; }; | ||
34 | + 17CD09A42858EE39008483E2 /* ChooseApartmentsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CD09A32858EE39008483E2 /* ChooseApartmentsTableViewCell.swift */; }; | ||
35 | + 17CD09AA2858F979008483E2 /* ResidentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CD09A92858F979008483E2 /* ResidentsViewController.swift */; }; | ||
36 | + 17CD09AC2858F9B0008483E2 /* ResidentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CD09AB2858F9B0008483E2 /* ResidentsView.swift */; }; | ||
37 | + 17CD09B12859110A008483E2 /* AddResidentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CD09B02859110A008483E2 /* AddResidentsViewController.swift */; }; | ||
38 | + 17CD09B3285911C8008483E2 /* AddResidentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CD09B2285911C8008483E2 /* AddResidentsView.swift */; }; | ||
30 | 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */; }; | 39 | 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */; }; |
31 | 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */; }; | 40 | 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */; }; |
32 | 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */; }; | 41 | 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CF9EE42844ED8F000D8077 /* VerificationViewController.swift */; }; |
@@ -51,12 +60,21 @@ | @@ -51,12 +60,21 @@ | ||
51 | 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickerViewCell.swift; sourceTree = "<group>"; }; | 60 | 1732AC7228477BB40042C9F7 /* PickerViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickerViewCell.swift; sourceTree = "<group>"; }; |
52 | 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; }; | 61 | 1738F7D72850F5D5003F1806 /* SettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; }; |
53 | 1738F7D92850F5F1003F1806 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; }; | 62 | 1738F7D92850F5F1003F1806 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; }; |
54 | - 1738F7DB2850F980003F1806 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; }; | ||
55 | - 1778DA3D2850FF89006619C4 /* NotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsView.swift; sourceTree = "<group>"; }; | ||
56 | - 1778DA3F2851042F006619C4 /* EditInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditInfoView.swift; sourceTree = "<group>"; }; | 63 | + 175DA4712852416D0075F0A9 /* Reusable+cell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Reusable+cell.swift"; sourceTree = "<group>"; }; |
64 | + 175DA473285241C90075F0A9 /* SettingsModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsModel.swift; sourceTree = "<group>"; }; | ||
57 | 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTableViewCell.swift; sourceTree = "<group>"; }; | 65 | 178A61D02850DDAA001509A4 /* HomeTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTableViewCell.swift; sourceTree = "<group>"; }; |
66 | + 17ABE06F285B80DC0006E7EC /* DisplayNameCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayNameCell.swift; sourceTree = "<group>"; }; | ||
67 | + 17ABE071285B810F0006E7EC /* SettingsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsTableViewCell.swift; sourceTree = "<group>"; }; | ||
68 | + 17ABE073285B81390006E7EC /* SettingsSwitchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsSwitchCell.swift; sourceTree = "<group>"; }; | ||
58 | 17ABFE57284FD20C003B6959 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; }; | 69 | 17ABFE57284FD20C003B6959 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; }; |
59 | 17ABFE59284FD293003B6959 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = "<group>"; }; | 70 | 17ABFE59284FD293003B6959 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = "<group>"; }; |
71 | + 17B0254528587716004225AE /* ChooseApartmentsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseApartmentsViewController.swift; sourceTree = "<group>"; }; | ||
72 | + 17B0254728587726004225AE /* ChooseApartmentsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseApartmentsView.swift; sourceTree = "<group>"; }; | ||
73 | + 17CD09A32858EE39008483E2 /* ChooseApartmentsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseApartmentsTableViewCell.swift; sourceTree = "<group>"; }; | ||
74 | + 17CD09A92858F979008483E2 /* ResidentsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResidentsViewController.swift; sourceTree = "<group>"; }; | ||
75 | + 17CD09AB2858F9B0008483E2 /* ResidentsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResidentsView.swift; sourceTree = "<group>"; }; | ||
76 | + 17CD09B02859110A008483E2 /* AddResidentsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddResidentsViewController.swift; sourceTree = "<group>"; }; | ||
77 | + 17CD09B2285911C8008483E2 /* AddResidentsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddResidentsView.swift; sourceTree = "<group>"; }; | ||
60 | 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "InterQR-Internship.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | 78 | 17CF9EDD2844ED8F000D8077 /* InterQR-Internship.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "InterQR-Internship.app"; sourceTree = BUILT_PRODUCTS_DIR; }; |
61 | 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | 79 | 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; |
62 | 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; | 80 | 17CF9EE22844ED8F000D8077 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; |
@@ -85,6 +103,9 @@ | @@ -85,6 +103,9 @@ | ||
85 | 00E581B0284F666000E779FB /* Modules */ = { | 103 | 00E581B0284F666000E779FB /* Modules */ = { |
86 | isa = PBXGroup; | 104 | isa = PBXGroup; |
87 | children = ( | 105 | children = ( |
106 | + 17CD09AD28591073008483E2 /* AddResidentsViewController */, | ||
107 | + 17CD09A62858F931008483E2 /* ResidentsScreen */, | ||
108 | + 17B0254328587434004225AE /* ChooseApartmentsScreen */, | ||
88 | 1738F7D42850F5A1003F1806 /* SettingsScreen */, | 109 | 1738F7D42850F5A1003F1806 /* SettingsScreen */, |
89 | 17ABFE54284FD1C8003B6959 /* HomeScreen */, | 110 | 17ABFE54284FD1C8003B6959 /* HomeScreen */, |
90 | 00E581B1284F666600E779FB /* VerificationSceen */, | 111 | 00E581B1284F666600E779FB /* VerificationSceen */, |
@@ -181,6 +202,7 @@ | @@ -181,6 +202,7 @@ | ||
181 | 1738F7D42850F5A1003F1806 /* SettingsScreen */ = { | 202 | 1738F7D42850F5A1003F1806 /* SettingsScreen */ = { |
182 | isa = PBXGroup; | 203 | isa = PBXGroup; |
183 | children = ( | 204 | children = ( |
205 | + 175DA473285241C90075F0A9 /* SettingsModel.swift */, | ||
184 | 1738F7D62850F5C3003F1806 /* ViewController */, | 206 | 1738F7D62850F5C3003F1806 /* ViewController */, |
185 | 1738F7D52850F5B5003F1806 /* View */, | 207 | 1738F7D52850F5B5003F1806 /* View */, |
186 | ); | 208 | ); |
@@ -191,9 +213,7 @@ | @@ -191,9 +213,7 @@ | ||
191 | isa = PBXGroup; | 213 | isa = PBXGroup; |
192 | children = ( | 214 | children = ( |
193 | 1738F7D92850F5F1003F1806 /* SettingsView.swift */, | 215 | 1738F7D92850F5F1003F1806 /* SettingsView.swift */, |
194 | - 1738F7DB2850F980003F1806 /* ProfileView.swift */, | ||
195 | - 1778DA3D2850FF89006619C4 /* NotificationsView.swift */, | ||
196 | - 1778DA3F2851042F006619C4 /* EditInfoView.swift */, | 216 | + 175DA46A2852406B0075F0A9 /* Cells */, |
197 | ); | 217 | ); |
198 | path = View; | 218 | path = View; |
199 | sourceTree = "<group>"; | 219 | sourceTree = "<group>"; |
@@ -206,6 +226,16 @@ | @@ -206,6 +226,16 @@ | ||
206 | path = ViewController; | 226 | path = ViewController; |
207 | sourceTree = "<group>"; | 227 | sourceTree = "<group>"; |
208 | }; | 228 | }; |
229 | + 175DA46A2852406B0075F0A9 /* Cells */ = { | ||
230 | + isa = PBXGroup; | ||
231 | + children = ( | ||
232 | + 17ABE06F285B80DC0006E7EC /* DisplayNameCell.swift */, | ||
233 | + 17ABE071285B810F0006E7EC /* SettingsTableViewCell.swift */, | ||
234 | + 17ABE073285B81390006E7EC /* SettingsSwitchCell.swift */, | ||
235 | + ); | ||
236 | + path = Cells; | ||
237 | + sourceTree = "<group>"; | ||
238 | + }; | ||
209 | 17ABFE54284FD1C8003B6959 /* HomeScreen */ = { | 239 | 17ABFE54284FD1C8003B6959 /* HomeScreen */ = { |
210 | isa = PBXGroup; | 240 | isa = PBXGroup; |
211 | children = ( | 241 | children = ( |
@@ -232,6 +262,90 @@ | @@ -232,6 +262,90 @@ | ||
232 | path = VIew; | 262 | path = VIew; |
233 | sourceTree = "<group>"; | 263 | sourceTree = "<group>"; |
234 | }; | 264 | }; |
265 | + 17B0254328587434004225AE /* ChooseApartmentsScreen */ = { | ||
266 | + isa = PBXGroup; | ||
267 | + children = ( | ||
268 | + 17CD09A12858EE04008483E2 /* ViewController */, | ||
269 | + 17CD09A22858EE14008483E2 /* View */, | ||
270 | + ); | ||
271 | + path = ChooseApartmentsScreen; | ||
272 | + sourceTree = "<group>"; | ||
273 | + }; | ||
274 | + 17CD09A12858EE04008483E2 /* ViewController */ = { | ||
275 | + isa = PBXGroup; | ||
276 | + children = ( | ||
277 | + 17B0254528587716004225AE /* ChooseApartmentsViewController.swift */, | ||
278 | + ); | ||
279 | + path = ViewController; | ||
280 | + sourceTree = "<group>"; | ||
281 | + }; | ||
282 | + 17CD09A22858EE14008483E2 /* View */ = { | ||
283 | + isa = PBXGroup; | ||
284 | + children = ( | ||
285 | + 17B0254728587726004225AE /* ChooseApartmentsView.swift */, | ||
286 | + 17CD09A52858EE4B008483E2 /* Cell */, | ||
287 | + ); | ||
288 | + path = View; | ||
289 | + sourceTree = "<group>"; | ||
290 | + }; | ||
291 | + 17CD09A52858EE4B008483E2 /* Cell */ = { | ||
292 | + isa = PBXGroup; | ||
293 | + children = ( | ||
294 | + 17CD09A32858EE39008483E2 /* ChooseApartmentsTableViewCell.swift */, | ||
295 | + ); | ||
296 | + path = Cell; | ||
297 | + sourceTree = "<group>"; | ||
298 | + }; | ||
299 | + 17CD09A62858F931008483E2 /* ResidentsScreen */ = { | ||
300 | + isa = PBXGroup; | ||
301 | + children = ( | ||
302 | + 17CD09A72858F955008483E2 /* ViewController */, | ||
303 | + 17CD09A82858F962008483E2 /* View */, | ||
304 | + ); | ||
305 | + path = ResidentsScreen; | ||
306 | + sourceTree = "<group>"; | ||
307 | + }; | ||
308 | + 17CD09A72858F955008483E2 /* ViewController */ = { | ||
309 | + isa = PBXGroup; | ||
310 | + children = ( | ||
311 | + 17CD09A92858F979008483E2 /* ResidentsViewController.swift */, | ||
312 | + ); | ||
313 | + path = ViewController; | ||
314 | + sourceTree = "<group>"; | ||
315 | + }; | ||
316 | + 17CD09A82858F962008483E2 /* View */ = { | ||
317 | + isa = PBXGroup; | ||
318 | + children = ( | ||
319 | + 17CD09AB2858F9B0008483E2 /* ResidentsView.swift */, | ||
320 | + ); | ||
321 | + path = View; | ||
322 | + sourceTree = "<group>"; | ||
323 | + }; | ||
324 | + 17CD09AD28591073008483E2 /* AddResidentsViewController */ = { | ||
325 | + isa = PBXGroup; | ||
326 | + children = ( | ||
327 | + 17CD09AE2859108B008483E2 /* ViewController */, | ||
328 | + 17CD09AF285910FA008483E2 /* View */, | ||
329 | + ); | ||
330 | + path = AddResidentsViewController; | ||
331 | + sourceTree = "<group>"; | ||
332 | + }; | ||
333 | + 17CD09AE2859108B008483E2 /* ViewController */ = { | ||
334 | + isa = PBXGroup; | ||
335 | + children = ( | ||
336 | + 17CD09B02859110A008483E2 /* AddResidentsViewController.swift */, | ||
337 | + ); | ||
338 | + path = ViewController; | ||
339 | + sourceTree = "<group>"; | ||
340 | + }; | ||
341 | + 17CD09AF285910FA008483E2 /* View */ = { | ||
342 | + isa = PBXGroup; | ||
343 | + children = ( | ||
344 | + 17CD09B2285911C8008483E2 /* AddResidentsView.swift */, | ||
345 | + ); | ||
346 | + path = View; | ||
347 | + sourceTree = "<group>"; | ||
348 | + }; | ||
235 | 17CF9ED42844ED8F000D8077 = { | 349 | 17CF9ED42844ED8F000D8077 = { |
236 | isa = PBXGroup; | 350 | isa = PBXGroup; |
237 | children = ( | 351 | children = ( |
@@ -255,6 +369,7 @@ | @@ -255,6 +369,7 @@ | ||
255 | 17CF9EDF2844ED8F000D8077 /* InterQR-Internship */ = { | 369 | 17CF9EDF2844ED8F000D8077 /* InterQR-Internship */ = { |
256 | isa = PBXGroup; | 370 | isa = PBXGroup; |
257 | children = ( | 371 | children = ( |
372 | + 175DA4712852416D0075F0A9 /* Reusable+cell.swift */, | ||
258 | 00E581B7284F71A700E779FB /* Common */, | 373 | 00E581B7284F71A700E779FB /* Common */, |
259 | 00E581B0284F666000E779FB /* Modules */, | 374 | 00E581B0284F666000E779FB /* Modules */, |
260 | 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */, | 375 | 17CF9EE02844ED8F000D8077 /* AppDelegate.swift */, |
@@ -420,27 +535,36 @@ | @@ -420,27 +535,36 @@ | ||
420 | isa = PBXSourcesBuildPhase; | 535 | isa = PBXSourcesBuildPhase; |
421 | buildActionMask = 2147483647; | 536 | buildActionMask = 2147483647; |
422 | files = ( | 537 | files = ( |
538 | + 17CD09B12859110A008483E2 /* AddResidentsViewController.swift in Sources */, | ||
539 | + 17ABE070285B80DC0006E7EC /* DisplayNameCell.swift in Sources */, | ||
423 | 1729E22128465DA9006C7C29 /* PhonePickerModel.swift in Sources */, | 540 | 1729E22128465DA9006C7C29 /* PhonePickerModel.swift in Sources */, |
424 | 17058D52284A4F150078DD82 /* CodeVerificationViewController.swift in Sources */, | 541 | 17058D52284A4F150078DD82 /* CodeVerificationViewController.swift in Sources */, |
425 | - 1778DA402851042F006619C4 /* EditInfoView.swift in Sources */, | ||
426 | 1732AC71284769B50042C9F7 /* TextFieldWithPadding.swift in Sources */, | 542 | 1732AC71284769B50042C9F7 /* TextFieldWithPadding.swift in Sources */, |
427 | 17ABFE5A284FD293003B6959 /* HomeView.swift in Sources */, | 543 | 17ABFE5A284FD293003B6959 /* HomeView.swift in Sources */, |
428 | 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */, | 544 | 1732AC7328477BB40042C9F7 /* PickerViewCell.swift in Sources */, |
429 | 1729E21F28465595006C7C29 /* PhoneNumberView.swift in Sources */, | 545 | 1729E21F28465595006C7C29 /* PhoneNumberView.swift in Sources */, |
546 | + 17ABE072285B810F0006E7EC /* SettingsTableViewCell.swift in Sources */, | ||
547 | + 17CD09AC2858F9B0008483E2 /* ResidentsView.swift in Sources */, | ||
548 | + 17B0254628587716004225AE /* ChooseApartmentsViewController.swift in Sources */, | ||
549 | + 175DA4722852416D0075F0A9 /* Reusable+cell.swift in Sources */, | ||
430 | 17ABFE58284FD20C003B6959 /* HomeViewController.swift in Sources */, | 550 | 17ABFE58284FD20C003B6959 /* HomeViewController.swift in Sources */, |
431 | 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */, | 551 | 17CF9EE52844ED8F000D8077 /* VerificationViewController.swift in Sources */, |
432 | 17058D54284A4F670078DD82 /* CodeVerificationView.swift in Sources */, | 552 | 17058D54284A4F670078DD82 /* CodeVerificationView.swift in Sources */, |
553 | + 175DA474285241C90075F0A9 /* SettingsModel.swift in Sources */, | ||
433 | 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */, | 554 | 17CF9EE12844ED8F000D8077 /* AppDelegate.swift in Sources */, |
555 | + 17CD09A42858EE39008483E2 /* ChooseApartmentsTableViewCell.swift in Sources */, | ||
434 | 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */, | 556 | 1729E21D28465163006C7C29 /* PhoneService.swift in Sources */, |
435 | - 1778DA3E2850FF89006619C4 /* NotificationsView.swift in Sources */, | ||
436 | 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */, | 557 | 17CF9EE32844ED8F000D8077 /* SceneDelegate.swift in Sources */, |
437 | 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */, | 558 | 1738F7D82850F5D5003F1806 /* SettingsViewController.swift in Sources */, |
438 | 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */, | 559 | 1738F7DA2850F5F1003F1806 /* SettingsView.swift in Sources */, |
560 | + 17CD09AA2858F979008483E2 /* ResidentsViewController.swift in Sources */, | ||
439 | 00E581BB284F71CD00E779FB /* Checkbox.swift in Sources */, | 561 | 00E581BB284F71CD00E779FB /* Checkbox.swift in Sources */, |
440 | 17287C602848AD8D00AA7113 /* Fonts + Extension.swift in Sources */, | 562 | 17287C602848AD8D00AA7113 /* Fonts + Extension.swift in Sources */, |
441 | - 1738F7DC2850F980003F1806 /* ProfileView.swift in Sources */, | 563 | + 17CD09B3285911C8008483E2 /* AddResidentsView.swift in Sources */, |
442 | 178A61D12850DDAA001509A4 /* HomeTableViewCell.swift in Sources */, | 564 | 178A61D12850DDAA001509A4 /* HomeTableViewCell.swift in Sources */, |
565 | + 17ABE074285B81390006E7EC /* SettingsSwitchCell.swift in Sources */, | ||
443 | 17CF9EF72844EF8B000D8077 /* VerificationView.swift in Sources */, | 566 | 17CF9EF72844EF8B000D8077 /* VerificationView.swift in Sources */, |
567 | + 17B0254828587726004225AE /* ChooseApartmentsView.swift in Sources */, | ||
444 | ); | 568 | ); |
445 | runOnlyForDeploymentPostprocessing = 0; | 569 | runOnlyForDeploymentPostprocessing = 0; |
446 | }; | 570 | }; |
@@ -3,4 +3,22 @@ | @@ -3,4 +3,22 @@ | ||
3 | uuid = "CB908779-2558-4E0D-A4CA-2068778D434A" | 3 | uuid = "CB908779-2558-4E0D-A4CA-2068778D434A" |
4 | type = "0" | 4 | type = "0" |
5 | version = "2.0"> | 5 | version = "2.0"> |
6 | + <Breakpoints> | ||
7 | + <BreakpointProxy | ||
8 | + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> | ||
9 | + <BreakpointContent | ||
10 | + uuid = "BF66D3C2-0ECB-4FE6-BC84-3A1154618C5F" | ||
11 | + shouldBeEnabled = "No" | ||
12 | + ignoreCount = "0" | ||
13 | + continueAfterRunningActions = "No" | ||
14 | + filePath = "InterQR-Internship/Modules/AddResidentsViewController/View/AddResidentsView.swift" | ||
15 | + startingColumnNumber = "9223372036854775807" | ||
16 | + endingColumnNumber = "9223372036854775807" | ||
17 | + startingLineNumber = "224" | ||
18 | + endingLineNumber = "224" | ||
19 | + landmarkName = "layoutSubviews()" | ||
20 | + landmarkType = "7"> | ||
21 | + </BreakpointContent> | ||
22 | + </BreakpointProxy> | ||
23 | + </Breakpoints> | ||
6 | </Bucket> | 24 | </Bucket> |
@@ -5,4 +5,222 @@ | @@ -5,4 +5,222 @@ | ||
5 | // Created by Дмитрий Тимофеев on 14.06.2022. | 5 | // Created by Дмитрий Тимофеев on 14.06.2022. |
6 | // | 6 | // |
7 | 7 | ||
8 | -import Foundation | 8 | +import UIKit |
9 | + | ||
10 | +class AddResidentsView: UIView { | ||
11 | + var transparentView: UIView = { | ||
12 | + var obj = UIView() | ||
13 | + obj.backgroundColor = .black | ||
14 | + obj.alpha = 0.5 | ||
15 | + return obj | ||
16 | + }() | ||
17 | + | ||
18 | + var containerView: UIView = { | ||
19 | + var obj = UIView() | ||
20 | + obj.clipsToBounds = true | ||
21 | + obj.layer.cornerRadius = 15 | ||
22 | + obj.backgroundColor = .white | ||
23 | + return obj | ||
24 | + }() | ||
25 | + | ||
26 | + var addResidentLabeL: UILabel = { | ||
27 | + var obj = UILabel() | ||
28 | + obj.text = "Add resident" | ||
29 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
30 | + obj.font = .skModernist(type: .bold, ofSize: 24) | ||
31 | + return obj | ||
32 | + }() | ||
33 | + | ||
34 | + var closeButton: UIButton = { | ||
35 | + var obj = UIButton() | ||
36 | + obj.layer.cornerRadius = 13 | ||
37 | + obj.layer.borderWidth = 1 | ||
38 | + obj.layer.borderColor = UIColor(red: 0.882, green: 0.91, blue: 0.91, alpha: 1).cgColor | ||
39 | + obj.setImage(UIImage(named: "Close"), for: .normal) | ||
40 | + return obj | ||
41 | + }() | ||
42 | + | ||
43 | + var dividingLineView: UIView = { | ||
44 | + var view = UIView() | ||
45 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
46 | + return view | ||
47 | + }() | ||
48 | + | ||
49 | + var residentNameLabel: UILabel = { | ||
50 | + var obj = UILabel() | ||
51 | + obj.text = "Resident name" | ||
52 | + obj.font = .skModernist(type: .bold, ofSize: 14) | ||
53 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
54 | + return obj | ||
55 | + }() | ||
56 | + | ||
57 | + var nameTextField: UITextField = { | ||
58 | + var obj = UITextField() | ||
59 | + obj.backgroundColor = UIColor(red: 0.954, green: 0.954, blue: 0.954, alpha: 1) | ||
60 | + obj.textAlignment = .left | ||
61 | + obj.layer.cornerRadius = 15 | ||
62 | + return obj | ||
63 | + }() | ||
64 | + | ||
65 | + var mobileNumberLabel: UILabel = { | ||
66 | + var obj = UILabel() | ||
67 | + obj.text = "Mobile number" | ||
68 | + obj.font = .skModernist(type: .bold, ofSize: 14) | ||
69 | + obj.textColor = UIColor(red: 0.196, green: 0.216, blue: 0.333, alpha: 1) | ||
70 | + return obj | ||
71 | + }() | ||
72 | + | ||
73 | + var mobileNumberTextField: UITextField = { | ||
74 | + var obj = UITextField() | ||
75 | + obj.backgroundColor = UIColor(red: 0.954, green: 0.954, blue: 0.954, alpha: 1) | ||
76 | + obj.textAlignment = .left | ||
77 | + obj.layer.cornerRadius = 15 | ||
78 | + return obj | ||
79 | + }() | ||
80 | + | ||
81 | + var managerButton: UIButton = { | ||
82 | + var obj = UIButton() | ||
83 | +// obj.setImage(<#T##image: UIImage?##UIImage?#>, for: <#T##UIControl.State#>) | ||
84 | + return obj | ||
85 | + }() | ||
86 | + | ||
87 | + var hiddenButton: UIButton = { | ||
88 | + var obj = UIButton() | ||
89 | + return obj | ||
90 | + }() | ||
91 | + | ||
92 | + var heartButton: UIButton = { | ||
93 | + var obj = UIButton() | ||
94 | + obj.setImage(UIImage(named: "Heart"), for: .normal) | ||
95 | + obj.setImage(UIImage(named: "HeartRed"), for: .selected) | ||
96 | + return obj | ||
97 | + }() | ||
98 | + | ||
99 | + var gradientBG: CAGradientLayer = { | ||
100 | + let obj = CAGradientLayer() | ||
101 | + var leftColor = UIColor(red: 0/255, green: 68/255, blue: 139/255, alpha: 1).cgColor | ||
102 | + var rightColor = UIColor(red: 0/255, green: 122/255, blue: 191/255, alpha: 1).cgColor | ||
103 | + obj.colors = [leftColor, rightColor] | ||
104 | + obj.startPoint = CGPoint(x: 0, y: 0.5) | ||
105 | + obj.endPoint = CGPoint(x: 1, y: 0.5) | ||
106 | + return obj | ||
107 | + }() | ||
108 | + | ||
109 | + var addResidentButton: UIButton = { | ||
110 | + var obj = UIButton() | ||
111 | + obj.setTitle("Add resident", for: .normal) | ||
112 | + obj.setTitleColor(UIColor(red: 1, green: 1, blue: 1, alpha: 1), for: .normal) | ||
113 | + obj.titleLabel?.font = .skModernist(type: .bold, ofSize: 16) | ||
114 | + obj.setTitleColor(.cyan, for: .normal) | ||
115 | + obj.clipsToBounds = true | ||
116 | + obj.layer.masksToBounds = true | ||
117 | + return obj | ||
118 | + }() | ||
119 | + | ||
120 | + override init(frame: CGRect) { | ||
121 | + super.init(frame: frame) | ||
122 | + layout() | ||
123 | + backgroundColor = .clear | ||
124 | + } | ||
125 | + | ||
126 | + required init?(coder: NSCoder) { | ||
127 | + fatalError("init(coder:) has not been implemented") | ||
128 | + } | ||
129 | + | ||
130 | + func layout() { | ||
131 | + addResidentButton.layer.insertSublayer(gradientBG, at: 0) | ||
132 | + | ||
133 | + addSubview(transparentView) | ||
134 | + | ||
135 | + addSubview(containerView) | ||
136 | + containerView.addSubview(addResidentLabeL) | ||
137 | + containerView.addSubview(closeButton) | ||
138 | + containerView.addSubview(dividingLineView) | ||
139 | + containerView.addSubview(residentNameLabel) | ||
140 | + containerView.addSubview(nameTextField) | ||
141 | + containerView.addSubview(mobileNumberLabel) | ||
142 | + containerView.addSubview(mobileNumberTextField) | ||
143 | + containerView.addSubview(managerButton) | ||
144 | + containerView.addSubview(hiddenButton) | ||
145 | + containerView.addSubview(heartButton) | ||
146 | + containerView.addSubview(addResidentButton) | ||
147 | + | ||
148 | + transparentView.snp.makeConstraints { | ||
149 | + $0.leading.top.trailing.bottom.equalToSuperview() | ||
150 | + } | ||
151 | + | ||
152 | + containerView.snp.makeConstraints { | ||
153 | + $0.leading.trailing.equalToSuperview().inset(25) | ||
154 | +// $0.top.equalToSuperview().offset(174) | ||
155 | +// $0.bottom.equalToSuperview().offset(-201) | ||
156 | + $0.centerY.equalToSuperview() | ||
157 | + } | ||
158 | + | ||
159 | + addResidentLabeL.snp.makeConstraints { | ||
160 | + $0.top.equalToSuperview().offset(34) | ||
161 | + $0.leading.equalToSuperview().offset(28) | ||
162 | + } | ||
163 | + | ||
164 | + closeButton.snp.makeConstraints { | ||
165 | + $0.centerY.equalTo(addResidentLabeL) | ||
166 | + $0.trailing.equalToSuperview().offset(-30) | ||
167 | + $0.height.width.equalTo(45) | ||
168 | + } | ||
169 | + | ||
170 | + dividingLineView.snp.makeConstraints { | ||
171 | + $0.trailing.leading.equalToSuperview() | ||
172 | + $0.height.equalTo(1) | ||
173 | + $0.top.equalTo(addResidentLabeL.snp.bottom).offset(34) | ||
174 | + } | ||
175 | + | ||
176 | + residentNameLabel.snp.makeConstraints { | ||
177 | + $0.top.equalTo(dividingLineView.snp.bottom).offset(24) | ||
178 | + $0.leading.equalToSuperview().offset(44) | ||
179 | + | ||
180 | + } | ||
181 | + | ||
182 | + nameTextField.snp.makeConstraints { | ||
183 | + $0.leading.trailing.equalToSuperview().inset(30) | ||
184 | + $0.top.equalTo(residentNameLabel.snp.bottom).offset(10) | ||
185 | + $0.height.equalTo(47) | ||
186 | + } | ||
187 | + | ||
188 | + mobileNumberLabel.snp.makeConstraints { | ||
189 | + $0.leading.equalTo(residentNameLabel.snp.leading) | ||
190 | + $0.top.equalTo(nameTextField.snp.bottom).offset(15) | ||
191 | + | ||
192 | + } | ||
193 | + | ||
194 | + mobileNumberTextField.snp.makeConstraints { | ||
195 | + $0.leading.trailing.equalToSuperview().inset(30) | ||
196 | + $0.top.equalTo(mobileNumberLabel.snp.bottom).offset(10) | ||
197 | + $0.height.equalTo(47) | ||
198 | + } | ||
199 | + | ||
200 | + managerButton.snp.makeConstraints { | ||
201 | + $0.leading.equalToSuperview().offset(29) | ||
202 | + $0.top.equalTo(mobileNumberTextField.snp.bottom).offset(30) | ||
203 | + } | ||
204 | + | ||
205 | + hiddenButton.snp.makeConstraints { | ||
206 | + $0.top.equalTo(managerButton) | ||
207 | + $0.leading.equalTo(managerButton.snp.trailing).offset(24) | ||
208 | + } | ||
209 | + | ||
210 | + heartButton.snp.makeConstraints { | ||
211 | + $0.top.equalTo(managerButton) | ||
212 | + $0.trailing.equalToSuperview().offset(-32.5) | ||
213 | + } | ||
214 | + | ||
215 | + addResidentButton.snp.makeConstraints { | ||
216 | + $0.top.equalTo(managerButton.snp.bottom).offset(43) | ||
217 | + $0.leading.trailing.bottom.equalToSuperview() | ||
218 | + $0.height.equalTo(45) | ||
219 | + } | ||
220 | + } | ||
221 | + | ||
222 | + override func layoutSubviews() { | ||
223 | + super.layoutSubviews() | ||
224 | + gradientBG.frame = addResidentButton.bounds | ||
225 | + } | ||
226 | +} |
@@ -9,7 +9,12 @@ import UIKit | @@ -9,7 +9,12 @@ import UIKit | ||
9 | 9 | ||
10 | class AddResidentsViewController: UIViewController { | 10 | class AddResidentsViewController: UIViewController { |
11 | 11 | ||
12 | + var mainView = AddResidentsView() | ||
13 | + | ||
14 | + override func loadView() { | ||
15 | + view = mainView | ||
16 | + } | ||
17 | + | ||
12 | override func viewDidLoad() { | 18 | override func viewDidLoad() { |
13 | - view.backgroundColor = .red | ||
14 | } | 19 | } |
15 | } | 20 | } |
@@ -48,10 +48,11 @@ class ChooseApartmentsTableViewCell: UITableViewCell { | @@ -48,10 +48,11 @@ class ChooseApartmentsTableViewCell: UITableViewCell { | ||
48 | } | 48 | } |
49 | 49 | ||
50 | func layout() { | 50 | func layout() { |
51 | - addSubview(apartmanImage) | ||
52 | - addSubview(clientNameLabel) | ||
53 | - addSubview(adressLabel) | ||
54 | - addSubview(nextPointerImage) | 51 | + selectionStyle = .none |
52 | + contentView.addSubview(apartmanImage) | ||
53 | + contentView.addSubview(clientNameLabel) | ||
54 | + contentView.addSubview(adressLabel) | ||
55 | + contentView.addSubview(nextPointerImage) | ||
55 | 56 | ||
56 | apartmanImage.snp.makeConstraints { | 57 | apartmanImage.snp.makeConstraints { |
57 | $0.top.equalToSuperview().offset(8) | 58 | $0.top.equalToSuperview().offset(8) |
@@ -41,7 +41,6 @@ class ChooseApartmentView: UIView { | @@ -41,7 +41,6 @@ class ChooseApartmentView: UIView { | ||
41 | 41 | ||
42 | var tableView: UITableView = { | 42 | var tableView: UITableView = { |
43 | var obj = UITableView() | 43 | var obj = UITableView() |
44 | - obj.allowsSelection = false | ||
45 | obj.showsVerticalScrollIndicator = false | 44 | obj.showsVerticalScrollIndicator = false |
46 | return obj | 45 | return obj |
47 | }() | 46 | }() |
@@ -21,10 +21,15 @@ class ChooseApartmentsViewController: UIViewController { | @@ -21,10 +21,15 @@ class ChooseApartmentsViewController: UIViewController { | ||
21 | } | 21 | } |
22 | 22 | ||
23 | func initViewController() { | 23 | func initViewController() { |
24 | + mainView.backButton.addTarget(self, action: #selector(backToSettingsVC), for: .touchUpInside) | ||
24 | mainView.tableView.delegate = self | 25 | mainView.tableView.delegate = self |
25 | mainView.tableView.dataSource = self | 26 | mainView.tableView.dataSource = self |
26 | mainView.tableView.register(ChooseApartmentsTableViewCell.self, forCellReuseIdentifier: ChooseApartmentsTableViewCell.id) | 27 | mainView.tableView.register(ChooseApartmentsTableViewCell.self, forCellReuseIdentifier: ChooseApartmentsTableViewCell.id) |
27 | } | 28 | } |
29 | + | ||
30 | + @objc func backToSettingsVC() { | ||
31 | + navigationController?.popViewController(animated: true) | ||
32 | + } | ||
28 | } | 33 | } |
29 | extension ChooseApartmentsViewController: UITableViewDelegate, UITableViewDataSource { | 34 | extension ChooseApartmentsViewController: UITableViewDelegate, UITableViewDataSource { |
30 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | 35 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { |
@@ -40,8 +45,11 @@ extension ChooseApartmentsViewController: UITableViewDelegate, UITableViewDataSo | @@ -40,8 +45,11 @@ extension ChooseApartmentsViewController: UITableViewDelegate, UITableViewDataSo | ||
40 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | 45 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
41 | 87 | 46 | 87 |
42 | } | 47 | } |
48 | + | ||
43 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | 49 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
50 | + let vc = ResidentsViewController() | ||
51 | + navigationController?.pushViewController(vc, animated: true) | ||
52 | + print("❌") | ||
44 | 53 | ||
45 | } | 54 | } |
46 | - | ||
47 | } | 55 | } |
@@ -60,6 +60,7 @@ class HomeTableViewCell: UITableViewCell { | @@ -60,6 +60,7 @@ class HomeTableViewCell: UITableViewCell { | ||
60 | } | 60 | } |
61 | 61 | ||
62 | func layout() { | 62 | func layout() { |
63 | + selectionStyle = .none | ||
63 | addSubview(containerView) | 64 | addSubview(containerView) |
64 | containerView.addSubview(leftStatusImage) | 65 | containerView.addSubview(leftStatusImage) |
65 | containerView.addSubview(doorNameLabel) | 66 | containerView.addSubview(doorNameLabel) |
@@ -42,7 +42,6 @@ class HomeView: UIView { | @@ -42,7 +42,6 @@ class HomeView: UIView { | ||
42 | var tableView: UITableView = { | 42 | var tableView: UITableView = { |
43 | var obj = UITableView() | 43 | var obj = UITableView() |
44 | obj.separatorStyle = .none | 44 | obj.separatorStyle = .none |
45 | - obj.allowsSelection = false | ||
46 | obj.showsVerticalScrollIndicator = false | 45 | obj.showsVerticalScrollIndicator = false |
47 | return obj | 46 | return obj |
48 | }() | 47 | }() |
@@ -30,7 +30,6 @@ class HomeViewController: UIViewController { | @@ -30,7 +30,6 @@ class HomeViewController: UIViewController { | ||
30 | extension HomeViewController { | 30 | extension HomeViewController { |
31 | 31 | ||
32 | @objc func didShowSettingsVC() { | 32 | @objc func didShowSettingsVC() { |
33 | - print("❌") | ||
34 | let vc = SettingsViewController() | 33 | let vc = SettingsViewController() |
35 | navigationController?.pushViewController(vc, animated: true) | 34 | navigationController?.pushViewController(vc, animated: true) |
36 | } | 35 | } |
@@ -53,7 +52,7 @@ extension HomeViewController: UITableViewDelegate, UITableViewDataSource { | @@ -53,7 +52,7 @@ extension HomeViewController: UITableViewDelegate, UITableViewDataSource { | ||
53 | } | 52 | } |
54 | 53 | ||
55 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | 54 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
56 | - | 55 | + print("✅") |
57 | } | 56 | } |
58 | 57 | ||
59 | 58 |
@@ -5,4 +5,125 @@ | @@ -5,4 +5,125 @@ | ||
5 | // Created by Дмитрий Тимофеев on 14.06.2022. | 5 | // Created by Дмитрий Тимофеев on 14.06.2022. |
6 | // | 6 | // |
7 | 7 | ||
8 | -import Foundation | 8 | +import UIKit |
9 | + | ||
10 | +class ResidentsView: UIView { | ||
11 | + | ||
12 | + var backButton: UIButton = { | ||
13 | + var obj = UIButton() | ||
14 | + obj.setImage(UIImage(named: "BackPointer"), for: .normal) | ||
15 | + obj.backgroundColor = .white | ||
16 | + obj.layer.borderColor = UIColor(red: 224/255, green: 231/255, blue: 232/255, alpha: 1).cgColor | ||
17 | + obj.layer.cornerRadius = 13 | ||
18 | + obj.layer.borderWidth = 1 | ||
19 | + return obj | ||
20 | + }() | ||
21 | + | ||
22 | + var logoImage: UIImageView = { | ||
23 | + var obj = UIImageView() | ||
24 | + obj.image = UIImage(named: "InterQR") | ||
25 | + return obj | ||
26 | + }() | ||
27 | + | ||
28 | + let apartNameLabel: UILabel = { | ||
29 | + var obj = UILabel() | ||
30 | + obj.font = .skModernist(type: .bold, ofSize: 35) | ||
31 | + obj.text = "My apart name" | ||
32 | + return obj | ||
33 | + }() | ||
34 | + | ||
35 | + var dividingLineView: UIView = { | ||
36 | + var view = UIView() | ||
37 | + view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | ||
38 | + return view | ||
39 | + }() | ||
40 | + | ||
41 | + var residentsLabel: UILabel = { | ||
42 | + var obj = UILabel() | ||
43 | + obj.font = .skModernist(type: .bold, ofSize: 20) | ||
44 | + obj.text = "Residents" | ||
45 | + return obj | ||
46 | + }() | ||
47 | + | ||
48 | + var addResidentsButton: UIButton = { | ||
49 | + var obj = UIButton() | ||
50 | + obj.layer.borderWidth = 1 | ||
51 | + obj.layer.borderColor = UIColor(red: 0.882, green: 0.91, blue: 0.91, alpha: 1).cgColor | ||
52 | + obj.layer.cornerRadius = 13 | ||
53 | + obj.setImage(UIImage(named: "Edit"), for: .normal) | ||
54 | + return obj | ||
55 | + }() | ||
56 | + | ||
57 | + let tableView: UITableView = { | ||
58 | + let obj = UITableView() | ||
59 | + obj.allowsSelection = false | ||
60 | + obj.showsVerticalScrollIndicator = false | ||
61 | + obj.separatorStyle = .none | ||
62 | + return obj | ||
63 | + }() | ||
64 | + | ||
65 | + let addResidentView: AddResidentsView = { | ||
66 | + var obj = AddResidentsView() | ||
67 | + obj.isHidden = true | ||
68 | + return obj | ||
69 | + }() | ||
70 | + | ||
71 | + | ||
72 | + override init(frame: CGRect) { | ||
73 | + super.init(frame: frame) | ||
74 | + backgroundColor = .white | ||
75 | + layout() | ||
76 | + } | ||
77 | + | ||
78 | + required init?(coder: NSCoder) { | ||
79 | + fatalError("init(coder:) has not been implemented") | ||
80 | + } | ||
81 | + | ||
82 | + func layout() { | ||
83 | + | ||
84 | + addSubview(backButton) | ||
85 | + addSubview(logoImage) | ||
86 | + addSubview(apartNameLabel) | ||
87 | + addSubview(dividingLineView) | ||
88 | + addSubview(residentsLabel) | ||
89 | + addSubview(addResidentsButton) | ||
90 | + addSubview(tableView) | ||
91 | + addSubview(addResidentView) | ||
92 | + | ||
93 | + backButton.snp.makeConstraints { | ||
94 | + $0.top.equalTo(snp.top).offset(66) | ||
95 | + $0.leading.equalTo(snp.leading).offset(25) | ||
96 | + $0.height.width.equalTo(45) | ||
97 | + } | ||
98 | + logoImage.snp.makeConstraints { | ||
99 | + $0.leading.equalTo(backButton.snp.trailing).offset(20) | ||
100 | + $0.top.equalTo(snp.top).offset(79) | ||
101 | + } | ||
102 | + apartNameLabel.snp.makeConstraints { | ||
103 | + $0.leading.equalTo(backButton.snp.leading) | ||
104 | + $0.top.equalTo(backButton.snp.bottom).offset(46) | ||
105 | + } | ||
106 | + dividingLineView.snp.makeConstraints { | ||
107 | + $0.leading.trailing.equalToSuperview() | ||
108 | + $0.height.equalTo(1) | ||
109 | + $0.top.equalTo(apartNameLabel.snp.bottom).offset(42) | ||
110 | + } | ||
111 | + residentsLabel.snp.makeConstraints { | ||
112 | + $0.leading.equalToSuperview().offset(24) | ||
113 | + $0.top.equalTo(dividingLineView.snp.bottom).offset(43) | ||
114 | + } | ||
115 | + addResidentsButton.snp.makeConstraints { | ||
116 | + $0.height.width.equalTo(45) | ||
117 | + $0.top.equalTo(dividingLineView.snp.bottom).offset(32) | ||
118 | + $0.trailing.equalToSuperview().offset(-29) | ||
119 | + } | ||
120 | + tableView.snp.makeConstraints { | ||
121 | + $0.top.equalTo(residentsLabel.snp.bottom).offset(30) | ||
122 | + $0.leading.trailing.equalToSuperview() | ||
123 | + $0.bottom.equalToSuperview() | ||
124 | + } | ||
125 | + addResidentView.snp.makeConstraints { | ||
126 | + $0.top.trailing.leading.bottom.equalToSuperview() | ||
127 | + } | ||
128 | + } | ||
129 | +} |
@@ -5,4 +5,32 @@ | @@ -5,4 +5,32 @@ | ||
5 | // Created by Дмитрий Тимофеев on 14.06.2022. | 5 | // Created by Дмитрий Тимофеев on 14.06.2022. |
6 | // | 6 | // |
7 | 7 | ||
8 | -import Foundation | 8 | +import UIKit |
9 | + | ||
10 | +class ResidentsViewController: UIViewController { | ||
11 | + | ||
12 | + var mainView = ResidentsView() | ||
13 | + | ||
14 | + override func loadView() { | ||
15 | + view = mainView | ||
16 | + } | ||
17 | + | ||
18 | + override func viewDidLoad() { | ||
19 | + mainView.backButton.addTarget(self, action: #selector(didShowChooseApartVC), for: .touchUpInside) | ||
20 | + mainView.addResidentsButton.addTarget(self, action: #selector(willShowAddResidentVC), for: .touchUpInside) | ||
21 | + } | ||
22 | + | ||
23 | + @objc func didShowChooseApartVC() { | ||
24 | + navigationController?.popViewController(animated: true) | ||
25 | + } | ||
26 | + | ||
27 | + @objc func willShowAddResidentVC() { | ||
28 | +// UIView.animate(withDuration: 0.5) { | ||
29 | +// self.mainView.addResidentView.isHidden = false | ||
30 | +// } | ||
31 | + let vc = AddResidentsViewController() | ||
32 | + vc.modalPresentationStyle = .overCurrentContext | ||
33 | + vc.modalTransitionStyle = .crossDissolve | ||
34 | + present(vc, animated: true) | ||
35 | + } | ||
36 | +} |
@@ -30,24 +30,18 @@ class SettingsView: UIView { | @@ -30,24 +30,18 @@ class SettingsView: UIView { | ||
30 | return obj | 30 | return obj |
31 | }() | 31 | }() |
32 | 32 | ||
33 | - var settingsLabel: UILabel = { | 33 | + let settingsLabel: UILabel = { |
34 | var obj = UILabel() | 34 | var obj = UILabel() |
35 | obj.font = .skModernist(type: .bold, ofSize: 35) | 35 | obj.font = .skModernist(type: .bold, ofSize: 35) |
36 | obj.text = "Settings" | 36 | obj.text = "Settings" |
37 | return obj | 37 | return obj |
38 | }() | 38 | }() |
39 | - var profileView: ProfileView = { | ||
40 | - var obj = ProfileView() | ||
41 | - return obj | ||
42 | - }() | ||
43 | - var notificationsView: NotificationsView = { | ||
44 | - var obj = NotificationsView() | ||
45 | - return obj | ||
46 | - }() | ||
47 | - var editInfo: EditInfoView = { | ||
48 | - var obj = EditInfoView() | 39 | + |
40 | + let settingsTableView: UITableView = { | ||
41 | + let obj = UITableView() | ||
49 | return obj | 42 | return obj |
50 | }() | 43 | }() |
44 | + | ||
51 | var logoutButton: UIButton = { | 45 | var logoutButton: UIButton = { |
52 | var obj = UIButton() | 46 | var obj = UIButton() |
53 | obj.backgroundColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 0.07) | 47 | obj.backgroundColor = UIColor(red: 1, green: 0, blue: 0.18, alpha: 0.07) |
@@ -72,9 +66,7 @@ class SettingsView: UIView { | @@ -72,9 +66,7 @@ class SettingsView: UIView { | ||
72 | addSubview(logoImage) | 66 | addSubview(logoImage) |
73 | addSubview(gearImage) | 67 | addSubview(gearImage) |
74 | addSubview(settingsLabel) | 68 | addSubview(settingsLabel) |
75 | - addSubview(profileView) | ||
76 | - addSubview(notificationsView) | ||
77 | - addSubview(editInfo) | 69 | + addSubview(settingsTableView) |
78 | addSubview(logoutButton) | 70 | addSubview(logoutButton) |
79 | 71 | ||
80 | backButton.snp.makeConstraints { | 72 | backButton.snp.makeConstraints { |
@@ -94,27 +86,19 @@ class SettingsView: UIView { | @@ -94,27 +86,19 @@ class SettingsView: UIView { | ||
94 | $0.leading.equalTo(backButton.snp.leading) | 86 | $0.leading.equalTo(backButton.snp.leading) |
95 | $0.top.equalTo(backButton.snp.bottom).offset(46) | 87 | $0.top.equalTo(backButton.snp.bottom).offset(46) |
96 | } | 88 | } |
97 | - profileView.snp.makeConstraints { | ||
98 | - $0.top.equalTo(settingsLabel.snp.bottom).offset(85) | ||
99 | - $0.leading.equalTo(snp.leading) | ||
100 | - $0.trailing.equalTo(snp.trailing) | ||
101 | - $0.height.equalTo(140) | ||
102 | - } | ||
103 | - notificationsView.snp.makeConstraints { | ||
104 | - $0.top.equalTo(profileView.snp.bottom) | ||
105 | - $0.leading.trailing.equalToSuperview() | ||
106 | - $0.height.equalTo(140) | ||
107 | - } | ||
108 | - editInfo.snp.makeConstraints { | ||
109 | - $0.top.equalTo(notificationsView.snp.bottom) | ||
110 | - $0.leading.trailing.equalToSuperview() | ||
111 | - $0.height.equalTo(102) | 89 | + |
90 | + settingsTableView.snp.makeConstraints { make in | ||
91 | + make.leading.trailing.equalToSuperview() | ||
92 | + make.top.equalTo(settingsLabel.snp.bottom).offset(85) | ||
112 | } | 93 | } |
94 | + | ||
113 | logoutButton.snp.makeConstraints { | 95 | logoutButton.snp.makeConstraints { |
114 | - $0.top.equalTo(editInfo.snp.bottom).offset(42) | 96 | + $0.top.equalTo(settingsTableView.snp.bottom).offset(42) |
115 | $0.leading.equalTo(snp.leading).offset(25) | 97 | $0.leading.equalTo(snp.leading).offset(25) |
116 | $0.trailing.equalTo(snp.trailing).offset(-26) | 98 | $0.trailing.equalTo(snp.trailing).offset(-26) |
117 | $0.height.equalTo(56) | 99 | $0.height.equalTo(56) |
100 | + $0.bottom.equalToSuperview().offset(-51) | ||
118 | } | 101 | } |
119 | } | 102 | } |
120 | } | 103 | } |
104 | + |
@@ -11,12 +11,26 @@ class SettingsViewController: UIViewController { | @@ -11,12 +11,26 @@ class SettingsViewController: UIViewController { | ||
11 | 11 | ||
12 | var mainView = SettingsView() | 12 | var mainView = SettingsView() |
13 | 13 | ||
14 | + let settingsModel = SettingsModel.allCases | ||
15 | + | ||
14 | override func loadView() { | 16 | override func loadView() { |
15 | view = mainView | 17 | view = mainView |
16 | } | 18 | } |
17 | override func viewDidLoad() { | 19 | override func viewDidLoad() { |
20 | + super.viewDidLoad() | ||
21 | + initViewController() | ||
22 | + } | ||
23 | + | ||
24 | + private func initViewController() { | ||
18 | mainView.backButton.addTarget(self, action: #selector(didShowHomeVC), for: .touchUpInside) | 25 | mainView.backButton.addTarget(self, action: #selector(didShowHomeVC), for: .touchUpInside) |
19 | mainView.logoutButton.addTarget(self, action: #selector(didLogoutAndShowVerificationVC), for: .touchUpInside) | 26 | mainView.logoutButton.addTarget(self, action: #selector(didLogoutAndShowVerificationVC), for: .touchUpInside) |
27 | + | ||
28 | + mainView.settingsTableView.registerReusableCell(DisplayNameCell.self) | ||
29 | + mainView.settingsTableView.registerReusableCell(SettingsSwitchCell.self) | ||
30 | + mainView.settingsTableView.registerReusableCell(SettingsTableViewCell.self) | ||
31 | + | ||
32 | + mainView.settingsTableView.delegate = self | ||
33 | + mainView.settingsTableView.dataSource = self | ||
20 | } | 34 | } |
21 | } | 35 | } |
22 | 36 | ||
@@ -31,3 +45,45 @@ extension SettingsViewController { | @@ -31,3 +45,45 @@ extension SettingsViewController { | ||
31 | navigationController?.pushViewController(vc, animated: true) | 45 | navigationController?.pushViewController(vc, animated: true) |
32 | } | 46 | } |
33 | } | 47 | } |
48 | + | ||
49 | +//MARK: tableView delegate and datasource | ||
50 | +extension SettingsViewController: UITableViewDelegate, UITableViewDataSource { | ||
51 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
52 | + return settingsModel.count | ||
53 | + } | ||
54 | + | ||
55 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
56 | + let row = indexPath.row | ||
57 | + let model: SettingsModel = settingsModel[row] | ||
58 | + | ||
59 | + switch model { | ||
60 | + case .displayName: | ||
61 | + let cell: DisplayNameCell = tableView.dequeueReusableCell(for: indexPath) | ||
62 | + cell.titleLabel.text = model.getTitle() | ||
63 | + cell.descriptionLabel.text = model.getDescription() | ||
64 | + cell.settingsIcon.image = model.getIcon() | ||
65 | + return cell | ||
66 | + case .doNotDisturb, .ringtone: | ||
67 | + let cell: SettingsSwitchCell = tableView.dequeueReusableCell(for: indexPath) | ||
68 | + cell.titleLabel.text = model.getTitle() | ||
69 | + cell.descriptionLabel.text = model.getDescription() | ||
70 | + cell.settingsIcon.image = model.getIcon() | ||
71 | + // cell.delegate = self | ||
72 | + return cell | ||
73 | + case .editResidents, .widgetLock: | ||
74 | + let cell: SettingsTableViewCell = tableView.dequeueReusableCell(for: indexPath) | ||
75 | + cell.titleLabel.text = model.getTitle() | ||
76 | + cell.descriptionLabel.text = model.getDescription() | ||
77 | + cell.settingsIcon.image = model.getIcon() | ||
78 | + return cell | ||
79 | + } | ||
80 | + } | ||
81 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
82 | + if indexPath.row == 3 { | ||
83 | + let vc = ChooseApartmentsViewController() | ||
84 | + navigationController?.pushViewController(vc, animated: true) | ||
85 | + } | ||
86 | + | ||
87 | + } | ||
88 | +} | ||
89 | + |
@@ -8,13 +8,6 @@ | @@ -8,13 +8,6 @@ | ||
8 | import UIKit | 8 | import UIKit |
9 | 9 | ||
10 | class TextFieldWithPadding: UITextField { | 10 | class TextFieldWithPadding: UITextField { |
11 | - | ||
12 | - var textPaddingForEmail = UIEdgeInsets( | ||
13 | - top: 0, | ||
14 | - left: 22, | ||
15 | - bottom: 0, | ||
16 | - right: 22 | ||
17 | - ) | ||
18 | var textPaddingForPhone = UIEdgeInsets( | 11 | var textPaddingForPhone = UIEdgeInsets( |
19 | top: 0, | 12 | top: 0, |
20 | left: 78, | 13 | left: 78, |
@@ -73,12 +73,14 @@ class VerificationView: UIView { | @@ -73,12 +73,14 @@ class VerificationView: UIView { | ||
73 | view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) | 73 | view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1) |
74 | return view | 74 | return view |
75 | }() | 75 | }() |
76 | + | ||
76 | var enterChosenAuthenticatorLabel: UILabel = { | 77 | var enterChosenAuthenticatorLabel: UILabel = { |
77 | var label = UILabel() | 78 | var label = UILabel() |
78 | label.text = "Enter your email address" | 79 | label.text = "Enter your email address" |
79 | label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) | 80 | label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16) |
80 | return label | 81 | return label |
81 | }() | 82 | }() |
83 | + | ||
82 | var emailTextField: UITextField = { | 84 | var emailTextField: UITextField = { |
83 | var textField = UITextField() | 85 | var textField = UITextField() |
84 | textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | 86 | textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) |
@@ -93,6 +95,7 @@ class VerificationView: UIView { | @@ -93,6 +95,7 @@ class VerificationView: UIView { | ||
93 | textField.returnKeyType = .done | 95 | textField.returnKeyType = .done |
94 | return textField | 96 | return textField |
95 | }() | 97 | }() |
98 | + | ||
96 | var phoneTextField: TextFieldWithPadding = { | 99 | var phoneTextField: TextFieldWithPadding = { |
97 | var textField = TextFieldWithPadding() | 100 | var textField = TextFieldWithPadding() |
98 | textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) | 101 | textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1) |
@@ -105,6 +108,7 @@ class VerificationView: UIView { | @@ -105,6 +108,7 @@ class VerificationView: UIView { | ||
105 | textField.isHidden = true | 108 | textField.isHidden = true |
106 | return textField | 109 | return textField |
107 | }() | 110 | }() |
111 | + | ||
108 | var verificationDescriptionLabel: UILabel = { | 112 | var verificationDescriptionLabel: UILabel = { |
109 | var label = UILabel() | 113 | var label = UILabel() |
110 | label.numberOfLines = 0 | 114 | label.numberOfLines = 0 |
@@ -113,6 +117,7 @@ class VerificationView: UIView { | @@ -113,6 +117,7 @@ class VerificationView: UIView { | ||
113 | label.font = .systemFont(ofSize: 14, weight: .regular) | 117 | label.font = .systemFont(ofSize: 14, weight: .regular) |
114 | return label | 118 | return label |
115 | }() | 119 | }() |
120 | + | ||
116 | var continueButton: UIButton = { | 121 | var continueButton: UIButton = { |
117 | var button = UIButton() | 122 | var button = UIButton() |
118 | button.setImage(UIImage(named: "RectangleWithShadow"), for: .normal) | 123 | button.setImage(UIImage(named: "RectangleWithShadow"), for: .normal) |
@@ -121,6 +126,7 @@ class VerificationView: UIView { | @@ -121,6 +126,7 @@ class VerificationView: UIView { | ||
121 | button.layer.cornerRadius = 15 | 126 | button.layer.cornerRadius = 15 |
122 | return button | 127 | return button |
123 | }() | 128 | }() |
129 | + | ||
124 | var continueLabel: UILabel = { | 130 | var continueLabel: UILabel = { |
125 | var label = UILabel() | 131 | var label = UILabel() |
126 | label.text = "Continue" | 132 | label.text = "Continue" |
@@ -128,21 +134,25 @@ class VerificationView: UIView { | @@ -128,21 +134,25 @@ class VerificationView: UIView { | ||
128 | label.textColor = .white | 134 | label.textColor = .white |
129 | return label | 135 | return label |
130 | }() | 136 | }() |
137 | + | ||
131 | var pointerImage: UIImageView = { | 138 | var pointerImage: UIImageView = { |
132 | var image = UIImageView() | 139 | var image = UIImageView() |
133 | image.image = UIImage(named: "Pointer") | 140 | image.image = UIImage(named: "Pointer") |
134 | return image | 141 | return image |
135 | }() | 142 | }() |
143 | + | ||
136 | var phonePickerView: PhoneNumberView = { | 144 | var phonePickerView: PhoneNumberView = { |
137 | var view = PhoneNumberView() | 145 | var view = PhoneNumberView() |
138 | view.isUserInteractionEnabled = true | 146 | view.isUserInteractionEnabled = true |
139 | return view | 147 | return view |
140 | }() | 148 | }() |
149 | + | ||
141 | var showPickerButton: UIButton = { | 150 | var showPickerButton: UIButton = { |
142 | var button = UIButton() | 151 | var button = UIButton() |
143 | button.isHidden = true | 152 | button.isHidden = true |
144 | return button | 153 | return button |
145 | }() | 154 | }() |
155 | + | ||
146 | var flagPickerView: UIImageView = { | 156 | var flagPickerView: UIImageView = { |
147 | var image = UIImageView() | 157 | var image = UIImageView() |
148 | image.image = UIImage(named: "USA") | 158 | image.image = UIImage(named: "USA") |
@@ -150,6 +160,7 @@ class VerificationView: UIView { | @@ -150,6 +160,7 @@ class VerificationView: UIView { | ||
150 | image.contentMode = .scaleAspectFit | 160 | image.contentMode = .scaleAspectFit |
151 | return image | 161 | return image |
152 | }() | 162 | }() |
163 | + | ||
153 | var flagPointerView: UIImageView = { | 164 | var flagPointerView: UIImageView = { |
154 | var image = UIImageView() | 165 | var image = UIImageView() |
155 | image.image = UIImage(named: "FlagPointer") | 166 | image.image = UIImage(named: "FlagPointer") |
@@ -18,7 +18,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { | @@ -18,7 +18,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { | ||
18 | window = UIWindow(windowScene: windowScene) | 18 | window = UIWindow(windowScene: windowScene) |
19 | let viewController = VerificationViewController() | 19 | let viewController = VerificationViewController() |
20 | let homeVC = HomeViewController() | 20 | let homeVC = HomeViewController() |
21 | - let navigation = UINavigationController(rootViewController: homeVC) | 21 | + let residentVC = ResidentsViewController() |
22 | + let navigation = UINavigationController(rootViewController: residentVC) | ||
22 | navigation.isNavigationBarHidden = true | 23 | navigation.isNavigationBarHidden = true |
23 | window?.rootViewController = navigation | 24 | window?.rootViewController = navigation |
24 | window?.makeKeyAndVisible() | 25 | window?.makeKeyAndVisible() |
Please
register
or
login
to post a comment