123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- //
- // O2AppViewController.swift
- // O2Platform
- //
- // Created by 刘振兴 on 16/7/25.
- // Copyright © 2016年 zoneland. All rights reserved.
- //
- import UIKit
- import WebKit
- import SwiftyJSON
- import Alamofire
- import ObjectMapper
- import AlamofireObjectMapper
- import Flutter
- import CocoaLumberjack
- class O2AppViewController: UIViewController{
-
- @IBOutlet weak var collectionView: UICollectionView!
-
-
- private let reuseIdentifier = "myCell"
-
- // let loadUrl1 = AppDelegate.o2Collect.genrateURLWithWebContextKey2(ApplicationContext.applicationListQuery2,parameter: nil)
- //
- // let loadUrl2 = AppDelegate.o2Collect.generateURLWithAppContextKey(ApplicationContext.applicationContextKey2, query: ApplicationContext.applicationListQueryForPortal, parameter: nil)
-
- fileprivate let collectionViewDelegate = ZLCollectionView()
-
- var o2apps:[O2App] = []
- var apps2:[[O2App]] = [[],[]]
- override func viewDidLoad() {
- super.viewDidLoad()
- self.title = "应用"
- navigationItem.rightBarButtonItem = UIBarButtonItem(title: "编辑", style: .plain, target: self, action: #selector(_forwardEditSegue))
- //self.collectionView.contentInset = UIEdgeInsetsMake(160, 0, 0, 0)
- self.collectionViewDelegate.delegate = self
- //self.collectionViewDelegate.cellHeight = Float(self.collectionViewDelegate.ItemWithSize) * 2
- self.collectionView.dataSource = self.collectionViewDelegate
- self.collectionView.delegate = self.collectionViewDelegate
- self.o2apps = []
- self.apps2 = []
- //self.loadAppConfigDb()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- self.loadAppConfigDb()
- }
-
- func loadAppConfigDb() {
- let mainApps = DBManager.shared.queryMainData()
- o2apps = mainApps
- let allApps = DBManager.shared.queryData()
- apps2 = [mainApps,allApps]
- self.collectionViewDelegate.apps = apps2
- DispatchQueue.main.async {
- self.collectionView.reloadData()
- }
- }
-
- @objc private func _forwardEditSegue() {
- self.performSegue(withIdentifier: "showAppEditSegue", sender: nil)
- }
-
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- }
-
- override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
- if segue.identifier == "showMailSegue" {
- segue.destination.modalPresentationStyle = .fullScreen
- if let nav = segue.destination as? ZLNavigationController {
- nav.viewControllers.forEach { (vc) in
- if vc is MailViewController {
- DDLogDebug("显示门户。。。。")
- (vc as! MailViewController).app = sender as? O2App
- }
- }
- }else if let mail = segue.destination as? MailViewController {
- mail.app = sender as? O2App
- }
- }
- }
- @IBAction func unBackAppsForApps(_ segue:UIStoryboardSegue){
- DDLogDebug("返回应用列表")
- }
-
- // MARK: - Flutter
- //打开flutter应用
- /**
- @param routeName flutter的路由 打开不同的页面
- **/
- func openFlutterApp(routeName: String) {
- let flutterViewController = O2FlutterViewController()
- DDLogDebug("init route:\(routeName)")
- flutterViewController.setInitialRoute(routeName)
- self.present(flutterViewController, animated: false, completion: nil)
- }
-
- }
- extension O2AppViewController:ZLCollectionViewDelegate{
- func clickWithApp(_ app: O2App) {
- if let flutter = app.storyBoard, flutter == "flutter" {
- openFlutterApp(routeName: app.appId!)
- }else {
- //设置返回标志,其它应用根据此返回标志调用返回unwindSegue
- AppConfigSettings.shared.appBackType = 2
- if let segueIdentifier = app.segueIdentifier,segueIdentifier != "" { // portal 门户 走这边
- if app.storyBoard! == "webview" { // 打开MailViewController
- DDLogDebug("open webview for : "+app.title!+" url: "+app.vcName!)
- self.performSegue(withIdentifier: segueIdentifier, sender: app)
- }else {
- self.performSegue(withIdentifier: segueIdentifier, sender: nil)
- }
-
- } else {
- if app.storyBoard! == "webview" {
- DDLogError("321 open webview for : "+app.title!+" url: "+app.vcName!)
- } else {
- // 内置应用走这边 根据appkey 打开对应的storyboard
- if app.appId == "o2ai" {
- app.storyBoard = "ai"
- }
- let story = O2AppUtil.apps.first { (appInfo) -> Bool in
- return app.appId == appInfo.appId
- }
- var storyBoardName = app.storyBoard
- if story != nil {
- storyBoardName = story?.storyBoard
- }
- DDLogDebug("storyboard: \(storyBoardName!) , app:\(app.appId!)")
- ///新版云盘 2019-11-20
- if storyBoardName == "cloudStorage" {
- storyBoardName = "CloudFile"
- }
- ////
- let storyBoard = UIStoryboard(name: storyBoardName!, bundle: nil)
- var destVC:UIViewController!
- if let vcname = app.vcName,vcname.isEmpty == false {
- destVC = storyBoard.instantiateViewController(withIdentifier: app.vcName!)
- }else{
- destVC = storyBoard.instantiateInitialViewController()
- }
-
- if app.vcName == "todoTask" {
- if "taskcompleted" == app.appId {
- AppConfigSettings.shared.taskIndex = 2
- }else if "read" == app.appId {
- AppConfigSettings.shared.taskIndex = 1
- }else if "readcompleted" == app.appId {
- AppConfigSettings.shared.taskIndex = 3
- }else {
- AppConfigSettings.shared.taskIndex = 0
- }
- }
- destVC.modalPresentationStyle = .fullScreen
- if destVC.isKind(of: ZLNavigationController.self) {
- DDLogInfo("cloudFIle 进来了?")
- self.show(destVC, sender: nil)
- }else{
- self.navigationController?.pushViewController(destVC, animated: true)
- }
-
- }
- }
- }
- }
- }
- extension O2AppViewController:AppEditControllerUpdater {
- func appEditControllerUpdater() {
- self.loadAppConfigDb()
- }
- }
|