Last active
April 13, 2018 15:24
-
-
Save chashmeetsingh/dae5cac0dde88aaba20007e2e40a619e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// DrawerViewController.swift | |
// GPS Info | |
// | |
// Created by Chashmeet Singh on 16/03/18. | |
// Copyright © 2018 Chashmeet Singh. All rights reserved. | |
// | |
import UIKit | |
import KYDrawerController | |
import CoreData | |
class DrawerViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout { | |
let draweritems = ["Logout"] | |
let drawerIcons = ["ic_arrow_back"] | |
private let cellId = "cellId" | |
private let headerViewId = "headerViewId" | |
var appDelegate: AppDelegate? | |
var menuButton: UIButton? | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
setupView() | |
appDelegate = UIApplication.shared.delegate as? AppDelegate | |
} | |
func setupView() { | |
collectionView?.backgroundColor = UIColor.white | |
collectionView?.alwaysBounceVertical = true | |
collectionView?.register(DrawerCollectionViewCell.self, forCellWithReuseIdentifier: cellId) | |
collectionView?.register(HeaderCollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: headerViewId) | |
} | |
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { | |
return draweritems.count | |
} | |
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { | |
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath as IndexPath) as! DrawerCollectionViewCell | |
let text = draweritems[indexPath.row] | |
cell.backgroundColor = .white | |
let imageName = drawerIcons[indexPath.row] | |
cell.label.text = text | |
cell.imageView.image = UIImage(named: imageName)?.withRenderingMode(.alwaysTemplate) | |
return cell | |
} | |
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { | |
return CGSize(width: collectionView.frame.width, height: 36) | |
} | |
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { | |
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: headerViewId, for: indexPath) as! HeaderCollectionReusableView | |
headerView.usernameLabel.text = Client.sharedInstance.user!.username | |
return headerView | |
} | |
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { | |
return CGSize(width: collectionView.frame.width, height: 120) | |
} | |
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { | |
switch (indexPath.row) { | |
case self.draweritems.index(of: "Logout")!: | |
logout() | |
break | |
default: | |
break | |
} | |
} | |
func logout() { | |
let alertController = UIAlertController(title: "Are you sure?", message: nil, preferredStyle: .alert) | |
let logoutAction = UIAlertAction(title: NSLocalizedString("Logout", comment: ""), style: .default, handler: { (pAlert) in | |
Client.sharedInstance.logout() | |
self.deleteSOSAlerts() | |
self.dismiss(animated: true, completion: nil) | |
}) | |
let cancelAction = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .default, handler: { (pAlert) in | |
// | |
}) | |
alertController.addAction(cancelAction) | |
alertController.addAction(logoutAction) | |
self.present(alertController, animated: true, completion: nil) | |
} | |
@objc func openDrawer() { | |
if let drawerController = parent as? KYDrawerController { | |
drawerController.setDrawerState(.closed, animated: true) | |
} | |
} | |
func deleteSOSAlerts() { | |
let appDelegate = UIApplication.shared.delegate as! AppDelegate | |
let context = appDelegate.persistentContainer.viewContext | |
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "SOSAlert") | |
do { | |
let result = try context.fetch(request) | |
//alerts = (result as! [NSManagedObject]) | |
for alert in result as! [NSManagedObject] { | |
context.delete(alert) | |
} | |
try context.save() | |
} catch { | |
print("Failed") | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment