///
/// JHybridNitroSystemNavigationBarSpec.cpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © 2025 Marc Rousavy @ Margelo
///

#include "JHybridNitroSystemNavigationBarSpec.hpp"



#include <optional>

namespace margelo::nitro::systemnavigationbar {

  jni::local_ref<JHybridNitroSystemNavigationBarSpec::jhybriddata> JHybridNitroSystemNavigationBarSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
    return makeCxxInstance(jThis);
  }

  void JHybridNitroSystemNavigationBarSpec::registerNatives() {
    registerHybrid({
      makeNativeMethod("initHybrid", JHybridNitroSystemNavigationBarSpec::initHybrid),
    });
  }

  size_t JHybridNitroSystemNavigationBarSpec::getExternalMemorySize() noexcept {
    static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
    return method(_javaPart);
  }

  void JHybridNitroSystemNavigationBarSpec::dispose() noexcept {
    static const auto method = javaClassStatic()->getMethod<void()>("dispose");
    method(_javaPart);
  }

  // Properties
  

  // Methods
  double JHybridNitroSystemNavigationBarSpec::getNavigationBarHeight() {
    static const auto method = javaClassStatic()->getMethod<double()>("getNavigationBarHeight");
    auto __result = method(_javaPart);
    return __result;
  }
  void JHybridNitroSystemNavigationBarSpec::hideNavigationBar() {
    static const auto method = javaClassStatic()->getMethod<void()>("hideNavigationBar");
    method(_javaPart);
  }
  void JHybridNitroSystemNavigationBarSpec::showNavigationBar() {
    static const auto method = javaClassStatic()->getMethod<void()>("showNavigationBar");
    method(_javaPart);
  }
  void JHybridNitroSystemNavigationBarSpec::enableImmersiveSticky() {
    static const auto method = javaClassStatic()->getMethod<void()>("enableImmersiveSticky");
    method(_javaPart);
  }
  void JHybridNitroSystemNavigationBarSpec::exitImmersiveMode() {
    static const auto method = javaClassStatic()->getMethod<void()>("exitImmersiveMode");
    method(_javaPart);
  }
  void JHybridNitroSystemNavigationBarSpec::setNavigationBarColor(double color, std::optional<bool> isTranslucent) {
    static const auto method = javaClassStatic()->getMethod<void(double /* color */, jni::alias_ref<jni::JBoolean> /* isTranslucent */)>("setNavigationBarColor");
    method(_javaPart, color, isTranslucent.has_value() ? jni::JBoolean::valueOf(isTranslucent.value()) : nullptr);
  }
  void JHybridNitroSystemNavigationBarSpec::setLightNavigationBar(bool isLight) {
    static const auto method = javaClassStatic()->getMethod<void(jboolean /* isLight */)>("setLightNavigationBar");
    method(_javaPart, isLight);
  }

} // namespace margelo::nitro::systemnavigationbar
