set(SETTINGS_SRCS
 	settings/wifisecurities/security8021xsetting.cpp
 	settings/wifisecurities/security8021xsetting.h
	settings/wifisecurities/wifisecuritysetting.cpp
	settings/wifisecurities/wifisecuritysetting.h
  settings/stringlistmodel.cpp
  settings/stringlistmodel.h
	settings/wifistatus/connectionstatus.h
	settings/wifistatus/connectionstatus.cpp
  settings/generalSettings/generalsettings.cpp
  settings/generalSettings/generalsettings.h
  settings/generalSettings/advancedpermissionsmodel.h
  settings/generalSettings/advancedpermissionsmodel.cpp
  settings/wificonnectionsettings/wifisetting.cpp
  settings/wificonnectionsettings/wifisetting.h
  settings/ipv4settings/ipv4settings.cpp
  settings/ipv4settings/ipv4settings.h
  settings/ipv4settings/ipv4routetablemodel.cpp
  settings/ipv4settings/ipv4routetablemodel.h
  settings/ipv6settings/ipv6settings.cpp
  settings/ipv6settings/ipv6settings.h
  settings/ipv6settings/ipv6routetablemodel.cpp
  settings/ipv6settings/ipv6routetablemodel.h
  settings/wiredconnectionsettings/wiredsettings.h
  settings/wiredconnectionsettings/wiredsettings.cpp

  #ssh vpn
  settings/vpn/ssh/sshauth.h
  settings/vpn/ssh/sshauth.cpp
  settings/vpn/ssh/ssh.cpp
  settings/vpn/ssh/ssh.h
  settings/vpn/ssh/nm-ssh-service.h

  #sstp vpn
  settings/vpn/sstp/sstpauth.h
  settings/vpn/sstp/sstpauth.cpp
  settings/vpn/sstp/sstp.cpp
  settings/vpn/sstp/sstp.h
  settings/vpn/sstp/nm-sstp-service.h

  #vpnc vpn
  settings/vpn/vpnc/vpncauth.h
  settings/vpn/vpnc/vpncauth.cpp
  settings/vpn/vpnc/vpnc.cpp
  settings/vpn/vpnc/vpnc.h
  settings/vpn/vpnc/nm-vpnc-service.h

  #fortissl vpn
  settings/vpn/fortisslvpn/fortisslvpnauth.h
  settings/vpn/fortisslvpn/fortisslvpnauth.cpp
  settings/vpn/fortisslvpn/fortisslvpn.cpp
  settings/vpn/fortisslvpn/fortisslvpn.h
  settings/vpn/fortisslvpn/nm-fortisslvpn-service.h

  #iodine vpn
  settings/vpn/iodine/iodineauth.h
  settings/vpn/iodine/iodineauth.cpp
  settings/vpn/iodine/iodine.cpp
  settings/vpn/iodine/iodine.h
  settings/vpn/iodine/nm-iodine-service.h

  #libreswan vpn
  settings/vpn/libreswan/libreswanauth.h
  settings/vpn/libreswan/libreswanauth.cpp
  settings/vpn/libreswan/libreswan.cpp
  settings/vpn/libreswan/libreswan.h
  settings/vpn/libreswan/nm-libreswan-service.h

  #l2tp vpn
  settings/vpn/l2tp/l2tpauth.h
  settings/vpn/l2tp/l2tpauth.cpp
  settings/vpn/l2tp/l2tp.cpp
  settings/vpn/l2tp/l2tp.h
  settings/vpn/l2tp/nm-l2tp-service.h

  #openvpn vpn
  settings/vpn/openvpn/openvpnauth.h
  settings/vpn/openvpn/openvpnauth.cpp
  settings/vpn/openvpn/openvpnadvanced.h
  settings/vpn/openvpn/openvpnadvanced.cpp
  settings/vpn/openvpn/openvpn.cpp
  settings/vpn/openvpn/openvpn.h
  settings/vpn/openvpn/openvpnhelpers_p.h
  settings/vpn/openvpn/nm-openvpn-service.h

  #pptp vpn
  settings/vpn/pptp/pptpauth.h
  settings/vpn/pptp/pptpauth.cpp
  settings/vpn/pptp/pptp.cpp
  settings/vpn/pptp/pptp.h
  settings/vpn/pptp/nm-pptp-service.h

  #strongswan vpn
  settings/vpn/strongswan/strongswanauth.h
  settings/vpn/strongswan/strongswanauth.cpp
  settings/vpn/strongswan/strongswan.cpp
  settings/vpn/strongswan/strongswan.h
  settings/vpn/strongswan/nm-strongswan-service.h
)

