summaryrefslogtreecommitdiff
path: root/Example Apps/Example Swift/SubscribeButtonManager.swift
blob: 1bf128c1d88b79903de86fc6465160057bb45ab5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
//  SubscribeButtonManager.swift
//  SmartDeviceLink
//
//  Created by Nicole on 6/19/20.
//  Copyright © 2020 smartdevicelink. All rights reserved.
//

import Foundation
import SmartDeviceLink
import SmartDeviceLinkSwift

class SubscribeButtonManager: NSObject {
    private let sdlManager: SDLManager!
    private let presetButtons: [SDLButtonName] = [.preset0, .preset1, .preset2, .preset3, .preset4, .preset5, .preset6, .preset7]

    init(sdlManager: SDLManager) {
        self.sdlManager = sdlManager
    }

    /// Subscribe to all available preset buttons. An alert will be shown when a preset button is short pressed or long pressed.
    func subscribeToPresetButtons() {
        guard (sdlManager.systemCapabilityManager.defaultMainWindowCapability?.numCustomPresetsAvailable?.intValue ?? 0) > 0 else {
            SDLLog.w("The module does not support preset buttons")
            return
        }

        presetButtons.forEach { buttonName in
            sdlManager.screenManager.subscribeButton(buttonName, withObserver: self, selector: #selector(buttonPressEvent(buttonName:error:buttonPress:)))
        }
    }

    @objc private func buttonPressEvent(buttonName: SDLButtonName, error: Error?, buttonPress: SDLOnButtonPress?) {
        if let error = error {
            SDLLog.e("There was an error subscribing to the preset button: \(error)")
            return
        }

        guard let buttonPress = buttonPress else { return }

        let buttonNameString = buttonName.rawValue.rawValue
        switch buttonPress.buttonPressMode {
        case .short:
            AlertManager.sendAlert(textField1: "\(buttonNameString) short pressed", sdlManager: sdlManager)
        case .long:
            AlertManager.sendAlert(textField1: "\(buttonNameString) long pressed", sdlManager: sdlManager)
        default: fatalError()
        }
    }
}