mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 03:37:39 +00:00
almost fully implemented but when opening side menu at items table, closing menu, switch tabs to network views, open menu, close menu, and switch back to items table, userInteraction mysteriously reenabled
373 lines
16 KiB
Swift
373 lines
16 KiB
Swift
//
|
|
// ItemTableViewController.swift
|
|
// Vendoo
|
|
//
|
|
// Created by Okechi Onyeje on 5/26/16.
|
|
// Copyright © 2016 Okechi Onyeje. All rights reserved.
|
|
//
|
|
|
|
/*
|
|
This class will be used to retrieve and manipulate data seen by the end user for he/she's item listings
|
|
*/
|
|
import UIKit
|
|
import TYMActivityIndicatorView
|
|
import SWRevealViewController
|
|
|
|
class ItemTableViewController: UIViewController {
|
|
|
|
//outlet
|
|
@IBOutlet weak var itemTable: UITableView!
|
|
@IBOutlet weak var tableSegmentController: UISegmentedControl!
|
|
|
|
@IBOutlet weak var menuButton: UIBarButtonItem!
|
|
|
|
var loadingView: UIView!
|
|
var selectedListing: Listing!
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// Uncomment the following line to preserve selection between presentations
|
|
// self.clearsSelectionOnViewWillAppear = false
|
|
|
|
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
|
|
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
|
|
|
|
self.tabBarController?.tabBar.hidden = false
|
|
|
|
//set delegates
|
|
self.itemTable.dataSource = self
|
|
self.itemTable.delegate = self
|
|
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(stopIndicator), name: "finished_fetching_listings", object: nil)
|
|
if self.revealViewController() != nil {
|
|
menuButton.target = self.revealViewController()
|
|
(menuButton.target as! SWRevealViewController).delegate = self
|
|
menuButton.action = "revealToggle:"
|
|
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
|
|
}
|
|
|
|
self.loadingView = UIView(frame: self.view.frame)
|
|
self.loadingView.backgroundColor = UIColor.grayColor()
|
|
self.loadingView.alpha = 0.4
|
|
((self.tabBarController as? HomeViewController)?.firebaseManager.indicator)!.center = self.view.center
|
|
|
|
|
|
self.loadingView.addSubview(((self.tabBarController as? HomeViewController)?.firebaseManager.indicator)!)
|
|
self.view.addSubview(loadingView)
|
|
(self.tabBarController as? HomeViewController)?.firebaseManager.indicator.startAnimating()
|
|
|
|
|
|
}
|
|
|
|
|
|
override func viewWillAppear(animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.tabBarController?.tabBar.hidden = false
|
|
}
|
|
override func didReceiveMemoryWarning() {
|
|
super.didReceiveMemoryWarning()
|
|
// Dispose of any resources that can be recreated.
|
|
}
|
|
|
|
|
|
func stopIndicator(){
|
|
(self.tabBarController as? HomeViewController)?.firebaseManager.indicator.stopAnimating()
|
|
self.loadingView.removeFromSuperview()
|
|
self.itemTable.reloadData()
|
|
}
|
|
|
|
|
|
/*
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
// MARK: - IBAction
|
|
extension ItemTableViewController {
|
|
@IBAction func segSwitch(sender: UISegmentedControl) {
|
|
self.itemTable.reloadData()
|
|
}
|
|
}
|
|
|
|
// MARK: - Side Menu View
|
|
extension ItemTableViewController: SWRevealViewControllerDelegate {
|
|
func revealController(revealController: SWRevealViewController!, didMoveToPosition position: FrontViewPosition) {
|
|
if(position == FrontViewPosition.Left) {
|
|
for view in self.view.subviews {
|
|
view.userInteractionEnabled = true
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = true
|
|
} else {
|
|
for view in self.view.subviews {
|
|
if !view.isKindOfClass(UINavigationBar){
|
|
view.userInteractionEnabled = false
|
|
}
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = false
|
|
}
|
|
}
|
|
|
|
func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition) {
|
|
if(position == FrontViewPosition.Left) {
|
|
for view in self.view.subviews {
|
|
view.userInteractionEnabled = true
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = true
|
|
} else {
|
|
for view in self.view.subviews {
|
|
if !view.isKindOfClass(UINavigationBar){
|
|
view.userInteractionEnabled = false
|
|
}
|
|
|
|
}
|
|
self.tabBarController?.tabBar.userInteractionEnabled = false
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - Navigation
|
|
extension ItemTableViewController {
|
|
|
|
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
|
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
|
|
// Get the new view controller using segue.destinationViewController.
|
|
// Pass the selected object to the new view controller.
|
|
|
|
let des = segue.destinationViewController as! ListingPreviewViewController
|
|
var tempImages: [UIImageView] = []
|
|
for uiImage in self.selectedListing.images {
|
|
tempImages.append(UIImageView(image: uiImage))
|
|
}
|
|
let dict:[String:AnyObject] = [
|
|
"pictures": tempImages,
|
|
"title": self.selectedListing.title != nil ? self.selectedListing.title : "",
|
|
"description": self.selectedListing.desc != nil ? self.selectedListing.desc: "",
|
|
"price": self.selectedListing.price != nil ? self.selectedListing.price : "",
|
|
"category": self.selectedListing.category != nil ? self.selectedListing.category : "",
|
|
"quantity": self.selectedListing.quantity != nil ? self.selectedListing.quantity: nil
|
|
]
|
|
|
|
des.setDictionary(self.selectedListing.networks, itemdictionary: dict)
|
|
des.setManagers(
|
|
((self.tabBarController as? HomeViewController)?.fbGraphManager)!,
|
|
fireManager: ((self.tabBarController as? HomeViewController)?.firebaseManager)!,
|
|
ebayManager: ((self.tabBarController as? HomeViewController)?.ebayGraphManager)!,
|
|
etsyManager: ((self.tabBarController as? HomeViewController)?.etsyManager)!
|
|
)
|
|
|
|
if self.selectedListing.isDraft! {
|
|
des.setViewState("Editible")
|
|
}else {
|
|
des.setViewState("NonEditable")
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// MARK: - TableView Datasource methods
|
|
extension ItemTableViewController: UITableViewDataSource{
|
|
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
|
|
// #warning Incomplete implementation, return the number of sections
|
|
return 1
|
|
}
|
|
|
|
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
|
// #warning Incomplete implementation, return the number of rows
|
|
if self.tableSegmentController.selectedSegmentIndex == 0 {
|
|
return ((self.tabBarController as? HomeViewController)?.userListings.count)!
|
|
}
|
|
else if tableSegmentController.selectedSegmentIndex == 1 {
|
|
return ((self.tabBarController as? HomeViewController)?.endedListings.count)!
|
|
}
|
|
else{
|
|
return ((self.tabBarController as? HomeViewController)?.soldListings.count)!
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
|
|
let cell: ItemCell! = (tableView.dequeueReusableCellWithIdentifier("Item Cell", forIndexPath: indexPath) as! ItemCell)
|
|
|
|
// Configure the cell...
|
|
//for each listing cell generated need to find the marketplaces it belongs to, the listing price, the name of the item, the status of the item, and the item image.
|
|
//Once these objects are retrieved, access the ItemCell properties and manipulate as needed
|
|
|
|
if self.tableSegmentController.selectedSegmentIndex == 0 {
|
|
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back
|
|
cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title
|
|
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price
|
|
|
|
//check if item is published
|
|
if((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].isDraft!){
|
|
cell.itemStatus.text = "Status: Unpublished"
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
|
|
cell.alpha = 0.5
|
|
|
|
|
|
})
|
|
|
|
}else {
|
|
cell.itemStatus.text = "Status: Active"
|
|
}
|
|
|
|
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){
|
|
cell.networks.hidden = true
|
|
}else{
|
|
cell.selectedNetworks = []
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
|
|
cell.addNetwork("ebay_icon")
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
|
|
cell.addNetwork("amazon_icon")
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
|
|
cell.addNetwork("etsy_icon")
|
|
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
|
|
cell.addNetwork("facebook_icon")
|
|
}
|
|
cell.networks.reloadData()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
else if tableSegmentController.selectedSegmentIndex == 1 {
|
|
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.endedListings[indexPath.row].images[0] //come back
|
|
cell.itemName.text = (self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].title
|
|
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].price
|
|
|
|
cell.itemStatus.text = "Status: Unsold"
|
|
|
|
if(!((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["areNetworksChosen"])!){
|
|
cell.networks.hidden = true
|
|
}else{
|
|
cell.selectedNetworks = []
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["ebay"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
|
|
cell.addNetwork("ebay_icon")
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["amazon"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
|
|
cell.addNetwork("amazon_icon")
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["etsy"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
|
|
cell.addNetwork("etsy_icon")
|
|
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["facebook"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
|
|
cell.addNetwork("facebook_icon")
|
|
}
|
|
cell.networks.reloadData()
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
else{
|
|
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.soldListings[indexPath.row].images[0] //come back
|
|
cell.itemName.text = (self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].title
|
|
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].price
|
|
|
|
cell.itemStatus.text = "Status: Sold"
|
|
|
|
if(!((self.tabBarController as? HomeViewController)!.soldListings[indexPath.row].networks["areNetworksChosen"])!){
|
|
cell.networks.hidden = true
|
|
}else{
|
|
cell.selectedNetworks = []
|
|
dispatch_async(dispatch_get_main_queue(), {
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["ebay"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))?.hidden = true
|
|
cell.addNetwork("ebay_icon")
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["amazon"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))?.hidden = true
|
|
cell.addNetwork("amazon_icon")
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["etsy"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 2, inSection: 0))?.hidden = true
|
|
cell.addNetwork("etsy_icon")
|
|
|
|
}
|
|
if(((self.tabBarController as? HomeViewController)!.endedListings[indexPath.row].networks["facebook"])!){
|
|
//cell.networks.cellForItemAtIndexPath(NSIndexPath(forRow: 3, inSection: 0))?.hidden = true
|
|
cell.addNetwork("facebook_icon")
|
|
}
|
|
cell.networks.reloadData()
|
|
})
|
|
|
|
}
|
|
}
|
|
|
|
|
|
return cell
|
|
}
|
|
|
|
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
|
|
if self.tableSegmentController.selectedSegmentIndex == 0 {
|
|
self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row]
|
|
}
|
|
else if tableSegmentController.selectedSegmentIndex == 1 {
|
|
self.selectedListing = (self.tabBarController as? HomeViewController)?.endedListings[indexPath.row]
|
|
}
|
|
else{
|
|
self.selectedListing = (self.tabBarController as? HomeViewController)?.soldListings[indexPath.row]
|
|
}
|
|
self.performSegueWithIdentifier("ItemDetailSegue", sender: self)
|
|
}
|
|
}
|
|
|
|
|
|
//MARK: - Tableview Delegate Methods
|
|
extension ItemTableViewController: UITableViewDelegate {
|
|
/*
|
|
// Override to support conditional editing of the table view.
|
|
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
|
|
// Return false if you do not want the specified item to be editable.
|
|
return true
|
|
}
|
|
*/
|
|
|
|
/*
|
|
// Override to support editing the table view.
|
|
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
|
|
if editingStyle == .Delete {
|
|
// Delete the row from the data source
|
|
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
|
|
} else if editingStyle == .Insert {
|
|
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
|
|
}
|
|
}
|
|
*/
|
|
|
|
/*
|
|
// Override to support rearranging the table view.
|
|
override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {
|
|
|
|
}
|
|
*/
|
|
|
|
/*
|
|
// Override to support conditional rearranging of the table view.
|
|
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
|
|
// Return false if you do not want the item to be re-orderable.
|
|
return true
|
|
}
|
|
*/
|
|
}
|
|
|
|
|