Parcourir la source

Activity lists can be reloaded after a sync.

Iñigo Valentin il y a 9 ans
Parent
commit
e4bb42113d
2 fichiers modifiés avec 48 ajouts et 41 suppressions
  1. 47 40
      app/ActivitiesView.swift
  2. 1 1
      app/ViewController.swift

+ 47 - 40
app/ActivitiesView.swift

@@ -31,6 +31,12 @@ class ActivitiesView: UIView {
 	@IBOutlet weak var pastSection: Section!
 
 	var delegate: AppDelegate? = nil
+	var storyboard: UIStoryboard? = nil
+	var controller: ViewController? = nil
+	var lang: String? = nil
+	var futureList: UIStackView? = nil
+	var pastList: UiStackView? = nil
+	var context: NSManagedObjectContext? = nil
 	
 	override init(frame: CGRect){
 		super.init(frame: frame)
@@ -48,23 +54,25 @@ class ActivitiesView: UIView {
 		//Load the contents of the HomeView.xib file.
 		Bundle.main.loadNibNamed("ActivitiesView", owner: self, options: nil)
 		self.addSubview(container)
-		container.frame = self.bounds
-		futureSection.setTitle(text: "Próximas actividades")
-		pastSection.setTitle(text: "Últimas actividades")
-		let futureParent = futureSection.getContentStack()
-		let pastParent = pastSection.getContentStack()
+		self.container.frame = self.bounds
+		self.futureSection.setTitle(text: "Próximas actividades")
+		self.pastSection.setTitle(text: "Últimas actividades")
+		self.futureList = self.futureSection.getContentStack()
+		self.pastList = self.pastSection.getContentStack()
 		
 		// Get viewController from StoryBoard
-		let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
-		let controller = storyboard.instantiateViewController(withIdentifier: "GMViewController") as! ViewController
-		
-		
-		let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
-		let appDelegate = UIApplication.shared.delegate as! AppDelegate
-		self.delegate = appDelegate
-		let lang : String = getLanguage()
+		self.storyboard = UIStoryboard(name: "Main", bundle: nil)
+		self.controller = self.storyboard.instantiateViewController(withIdentifier: "GMViewController") as! ViewController
+		self.context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
+		self.delegate = UIApplication.shared.delegate as! AppDelegate
+		self.lang = self.getLanguage()
 		context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
+
+		// Populate activity lists.
+		populate()
+	}
 		
+	func populate(){
 		// Show future activities
 		var fetchRequest: NSFetchRequest<Activity> = Activity.fetchRequest()
 		var sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
@@ -73,16 +81,15 @@ class ActivitiesView: UIView {
 		fetchRequest.predicate = NSPredicate(format: "date > %@", NSDate())
 		
 		do {
-			let searchResults = try context.fetch(fetchRequest)
-			NSLog(":ACTIVITIES:DEBUG: Total future activities: \(searchResults.count)")
-			if searchResults.count == 0{
-				NSLog(":ACTIVITIES:DEBUG: No future activities: \(searchResults.count)")
+			let searchResults = try self.context?.fetch(fetchRequest)
+			NSLog(":ACTIVITIES:DEBUG: Total future activities: \(searchResults?.count)")
+			if searchResults?.count == 0{
+				NSLog(":ACTIVITIES:DEBUG: No future activities: \(searchResults?.count)")
 				let row: RowLabel = RowLabel.init(s: "rowFutureActivity0", i: 0)
 				row.setText(text: "No hay actividades planeadas proximamente. Pronto organizaremos algo!")
-				futureParent.addArrangedSubview(row)
+				self.futureList.addArrangedSubview(row)
 			}
 			else{
-
 			
 				var row : RowFutureActivity
 				var count = 0
@@ -94,7 +101,7 @@ class ActivitiesView: UIView {
 				var price: Int
 				var date: NSDate
 			
-				for r in searchResults as [NSManagedObject] {
+				for r in searchResults? as [NSManagedObject] {
 					count = count + 1
 					NSLog(":ACTIVITIES:DEBUG: Activity perm: \(r.value(forKey: "permalink"))")
 				
@@ -131,21 +138,21 @@ class ActivitiesView: UIView {
 						NSLog(":ACTIVITIES:ERROR: Error getting image for activity \(id): \(error)")
 					}
 				
-					futureParent.addArrangedSubview(row)
-					row.setNeedsLayout()
-					row.layoutIfNeeded()
+					self.futureList.addArrangedSubview(row)
+					//row.setNeedsLayout()
+					//row.layoutIfNeeded()
 				
 					// TODO: Do this on the row didLoad method
 					// Set tap recognizer
 					//let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(openActivity(_:)))
 					//row.isUserInteractionEnabled = true
 					//row.addGestureRecognizer(tapRecognizer)
-				
-				
-				
 				}
+				self.futureList.setNeedsLayout()
+				self.futureList.layoutIfNeeded()
 			}
-		} catch {
+		}
+		catch {
 			NSLog(":ACTIVITIES:ERROR: Error with request: \(error)")
 		}
 		
@@ -159,11 +166,11 @@ class ActivitiesView: UIView {
 		fetchRequest.predicate = NSPredicate(format: "date < %@", NSDate())
 		
 		do {
-			let searchResults = try context.fetch(fetchRequest)
-			NSLog(":ACTIVITIES:DEBUG: Total past activities: \(searchResults.count)")
+			let searchResults = try self.context.fetch(fetchRequest)
+			NSLog(":ACTIVITIES:DEBUG: Total past activities: \(searchResults?.count)")
 			
-			var row : RowPastActivity
-			var count = 0
+			var row: RowPastActivity
+			var count: Int = 0
 			var id: Int
 			var title: String
 			var text: String
@@ -190,31 +197,31 @@ class ActivitiesView: UIView {
 				imgFetchRequest.predicate = NSPredicate(format: "activity == %i", id)
 				imgFetchRequest.fetchLimit = 1
 				do{
-					let imgSearchResults = try context.fetch(imgFetchRequest)
-					for imgR in imgSearchResults as [NSManagedObject]{
+					let imgSearchResults = try self.context.fetch(imgFetchRequest)
+					for imgR in imgSearchResults? as [NSManagedObject]{
 						image = imgR.value(forKey: "image")! as! String
 						NSLog(":ACTIVITIES:DEBUG: Image: \(image)")
 						row.setImage(filename: image)
 					}
-				} catch {
+				}
+				catch {
 					NSLog(":ACTIVITIES:ERROR: Error getting image for activity \(id): \(error)")
 				}
 				
 				NSLog(":ACTIVITIES:DEBUG: Row height: \(row.frame.height)")
 				
-				pastParent.addArrangedSubview(row)
-				row.setNeedsLayout()
-				row.layoutIfNeeded()
+				self.pastList.addArrangedSubview(row)
+				//row.setNeedsLayout()
+				//row.layoutIfNeeded()
 				
 				// TODO: Do this on the row didLoad method
 				// Set tap recognizer
 				//let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(openActivity(_:)))
 				//row.isUserInteractionEnabled = true
 				//row.addGestureRecognizer(tapRecognizer)
-				
-				
-				
 			}
+			self.pastList.setNeedsLayout()
+			self.pastList.layoutIfNeeded()
 		} catch {
 			NSLog(":ACTIVITIES:ERROR: Error with request: \(error)")
 		}

+ 1 - 1
app/ViewController.swift

@@ -166,7 +166,7 @@ class ViewController: UIViewController, UICollectionViewDataSource, UICollection
 		self.containerViewHome.populate()
 		//self.containerLocation.populate()
 		//self.containerLablanca.populate()
-		//self.containerActivities.populate()
+		self.containerActivities.populate()
 		//self.containerBlog.populate()
 		//self.containerGallery.populate()
 	}