# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2022-2025 Soren Stoutner <soren@stoutner.com>
#
# This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc/>.
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program.  If not, see <https://www.gnu.org/licenses/>.

# Create the executable and add the resources.
add_executable(privacybrowser resources.qrc)

# List the sources to include in the executable.
target_sources(privacybrowser PRIVATE
    main.cpp
)

# Add the Qt logging category.  This will create the `debug.h` header file.
ecm_qt_declare_logging_category(privacybrowser
    HEADER debug.h
    IDENTIFIER PRIVACYBROWSER
    CATEGORY_NAME "privacybrowser"
)

# Include the KConfig controller file.
kconfig_add_kcfg_files(privacybrowser settings/Settings.kcfgc)

# Use KDE Frameworks to handle internationalization of the following UI files.
ki18n_wrap_ui(privacybrowser
    uis/AddBookmarkDialog.ui
    uis/AddFolderDialog.ui
    uis/AddOrEditCookieDialog.ui
    uis/AddTabWidget.ui
    uis/BookmarksDialog.ui
    uis/CookiesDialog.ui
    uis/DomainSettingsDialog.ui
    uis/DurableCookiesDialog.ui
    uis/EditBookmarkDialog.ui
    uis/EditFolderDialog.ui
    uis/FilterEntryDialog.ui
    uis/FilterListsDialog.ui
    uis/HttpAuthenticationDialog.ui
    uis/RequestDetailDialog.ui
    uis/RequestsDialog.ui
    uis/SaveDialog.ui
    uis/SettingsGeneral.ui
    uis/SettingsPrivacy.ui
    uis/SettingsSpellCheck.ui
    uis/TabWidget.ui
)

# Link the following libraries.
target_link_libraries(privacybrowser
    Qt6::Core
    Qt6::Gui
    Qt6::Sql
    Qt6::PrintSupport
    Qt6::Widgets
    Qt6::WebEngineCore
    Qt6::WebEngineWidgets
    KF6::Completion
    KF6::ConfigWidgets
    KF6::CoreAddons
    KF6::Crash
    KF6::DBusAddons
    KF6::DocTools
    KF6::I18n
    KF6::Notifications
    KF6::KIOCore
    KF6::KIOWidgets
    KF6::XmlGui
)

# Add the subdirectories.
add_subdirectory(databases)
add_subdirectory(delegates)
add_subdirectory(dialogs)
add_subdirectory(filters)
add_subdirectory(helpers)
add_subdirectory(interceptors)
add_subdirectory(ui.rcs)
add_subdirectory(widgets)
add_subdirectory(windows)

# Install Privacy Browser using the default KDE arguments.
install(TARGETS privacybrowser ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})

# Install Privacy Browser according to the instructions in the desktop file, specifying the permissions.
install(PROGRAMS com.stoutner.privacybrowser.desktop DESTINATION ${KDE_INSTALL_APPDIR} PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)

# Install the metainfo file.
install(FILES com.stoutner.privacybrowser.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})

# Install the notifyrc file.
install(FILES privacybrowser.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})

# Install the standard icons.
ecm_install_icons(ICONS icons/sc-apps-privacybrowser.svg DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/16-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/22-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/24-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/32-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/48-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/64-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/128-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/256-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/512-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})
ecm_install_icons(ICONS icons/1024-apps-privacybrowser.png DESTINATION ${KDE_INSTALL_ICONDIR})

# Install the symbolic icon (used by Gnome).
install(FILES icons/privacybrowser-symbolic.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/symbolic/apps/)
