mirror of
https://github.com/libretro/RetroArch
synced 2025-02-08 06:40:14 +00:00
77 lines
2.4 KiB
Swift
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
|
|
}
|
|
}
|