dolphin/Source/Android/jni/Input/ControlGroup.cpp
JosJuice 2113bf5e3a Android: Implement enabling/disabling control groups
All this code for just a single checkbox... Ah well, it has to be done
2023-03-03 22:28:24 +01:00

104 lines
3.2 KiB
C++

// Copyright 2022 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "jni/Input/ControlGroup.h"
#include <jni.h>
#include "Common/MsgHandler.h"
#include "InputCommon/ControllerEmu/ControlGroup/Attachments.h"
#include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h"
#include "jni/AndroidCommon/AndroidCommon.h"
#include "jni/AndroidCommon/IDCache.h"
#include "jni/Input/Control.h"
#include "jni/Input/NumericSetting.h"
static ControllerEmu::ControlGroup* GetPointer(JNIEnv* env, jobject obj)
{
return reinterpret_cast<ControllerEmu::ControlGroup*>(
env->GetLongField(obj, IDCache::GetControlGroupPointer()));
}
jobject ControlGroupToJava(JNIEnv* env, ControllerEmu::ControlGroup* group)
{
if (!group)
return nullptr;
return env->NewObject(IDCache::GetControlGroupClass(), IDCache::GetControlGroupConstructor(),
reinterpret_cast<jlong>(group));
}
extern "C" {
JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getUiName(
JNIEnv* env, jobject obj)
{
return ToJString(env, Common::GetStringT(GetPointer(env, obj)->ui_name.c_str()));
}
JNIEXPORT jint JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getGroupType(
JNIEnv* env, jobject obj)
{
return static_cast<jint>(GetPointer(env, obj)->type);
}
JNIEXPORT jint JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getDefaultEnabledValue(
JNIEnv* env, jobject obj)
{
return static_cast<jint>(GetPointer(env, obj)->default_value);
}
JNIEXPORT jboolean JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getEnabled(
JNIEnv* env, jobject obj)
{
return static_cast<jboolean>(GetPointer(env, obj)->enabled);
}
JNIEXPORT void JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_setEnabled(
JNIEnv* env, jobject obj, jboolean value)
{
GetPointer(env, obj)->enabled = value;
}
JNIEXPORT jint JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getControlCount(
JNIEnv* env, jobject obj)
{
return static_cast<jint>(GetPointer(env, obj)->controls.size());
}
JNIEXPORT jobject JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getControl(
JNIEnv* env, jobject obj, jint i)
{
return ControlToJava(env, GetPointer(env, obj)->controls[i].get());
}
JNIEXPORT jint JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getNumericSettingCount(
JNIEnv* env, jobject obj)
{
return static_cast<jint>(GetPointer(env, obj)->numeric_settings.size());
}
JNIEXPORT jobject JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getNumericSetting(
JNIEnv* env, jobject obj, jint i)
{
return NumericSettingToJava(env, GetPointer(env, obj)->numeric_settings[i].get());
}
JNIEXPORT jobject JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlGroup_getAttachmentSetting(
JNIEnv* env, jobject obj)
{
auto* group = reinterpret_cast<ControllerEmu::Attachments*>(GetPointer(env, obj));
return NumericSettingToJava(env, &group->GetSelectionSetting());
}
}