X-Git-Url: https://git.r.bdr.sh/rbdr/captura/blobdiff_plain/ba17de891507da74fb07423803fd636a4457354c..5802c153cae64142d84e3cd5f762939501ee7e53:/Captura/Data/CapturaURLDecoder.swift?ds=sidebyside diff --git a/Captura/Data/CapturaURLDecoder.swift b/Captura/Data/CapturaURLDecoder.swift index 3fa6412..cbb8a05 100644 --- a/Captura/Data/CapturaURLDecoder.swift +++ b/Captura/Data/CapturaURLDecoder.swift @@ -1,5 +1,20 @@ -import Foundation +/* + Copyright (C) 2024 Rubén Beltrán del Río + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see https://captura.tranquil.systems. + */ +import Foundation protocol ConfigureActionProtocol { var action: String { get } @@ -25,6 +40,8 @@ protocol RecordActionProtocol { var backendOutput: OutputFormatSetting? { get } var keepLocalFiles: Bool? { get } var autoStart: Bool? { get } + var skipBackend: Bool { get } + var maxLength: Int? { get } } // The concrete implementations @@ -51,6 +68,8 @@ struct RecordAction: RecordActionProtocol { var backendOutput: OutputFormatSetting? var keepLocalFiles: Bool? var autoStart: Bool? + var skipBackend: Bool + var maxLength: Int? } enum CapturaAction { @@ -113,15 +132,28 @@ struct CapturaURLDecoder { let keepLocalFiles = Bool(paramsDict["keep_local_files"] as? String ?? "") let outputs = OutputFormatSetting(paramsDict["outputs"] as? String ?? "") var backendOutput = OutputFormatSetting(paramsDict["backend_output"] as? String ?? "") + let autoStart = Bool(paramsDict["auto_start"] as? String ?? "") + var maxLength = Int(paramsDict["max_length"] as? String ?? "") if fps != nil { fps = min(10, max(4, fps!)) } + if maxLength != nil { + maxLength = min(300, max(1, fps!)) + } + if backendOutput == .all { backendOutput = .gifOnly } + var skipBackend = false + if let backendString = paramsDict["backend"] as? String { + if backendString == "" { + skipBackend = true + } + } + return .record(RecordAction( action: action, x: x, @@ -134,7 +166,10 @@ struct CapturaURLDecoder { outputs: outputs, backend: backend, backendOutput: backendOutput, - keepLocalFiles: keepLocalFiles + keepLocalFiles: keepLocalFiles, + autoStart: autoStart, + skipBackend: skipBackend, + maxLength: maxLength )) default: