Explorar o código

Small fixes, better logging, comments and documentation.

Iñigo Valentin %!s(int64=9) %!d(string=hai) anos
pai
achega
b159b50fe8
Modificáronse 1 ficheiros con 82 adicións e 67 borrados
  1. 82 67
      app/HomeView.swift

+ 82 - 67
app/HomeView.swift

@@ -21,18 +21,16 @@
 import Foundation
 import CoreData
 import UIKit
+
+
 /**
- Class to handle the home view.
- */
+Class to handle the home view.
+*/
 class HomeView: UIView {
 	
-	//The main scroll view.
+	// Outlets
 	@IBOutlet weak var scrollView: UIScrollView!
-	
-	//The container of the view.
 	@IBOutlet weak var container: UIView!
-	
-	//Each of the sections of the view.
 	@IBOutlet weak var locationSection: Section!
 	@IBOutlet weak var lablancaSection: Section!
 	@IBOutlet weak var futureActivitiesSection: Section!
@@ -45,24 +43,31 @@ class HomeView: UIView {
 	var moc: NSManagedObjectContext? = nil
 	var appDelegate: AppDelegate? = nil
 	
+	
+	/**
+	Run when the view is started.
+	:param: frame Frame for the view.
+	*/
 	override init(frame: CGRect){
 		super.init(frame: frame)
 	}
 	
+	
 	/**
-	 Run when the view is started.
+	Run when the view is started.
+	:param: coder Application decoder.
 	*/
 	required init?(coder aDecoder: NSCoder) {
 		
 		super.init(coder: aDecoder)
 		
-		//Load the contents of the HomeView.xib file.
+		// Load the contents of the HomeView.xib file.
 		Bundle.main.loadNibNamed("HomeView", owner: self, options: nil)
 		self.addSubview(container)
 		container.frame = self.bounds
 		
 
-		//Set titles for each section
+		// Set titles for each section
 		locationSection.setTitle(text: "Encuentranos")
 		lablancaSection.setTitle(text: "La Blanca")
 		futureActivitiesSection.setTitle(text: "Proximas actividades")
@@ -71,13 +76,13 @@ class HomeView: UIView {
 		pastActivitiesSection.setTitle(text: "Ultimas actividades")
 		socialSection.setTitle(text: "Siguenos")
 		
-		//Get info to populate sections
+		// Get info to populate sections
 		self.moc = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
 		self.appDelegate = UIApplication.shared.delegate as! AppDelegate
 		self.moc?.persistentStoreCoordinator = appDelegate?.persistentStoreCoordinator
 		self.lang = getLanguage()
 		
-		//Populate sections
+		// Populate sections
 		self.populate()
 		
 		
@@ -92,11 +97,14 @@ class HomeView: UIView {
 		//self.scrollView.contentSize.height = 1300// CGFloat(h);
 	}
 
+	
 	/**
-	 Triggers a reloading (or initial loading) of all sections.
+	Triggers a reloading (or initial loading) of all sections.
 	*/
 	func populate(){
 		
+		NSLog(":HOME:DEBUG: Populating home view.")
+		
 		//Populate sections
 		self.setUpPastActivities(context: self.moc!, delegate: appDelegate!, lang: self.lang!, parent: self.pastActivitiesSection.getContentStack())
 		self.setUpBlog(context: self.moc!, delegate: self.appDelegate!, lang: self.lang!, parent: self.blogSection.getContentStack())
@@ -106,6 +114,11 @@ class HomeView: UIView {
 		self.pastActivitiesSection.expandSection()
 	}
 	
+	
+	/**
+	Retrieves the device language. The only available ones are Spanish, English and Basque.
+	:return: Two letter language code (en, eu, es). If other, spanish will be selected.
+	*/
 	func getLanguage() -> String{
 		let pre = NSLocale.preferredLanguages[0].subStr(start: 0, end: 1)
 		if(pre == "es" || pre == "en" || pre == "eu"){
@@ -116,9 +129,17 @@ class HomeView: UIView {
 		}
 	}
 	
+	
+	/**
+	Sets the future activities section.
+	Loads up to two future activities.
+	:param: context Aplication context.
+	:param: delegate Application delegate.
+	:param: lang Device language. Two letter code. Accepts 'es', 'en' and 'eu'.
+	:param: parent View where the rows will be loaded.
+	*/
 	func setUpFutureActivities(context : NSManagedObjectContext, delegate: AppDelegate, lang: String, parent : UIStackView){
 		
-		//context.persistentStoreCoordinator = delegate.persistentStoreCoordinator
 		let fetchRequest: NSFetchRequest<Activity> = Activity.fetchRequest()
 		let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
 		let sortDescriptors = [sortDescriptor]
@@ -127,11 +148,8 @@ class HomeView: UIView {
 		fetchRequest.fetchLimit = 2
 		
 		do {
-			//go get the results
 			let searchResults = try context.fetch(fetchRequest)
-			
-			//I like to check the size of the returned results!
-			print ("Activities: \(searchResults.count)")
+			NSLog(":HOME:DEBUG: Future activity count: \(searchResults.count)")
 			
 			var row : RowHomePastActivities
 			var count = 0
@@ -140,19 +158,14 @@ class HomeView: UIView {
 			var text: String
 			var image: String
 			
-			//You need to convert to NSManagedObject to use 'for' loops
 			for r in searchResults as [NSManagedObject] {
 				count = count + 1
-				//get the Key Value pairs (although there may be a better way to do that...
-				print("Perm: \(r.value(forKey: "permalink"))")
-				
 				
 				//Create a new row
 				row = RowHomePastActivities.init(s: "rowHomeFutureActivities\(count)", i: count)
 				id = r.value(forKey: "id")! as! Int
 				title = r.value(forKey: "title_\(lang)")! as! String
 				text = r.value(forKey: "text_\(lang)")! as! String
-				print(title)
 				row.setTitle(text: title)
 				row.setText(text: text)
 				
@@ -168,26 +181,30 @@ class HomeView: UIView {
 					let imgSearchResults = try context.fetch(imgFetchRequest)
 					for imgR in imgSearchResults as [NSManagedObject]{
 						image = imgR.value(forKey: "image")! as! String
-						print ("IMAGE: \(image)")
 						row.setImage(filename: image)
 					}
 				} catch {
-					print("Error getting image for activity \(id): \(error)")
+					NSLog(":HOME:ERROR: Error getting image for futureactivity \(id): \(error)")
 				}
-				
-				print("Row height: \(row.frame.height)")
-				
 				parent.addArrangedSubview(row)
 				
 			}
 		} catch {
-			print("Error with request: \(error)")
+			NSLog(":HOME:ERROR: Error setting the future activities section up: \(error)")
 		}
 	}
 	
+	
+	/**
+	Sets the blog section.
+	Loads up to two posts.
+	:param: context Aplication context.
+	:param: delegate Application delegate.
+	:param: lang Device language. Two letter code. Accepts 'es', 'en' and 'eu'.
+	:param: parent View where the rows will be loaded.
+	*/
 	func setUpBlog(context : NSManagedObjectContext, delegate: AppDelegate, lang: String, parent : UIStackView){
 		
-		//context.persistentStoreCoordinator = delegate.persistentStoreCoordinator
 		let fetchRequest: NSFetchRequest<Post> = Post.fetchRequest()
 		let sortDescriptor = NSSortDescriptor(key: "dtime", ascending: false)
 		let sortDescriptors = [sortDescriptor]
@@ -195,11 +212,8 @@ class HomeView: UIView {
 		fetchRequest.fetchLimit = 2
 		
 		do {
-			//go get the results
 			let searchResults = try context.fetch(fetchRequest)
-			
-			//I like to check the size of the returned results!
-			print ("Post: \(searchResults.count)")
+			NSLog(":HOME:DEBUG: Post count: \(searchResults.count)")
 			
 			var row : RowHomeBlog
 			var count = 0
@@ -208,12 +222,8 @@ class HomeView: UIView {
 			var text: String
 			var image: String
 			
-			//You need to convert to NSManagedObject to use 'for' loops
 			for r in searchResults as [NSManagedObject] {
 				count = count + 1
-				//get the Key Value pairs (although there may be a better way to do that...
-				print("Perm: \(r.value(forKey: "permalink"))")
-				
 				
 				//Create a new row
 				row = RowHomeBlog.init(s: "rowHomeBlog\(count)", i: count)
@@ -237,15 +247,12 @@ class HomeView: UIView {
 					let imgSearchResults = try context.fetch(imgFetchRequest)
 					for imgR in imgSearchResults as [NSManagedObject]{
 						image = imgR.value(forKey: "image")! as! String
-						print ("IMAGE: \(image)")
 						row.setImage(filename: image)
 					}
 				} catch {
-					print("Error getting image for post \(id): \(error)")
+					NSLog(":HOME:ERROR: Error getting image for post \(id): \(error)")
 				}
 				
-				print("Row height: \(row.frame.height)")
-				
 				parent.addArrangedSubview(row)
 				
 				let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(openPost(_:)))
@@ -254,13 +261,21 @@ class HomeView: UIView {
 				
 			}
 		} catch {
-			print("Error with request: \(error)")
+			NSLog(":HOME:ERROR: Error setting the blog section up: \(error)")
 		}
 	}
 	
+	
+	/**
+	Sets the past activities section.
+	Loads up to two past activities.
+	:param: context Aplication context.
+	:param: delegate Application delegate.
+	:param: lang Device language. Two letter code. Accepts 'es', 'en' and 'eu'.
+	:param: parent View where the rows will be loaded.
+	*/
 	func setUpPastActivities(context : NSManagedObjectContext, delegate: AppDelegate, lang: String, parent : UIStackView){
 		
-		//context.persistentStoreCoordinator = delegate.persistentStoreCoordinator
 		let fetchRequest: NSFetchRequest<Activity> = Activity.fetchRequest()
 		let sortDescriptor = NSSortDescriptor(key: "date", ascending: false)
 		let sortDescriptors = [sortDescriptor]
@@ -269,11 +284,8 @@ class HomeView: UIView {
 		fetchRequest.fetchLimit = 2
 		
 		do {
-			//go get the results
 			let searchResults = try context.fetch(fetchRequest)
-			
-			//I like to check the size of the returned results!
-			print ("Activities: \(searchResults.count)")
+			NSLog(":HOME:LOG: Setting past activities up. Count: \(searchResults.count)")
 			
 			var row : RowHomePastActivities
 			var count = 0
@@ -282,12 +294,8 @@ class HomeView: UIView {
 			var text: String
 			var image: String
 			
-			//You need to convert to NSManagedObject to use 'for' loops
 			for r in searchResults as [NSManagedObject] {
 				count = count + 1
-				//get the Key Value pairs (although there may be a better way to do that...
-				print("Perm: \(r.value(forKey: "permalink"))")
-				
 				
 				//Create a new row
 				row = RowHomePastActivities.init(s: "rowHomePastActivities\(count)", i: count)
@@ -311,32 +319,35 @@ class HomeView: UIView {
 					let imgSearchResults = try context.fetch(imgFetchRequest)
 					for imgR in imgSearchResults as [NSManagedObject]{
 						image = imgR.value(forKey: "image")! as! String
-						print ("IMAGE: \(image)")
 						row.setImage(filename: image)
 					}
 				} catch {
-					print("Error getting image for activity \(id): \(error)")
+					NSLog(":HOME:ERROR: Error getting image for past activity \(id): \(error)")
 				}
 				
-				print("Row height: \(row.frame.height)")
-				
 				parent.addArrangedSubview(row)
 				
 			}
 		} catch {
-			print("Error with request: \(error)")
+			NSLog(":HOME:ERROR: Error setting the past activities section up: \(error)")
 		}
 	}
 	
+	/**
+	Sets the fgallery section.
+	Loads up to four photos.
+	:param: context Aplication context.
+	:param: delegate Application delegate.
+	:param: parent View where the rows will be loaded.
+	*/
 	func setUpGallery(context : NSManagedObjectContext, delegate: AppDelegate,parent: UIStackView){
-		print("HOME:LOG: Setting up gallery.")
+		NSLog(":HOME:LOG: Setting gallery section up.")
 		
 		// Create the row
 		var row: RowHomeGallery
 		row = RowHomeGallery.init(s: "rowHomeGallery", i: 0)
 		parent.addArrangedSubview(row)
 		
-		
 		// Set images
 		let fetchRequest: NSFetchRequest<Photo> = Photo.fetchRequest()
 		let sortDescriptor = NSSortDescriptor(key: "uploaded", ascending: false)
@@ -345,10 +356,7 @@ class HomeView: UIView {
 		fetchRequest.fetchLimit = 4
 		
 		do {
-			//go get the results
 			let searchResults = try context.fetch(fetchRequest)
-	
-			var id: Int
 			var image: String
 			
 			// Loop images
@@ -365,24 +373,31 @@ class HomeView: UIView {
 			
 		}
 		catch{
-			print("HOME:ERROR: Error setting gallery up: \(error)")
+			NSLog(":HOME:ERROR: Error setting gallery up: \(error)")
 		}
 		
 	}
 	
+	/**
+	Sets the social section.
+	:param: parent View where the rows will be loaded.
+	*/
 	func setUpSocial(parent : UIStackView){
-		print("SETING UP SOCIAL")
+		NSLog(":HOME:LOG: Setting soceial section up.")
 		//Create a new row
 		var row : RowHomeSocial
 		row = RowHomeSocial.init(s: "rowHomeSocial", i: 0)
-		print("ROW CREATED")
 		parent.addArrangedSubview(row)
 	}
 	
+	/**
+	opens the blog section, showing a post.
+	:param: sender: View calling the function.
+	*/
 	func openPost(_ sender:UITapGestureRecognizer? = nil){
-		print("HOME:DEBUG: getting delegate and showing post.")
+		NSLog(":HOME:DEBUG: Getting delegate and showing post.")
 		let delegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
 		delegate.controller?.showPost(id: (sender?.view as! RowHomeBlog).id)
-		print("HOME:DEBUG: Post should be shown.")
+		NSLog(":HOME:DEBUG: Post should be shown.")
 	}
 }