//
//  AppDelegate.swift
//  DhawaAlkhreej
//
//  Created by Abdullah Alhaider on 17/05/2019.
//  Copyright © 2019 DhawaAlkhreej. All rights reserved.
//
import UIKit
import IQKeyboardManagerSwift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        setupDependencies()
        window?.tintColor = UIColor.primary        
        return true
    }
    
    private func setupDependencies() {
        IQKeyboardManager.shared.enable = true
        IQKeyboardManager.shared.toolbarDoneBarButtonItemText = "تم"
        IQKeyboardManager.shared.placeholderColor = UIColor.brownTextColor
        IQKeyboardManager.shared.toolbarTintColor = UIColor.primary
    }

    func application(_ application: UIApplication,
                     performActionFor shortcutItem: UIApplicationShortcutItem,
                     completionHandler: @escaping (Bool) -> Void) {
        
        guard let tabBar = UIApplication.topViewController() else { return }
        
        switch shortcutItem.type {
        case "net.alhaider.search":
            tabBar.tabBarController?.selectedIndex = 0
        case "net.alhaider.calculate":
            tabBar.tabBarController?.selectedIndex = 1
        case "net.alhaider.viewMajors":
            tabBar.tabBarController?.selectedIndex = 2
        case "net.alhaider.showFavorite":
            tabBar.tabBarController?.selectedIndex = 3
        default:
            break
        }
    }
    
    func applicationWillResignActive(_ application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur
        // for certain types of temporary interruptions (such as an incoming phone call or SMS message) or
        // when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks.
        // Games should use this method to pause the game.
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and
        // store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of
        // applicationWillTerminate: when the user quits.
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        // Called as part of the transition from the background to the active state;
        // here you can undo many of the changes made on entering the background.
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive.
        // If the application was previously in the background, optionally refresh the user interface.
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }

}