set(QML_SRCS
  qml/wifisecurity/authentication/enterprise/eap/EapTls.qml
  qml/wifisecurity/authentication/enterprise/eap/EapTtls.qml
  qml/wifisecurity/authentication/enterprise/eap/EapMd5.qml
  qml/wifisecurity/authentication/enterprise/eap/EapLeap.qml
  qml/wifisecurity/authentication/enterprise/eap/EapFast.qml
  qml/wifisecurity/authentication/enterprise/eap/EapPeap.qml
  qml/wifisecurity/authentication/enterprise/eap/EapPwd.qml

  qml/PasswordField.qml
  qml/ConfigurationDialog.qml
  qml/wifisecurity/WifiSecurityForm.qml
  qml/wifisecurity/WiredSecurityForm.qml
  qml/wifisecurity/authentication/WpaPersonal.qml
  qml/wifisecurity/authentication/WepKey.qml
  qml/wifisecurity/authentication/Leap.qml
  qml/wifisecurity/authentication/Owe.qml

  qml/wifisecurity/authentication/enterprise/DynamicWep.qml
  qml/wifisecurity/authentication/enterprise/WpaEnterprise.qml
  qml/wifisecurity/authentication/enterprise/Wpa3Enterprise192.qml
  qml/wifisecurity/DnsList.qml
  qml/wifisecurity/AlternativeSubjectMatch.qml

  qml/components/Wireless.qml
  qml/components/Wired.qml
  qml/components/Vpn.qml

  qml/PasswordPromptDialog.qml

  qml/AddConnectionDialog.qml
  qml/wifistatus/ConnectionStatusForm.qml

  qml/generalSettings/GeneralSettings.qml
  qml/generalSettings/AdvancedPermissionsDialog.qml
  qml/wificonnectionsettings/WifiConnectionSettings.qml

  qml/ipv4/IPv4Settings.qml
  qml/ipv4/IPv4Advance.qml
  qml/ipv4/IPv4Routes.qml
  qml/ipv4/SearchDomainList.qml

  qml/ipv6/IPv6Settings.qml
  qml/ipv6/IPv6Routes.qml

  qml/wiredconnectionsettings/WiredConnectionSettings.qml

  # ssh vpn
  qml/vpn/ssh/Ssh.qml
  qml/vpn/ssh/SshAdvanced.qml
  qml/vpn/ssh/SshAuth.qml

  # sstp vpn
  qml/vpn/sstp/Sstp.qml
  qml/vpn/sstp/SstpAdvanced.qml
  qml/vpn/sstp/SstpAuth.qml

  # vpnc vpn
  qml/vpn/vpnc/Vpnc.qml
  qml/vpn/vpnc/VpncAdvanced.qml
  qml/vpn/vpnc/VpncAuth.qml

  # fortissl vpn
  qml/vpn/fortisslvpn/Fortisslvpn.qml
  qml/vpn/fortisslvpn/FortisslvpnAdvanced.qml
  qml/vpn/fortisslvpn/FortisslvpnAuth.qml

  # iodine vpn
  qml/vpn/iodine/Iodine.qml
  qml/vpn/iodine/IodineAuth.qml

  # libreswan vpn
  qml/vpn/libreswan/Libreswan.qml
  qml/vpn/libreswan/LibreswanAuth.qml

  # l2tp vpn
  qml/vpn/l2tp/L2tp.qml
  qml/vpn/l2tp/L2tpIpsec.qml
  qml/vpn/l2tp/L2tpPpp.qml
  qml/vpn/l2tp/L2tpLifetimeField.qml
  qml/vpn/l2tp/L2tpAuth.qml

  # openvpn vpn
  qml/vpn/openvpn/Openvpn.qml
  qml/vpn/openvpn/OpenvpnAdvanced.qml
  qml/vpn/openvpn/OpenvpnCipherField.qml
  qml/vpn/openvpn/OpenvpnAuth.qml

  # pptp vpn
  qml/vpn/pptp/Pptp.qml
  qml/vpn/pptp/PptpAdvanced.qml
  qml/vpn/pptp/PptpAuth.qml

  # strongswan vpn
  qml/vpn/strongswan/Strongswan.qml
  qml/vpn/strongswan/StrongswanAuth.qml
)

add_library(plasmanm_editorqml SHARED ${SETTINGS_SRCS})

generate_export_header(plasmanm_editorqml
    BASE_NAME plasmanm_editorqml
    EXPORT_FILE_NAME plasmanm_editorqml_export.h
)

ecm_add_qml_module(plasmanm_editorqml
      URI "org.kde.plasma.networkmanagement.editorqml"
      VERSION 1.0
      GENERATE_PLUGIN_SOURCE
      QML_FILES ${QML_SRCS}
      DEPENDENCIES
          QtQuick
          QtQuick.Controls
          QtQuick.Layouts
          QtQuick.Dialogs
          org.kde.kirigami
          "org.kde.plasma.networkmanagement"
)

ecm_qt_declare_logging_category(plasmanm_editorqml
    HEADER plasma_nm_editorqml.h
    IDENTIFIER PLASMA_NM_EDITORQML_LOG
    CATEGORY_NAME org.kde.plasma.nm.editorqml
    DESCRIPTION "Plasma NM (editorqml)"
    EXPORT PLASMANM
)

target_link_libraries(plasmanm_editorqml
      PUBLIC
          Qt6::Core
          Qt6::DBus
          Qt6::Network
          Qt6::Qml
          KF6::NetworkManagerQt
          KF6::ModemManagerQt
          QCoro6::Core
          QCoro6::DBus
      PRIVATE
          Qt6::Quick
          OpenSSL::Crypto
          Qt6Keychain::Qt6Keychain
          KF6::I18n
          KF6::KIOWidgets
          KF6::Notifications
          KF6::Solid
          KF6::WindowSystem
          plasmanm_internal
)
 
target_include_directories(plasmanm_editorqml
    PUBLIC
        ${CMAKE_CURRENT_SOURCE_DIR}/settings
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/wifisecurities
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/wifistatus
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/generalSettings
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/wificonnectionsettings
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/ipv4settings
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/ipv6settings
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/wiredconnectionsettings
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/ssh
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/sstp
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/vpnc
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/fortisslvpn
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/iodine
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/libreswan
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/l2tp
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/openvpn
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/pptp
        ${CMAKE_CURRENT_SOURCE_DIR}/settings/vpn/strongswan
)

target_compile_definitions(plasmanm_editorqml PRIVATE BROADBANDPROVIDER_DATABASE=\"${BROADBANDPROVIDER_DATABASE}\")

ecm_finalize_qml_module(plasmanm_editorqml)

install(TARGETS plasmanm_editorqml ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
