set(SOURCES
    ${CMAKE_SOURCE_DIR}/include/gui/coverprovider.h
    ${CMAKE_SOURCE_DIR}/include/gui/editablelayout.h
    ${CMAKE_SOURCE_DIR}/include/gui/fylayout.h
    ${CMAKE_SOURCE_DIR}/include/gui/fywidget.h
    ${CMAKE_SOURCE_DIR}/include/gui/guiconstants.h
    ${CMAKE_SOURCE_DIR}/include/gui/guipaths.h
    ${CMAKE_SOURCE_DIR}/include/gui/guisettings.h
    ${CMAKE_SOURCE_DIR}/include/gui/layoutprovider.h
    ${CMAKE_SOURCE_DIR}/include/gui/propertiesdialog.h
    ${CMAKE_SOURCE_DIR}/include/gui/trackselectioncontroller.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgetcontainer.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgetfilter.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgetprovider.h
    ${CMAKE_SOURCE_DIR}/include/gui/windowcontroller.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/guiplugin.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/guiplugincontext.h
    ${CMAKE_SOURCE_DIR}/include/gui/scripting/richtext.h
    ${CMAKE_SOURCE_DIR}/include/gui/scripting/scripteditor.h
    ${CMAKE_SOURCE_DIR}/include/gui/scripting/scriptformatter.h
    ${CMAKE_SOURCE_DIR}/include/gui/scripting/scriptformatterregistry.h
    ${CMAKE_SOURCE_DIR}/include/gui/theme/fytheme.h
    ${CMAKE_SOURCE_DIR}/include/gui/theme/themeregistry.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/autoheaderview.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/checkboxdelegate.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/clickablelabel.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/colourbutton.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/customisableinput.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/doubleslidereditor.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/editabletabbar.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/editabletabwidget.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/elapsedprogressdialog.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/elidedlabel.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/expandableinputbox.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/expandingcombobox.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/expandedtreeview.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/extendabletableview.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/fontbutton.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/multilinedelegate.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/overlaywidget.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/popuplineedit.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/scriptlineedit.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/seekcontainer.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/singletabbedwidget.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/slider.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/slidereditor.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/specialvaluespinbox.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/toolbutton.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/tooltip.h
    coverprovider.cpp
    editablelayout.cpp
    fylayout.cpp
    fywidget.cpp
    guiapplication.cpp
    guiapplication.h
    guipaths.cpp
    guiutils.cpp
    guiutils.h
    internalguisettings.cpp
    internalguisettings.h
    layoutcommands.cpp
    layoutcommands.h
    layoutprovider.cpp
    mainwindow.cpp
    mainwindow.h
    statusevent.cpp
    statusevent.h
    systemtrayicon.cpp
    systemtrayicon.h
    trackselectioncontroller.cpp
    widgetfilter.cpp
    widgetprovider.cpp
    widgets.cpp
    widgets.h
    windowcontroller.cpp
    controls/playercontrol.cpp
    controls/playercontrol.h
    controls/playlistcontrol.cpp
    controls/playlistcontrol.h
    controls/seekbar.cpp
    controls/seekbar.h
    controls/volumecontrol.cpp
    controls/volumecontrol.h
    dialog/aboutdialog.cpp
    dialog/aboutdialog.h
    dialog/exportlayoutdialog.cpp
    dialog/exportlayoutdialog.h
    dialog/propertiesdialog.cpp
    dialog/saveplaylistsdialog.cpp
    dialog/saveplaylistsdialog.h
    dialog/searchdialog.cpp
    dialog/searchdialog.h
    dirbrowser/dirbrowser.cpp
    dirbrowser/dirbrowser.h
    dirbrowser/dirdelegate.cpp
    dirbrowser/dirdelegate.h
    dirbrowser/dirproxymodel.cpp
    dirbrowser/dirproxymodel.h
    dirbrowser/dirtree.cpp
    dirbrowser/dirtree.h
    selectioninfo/infodelegate.cpp
    selectioninfo/infodelegate.h
    selectioninfo/infoitem.cpp
    selectioninfo/infoitem.h
    selectioninfo/infomodel.cpp
    selectioninfo/infomodel.h
    selectioninfo/infopopulator.cpp
    selectioninfo/infopopulator.h
    selectioninfo/infoview.cpp
    selectioninfo/infoview.h
    selectioninfo/infowidget.cpp
    selectioninfo/infowidget.h
    librarytree/librarytreecontroller.cpp
    librarytree/librarytreecontroller.h
    librarytree/librarytreedelegate.cpp
    librarytree/librarytreedelegate.h
    librarytree/librarytreegroup.h
    librarytree/librarytreegroupregistry.cpp
    librarytree/librarytreegroupregistry.h
    librarytree/librarytreeitem.cpp
    librarytree/librarytreeitem.h
    librarytree/librarytreemodel.cpp
    librarytree/librarytreemodel.h
    librarytree/librarytreepopulator.cpp
    librarytree/librarytreepopulator.h
    librarytree/librarytreescriptregistry.cpp
    librarytree/librarytreescriptregistry.h
    librarytree/librarytreeview.cpp
    librarytree/librarytreeview.h
    librarytree/librarytreewidget.cpp
    librarytree/librarytreewidget.h
    lyrics/lyricswidget.h
    lyrics/lyricswidget.cpp
    menubar/editmenu.cpp
    menubar/editmenu.h
    menubar/filemenu.cpp
    menubar/filemenu.h
    menubar/helpmenu.cpp
    menubar/helpmenu.h
    menubar/layoutmenu.cpp
    menubar/layoutmenu.h
    menubar/librarymenu.cpp
    menubar/librarymenu.h
    menubar/mainmenubar.cpp
    menubar/mainmenubar.h
    menubar/playbackmenu.cpp
    menubar/playbackmenu.h
    menubar/viewmenu.cpp
    menubar/viewmenu.h
    playlist/organiser/playlistorganiser.cpp
    playlist/organiser/playlistorganiser.h
    playlist/organiser/playlistorganiserdelegate.cpp
    playlist/organiser/playlistorganiserdelegate.h
    playlist/organiser/playlistorganiseritem.cpp
    playlist/organiser/playlistorganiseritem.h
    playlist/organiser/playlistorganisermodel.cpp
    playlist/organiser/playlistorganisermodel.h
    playlist/playlistbox.cpp
    playlist/playlistbox.h
    playlist/playlistcolumn.h
    playlist/playlistcolumnregistry.cpp
    playlist/playlistcolumnregistry.h
    playlist/playlistcommands.cpp
    playlist/playlistcommands.h
    playlist/playlistcontroller.cpp
    playlist/playlistcontroller.h
    playlist/playlistdelegate.cpp
    playlist/playlistdelegate.h
    playlist/playlistinteractor.cpp
    playlist/playlistinteractor.h
    playlist/playlistitem.cpp
    playlist/playlistitem.h
    playlist/playlistitemmodels.cpp
    playlist/playlistitemmodels.h
    playlist/playlistmodel.cpp
    playlist/playlistmodel.h
    playlist/playlistpopulator.cpp
    playlist/playlistpopulator.h
    playlist/playlistpreset.cpp
    playlist/playlistpreset.h
    playlist/playlistscriptregistry.cpp
    playlist/playlistscriptregistry.h
    playlist/playlisttabs.cpp
    playlist/playlisttabs.h
    playlist/playlistview.cpp
    playlist/playlistview.h
    playlist/playlistwidget.cpp
    playlist/playlistwidget.h
    playlist/playlistwidget_p.h
    playlist/presetregistry.cpp
    playlist/presetregistry.h
    queueviewer/queueviewer.cpp
    queueviewer/queueviewer.h
    queueviewer/queueviewerdelegate.cpp
    queueviewer/queueviewerdelegate.h
    queueviewer/queuevieweritem.cpp
    queueviewer/queuevieweritem.h
    queueviewer/queueviewermodel.cpp
    queueviewer/queueviewermodel.h
    queueviewer/queueviewerview.cpp
    queueviewer/queueviewerview.h
    quicksetup/quicksetupdialog.cpp
    quicksetup/quicksetupdialog.h
    quicksetup/quicksetupmodel.cpp
    quicksetup/quicksetupmodel.h
    replaygain/replaygaindelegate.cpp
    replaygain/replaygaindelegate.h
    replaygain/replaygainitem.cpp
    replaygain/replaygainitem.h
    replaygain/replaygainmodel.cpp
    replaygain/replaygainmodel.h
    replaygain/replaygainpopulator.cpp
    replaygain/replaygainpopulator.h
    replaygain/replaygainview.cpp
    replaygain/replaygainview.h
    replaygain/replaygainwidget.cpp
    replaygain/replaygainwidget.h
    scripting/expressiontreemodel.cpp
    scripting/expressiontreemodel.h
    scripting/scripthighlighter.cpp
    scripting/scripthighlighter.h
    scripting/scripteditor.cpp
    scripting/scriptformatter.cpp
    scripting/scriptformatterregistry.cpp
    search/searchcontroller.cpp
    search/searchcontroller.h
    search/searchwidget.cpp
    search/searchwidget.h
    settings/artworkpage.cpp
    settings/artworkpage.h
    settings/generalpage.cpp
    settings/generalpage.h
    settings/guigeneralpage.cpp
    settings/guigeneralpage.h
    settings/guithemespage.cpp
    settings/guithemespage.h
    settings/networkpage.cpp
    settings/networkpage.h
    settings/searchpage.cpp
    settings/searchpage.h
    settings/shellintegrationpage.cpp
    settings/shellintegrationpage.h
    settings/dirbrowser/dirbrowserpage.cpp
    settings/dirbrowser/dirbrowserpage.h
    settings/library/librarygeneralpage.cpp
    settings/library/librarygeneralpage.h
    settings/library/librarymodel.cpp
    settings/library/librarymodel.h
    settings/library/librarysortingpage.cpp
    settings/library/librarysortingpage.h
    settings/library/sortingmodel.cpp
    settings/library/sortingmodel.h
    settings/librarytree/librarytreegroupmodel.cpp
    settings/librarytree/librarytreegroupmodel.h
    settings/librarytree/librarytreepage.cpp
    settings/librarytree/librarytreepage.h
    settings/librarytree/librarytreegrouppage.cpp
    settings/librarytree/librarytreegrouppage.h
    settings/playback/decodermodel.cpp
    settings/playback/decodermodel.h
    settings/playback/decoderpage.cpp
    settings/playback/decoderpage.h
    settings/playback/outputpage.cpp
    settings/playback/outputpage.h
    settings/playback/playbackpage.cpp
    settings/playback/playbackpage.h
    settings/playback/replaygainpage.cpp
    settings/playback/replaygainpage.h
    settings/playlist/playlistcolumnmodel.cpp
    settings/playlist/playlistcolumnmodel.h
    settings/playlist/playlistcolumnpage.cpp
    settings/playlist/playlistcolumnpage.h
    settings/playlist/playlistgeneralpage.cpp
    settings/playlist/playlistgeneralpage.h
    settings/playlist/playlistpresetspage.cpp
    settings/playlist/playlistpresetspage.h
    settings/plugins/pluginaboutdialog.cpp
    settings/plugins/pluginaboutdialog.h
    settings/plugins/pluginsmodel.cpp
    settings/plugins/pluginsmodel.h
    settings/plugins/pluginspage.cpp
    settings/plugins/pluginspage.h
    settings/shortcuts/shortcutsmodel.cpp
    settings/shortcuts/shortcutsmodel.h
    settings/shortcuts/shortcutspage.cpp
    settings/shortcuts/shortcutspage.h
    settings/widgets/playbackqueuepage.cpp
    settings/widgets/playbackqueuepage.h
    settings/widgets/statuswidgetpage.cpp
    settings/widgets/statuswidgetpage.h
    splitters/splitterwidget.cpp
    splitters/splitterwidget.h
    splitters/tabstackwidget.cpp
    splitters/tabstackwidget.h
    theme/fytheme.cpp
    theme/themeregistry.cpp
    widgets/autoheaderview.cpp
    widgets/checkboxdelegate.cpp
    widgets/clickablelabel.cpp
    widgets/colourbutton.cpp
    widgets/coverwidget.cpp
    widgets/coverwidget.h
    widgets/customisableinput.cpp
    widgets/doubleslidereditor.cpp
    widgets/dummy.cpp
    widgets/dummy.h
    widgets/elidedlabel.cpp
    widgets/editabletabbar.cpp
    widgets/editabletabwidget.cpp
    widgets/elapsedprogressdialog.cpp
    widgets/expandableinputbox.cpp
    widgets/expandedtreeview.cpp
    widgets/expandingcombobox.cpp
    widgets/extendabletableview.cpp
    widgets/fontbutton.cpp
    widgets/hovermenu.cpp
    widgets/hovermenu.h
    widgets/logslider.cpp
    widgets/logslider.h
    widgets/menuheader.cpp
    widgets/menuheader.h
    widgets/multilinedelegate.cpp
    widgets/overlaywidget.cpp
    widgets/popuplineedit.cpp
    widgets/scriptlineedit.cpp
    widgets/seekcontainer.cpp
    widgets/singletabbedwidget.cpp
    widgets/slider.cpp
    widgets/slidereditor.cpp
    widgets/spacer.cpp
    widgets/spacer.h
    widgets/specialvaluespinbox.cpp
    widgets/statuswidget.cpp
    widgets/statuswidget.h
    widgets/toolbutton.cpp
    widgets/tooltip.cpp
    widgets/widgetcontainer.cpp
)

create_fooyin_library(
    fooyin_gui
    EXPORT_NAME Gui
    SOURCES ${SOURCES}
)

target_link_libraries(
    fooyin_gui
    PUBLIC Fooyin::Core Fooyin::Utils
    PRIVATE Fooyin::CorePrivate Qt::Svg
)
