RetroArch/pkg/apple/HelperBar/CocoaView+HelperBar.swift
2023-08-29 03:30:52 -07:00

77 lines
2.4 KiB
Swift

//
// CocoaView+HelperBar.swift
// RetroArchiOS
//
// Created by Yoshi Sugawara on 2/21/22.
// Copyright © 2022 RetroArch. All rights reserved.
//
protocol HelperBarActionDelegate: AnyObject {
func keyboardButtonTapped()
func mouseButtonTapped()
func helpButtonTapped()
func orientationLockButtonTapped()
var isKeyboardEnabled: Bool { get }
var isMouseEnabled: Bool { get }
var isOrientationLocked: Bool { get }
}
extension CocoaView {
@objc func setupHelperBar() {
let helperVC = HelperBarViewController()
let viewModel = HelperBarViewModel(delegate: helperVC, actionDelegate: self)
helperVC.viewModel = viewModel
addChild(helperVC)
helperVC.didMove(toParent: self)
helperBarView = helperVC.view
helperBarView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(helperBarView)
helperBarView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
helperBarView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
helperBarView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
helperBarView.heightAnchor.constraint(equalToConstant: 75).isActive = true
}
}
extension CocoaView: HelperBarActionDelegate {
func keyboardButtonTapped() {
toggleCustomKeyboard()
}
func mouseButtonTapped() {
mouseHandler.enabled.toggle()
let messageKey = mouseHandler.enabled ? MSG_IOS_TOUCH_MOUSE_ENABLED : MSG_IOS_TOUCH_MOUSE_DISABLED
let message = msg_hash_to_str(messageKey)
runloop_msg_queue_push(message, 1, 100, true, nil, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO)
}
func helpButtonTapped() {
}
func orientationLockButtonTapped() {
#if os(iOS)
shouldLockCurrentInterfaceOrientation.toggle()
if shouldLockCurrentInterfaceOrientation {
let currentOrientation = UIApplication.shared.windows.first?.windowScene?.interfaceOrientation ?? UIInterfaceOrientation.portrait
self.lockInterfaceOrientation = currentOrientation
}
if #available(iOS 16, *) {
setNeedsUpdateOfSupportedInterfaceOrientations()
}
#endif
}
var isKeyboardEnabled: Bool {
!keyboardController.view.isHidden
}
var isMouseEnabled: Bool {
mouseHandler.enabled
}
var isOrientationLocked: Bool {
shouldLockCurrentInterfaceOrientation
}
}