set(SOURCES
    ${CMAKE_SOURCE_DIR}/include/gui/coverprovider.h
    ${CMAKE_SOURCE_DIR}/include/gui/configdialog.h
    ${CMAKE_SOURCE_DIR}/include/gui/contextmenuutils.h
    ${CMAKE_SOURCE_DIR}/include/gui/dsp/dspsettingsdialog.h
    ${CMAKE_SOURCE_DIR}/include/gui/dsp/dspsettingsprovider.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/framerate.h
    ${CMAKE_SOURCE_DIR}/include/gui/guiconstants.h
    ${CMAKE_SOURCE_DIR}/include/gui/iconloader.h
    ${CMAKE_SOURCE_DIR}/include/gui/guipaths.h
    ${CMAKE_SOURCE_DIR}/include/gui/guisettings.h
    ${CMAKE_SOURCE_DIR}/include/gui/guiutils.h
    ${CMAKE_SOURCE_DIR}/include/gui/layoutprovider.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/dspguiplugin.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/guiplugin.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/guiplugincontext.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/pluginconfigguiplugin.h
    ${CMAKE_SOURCE_DIR}/include/gui/plugins/pluginsettingsprovider.h
    ${CMAKE_SOURCE_DIR}/include/gui/propertiesdialog.h
    ${CMAKE_SOURCE_DIR}/include/gui/settings/context/staticcontextmenu.h
    ${CMAKE_SOURCE_DIR}/include/gui/settings/context/staticcontextmenupage.h
    ${CMAKE_SOURCE_DIR}/include/gui/scripting/richtext.h
    ${CMAKE_SOURCE_DIR}/include/gui/scripting/richtextutils.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/trackmimedata.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/widgets/actiondelegate.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/expandedtreeview.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/expandingcombobox.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/extendabletableview.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/fontbutton.h
    ${CMAKE_SOURCE_DIR}/include/gui/widgets/lineediteditor.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
    ${CMAKE_SOURCE_DIR}/include/gui/windowcontroller.h
    artwork/artworkdelegate.cpp
    artwork/artworkdelegate.h
    artwork/artworkdialog.cpp
    artwork/artworkdialog.h
    artwork/artworkexporter.cpp
    artwork/artworkexporter.h
    artwork/artworkfinder.cpp
    artwork/artworkfinder.h
    artwork/artworkitem.cpp
    artwork/artworkitem.h
    artwork/artworkmodel.cpp
    artwork/artworkmodel.h
    artwork/artworkproperties.cpp
    artwork/artworkproperties.h
    artwork/artworkrow.cpp
    artwork/artworkrow.h
    artwork/artworksaveutils.cpp
    artwork/artworksaveutils.h
    artwork/artworkviewerdialog.cpp
    artwork/artworkviewerdialog.h
    artwork/sources/artworksource.cpp
    artwork/sources/artworksource.cpp
    artwork/sources/artworksource.cpp
    artwork/sources/artworksource.h
    artwork/sources/discogsartwork.cpp
    artwork/sources/discogsartwork.h
    artwork/sources/lastfmartwork.cpp
    artwork/sources/lastfmartwork.h
    artwork/sources/musicbrainzartwork.cpp
    artwork/sources/musicbrainzartwork.h
    contextmenuids.h
    controls/playercontrol.cpp
    controls/playercontrol.h
    controls/commandbutton.cpp
    controls/commandbutton.h
    controls/commandbuttonconfigdialog.cpp
    controls/commandbuttonconfigdialog.h
    controls/playlistcontrol.cpp
    controls/playlistcontrol.h
    controls/outputselector.cpp
    controls/outputselector.h
    controls/seekbar.cpp
    controls/seekbar.h
    controls/volumecontrol.cpp
    controls/volumecontrol.h
    coverprovider.cpp
    dialog/aboutdialog.cpp
    dialog/aboutdialog.h
    dialog/autoplaylistdialog.cpp
    dialog/autoplaylistdialog.h
    dialog/configdialog.cpp
    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/dirbrowserconfigwidget.cpp
    dirbrowser/dirbrowserconfigwidget.h
    dirbrowser/dirdelegate.cpp
    dirbrowser/dirdelegate.h
    dirbrowser/dirproxymodel.cpp
    dirbrowser/dirproxymodel.h
    dirbrowser/dirtree.cpp
    dirbrowser/dirtree.h
    dsp/dsppreset.cpp
    dsp/dsppreset.h
    dsp/dsppresetregistry.cpp
    dsp/dsppresetregistry.h
    dsp/dspsettingsdialog.cpp
    dsp/dspsettingsregistry.cpp
    dsp/dspsettingsregistry.h
    dsp/resamplersettingswidget.cpp
    dsp/resamplersettingswidget.h
    dsp/skipsilencesettingswidget.cpp
    dsp/skipsilencesettingswidget.h
    editablelayout.cpp
    fylayout.cpp
    fywidget.cpp
    guiapplication.cpp
    guiapplication.h
    iconloader.cpp
    guipaths.cpp
    guiutils.cpp
    internalguisettings.cpp
    internalguisettings.h
    layoutcommands.cpp
    layoutcommands.h
    pluginsettingsregistry.cpp
    pluginsettingsregistry.h
    layoutprovider.cpp
    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/librarytreeview.cpp
    librarytree/librarytreeview.h
    librarytree/librarytreewidget.cpp
    librarytree/librarytreewidget.h
    librarytree/librarytreeconfigwidget.cpp
    librarytree/librarytreeconfigwidget.h
    librarytree/librarytreegroupeditordialog.cpp
    librarytree/librarytreegroupeditordialog.h
    mainwindow.cpp
    mainwindow.h
    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/manager/playlistmanagermodel.cpp
    playlist/manager/playlistmanagermodel.h
    playlist/manager/playlistmanagerwidget.cpp
    playlist/manager/playlistmanagerwidget.h
    playlist/organiser/playlistorganiser.cpp
    playlist/organiser/playlistorganiser.h
    playlist/organiser/playlistorganiserconfigwidget.cpp
    playlist/organiser/playlistorganiserconfigwidget.h
    playlist/organiser/playlistorganiserdelegate.cpp
    playlist/organiser/playlistorganiserdelegate.h
    playlist/organiser/playlistorganiseritem.cpp
    playlist/organiser/playlistorganiseritem.h
    playlist/organiser/organiserscripenvironment.cpp
    playlist/organiser/organiserscripenvironment.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/playlistuicontroller.cpp
    playlist/playlistuicontroller.h
    playlist/playlistworkspace.cpp
    playlist/playlistworkspace.h
    playlist/playlistworkspacestate.cpp
    playlist/playlistworkspacestate.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/playlisttabs.cpp
    playlist/playlisttabs.h
    playlist/playlistview.cpp
    playlist/playlistview.h
    playlist/detachedplaylistsession.cpp
    playlist/detachedplaylistsession.h
    playlist/editableplaylistsession.cpp
    playlist/editableplaylistsession.h
    playlist/editableplaylistsessionhost.h
    playlist/playlistwidgetsessionhost.h
    playlist/playlistwidgetsession.cpp
    playlist/playlistwidgetsession.h
    playlist/playlistwidget.cpp
    playlist/playlistwidget.h
    playlist/presetregistry.cpp
    playlist/presetregistry.h
    queueviewer/queueviewer.cpp
    queueviewer/queueviewer.h
    queueviewer/queueviewerconfigwidget.cpp
    queueviewer/queueviewerconfigwidget.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
    scanprogresstext.cpp
    scanprogresstext.h
    scriptdisplay/scriptdisplay.cpp
    scriptdisplay/scriptdisplay.h
    scriptdisplay/scriptdisplayconfigdialog.cpp
    scriptdisplay/scriptdisplayconfigdialog.h
    scripting/expressiontreemodel.cpp
    scripting/expressiontreemodel.h
    scripting/richtextutils.cpp
    scripting/scripteditor.cpp
    scripting/scriptformatter.cpp
    scripting/scriptvariableproviders.cpp
    scripting/scriptvariableproviders.h
    scripting/scriptcommandhandler.cpp
    scripting/scriptcommandhandler.h
    scripting/scriptreferenceentries.cpp
    scripting/scriptreferenceentries.h
    scripting/scriptformatterregistry.cpp
    scripting/scripthighlighter.cpp
    scripting/scripthighlighter.h
    search/searchcontroller.cpp
    search/searchcontroller.h
    search/searchwidget.cpp
    search/searchwidget.h
    output/outputprofilemanager.cpp
    output/outputprofilemanager.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
    settings/artwork/artworkdownloadpage.cpp
    settings/artwork/artworkdownloadpage.h
    settings/artwork/artworkgeneralpage.cpp
    settings/artwork/artworkgeneralpage.h
    settings/artwork/artworksearchingpage.cpp
    settings/artwork/artworksearchingpage.h
    settings/artwork/artworksourcesmodel.cpp
    settings/artwork/artworksourcesmodel.h
    settings/artwork/artworksourcespage.cpp
    settings/artwork/artworksourcespage.h
    settings/context/configurablecontextmenumodel.cpp
    settings/context/configurablecontextmenumodel.h
    settings/context/configurablecontextmenudelegate.cpp
    settings/context/configurablecontextmenudelegate.h
    settings/context/configurablecontextmenupage.cpp
    settings/context/configurablecontextmenupage.h
    settings/context/staticcontextmenupage.cpp
    settings/context/trackcontextmenupage.cpp
    settings/context/trackcontextmenupage.h
    settings/generalpage.cpp
    settings/generalpage.h
    settings/guidisplaypage.cpp
    settings/guidisplaypage.h
    settings/guitrackdisplaypage.cpp
    settings/guitrackdisplaypage.h
    settings/guigeneralpage.cpp
    settings/guigeneralpage.h
    settings/guithemespage.cpp
    settings/guithemespage.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/networkpage.cpp
    settings/networkpage.h
    settings/playback/decodermodel.cpp
    settings/playback/decodermodel.h
    settings/playback/decoderdelegate.cpp
    settings/playback/decoderdelegate.h
    settings/playback/devicepage.cpp
    settings/playback/devicepage.h
    settings/playback/outputdevicesdelegate.cpp
    settings/playback/outputdevicesdelegate.h
    settings/playback/outputdevicesmodel.cpp
    settings/playback/outputdevicesmodel.h
    settings/playback/decoderpage.cpp
    settings/playback/decoderpage.h
    settings/playback/dspdelegate.cpp
    settings/playback/dspdelegate.h
    settings/playback/dspmanagerpage.cpp
    settings/playback/dspmanagerpage.h
    settings/playback/fadingpage.cpp
    settings/playback/fadingpage.h
    settings/playback/dspmodel.cpp
    settings/playback/dspmodel.h
    settings/playback/outputpage.cpp
    settings/playback/outputpage.h
    settings/playback/playbackpage.cpp
    settings/playback/playbackpage.h
    settings/playback/playbacksettingsutils.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/searchpage.cpp
    settings/searchpage.h
    settings/shellintegrationpage.cpp
    settings/shellintegrationpage.h
    settings/shortcuts/shortcutsmodel.cpp
    settings/shortcuts/shortcutsmodel.h
    settings/shortcuts/shortcutspage.cpp
    settings/shortcuts/shortcutspage.h
    settings/widgets/statuswidgetpage.cpp
    settings/widgets/statuswidgetpage.h
    splitters/splitterwidget.cpp
    splitters/splitterwidget.h
    splitters/tabstackwidget.cpp
    splitters/tabstackwidget.h
    statusevent.cpp
    statusevent.h
    systemtrayicon.cpp
    systemtrayicon.h
    theme/fytheme.cpp
    theme/themeregistry.cpp
    trackmimedata.cpp
    trackselectioncontroller.cpp
    widgetfilter.cpp
    widgetprovider.cpp
    widgets.cpp
    widgets.h
    widgets/actiondelegate.cpp
    widgets/autoheaderview.cpp
    widgets/checkboxdelegate.cpp
    widgets/clickablelabel.cpp
    widgets/colourbutton.cpp
    widgets/coverwidget.cpp
    widgets/coverwidget.h
    widgets/coverwidgetconfigwidget.cpp
    widgets/coverwidgetconfigwidget.h
    widgets/customisableinput.cpp
    widgets/doubleslidereditor.cpp
    widgets/dummy.cpp
    widgets/dummy.h
    widgets/editabletabbar.cpp
    widgets/editabletabwidget.cpp
    widgets/elapsedprogressdialog.cpp
    widgets/elidedlabel.cpp
    widgets/expandableinputbox.cpp
    widgets/expandedtreeview.cpp
    widgets/expandedtreeview_p.h
    widgets/expandingcombobox.cpp
    widgets/extendabletableview.cpp
    widgets/fontbutton.cpp
    widgets/lineediteditor.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/titletooltipgroupbox.cpp
    widgets/titletooltipgroupbox.h
    widgets/statuswidget.cpp
    widgets/statuswidget.h
    widgets/toolbutton.cpp
    widgets/tooltip.cpp
    widgets/widgetcontainer.cpp
    windowcontroller.cpp
)

create_fooyin_library(
    fooyin_gui
    ADD_PRIVATE_TARGET
    EXPORT_NAME Gui
    SOURCES ${SOURCES}
)

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