├── .appveyor.yml
├── .circleci
├── build.sh
├── config.yml
├── objdump_linux.sh
├── prepare.sh
├── release_bintray.sh
├── release_github.sh
├── stage.sh
└── zip_linux.sh
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug.md
│ ├── config.yml
│ └── feature.md
└── workflows
│ ├── android.yml
│ ├── macos.yml
│ └── x11.yml
├── .gitignore
├── .gitmodules
├── .qmake.conf
├── .travis
├── script__build_with_lcov.sh
└── script__create_deb.sh
├── CMakeLists.txt
├── LICENSE.md
├── README.md
├── assets
├── CMakeLists.txt
├── assets.qrc
├── buttons
│ ├── ps_circle.png
│ ├── ps_cross.png
│ ├── ps_square.png
│ ├── ps_triangle.png
│ ├── xb_a.png
│ ├── xb_b.png
│ ├── xb_x.png
│ └── xb_y.png
├── fonts
│ ├── Roboto-Bold.ttf
│ ├── Roboto-Regular.ttf
│ ├── RobotoCondensed-Bold.ttf
│ ├── RobotoCondensed-Regular.ttf
│ └── RobotoMono-Regular.ttf
├── icon.png
└── sdl2
│ ├── gamecontrollerdb_2016.txt
│ ├── gamecontrollerdb_204.txt
│ ├── gamecontrollerdb_205.txt
│ └── gamecontrollerdb_209.txt
├── cmake
├── PegasusCommonProps.cmake
├── PegasusGitInfo.cmake
├── PegasusPrettyPrint.cmake
├── PegasusQtUtils.cmake
└── PegasusTargetPlatform.cmake
├── doc
├── Qt.LICENSE.GPL3
├── Qt.LICENSE.GPL3-EXCEPT
└── Roboto.LICENSE
├── etc
├── branding
│ ├── logo.png
│ └── logo.svg
├── promo
│ ├── donate-coffee.png
│ ├── donate-patreon.png
│ ├── screenshot_alpha1.jpg
│ ├── screenshot_alpha10.jpg
│ └── shader_demo.jpg
└── rpi4
│ └── kms_launch_fix.diff
├── pegasus.pro
├── src
├── CMakeLists.txt
├── app
│ ├── CMakeLists.txt
│ ├── app.pro
│ ├── install.pri
│ ├── main.cpp
│ ├── platform
│ │ ├── android
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── res
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ └── icon.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── icon_fg.png
│ │ │ │ ├── mipmap-ldpi
│ │ │ │ │ └── icon.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── icon_fg.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ ├── banner.png
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── icon_fg.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── icon_fg.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── icon_fg.png
│ │ │ │ ├── values
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ └── themes.xml
│ │ │ │ └── xml
│ │ │ │ │ └── fileprovider_paths.xml
│ │ │ └── src
│ │ │ │ └── org
│ │ │ │ └── pegasus_frontend
│ │ │ │ └── android
│ │ │ │ ├── App.java
│ │ │ │ ├── BatteryInfo.java
│ │ │ │ ├── IntentHelper.java
│ │ │ │ ├── LaunchFileProvider.java
│ │ │ │ └── MainActivity.java
│ │ ├── linux
│ │ │ ├── icons
│ │ │ │ ├── 16
│ │ │ │ │ └── org.pegasus_frontend.Pegasus.png
│ │ │ │ ├── 32
│ │ │ │ │ └── org.pegasus_frontend.Pegasus.png
│ │ │ │ ├── 48
│ │ │ │ │ └── org.pegasus_frontend.Pegasus.png
│ │ │ │ ├── 64
│ │ │ │ │ └── org.pegasus_frontend.Pegasus.png
│ │ │ │ └── 128
│ │ │ │ │ └── org.pegasus_frontend.Pegasus.png
│ │ │ ├── org.pegasus_frontend.Pegasus.desktop.in
│ │ │ ├── org.pegasus_frontend.Pegasus.desktop.qmake.in
│ │ │ └── org.pegasus_frontend.Pegasus.metainfo.xml
│ │ ├── macos
│ │ │ ├── Info.plist.in
│ │ │ └── pegasus-fe.icns
│ │ └── windows
│ │ │ └── app_icon.ico
│ └── qmlplugins.qml
├── backend
│ ├── AppSettings.cpp
│ ├── AppSettings.h
│ ├── Backend.cpp
│ ├── Backend.h
│ ├── CMakeLists.txt
│ ├── CliArgs.h
│ ├── FrontendLayer.cpp
│ ├── FrontendLayer.h
│ ├── Log.cpp
│ ├── Log.h
│ ├── Paths.cpp
│ ├── Paths.h
│ ├── PegasusAssets.cpp
│ ├── PegasusAssets.h
│ ├── ProcessLauncher.cpp
│ ├── ProcessLauncher.h
│ ├── ScriptRunner.cpp
│ ├── ScriptRunner.h
│ ├── backend.pro
│ ├── imggen
│ │ ├── BlurhashProvider.cpp
│ │ ├── BlurhashProvider.h
│ │ ├── CMakeLists.txt
│ │ └── imggen.pri
│ ├── model
│ │ ├── Api.cpp
│ │ ├── Api.h
│ │ ├── CMakeLists.txt
│ │ ├── ObjectListModel.h
│ │ ├── device
│ │ │ ├── DeviceInfo.cpp
│ │ │ ├── DeviceInfo.h
│ │ │ └── device.pri
│ │ ├── gaming
│ │ │ ├── Assets.cpp
│ │ │ ├── Assets.h
│ │ │ ├── Collection.cpp
│ │ │ ├── Collection.h
│ │ │ ├── CollectionListModel.cpp
│ │ │ ├── CollectionListModel.h
│ │ │ ├── Game.cpp
│ │ │ ├── Game.h
│ │ │ ├── GameFile.cpp
│ │ │ ├── GameFile.h
│ │ │ ├── GameFileListModel.cpp
│ │ │ ├── GameFileListModel.h
│ │ │ ├── GameListModel.cpp
│ │ │ ├── GameListModel.h
│ │ │ └── gaming.pri
│ │ ├── internal
│ │ │ ├── Gamepad.cpp
│ │ │ ├── Gamepad.h
│ │ │ ├── GamepadAxisNavigation.cpp
│ │ │ ├── GamepadAxisNavigation.h
│ │ │ ├── GamepadButtonNavigation.cpp
│ │ │ ├── GamepadButtonNavigation.h
│ │ │ ├── GamepadListModel.cpp
│ │ │ ├── GamepadListModel.h
│ │ │ ├── GamepadManager.cpp
│ │ │ ├── GamepadManager.h
│ │ │ ├── GamepadManagerBackend.cpp
│ │ │ ├── GamepadManagerBackend.h
│ │ │ ├── GamepadManagerQt.cpp
│ │ │ ├── GamepadManagerQt.h
│ │ │ ├── GamepadManagerSDL2.cpp
│ │ │ ├── GamepadManagerSDL2.h
│ │ │ ├── Internal.cpp
│ │ │ ├── Internal.h
│ │ │ ├── Meta.cpp
│ │ │ ├── Meta.h
│ │ │ ├── ScannerState.cpp
│ │ │ ├── ScannerState.h
│ │ │ ├── System.cpp
│ │ │ ├── System.h
│ │ │ ├── internal.pri
│ │ │ └── settings
│ │ │ │ ├── KeyEditor.cpp
│ │ │ │ ├── KeyEditor.h
│ │ │ │ ├── Locales.cpp
│ │ │ │ ├── Locales.h
│ │ │ │ ├── Providers.cpp
│ │ │ │ ├── Providers.h
│ │ │ │ ├── Settings.cpp
│ │ │ │ ├── Settings.h
│ │ │ │ ├── Themes.cpp
│ │ │ │ ├── Themes.h
│ │ │ │ └── settings.pri
│ │ ├── keys
│ │ │ ├── Key.cpp
│ │ │ ├── Key.h
│ │ │ ├── Keys.cpp
│ │ │ ├── Keys.h
│ │ │ └── keys.pri
│ │ ├── memory
│ │ │ ├── Memory.cpp
│ │ │ ├── Memory.h
│ │ │ └── memory.pri
│ │ └── model.pri
│ ├── parsers
│ │ ├── CMakeLists.txt
│ │ ├── MetaFile.cpp
│ │ ├── MetaFile.h
│ │ ├── SettingsFile.cpp
│ │ ├── SettingsFile.h
│ │ └── parsers.pri
│ ├── platform
│ │ ├── AndroidAppIconProvider.cpp
│ │ ├── AndroidAppIconProvider.h
│ │ ├── AndroidHelpers.cpp
│ │ ├── AndroidHelpers.h
│ │ ├── CMakeLists.txt
│ │ ├── PowerCommands.h
│ │ ├── PowerCommands_linux.cpp
│ │ ├── PowerCommands_mac.cpp
│ │ ├── PowerCommands_unimpl.cpp
│ │ ├── PowerCommands_win.cpp
│ │ ├── TerminalKbd.cpp
│ │ ├── TerminalKbd.h
│ │ └── platform.pri
│ ├── providers
│ │ ├── CMakeLists.txt
│ │ ├── Provider.cpp
│ │ ├── Provider.h
│ │ ├── ProviderManager.cpp
│ │ ├── ProviderManager.h
│ │ ├── ProviderUtils.cpp
│ │ ├── ProviderUtils.h
│ │ ├── SearchContext.cpp
│ │ ├── SearchContext.h
│ │ ├── android_apps
│ │ │ ├── AndroidAppsMetadata.cpp
│ │ │ ├── AndroidAppsMetadata.h
│ │ │ ├── AndroidAppsProvider.cpp
│ │ │ ├── AndroidAppsProvider.h
│ │ │ ├── CMakeLists.txt
│ │ │ └── android.pri
│ │ ├── es2
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Es2Games.cpp
│ │ │ ├── Es2Games.h
│ │ │ ├── Es2Metadata.cpp
│ │ │ ├── Es2Metadata.h
│ │ │ ├── Es2Provider.cpp
│ │ │ ├── Es2Provider.h
│ │ │ ├── Es2Systems.cpp
│ │ │ ├── Es2Systems.h
│ │ │ └── es2.pri
│ │ ├── gog
│ │ │ ├── CMakeLists.txt
│ │ │ ├── GogGamelist.cpp
│ │ │ ├── GogGamelist.h
│ │ │ ├── GogMetadata.cpp
│ │ │ ├── GogMetadata.h
│ │ │ ├── GogProvider.cpp
│ │ │ ├── GogProvider.h
│ │ │ └── gog.pri
│ │ ├── launchbox
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LaunchBoxAssets.cpp
│ │ │ ├── LaunchBoxAssets.h
│ │ │ ├── LaunchBoxEmulatorsXml.cpp
│ │ │ ├── LaunchBoxEmulatorsXml.h
│ │ │ ├── LaunchBoxGamelistXml.cpp
│ │ │ ├── LaunchBoxGamelistXml.h
│ │ │ ├── LaunchBoxPlatformsXml.cpp
│ │ │ ├── LaunchBoxPlatformsXml.h
│ │ │ ├── LaunchBoxProvider.cpp
│ │ │ ├── LaunchBoxProvider.h
│ │ │ ├── LaunchBoxXml.cpp
│ │ │ ├── LaunchBoxXml.h
│ │ │ └── launchbox.pri
│ │ ├── logiqx
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LogiqxProvider.cpp
│ │ │ ├── LogiqxProvider.h
│ │ │ └── logiqx.pri
│ │ ├── lutris
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LutrisProvider.cpp
│ │ │ ├── LutrisProvider.h
│ │ │ └── lutris.pri
│ │ ├── pegasus_favorites
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Favorites.cpp
│ │ │ ├── Favorites.h
│ │ │ └── pegasus_favorites.pri
│ │ ├── pegasus_media
│ │ │ ├── CMakeLists.txt
│ │ │ ├── MediaProvider.cpp
│ │ │ ├── MediaProvider.h
│ │ │ └── pegasus_media.pri
│ │ ├── pegasus_metadata
│ │ │ ├── CMakeLists.txt
│ │ │ ├── PegasusFilter.cpp
│ │ │ ├── PegasusFilter.h
│ │ │ ├── PegasusMetadata.cpp
│ │ │ ├── PegasusMetadata.h
│ │ │ ├── PegasusProvider.cpp
│ │ │ ├── PegasusProvider.h
│ │ │ └── pegasus_metadata.pri
│ │ ├── pegasus_playtime
│ │ │ ├── CMakeLists.txt
│ │ │ ├── PlaytimeStats.cpp
│ │ │ ├── PlaytimeStats.h
│ │ │ └── pegasus_playtime.pri
│ │ ├── playnite
│ │ │ ├── CMakeLists.txt
│ │ │ ├── PlayniteComponents.h
│ │ │ ├── PlayniteEmulator.h
│ │ │ ├── PlayniteGame.h
│ │ │ ├── PlayniteJsonHelper.cpp
│ │ │ ├── PlayniteJsonHelper.h
│ │ │ ├── PlayniteLaunchHelper.cpp
│ │ │ ├── PlayniteLaunchHelper.h
│ │ │ ├── PlayniteMetadataParser.cpp
│ │ │ ├── PlayniteMetadataParser.h
│ │ │ ├── PlayniteProvider.cpp
│ │ │ ├── PlayniteProvider.h
│ │ │ └── playnite.pri
│ │ ├── providers.pri
│ │ ├── skraper
│ │ │ ├── CMakeLists.txt
│ │ │ ├── SkraperAssetsProvider.cpp
│ │ │ ├── SkraperAssetsProvider.h
│ │ │ └── skraper.pri
│ │ └── steam
│ │ │ ├── CMakeLists.txt
│ │ │ ├── SteamGamelist.cpp
│ │ │ ├── SteamGamelist.h
│ │ │ ├── SteamMetadata.cpp
│ │ │ ├── SteamMetadata.h
│ │ │ ├── SteamProvider.cpp
│ │ │ ├── SteamProvider.h
│ │ │ └── steam.pri
│ ├── types
│ │ ├── AppCloseType.h
│ │ ├── AssetType.h
│ │ ├── CMakeLists.txt
│ │ ├── GamepadKeyId.h
│ │ ├── KeyEventType.h
│ │ └── types.pri
│ └── utils
│ │ ├── CMakeLists.txt
│ │ ├── CommandTokenizer.cpp
│ │ ├── CommandTokenizer.h
│ │ ├── DiskCachedNAM.cpp
│ │ ├── DiskCachedNAM.h
│ │ ├── FakeQKeyEvent.cpp
│ │ ├── FakeQKeyEvent.h
│ │ ├── FolderListModel.cpp
│ │ ├── FolderListModel.h
│ │ ├── HashMap.h
│ │ ├── KeySequenceTools.cpp
│ │ ├── KeySequenceTools.h
│ │ ├── MoveOnly.h
│ │ ├── NoCopyNoMove.h
│ │ ├── PathTools.cpp
│ │ ├── PathTools.h
│ │ ├── QmlHelpers.h
│ │ ├── SqliteDb.cpp
│ │ ├── SqliteDb.h
│ │ ├── StdHelpers.h
│ │ ├── StringHelpers.cpp
│ │ ├── StringHelpers.h
│ │ └── utils.pri
├── deployment_vars.pri
├── frontend
│ ├── CMakeLists.txt
│ ├── MenuLayer.qml
│ ├── SplashLayer.qml
│ ├── assets
│ │ ├── dir-icon.png
│ │ ├── gamepad
│ │ │ ├── list-arrow.png
│ │ │ ├── preview.png
│ │ │ └── x360
│ │ │ │ ├── a.png
│ │ │ │ ├── b.png
│ │ │ │ ├── dpdown.png
│ │ │ │ ├── dpleft.png
│ │ │ │ ├── dpright.png
│ │ │ │ ├── dpup.png
│ │ │ │ ├── guide.png
│ │ │ │ ├── lb.png
│ │ │ │ ├── lsb.png
│ │ │ │ ├── lsx.png
│ │ │ │ ├── lsy.png
│ │ │ │ ├── lt.png
│ │ │ │ ├── rb.png
│ │ │ │ ├── rsb.png
│ │ │ │ ├── rsx.png
│ │ │ │ ├── rsy.png
│ │ │ │ ├── rt.png
│ │ │ │ ├── select.png
│ │ │ │ ├── start.png
│ │ │ │ ├── x.png
│ │ │ │ └── y.png
│ │ ├── logo.png
│ │ ├── pbar-left.png
│ │ ├── pbar-right.png
│ │ ├── pbar.png
│ │ ├── qr-docs.png
│ │ └── qt-logo.png
│ ├── dialogs
│ │ ├── GenericOkCancelDialog.qml
│ │ ├── GenericOkDialog.qml
│ │ ├── MultifileSelector.qml
│ │ ├── RebootDialog.qml
│ │ ├── Shade.qml
│ │ └── ShutdownDialog.qml
│ ├── frontend.pro
│ ├── frontend.qrc
│ ├── main.qml
│ ├── menu
│ │ ├── common
│ │ │ └── MenuScreen.qml
│ │ ├── help
│ │ │ ├── HelpScreen.qml
│ │ │ ├── QrBox.qml
│ │ │ └── SectionTitle.qml
│ │ ├── mainmenu
│ │ │ ├── GenericMenuItem.qml
│ │ │ ├── MainMenuPanel.qml
│ │ │ ├── PrimaryMenuItem.qml
│ │ │ ├── RollableMenuItem.qml
│ │ │ └── SecondaryMenuItem.qml
│ │ └── settings
│ │ │ ├── AndroidSafEditor.qml
│ │ │ ├── GameDirEditor.qml
│ │ │ ├── GamepadEditor.qml
│ │ │ ├── KeyEditor.qml
│ │ │ ├── ProviderEditor.qml
│ │ │ ├── SettingsEntry.qml
│ │ │ ├── SettingsMain.qml
│ │ │ ├── SettingsScreen.qml
│ │ │ ├── common
│ │ │ ├── MultivalueBox.qml
│ │ │ ├── MultivalueOption.qml
│ │ │ ├── ReloadQuestion.qml
│ │ │ ├── ScreenHeader.qml
│ │ │ ├── SectionTitle.qml
│ │ │ ├── SimpleButton.qml
│ │ │ ├── SimpleShade.qml
│ │ │ ├── Switch.qml
│ │ │ └── ToggleOption.qml
│ │ │ ├── gamedireditor
│ │ │ ├── FilePicker.qml
│ │ │ ├── GameDirEditorButton.qml
│ │ │ └── GameDirEditorEntry.qml
│ │ │ ├── gamepad
│ │ │ ├── GamepadField.qml
│ │ │ ├── GamepadFooter.qml
│ │ │ ├── GamepadHeader.qml
│ │ │ ├── GamepadPreview.qml
│ │ │ └── GamepadRecorder.qml
│ │ │ └── keyeditor
│ │ │ ├── KeyEditorEntry.qml
│ │ │ ├── KeyEditorEntryButton.qml
│ │ │ ├── KeyEditorRecorder.qml
│ │ │ └── KeyEditorResetButton.qml
│ └── messages
│ │ ├── Error.qml
│ │ ├── NoGamesError.qml
│ │ └── ThemeError.qml
├── link_to_backend.pri
├── link_to_frontend.pri
├── print_config.pri
├── qmlutils
│ ├── AutoScroll.qml
│ ├── HorizontalSwipeArea.qml
│ └── qmlutils.qrc
├── src.pro
└── themes
│ └── themes.qrc
├── tests
├── CMakeLists.txt
├── backend
│ ├── api
│ │ ├── CMakeLists.txt
│ │ ├── api.pro
│ │ └── test_Api.cpp
│ ├── backend.pro
│ ├── configfile
│ │ ├── CMakeLists.txt
│ │ ├── configfile.pro
│ │ ├── configfile.qrc
│ │ ├── test.cfg
│ │ └── test_ConfigFile.cpp
│ ├── model
│ │ ├── collection
│ │ │ ├── CMakeLists.txt
│ │ │ ├── collection.pro
│ │ │ └── test_Collection.cpp
│ │ ├── game
│ │ │ ├── CMakeLists.txt
│ │ │ ├── game.pro
│ │ │ └── test_Game.cpp
│ │ ├── gameassets
│ │ │ ├── CMakeLists.txt
│ │ │ ├── gameassets.pro
│ │ │ └── test_GameAssets.cpp
│ │ ├── keyeditor
│ │ │ ├── CMakeLists.txt
│ │ │ ├── keyeditor.pro
│ │ │ ├── test_KeyEditor.cpp
│ │ │ ├── tst_add.qml
│ │ │ ├── tst_delete.qml
│ │ │ ├── tst_keyname.qml
│ │ │ ├── tst_replace.qml
│ │ │ └── utils.js
│ │ ├── locales
│ │ │ ├── CMakeLists.txt
│ │ │ ├── locales.pro
│ │ │ └── test_Locales.cpp
│ │ ├── memory
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Container.cpp
│ │ │ ├── Container.h
│ │ │ ├── memory.pro
│ │ │ └── test_Memory.cpp
│ │ ├── model.pro
│ │ ├── system
│ │ │ ├── CMakeLists.txt
│ │ │ ├── system.pro
│ │ │ └── test_System.cpp
│ │ └── themes
│ │ │ ├── CMakeLists.txt
│ │ │ ├── test_Themes.cpp
│ │ │ └── themes.pro
│ ├── processlauncher
│ │ ├── CMakeLists.txt
│ │ ├── processlauncher.pro
│ │ └── test_ProcessLauncher.cpp
│ ├── providers
│ │ ├── emulationstation
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── basic
│ │ │ │ │ ├── es
│ │ │ │ │ │ └── es_systems.cfg
│ │ │ │ │ └── mysys1
│ │ │ │ │ │ └── game.ext
│ │ │ │ ├── data.qrc
│ │ │ │ ├── empty
│ │ │ │ │ └── es
│ │ │ │ │ │ └── nothing_to_see_here
│ │ │ │ └── gamelist
│ │ │ │ │ ├── abs_image1.png
│ │ │ │ │ ├── abs_image2.png
│ │ │ │ │ ├── es
│ │ │ │ │ └── es_systems.cfg
│ │ │ │ │ ├── img
│ │ │ │ │ └── abs_image3.png
│ │ │ │ │ └── mysys1
│ │ │ │ │ ├── game1.ext
│ │ │ │ │ ├── game2.ext
│ │ │ │ │ ├── gamelist.xml
│ │ │ │ │ ├── img
│ │ │ │ │ └── local_image3.png
│ │ │ │ │ ├── local_image1.png
│ │ │ │ │ └── local_image2.png
│ │ │ ├── emulationstation.pro
│ │ │ └── test_EmulationStationProvider.cpp
│ │ ├── favorites
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── coll1dummy1
│ │ │ │ ├── coll1dummy2
│ │ │ │ ├── coll2dummy1
│ │ │ │ └── data.qrc
│ │ │ ├── favorites.pro
│ │ │ └── test_FavoriteDB.cpp
│ │ ├── launchbox
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── basic
│ │ │ │ │ ├── LaunchBox
│ │ │ │ │ │ └── Data
│ │ │ │ │ │ │ ├── Emulators.xml
│ │ │ │ │ │ │ ├── Platforms.xml
│ │ │ │ │ │ │ └── Platforms
│ │ │ │ │ │ │ └── Nintendo Entertainment System.xml
│ │ │ │ │ ├── emu
│ │ │ │ │ │ └── nestopia.exe
│ │ │ │ │ └── game
│ │ │ │ │ │ ├── Test Bros (JU) [!].zip
│ │ │ │ │ │ └── Test Bros Something.zip
│ │ │ │ ├── data.qrc
│ │ │ │ └── empty
│ │ │ │ │ └── nothing_to_see_here
│ │ │ ├── launchbox.pro
│ │ │ └── test_LaunchBoxProvider.cpp
│ │ ├── logiqx
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── data.qrc
│ │ │ │ ├── faulty
│ │ │ │ │ ├── empty.dat
│ │ │ │ │ ├── incorrect_root.dat
│ │ │ │ │ ├── no_doctype.dat
│ │ │ │ │ └── not_logiqx.dat
│ │ │ │ ├── malformed
│ │ │ │ │ ├── Game 1.ext
│ │ │ │ │ ├── Game 2.ext
│ │ │ │ │ ├── Game 3.ext
│ │ │ │ │ ├── bad_games.dat
│ │ │ │ │ └── bad_header.dat
│ │ │ │ └── simple
│ │ │ │ │ ├── Game 1.ext
│ │ │ │ │ ├── Game 2x1.ext
│ │ │ │ │ ├── Game 2x2.ext
│ │ │ │ │ └── something.dat
│ │ │ ├── logiqx.pro
│ │ │ └── test_LogiqxProvider.cpp
│ │ ├── pegasus
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── autoparenting
│ │ │ │ │ ├── game1.ext
│ │ │ │ │ ├── game2.ext
│ │ │ │ │ ├── game3.ext
│ │ │ │ │ └── metadata.txt
│ │ │ │ ├── custom_assets
│ │ │ │ │ ├── collections.txt
│ │ │ │ │ ├── different_dir
│ │ │ │ │ │ └── whatever.png
│ │ │ │ │ ├── media
│ │ │ │ │ │ └── mygame1-boxFront.png
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ ├── my_collection_assets
│ │ │ │ │ │ └── cartridge.png
│ │ │ │ │ └── mygame1.ext
│ │ │ │ ├── custom_assets_multi
│ │ │ │ │ ├── game1.ext
│ │ │ │ │ ├── game2.ext
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ └── videos
│ │ │ │ │ │ ├── a.mp4
│ │ │ │ │ │ ├── b.mp4
│ │ │ │ │ │ └── c.mp4
│ │ │ │ ├── custom_dirs
│ │ │ │ │ ├── a
│ │ │ │ │ │ ├── mygame.x
│ │ │ │ │ │ └── mygame.y
│ │ │ │ │ ├── b
│ │ │ │ │ │ ├── mygame.x
│ │ │ │ │ │ └── mygame.y
│ │ │ │ │ ├── c
│ │ │ │ │ │ ├── mygame.x
│ │ │ │ │ │ └── mygame.y
│ │ │ │ │ └── coll
│ │ │ │ │ │ ├── metadata.txt
│ │ │ │ │ │ └── mygame.x
│ │ │ │ ├── data.qrc
│ │ │ │ ├── empty
│ │ │ │ │ └── nothing_to_see_here
│ │ │ │ ├── entryless
│ │ │ │ │ └── metadata.txt
│ │ │ │ ├── multicoll
│ │ │ │ │ ├── c1
│ │ │ │ │ │ └── metadata.txt
│ │ │ │ │ ├── c2
│ │ │ │ │ │ └── metadata.txt
│ │ │ │ │ └── games
│ │ │ │ │ │ ├── game.ext
│ │ │ │ │ │ ├── game.jpg
│ │ │ │ │ │ └── metadata.txt
│ │ │ │ ├── multifile
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ ├── multi.a.ext
│ │ │ │ │ ├── multi.b.ext
│ │ │ │ │ └── single.ext
│ │ │ │ ├── relative_files
│ │ │ │ │ ├── a
│ │ │ │ │ │ └── game_a.ext
│ │ │ │ │ ├── coll
│ │ │ │ │ │ ├── b
│ │ │ │ │ │ │ └── game_b.ext
│ │ │ │ │ │ ├── c
│ │ │ │ │ │ │ └── game_c.ext
│ │ │ │ │ │ ├── game_here.ext
│ │ │ │ │ │ └── metadata.txt
│ │ │ │ │ └── ignored
│ │ │ │ │ │ └── ignoreme.ext
│ │ │ │ ├── relative_files_with_dirs
│ │ │ │ │ ├── a
│ │ │ │ │ │ ├── game_a.x
│ │ │ │ │ │ └── ignoreme.x
│ │ │ │ │ ├── b
│ │ │ │ │ │ ├── game_b.x
│ │ │ │ │ │ └── ignoredir
│ │ │ │ │ │ │ └── game_ign.x
│ │ │ │ │ └── coll
│ │ │ │ │ │ ├── game_here.x
│ │ │ │ │ │ ├── ignoredir
│ │ │ │ │ │ └── game_ign.x
│ │ │ │ │ │ ├── ignoreme.x
│ │ │ │ │ │ └── metadata.txt
│ │ │ │ ├── simple
│ │ │ │ │ ├── 9999-in-1.ext
│ │ │ │ │ ├── buggygame.ext
│ │ │ │ │ ├── duplicategame.ext
│ │ │ │ │ ├── favgame1.ext
│ │ │ │ │ ├── favgame2.ext
│ │ │ │ │ ├── game with spaces.ext
│ │ │ │ │ ├── media
│ │ │ │ │ │ └── game_ignored.ext
│ │ │ │ │ ├── metadata.pegasus.txt
│ │ │ │ │ ├── mygame1.ext
│ │ │ │ │ ├── mygame2.EXT
│ │ │ │ │ ├── mygame3.ext
│ │ │ │ │ ├── notgame.unk
│ │ │ │ │ └── subdir
│ │ │ │ │ │ └── game_in_subdir.EXT
│ │ │ │ └── with_meta
│ │ │ │ │ ├── basic.ext
│ │ │ │ │ ├── horse.ext
│ │ │ │ │ ├── media
│ │ │ │ │ └── game_ignored.ext
│ │ │ │ │ ├── metadata.pegasus.txt
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ ├── multi.a.ext
│ │ │ │ │ ├── multi.b.ext
│ │ │ │ │ ├── mygame2.ext
│ │ │ │ │ ├── mygame3.ext
│ │ │ │ │ ├── pre.ext
│ │ │ │ │ └── subdir
│ │ │ │ │ └── game_in_subdir.ext
│ │ │ ├── pegasus.pro
│ │ │ └── test_PegasusProvider.cpp
│ │ ├── pegasus_media
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── asset_search
│ │ │ │ │ ├── media
│ │ │ │ │ │ ├── mygame1
│ │ │ │ │ │ │ ├── box_front.png
│ │ │ │ │ │ │ └── video.mp4
│ │ │ │ │ │ ├── mygame3
│ │ │ │ │ │ │ ├── music.mp3
│ │ │ │ │ │ │ └── screenshot.jpg
│ │ │ │ │ │ └── subdir
│ │ │ │ │ │ │ └── mygame4
│ │ │ │ │ │ │ └── background.png
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ ├── mygame1.ext
│ │ │ │ │ ├── mygame2.ext
│ │ │ │ │ ├── mygame3.ext
│ │ │ │ │ └── subdir
│ │ │ │ │ │ └── mygame4.ext
│ │ │ │ ├── asset_search_by_title
│ │ │ │ │ ├── media
│ │ │ │ │ │ └── My Precious Game
│ │ │ │ │ │ │ ├── box_front.png
│ │ │ │ │ │ │ └── video.mp4
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ └── mygame.ext
│ │ │ │ ├── asset_search_multifile
│ │ │ │ │ ├── media
│ │ │ │ │ │ └── mygame
│ │ │ │ │ │ │ ├── screenshot01.png
│ │ │ │ │ │ │ └── screenshot02.png
│ │ │ │ │ ├── metadata.txt
│ │ │ │ │ └── mygame.ext
│ │ │ │ ├── data.qrc
│ │ │ │ └── separate_media_dirs
│ │ │ │ │ ├── games-a
│ │ │ │ │ ├── game1.ext
│ │ │ │ │ └── media
│ │ │ │ │ │ └── Game 1
│ │ │ │ │ │ └── box_front.png
│ │ │ │ │ ├── games-b
│ │ │ │ │ ├── .media
│ │ │ │ │ │ └── Game 2
│ │ │ │ │ │ │ └── box_front.png
│ │ │ │ │ └── game2.ext
│ │ │ │ │ └── metadata
│ │ │ │ │ └── metadata.pegasus.txt
│ │ │ ├── pegasus_media.pro
│ │ │ └── test_PegasusMediaProvider.cpp
│ │ ├── playnite
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data
│ │ │ │ ├── basic
│ │ │ │ │ ├── Playnite
│ │ │ │ │ │ └── library
│ │ │ │ │ │ │ ├── companies
│ │ │ │ │ │ │ ├── 133a9c55-2c95-4159-b1df-edf03f686031.json
│ │ │ │ │ │ │ ├── 26e38b33-91f8-4d21-a69e-4c32a29d13de.json
│ │ │ │ │ │ │ ├── 562f95a7-6ac1-4795-9946-e5d13b9a9df6.json
│ │ │ │ │ │ │ └── 6f1fe3aa-c0eb-4d41-9e14-cce859a7af4e.json
│ │ │ │ │ │ │ ├── emulators
│ │ │ │ │ │ │ └── 7e80bb8a-2e09-4a41-bc17-0035d4ba1709.json
│ │ │ │ │ │ │ ├── games
│ │ │ │ │ │ │ ├── 000b196b-217a-453c-bcaf-473cc455fc6f.json
│ │ │ │ │ │ │ └── 39d79d40-a579-4e13-8e74-0723e65c7305.json
│ │ │ │ │ │ │ ├── genres
│ │ │ │ │ │ │ ├── 7f2a2f5a-aa50-4ac3-a8fc-f38f3e6d4cdb.json
│ │ │ │ │ │ │ ├── 9828dab7-5f3f-47b9-b0cc-2cf610e55655.json
│ │ │ │ │ │ │ ├── b232562e-5ec8-4809-9511-89a2aaa05b32.json
│ │ │ │ │ │ │ ├── c3ba2a1a-65ec-4040-a798-f28adb62f955.json
│ │ │ │ │ │ │ ├── c5c76d06-3ef5-4ba1-939f-2b26caa37514.json
│ │ │ │ │ │ │ ├── ebeb4bd1-9e2b-4af7-89ef-c2805110ea9f.json
│ │ │ │ │ │ │ └── ef3ea3be-3e35-4178-b5f1-f57fed9c57a5.json
│ │ │ │ │ │ │ ├── platforms
│ │ │ │ │ │ │ ├── 22fc036d-c73c-4ce1-ba49-105ecacaf9cf.json
│ │ │ │ │ │ │ └── adb97362-7144-4191-8bcb-a80f5b049265.json
│ │ │ │ │ │ │ └── sources
│ │ │ │ │ │ │ ├── 69a848f2-18a0-48d6-9d27-1c1b17139d6b.json
│ │ │ │ │ │ │ ├── aee2cb68-7f5a-4a00-a687-64d193a67241.json
│ │ │ │ │ │ │ └── f356164c-0239-4ae4-95e3-4a0b42c3bb1e.json
│ │ │ │ │ └── game
│ │ │ │ │ │ ├── Test Bros (JU) [!].zip
│ │ │ │ │ │ └── Test Bros Something.zip
│ │ │ │ ├── data.qrc
│ │ │ │ └── empty
│ │ │ │ │ └── nothing_to_see_here
│ │ │ ├── playnite.pro
│ │ │ └── test_PlayniteProvider.cpp
│ │ ├── playtime
│ │ │ ├── CMakeLists.txt
│ │ │ ├── data.db
│ │ │ ├── data.qrc
│ │ │ ├── playtime.pro
│ │ │ └── test_Playtime.cpp
│ │ └── providers.pro
│ └── utils
│ │ ├── CMakeLists.txt
│ │ ├── test_Utils.cpp
│ │ └── utils.pro
├── benchmarks
│ ├── benchmarks.pro
│ ├── configfile
│ │ ├── CMakeLists.txt
│ │ ├── bench_ConfigFile.cpp
│ │ ├── configfile.pro
│ │ ├── data.qrc
│ │ └── test.cfg
│ └── pegasus_provider
│ │ ├── CMakeLists.txt
│ │ ├── bench_PegasusProvider.cpp
│ │ ├── data
│ │ ├── data.qrc
│ │ ├── empty
│ │ │ └── nothing_to_see_here
│ │ └── filled
│ │ │ ├── 9999-in-1.ext
│ │ │ ├── buggygame.ext
│ │ │ ├── duplicategame.ext
│ │ │ ├── favgame1.ext
│ │ │ ├── favgame2.ext
│ │ │ ├── media
│ │ │ └── game_ignored.ext
│ │ │ ├── metadata.pegasus.txt
│ │ │ ├── mygame1.ext
│ │ │ ├── mygame2.ext
│ │ │ ├── mygame3.ext
│ │ │ ├── notgame.unk
│ │ │ └── subdir
│ │ │ └── game_in_subdir.ext
│ │ └── pegasus_provider.pro
├── cxxtest_common.pri
├── integration
│ ├── apng
│ │ ├── CMakeLists.txt
│ │ ├── actual.apng
│ │ ├── apng.pro
│ │ ├── data.qrc
│ │ ├── expected.png
│ │ ├── test_apng.cpp
│ │ └── tst_render.qml
│ ├── blurhash
│ │ ├── CMakeLists.txt
│ │ ├── blurhash.pro
│ │ ├── data.qrc
│ │ ├── expected.png
│ │ ├── test_Blurhash.cpp
│ │ └── tst_render.qml
│ ├── integration.pro
│ ├── sdl_gamepad
│ │ ├── CMakeLists.txt
│ │ ├── sdl_gamepad.pro
│ │ └── test_SdlGamepad.cpp
│ └── sortfilter
│ │ ├── CMakeLists.txt
│ │ ├── sortfilter.pro
│ │ ├── test_SortFilter.cpp
│ │ └── tst_all.qml
├── qmltest_common.pri
└── tests.pro
└── thirdparty
├── README.md
├── apng
├── CMakeLists.txt
├── apng.pro
├── apngimagehandler.cpp
├── apngimagehandler_p.h
├── apngimageplugin.cpp
├── apngimageplugin.h
├── apngreader.cpp
├── apngreader_p.h
└── qapng.json
├── link_to_png.pri
├── link_to_sdl.pri
├── thirdparty.pri
└── thirdparty.pro
/.circleci/build.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 | set -o xtrace
6 |
7 | QT_DIR=/opt/${QT_VERSION}_${QT_TARGET}_hosttools
8 | if [[ ! -d "$QT_DIR" ]]; then
9 | QT_DIR=/opt/${QT_VERSION}_${QT_TARGET}
10 | fi
11 |
12 | ${QT_DIR}/bin/qmake --version
13 | eval ${QT_DIR}/bin/qmake . \
14 | ENABLE_APNG=1 \
15 | ${BUILDOPTS:-} \
16 | QMAKE_CXXFLAGS+=\'-Wall -Wextra -pedantic\'
17 | make
18 | make install INSTALL_ROOT=${PWD}/installdir
19 |
--------------------------------------------------------------------------------
/.circleci/objdump_linux.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 | set -o xtrace
6 |
7 | ${1}objdump -p installdir${INSTALL_BINDIR:-/opt/pegasus-frontend/}pegasus-fe | grep 'NEEDED' | sort
8 |
--------------------------------------------------------------------------------
/.circleci/prepare.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 | set -o xtrace
6 |
7 | git submodule sync
8 | git submodule update --init --recursive
9 |
10 | mkdir dist
11 |
12 |
13 | TOOLS_URL=https://github.com/mmatyas/pegasus-frontend/releases/download/alpha1
14 | curl -L ${TOOLS_URL}/${QT_VERSION}_${QT_TARGET}.tar.xz | tar xJf - -C /opt/
15 | curl -L ${TOOLS_URL}/apng_patched_headers.tar.xz | tar xJf - -C /opt/${QT_VERSION}_${QT_TARGET}/include/
16 |
--------------------------------------------------------------------------------
/.circleci/release_bintray.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 | set +o xtrace # !
6 |
7 | shopt -s nullglob
8 |
9 | if [[ "$CIRCLE_BRANCH" != "master" ]]; then
10 | echo "Skipping deployment for pull requests"
11 | exit 0
12 | fi
13 |
14 |
15 | GIT_TAG=$(git describe --always --abbrev=0)
16 |
17 |
18 | for file in dist-x11-static/*.deb; do
19 | echo "Uploading '${file}' to Bintray"
20 |
21 | filename=$(basename "$file")
22 | curl \
23 | -T "${file}" \
24 | -H "X-Bintray-Package: pegasus-frontend" \
25 | -H "X-Bintray-Version: ${GIT_TAG}" \
26 | -H "X-Bintray-Publish: 1" \
27 | -H "X-Bintray-Debian-Distribution: testing" \
28 | -H "X-Bintray-Debian-Component: main" \
29 | -H "X-Bintray-Debian-Architecture: amd64" \
30 | -u "mmatyas:${BINTRAY_KEY}" \
31 | "https://api.bintray.com/content/mmatyas/deb/pool/main/p/pegasus-frontend/${filename}"
32 | done
33 |
--------------------------------------------------------------------------------
/.circleci/stage.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 | set +o xtrace # !
6 |
7 |
8 | pushd dist
9 |
10 | if [[ "$CIRCLE_BRANCH" != "master" ]]; then
11 | FFSEND_VER="v0.2.74"
12 |
13 | echo "Release uploading disabled for pull requests, uploading to Send instead"
14 | pushd /tmp
15 | curl -L -O https://github.com/mmatyas/pegasus-frontend/releases/download/alpha1/ffsend-${FFSEND_VER}-linux-x64-static
16 | chmod +x ffsend-${FFSEND_VER}-linux-x64-static
17 | popd
18 |
19 | for FILE in ./*; do
20 | timeout 2m /tmp/ffsend-${FFSEND_VER}-linux-x64-static upload $FILE || true
21 | done
22 |
23 | popd
24 | exit 0
25 | fi
26 |
27 | git config --global user.email "autodeploy@circleci.com"
28 | git config --global user.name "Circle CI"
29 |
30 | git init
31 | git remote add origin https://mmatyas:${GITHUB_TOKEN}@github.com/mmatyas/pegasus-deploy-staging.git
32 | git checkout -b continuous-${QT_TARGET}
33 | git add ./*
34 | git commit -m "Deployed from CircleCI"
35 | git push -f --set-upstream origin continuous-${QT_TARGET}
36 |
37 | popd
38 |
--------------------------------------------------------------------------------
/.circleci/zip_linux.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 | set -o xtrace
6 |
7 | zip -j dist/pegasus-fe_$(git describe --always)_${QT_TARGET}.zip \
8 | installdir${INSTALL_BINDIR:-/opt/pegasus-frontend/}pegasus-fe \
9 | README.md \
10 | LICENSE.md
11 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | custom: ["https://www.paypal.me/MatyasMustoha", "https://www.buymeacoffee.com/mmatyas"]
2 | patreon: matyasmustoha
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | contact_links:
2 | - name: 🎧 Discord Server
3 | url: https://discord.gg/KTtzP6y
4 | about: Would you like to chat with us? Feel free to join our Discord community!
5 | - name: 🕹️ RetroPie forum thread
6 | url: https://retropie.org.uk/forum/topic/9598/announcing-pegasus-frontend
7 | about: Tinkering with Raspberries and other board computers? Take a look at this thread!
8 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 🚀 Feature request
3 | about: I have a good idea to add for Pegasus
4 | labels: feature
5 | ---
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # ignore build dir
2 | build*/
3 |
4 | # ignore all dotfiles
5 | ./.*
6 |
7 | # except these
8 | !.gitignore
9 | !.qmake.conf
10 | !.appveyor.yml
11 | !.circleci/
12 | !.travis/
13 | !.github/
14 |
15 | # ignore IDE project files
16 | *.pro.user
17 | *.kdev4
18 | *.workspace
19 |
20 | # ignore Qt generated files
21 | *.qmlc
22 | *.jsc
23 | *.autosave
24 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "lang"]
2 | path = lang
3 | url = https://github.com/mmatyas/pegasus-frontend-translations.git
4 | branch = master
5 | [submodule "src/themes/pegasus-theme-grid"]
6 | path = src/themes/pegasus-theme-grid
7 | url = https://github.com/mmatyas/pegasus-theme-grid.git
8 | [submodule "thirdparty/SortFilterProxyModel"]
9 | path = thirdparty/SortFilterProxyModel
10 | url = https://github.com/mmatyas/SortFilterProxyModel.git
11 |
--------------------------------------------------------------------------------
/.qmake.conf:
--------------------------------------------------------------------------------
1 | TOP_SRCDIR=$$PWD
2 | TOP_BUILDDIR=$$shadowed($$PWD)
3 |
4 | GIT_REVISION = $$system(git \
5 | --git-dir \"$${TOP_SRCDIR}/.git\" \
6 | --work-tree \"$${TOP_SRCDIR}\" \
7 | describe \
8 | --always --dirty)
9 |
10 | GIT_DATE = $$system(git \
11 | --git-dir \"$${TOP_SRCDIR}/.git\" \
12 | --work-tree \"$${TOP_SRCDIR}\" \
13 | log \
14 | -1 \
15 | --format=%cd \
16 | --date=short)
17 |
18 | GIT_COMMIT_CNT = $$system(git \
19 | --git-dir \"$${TOP_SRCDIR}/.git\" \
20 | --work-tree \"$${TOP_SRCDIR}\" \
21 | rev-list \
22 | --count HEAD)
23 |
24 | COMMON_DEFINES = \
25 | QT_DEPRECATED_WARNINGS \
26 | QT_DISABLE_DEPRECATED_BEFORE=0x050C00 \
27 | QT_NO_CAST_TO_ASCII \
28 | QT_NO_PROCESS_COMBINED_ARGUMENT_START \
29 | QT_NO_URL_CAST_FROM_STRING \
30 | GIT_REVISION=\\\"$$GIT_REVISION\\\" \
31 | GIT_DATE=\\\"$$GIT_DATE\\\"
32 |
--------------------------------------------------------------------------------
/.travis/script__build_with_lcov.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 |
6 | QT_DIR=/opt/${QT_VERSION}_${QT_TARGET}_hosttools
7 | if [[ ! -d "$QT_DIR" ]]; then
8 | QT_DIR=/opt/${QT_VERSION}_${QT_TARGET}
9 | fi
10 |
11 |
12 | ${QT_DIR}/bin/qmake --version
13 | ${QT_DIR}/bin/qmake . \
14 | ENABLE_APNG=1 \
15 | USE_SDL_GAMEPAD=1 \
16 | QMAKE_CXXFLAGS="-g -O0 --coverage -fprofile-arcs -ftest-coverage" \
17 | QMAKE_LDFLAGS="-g -O0 --coverage -fprofile-arcs -ftest-coverage" \
18 | LIBS+="-lgcov" \
19 | CONFIG+=debug
20 | make
21 |
22 |
23 | lcov --compat-libtool -i -c -d . -o coverage.pre
24 | make check
25 | lcov --compat-libtool -c -d . -o coverage.post
26 |
27 |
28 | lcov --compat-libtool -a coverage.pre -a coverage.post -o coverage.total
29 | ROOTDIR="$(pwd)"
30 | sed -i "s|SF:$ROOTDIR/|SF:|g" coverage.total
31 |
32 | lcov --compat-libtool -r coverage.total \
33 | '/usr/*' \
34 | '/opt/*' \
35 | '*/moc_*' \
36 | '*/qrc_*' \
37 | '*/test_*' \
38 | '*/bench_*' \
39 | 'src/app/*' \
40 | 'tests/*' \
41 | 'thirdparty/*' \
42 | '*/pegasus-fe_plugin_import.cpp' \
43 | '*/pegasus-fe_qml_plugin_import.cpp' \
44 | '*/qmlcache_loader.cpp' \
45 | -o coverage.clean
46 |
--------------------------------------------------------------------------------
/assets/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | include(PegasusQtUtils)
2 | pegasus_require_qt(COMPONENTS Core)
3 |
4 | qt_add_big_resources(PEGASUS_ASSETS_SRC assets.qrc)
5 | add_library(pegasus-assets ${PEGASUS_ASSETS_SRC})
6 |
7 | include(PegasusCommonProps)
8 | pegasus_add_common_props_optimized(pegasus-assets)
9 |
--------------------------------------------------------------------------------
/assets/assets.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | fonts/RobotoCondensed-Bold.ttf
4 | fonts/RobotoCondensed-Regular.ttf
5 | fonts/RobotoMono-Regular.ttf
6 | fonts/Roboto-Bold.ttf
7 | fonts/Roboto-Regular.ttf
8 | icon.png
9 | buttons/ps_circle.png
10 | buttons/ps_cross.png
11 | buttons/ps_square.png
12 | buttons/ps_triangle.png
13 | buttons/xb_a.png
14 | buttons/xb_b.png
15 | buttons/xb_x.png
16 | buttons/xb_y.png
17 | sdl2/gamecontrollerdb_204.txt
18 | sdl2/gamecontrollerdb_205.txt
19 | sdl2/gamecontrollerdb_209.txt
20 | sdl2/gamecontrollerdb_2016.txt
21 |
22 |
23 |
--------------------------------------------------------------------------------
/assets/buttons/ps_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/ps_circle.png
--------------------------------------------------------------------------------
/assets/buttons/ps_cross.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/ps_cross.png
--------------------------------------------------------------------------------
/assets/buttons/ps_square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/ps_square.png
--------------------------------------------------------------------------------
/assets/buttons/ps_triangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/ps_triangle.png
--------------------------------------------------------------------------------
/assets/buttons/xb_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/xb_a.png
--------------------------------------------------------------------------------
/assets/buttons/xb_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/xb_b.png
--------------------------------------------------------------------------------
/assets/buttons/xb_x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/xb_x.png
--------------------------------------------------------------------------------
/assets/buttons/xb_y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/buttons/xb_y.png
--------------------------------------------------------------------------------
/assets/fonts/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/fonts/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/Roboto-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/fonts/Roboto-Regular.ttf
--------------------------------------------------------------------------------
/assets/fonts/RobotoCondensed-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/fonts/RobotoCondensed-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/RobotoCondensed-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/fonts/RobotoCondensed-Regular.ttf
--------------------------------------------------------------------------------
/assets/fonts/RobotoMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/fonts/RobotoMono-Regular.ttf
--------------------------------------------------------------------------------
/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/assets/icon.png
--------------------------------------------------------------------------------
/cmake/PegasusGitInfo.cmake:
--------------------------------------------------------------------------------
1 | execute_process(COMMAND
2 | git
3 | --git-dir "${PROJECT_SOURCE_DIR}/.git"
4 | --work-tree "${PROJECT_SOURCE_DIR}"
5 | describe
6 | --always
7 | --dirty
8 | OUTPUT_STRIP_TRAILING_WHITESPACE
9 | OUTPUT_VARIABLE PEGASUS_GIT_REVISION
10 | )
11 |
12 | execute_process(COMMAND
13 | git
14 | --git-dir "${PROJECT_SOURCE_DIR}/.git"
15 | --work-tree "${PROJECT_SOURCE_DIR}"
16 | log -1
17 | --format=%cd
18 | --date=short
19 | OUTPUT_STRIP_TRAILING_WHITESPACE
20 | OUTPUT_VARIABLE PEGASUS_GIT_DATE
21 | )
22 |
23 | execute_process(COMMAND
24 | git
25 | --git-dir "${PROJECT_SOURCE_DIR}/.git"
26 | --work-tree "${PROJECT_SOURCE_DIR}"
27 | rev-list
28 | --count HEAD
29 | OUTPUT_STRIP_TRAILING_WHITESPACE
30 | OUTPUT_VARIABLE PEGASUS_GIT_COMMIT_CNT
31 | )
32 |
--------------------------------------------------------------------------------
/cmake/PegasusPrettyPrint.cmake:
--------------------------------------------------------------------------------
1 | set(BOX_W 60)
2 |
3 | function(pegasus_print_boxline text)
4 | string(LENGTH "${text}" text_len)
5 | math(EXPR padding_len "${BOX_W} - 4 - ${text_len}")
6 | if(${padding_len} GREATER_EQUAL 0)
7 | string(REPEAT " " ${padding_len} padding)
8 | message("│ ${text}${padding} │")
9 | else()
10 | message("│ ${text}")
11 | endif()
12 | endfunction()
13 |
14 | function(pegasus_print_boxhead text)
15 | string(LENGTH "${text}" text_len)
16 | math(EXPR padding_len "${BOX_W} - 4 - ${text_len}")
17 | string(REPEAT "─" ${padding_len} padding)
18 | message("╭${padding} ${text} ╮")
19 | endfunction()
20 |
21 | function(pegasus_print_boxtail)
22 | math(EXPR edge_len "${BOX_W} - 2")
23 | string(REPEAT "─" ${edge_len} edge)
24 | message("╰${edge}╯")
25 | endfunction()
26 |
27 | function(pegasus_print_box)
28 | cmake_parse_arguments(BOX
29 | ""
30 | "TITLE"
31 | "CONTENT"
32 | ${ARGN})
33 |
34 | pegasus_print_boxhead("${BOX_TITLE}")
35 | foreach(LINE IN LISTS BOX_CONTENT)
36 | pegasus_print_boxline("${LINE}")
37 | endforeach()
38 | pegasus_print_boxtail()
39 | endfunction()
40 |
--------------------------------------------------------------------------------
/cmake/PegasusQtUtils.cmake:
--------------------------------------------------------------------------------
1 | # NOTE: This is a macro because `find_package` variables would go
2 | # out of scope at the end of functions
3 | macro(pegasus_require_qt)
4 | cmake_parse_arguments(QTREQ
5 | ""
6 | ""
7 | COMPONENTS
8 | ${ARGN})
9 |
10 | find_package(Qt6 COMPONENTS ${QTREQ_COMPONENTS} QUIET)
11 | if (NOT Qt6_FOUND)
12 | find_package(Qt5 5.15 COMPONENTS ${QTREQ_COMPONENTS} REQUIRED)
13 | endif()
14 | endmacro()
15 |
--------------------------------------------------------------------------------
/cmake/PegasusTargetPlatform.cmake:
--------------------------------------------------------------------------------
1 | function(create_platform_var_maybe varsuffix sysname)
2 | if("${CMAKE_SYSTEM_NAME}" MATCHES "${sysname}")
3 | set("PEGASUS_ON_${varsuffix}" ON CACHE INTERNAL "")
4 | endif()
5 | endfunction()
6 |
7 |
8 | create_platform_var_maybe("ANDROID" "Android")
9 | create_platform_var_maybe("WINDOWS" "Windows")
10 | create_platform_var_maybe("MACOS" "Darwin")
11 | if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
12 | if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm|aarch64")
13 | set(PEGASUS_ON_EGLFS ON)
14 | else()
15 | set(PEGASUS_ON_X11 ON)
16 | endif()
17 | endif()
18 |
--------------------------------------------------------------------------------
/etc/branding/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/etc/branding/logo.png
--------------------------------------------------------------------------------
/etc/branding/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/etc/promo/donate-coffee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/etc/promo/donate-coffee.png
--------------------------------------------------------------------------------
/etc/promo/donate-patreon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/etc/promo/donate-patreon.png
--------------------------------------------------------------------------------
/etc/promo/screenshot_alpha1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/etc/promo/screenshot_alpha1.jpg
--------------------------------------------------------------------------------
/etc/promo/screenshot_alpha10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/etc/promo/screenshot_alpha10.jpg
--------------------------------------------------------------------------------
/etc/promo/shader_demo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/etc/promo/shader_demo.jpg
--------------------------------------------------------------------------------
/pegasus.pro:
--------------------------------------------------------------------------------
1 | REQ_QT_MAJOR = 5
2 | REQ_QT_MINOR = 12
3 |
4 | lessThan(QT_MAJOR_VERSION, $${REQ_QT_MAJOR}) | equals(QT_MAJOR_VERSION, $${REQ_QT_MAJOR}):lessThan(QT_MINOR_VERSION, $${REQ_QT_MINOR}) {
5 | message("Cannot build this project using Qt $$[QT_VERSION]")
6 | error("This project requires at least Qt $${REQ_QT_MAJOR}.$${REQ_QT_MINOR} or newer")
7 | }
8 |
9 |
10 | TEMPLATE = subdirs
11 | SUBDIRS += src thirdparty
12 | OTHER_FILES += .qmake.conf
13 |
14 | src.depends = thirdparty
15 |
16 | # FIXME: MAke sure the QT options of Backend inherit to the dependers
17 | qtHaveModule(testlib):!android {
18 | SUBDIRS += tests
19 | tests.depends = src
20 | tests.CONFIG = no_default_install
21 | }
22 |
23 |
24 | include($${TOP_SRCDIR}/src/deployment_vars.pri)
25 | include($${TOP_SRCDIR}/src/print_config.pri)
26 |
--------------------------------------------------------------------------------
/src/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_subdirectory(backend)
2 | add_subdirectory(frontend)
3 | add_subdirectory(app)
4 |
--------------------------------------------------------------------------------
/src/app/app.pro:
--------------------------------------------------------------------------------
1 | TARGET = pegasus-fe
2 | CONFIG += c++11 warn_on exceptions_off rtti_off
3 |
4 | SOURCES += main.cpp
5 | DEFINES *= $${COMMON_DEFINES}
6 |
7 | RESOURCES += "$${TOP_SRCDIR}/assets/assets.qrc"
8 | OTHER_FILES += qmlplugins.qml
9 |
10 |
11 | # Linking
12 |
13 | include($${TOP_SRCDIR}/src/link_to_backend.pri)
14 | include($${TOP_SRCDIR}/src/link_to_frontend.pri)
15 |
16 |
17 | # Translations
18 |
19 | EXTRA_TRANSLATIONS = $$files($${TOP_SRCDIR}/lang/pegasus_*.ts)
20 | CONFIG += lrelease embed_translations
21 |
22 |
23 | # Deployment
24 |
25 | include(install.pri)
26 |
--------------------------------------------------------------------------------
/src/app/platform/android/gradle.properties:
--------------------------------------------------------------------------------
1 | android.useAndroidX=true
2 | android.enableJetifier=true
3 |
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-hdpi/icon_fg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-hdpi/icon_fg.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-ldpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-ldpi/icon.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-mdpi/icon_fg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-mdpi/icon_fg.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xhdpi/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xhdpi/banner.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xhdpi/icon_fg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xhdpi/icon_fg.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xxhdpi/icon_fg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xxhdpi/icon_fg.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/mipmap-xxxhdpi/icon_fg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/android/res/mipmap-xxxhdpi/icon_fg.png
--------------------------------------------------------------------------------
/src/app/platform/android/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #333333
4 |
5 |
--------------------------------------------------------------------------------
/src/app/platform/android/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/src/app/platform/android/res/xml/fileprovider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/app/platform/android/src/org/pegasus_frontend/android/LaunchFileProvider.java:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2021 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | package org.pegasus_frontend.android;
19 |
20 | import androidx.core.content.FileProvider;
21 |
22 |
23 | public class LaunchFileProvider extends FileProvider {}
24 |
--------------------------------------------------------------------------------
/src/app/platform/linux/icons/128/org.pegasus_frontend.Pegasus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/linux/icons/128/org.pegasus_frontend.Pegasus.png
--------------------------------------------------------------------------------
/src/app/platform/linux/icons/16/org.pegasus_frontend.Pegasus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/linux/icons/16/org.pegasus_frontend.Pegasus.png
--------------------------------------------------------------------------------
/src/app/platform/linux/icons/32/org.pegasus_frontend.Pegasus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/linux/icons/32/org.pegasus_frontend.Pegasus.png
--------------------------------------------------------------------------------
/src/app/platform/linux/icons/48/org.pegasus_frontend.Pegasus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/linux/icons/48/org.pegasus_frontend.Pegasus.png
--------------------------------------------------------------------------------
/src/app/platform/linux/icons/64/org.pegasus_frontend.Pegasus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/linux/icons/64/org.pegasus_frontend.Pegasus.png
--------------------------------------------------------------------------------
/src/app/platform/linux/org.pegasus_frontend.Pegasus.desktop.in:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Version=1.1
3 | Type=Application
4 | Name=Pegasus
5 | GenericName=Emulator Frontend
6 | Comment=A cross platform, customizable graphical frontend for launching emulators and managing your game collection.
7 | Exec=${INSTALL_BINDIR}/pegasus-fe
8 | Icon=org.pegasus_frontend.Pegasus
9 | Terminal=false
10 | Categories=Game;Emulator;
11 | Keywords=emulator;retro;game;videogame;video game;player;
12 |
--------------------------------------------------------------------------------
/src/app/platform/linux/org.pegasus_frontend.Pegasus.desktop.qmake.in:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Version=1.1
3 | Type=Application
4 | Name=Pegasus
5 | GenericName=Emulator Frontend
6 | Comment=A cross platform, customizable graphical frontend for launching emulators and managing your game collection.
7 | Exec=$${INSTALL_BINDIR}/pegasus-fe
8 | Icon=org.pegasus_frontend.Pegasus
9 | Terminal=false
10 | Categories=Game;Player;
11 | Keywords=emulator;retro;game;videogame;video game;player;
12 |
--------------------------------------------------------------------------------
/src/app/platform/macos/Info.plist.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleExecutable
6 | ${EXECUTABLE_NAME}
7 | CFBundleGetInfoString
8 | Created by Qt/QMake
9 | CFBundleIconFile
10 | ${ASSETCATALOG_COMPILER_APPICON_NAME}
11 | CFBundleIdentifier
12 | org.pegasus-frontend.macos
13 | CFBundlePackageType
14 | APPL
15 | CFBundleSignature
16 | ${QMAKE_PKGINFO_TYPEINFO}
17 | LSMinimumSystemVersion
18 | ${MACOSX_DEPLOYMENT_TARGET}
19 | LSApplicationCategoryType
20 | public.app-category.games
21 | LSUIPresentationMode
22 | 0
23 | NSPrincipalClass
24 | NSApplication
25 | NSHumanReadableCopyright
26 | Copyright (c) 2017-2020 Mátyás Mustoha
27 | NSSupportsAutomaticGraphicsSwitching
28 |
29 | NSHighResolutionCapable
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/app/platform/macos/pegasus-fe.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/macos/pegasus-fe.icns
--------------------------------------------------------------------------------
/src/app/platform/windows/app_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/app/platform/windows/app_icon.ico
--------------------------------------------------------------------------------
/src/app/qmlplugins.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | // This file lists the QML modules which should be
19 | // included in a static build. It'll be read by qmake
20 | // during the configuration step.
21 |
22 |
23 | import QtQuick 2.0
24 | import QtQuick.Layouts 1.3
25 | import QtQuick.Particles 2.0
26 | import QtQuick.Shapes 1.15
27 | import QtQuick.Timeline 1.0
28 | import QtQuick.Window 2.0
29 |
30 | import QtGraphicalEffects 1.0
31 | import QtMultimedia 5.8
32 |
33 | import QtQml.Models 2.15
34 | import Qt.labs.qmlmodels 1.0
35 |
36 |
37 | Item {}
38 |
--------------------------------------------------------------------------------
/src/backend/CliArgs.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | namespace backend {
21 | struct CliArgs {
22 | bool portable = false;
23 | bool silent = false;
24 | bool enable_menu_appclose = true;
25 | bool enable_menu_shutdown = true;
26 | bool enable_menu_suspend = true;
27 | bool enable_menu_reboot = true;
28 | bool enable_menu_settings = true;
29 | bool enable_gamepad_autoconfig = true;
30 | };
31 | } // namespace backend
32 |
--------------------------------------------------------------------------------
/src/backend/PegasusAssets.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | class QString;
21 | enum class AssetType : unsigned char;
22 |
23 |
24 | namespace pegasus_assets {
25 |
26 | AssetType str_to_type(const QString&);
27 |
28 | } // namespace pegasus_assets
29 |
--------------------------------------------------------------------------------
/src/backend/ScriptRunner.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | class QStringList;
21 |
22 |
23 | enum class ScriptEvent : unsigned char {
24 | QUIT,
25 | REBOOT,
26 | SHUTDOWN,
27 | CONFIG_CHANGED,
28 | SETTINGS_CHANGED,
29 | CONTROLS_CHANGED,
30 | PROCESS_STARTED,
31 | PROCESS_FINISHED,
32 | };
33 |
34 |
35 | /// A utility class for finding and running external scripts
36 | class ScriptRunner {
37 | public:
38 | static void run(ScriptEvent);
39 | static void run(ScriptEvent, const QStringList&);
40 | };
41 |
--------------------------------------------------------------------------------
/src/backend/backend.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = lib
2 |
3 | QT += qml quick sql
4 | CONFIG += c++11 staticlib warn_on exceptions_off
5 | android: QT += androidextras
6 |
7 | !isEmpty(USE_SDL_GAMEPAD)|!isEmpty(USE_SDL_POWER): include($${TOP_SRCDIR}/thirdparty/link_to_sdl.pri)
8 |
9 | isEmpty(USE_SDL_GAMEPAD): QT += gamepad
10 |
11 | !isEmpty(INSIDE_FLATPAK): DEFINES *= PEGASUS_INSIDE_FLATPAK
12 | msvc: DEFINES *= _USE_MATH_DEFINES
13 |
14 |
15 | SOURCES += \
16 | Backend.cpp \
17 | FrontendLayer.cpp \
18 | PegasusAssets.cpp \
19 | ProcessLauncher.cpp \
20 | ScriptRunner.cpp \
21 | Paths.cpp \
22 | AppSettings.cpp \
23 | Log.cpp \
24 |
25 | HEADERS += \
26 | Backend.h \
27 | CliArgs.h \
28 | FrontendLayer.h \
29 | PegasusAssets.h \
30 | ProcessLauncher.h \
31 | ScriptRunner.h \
32 | Paths.h \
33 | AppSettings.h \
34 | Log.h \
35 |
36 | include(imggen/imggen.pri)
37 | include(model/model.pri)
38 | include(parsers/parsers.pri)
39 | include(platform/platform.pri)
40 | include(providers/providers.pri)
41 | include(types/types.pri)
42 | include(utils/utils.pri)
43 |
44 | DEFINES *= $${COMMON_DEFINES}
45 |
46 | include($${TOP_SRCDIR}/thirdparty/thirdparty.pri)
47 |
--------------------------------------------------------------------------------
/src/backend/imggen/BlurhashProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 |
22 |
23 | class BlurhashProvider : public QQuickImageProvider {
24 | public:
25 | BlurhashProvider();
26 |
27 | QImage requestImage(const QString&, QSize*, const QSize&) override;
28 | };
29 |
--------------------------------------------------------------------------------
/src/backend/imggen/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | target_sources(pegasus-backend PRIVATE
2 | BlurhashProvider.cpp
3 | BlurhashProvider.h
4 | )
5 |
--------------------------------------------------------------------------------
/src/backend/imggen/imggen.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/BlurhashProvider.h
3 |
4 | SOURCES += \
5 | $$PWD/BlurhashProvider.cpp
6 |
--------------------------------------------------------------------------------
/src/backend/model/device/device.pri:
--------------------------------------------------------------------------------
1 | HEADERS += $$PWD/DeviceInfo.h
2 | SOURCES += $$PWD/DeviceInfo.cpp
3 |
--------------------------------------------------------------------------------
/src/backend/model/gaming/CollectionListModel.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2022 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "model/ObjectListModel.h"
21 |
22 | namespace model { class Collection; }
23 |
24 |
25 | namespace model {
26 | class CollectionListModel : public TypeListModel {
27 | public:
28 | explicit CollectionListModel(QObject* parent = nullptr);
29 |
30 | QHash roleNames() const override;
31 | QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
32 | };
33 | } // namespace model
34 |
--------------------------------------------------------------------------------
/src/backend/model/gaming/gaming.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/Assets.h \
3 | $$PWD/Collection.h \
4 | $$PWD/CollectionListModel.h \
5 | $$PWD/Game.h \
6 | $$PWD/GameFile.h \
7 | $$PWD/GameFileListModel.h \
8 | $$PWD/GameListModel.h
9 |
10 | SOURCES += \
11 | $$PWD/Assets.cpp \
12 | $$PWD/Collection.cpp \
13 | $$PWD/CollectionListModel.cpp \
14 | $$PWD/Game.cpp \
15 | $$PWD/GameFile.cpp \
16 | $$PWD/GameFileListModel.cpp \
17 | $$PWD/GameListModel.cpp
18 |
--------------------------------------------------------------------------------
/src/backend/model/internal/GamepadManagerBackend.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2019 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include "GamepadManagerBackend.h"
19 |
20 |
21 | namespace model {
22 |
23 | GamepadManagerBackend::GamepadManagerBackend(QObject* parent)
24 | : QObject(parent)
25 | {}
26 |
27 | GamepadManagerBackend::~GamepadManagerBackend()
28 | {
29 | stop();
30 | }
31 |
32 | } // namespace model
33 |
--------------------------------------------------------------------------------
/src/backend/model/internal/Internal.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include "Internal.h"
19 |
20 | #include "CliArgs.h"
21 |
22 |
23 | namespace model {
24 |
25 | Internal::Internal(const backend::CliArgs& args, QObject* parent)
26 | : QObject(parent)
27 | , m_meta(args)
28 | {}
29 |
30 | } // namespace model
31 |
--------------------------------------------------------------------------------
/src/backend/model/internal/internal.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/Gamepad.h \
3 | $$PWD/GamepadAxisNavigation.h \
4 | $$PWD/GamepadButtonNavigation.h \
5 | $$PWD/GamepadListModel.h \
6 | $$PWD/GamepadManager.h \
7 | $$PWD/GamepadManagerBackend.h \
8 | $$PWD/Internal.h \
9 | $$PWD/Meta.h \
10 | $$PWD/ScannerState.h \
11 | $$PWD/System.h \
12 |
13 | SOURCES += \
14 | $$PWD/Gamepad.cpp \
15 | $$PWD/GamepadAxisNavigation.cpp \
16 | $$PWD/GamepadButtonNavigation.cpp \
17 | $$PWD/GamepadListModel.cpp \
18 | $$PWD/GamepadManager.cpp \
19 | $$PWD/GamepadManagerBackend.cpp \
20 | $$PWD/Internal.cpp \
21 | $$PWD/Meta.cpp \
22 | $$PWD/ScannerState.cpp \
23 | $$PWD/System.cpp \
24 |
25 | !isEmpty(USE_SDL_GAMEPAD) {
26 | HEADERS += $$PWD/GamepadManagerSDL2.h
27 | SOURCES += $$PWD/GamepadManagerSDL2.cpp
28 | } else {
29 | HEADERS += $$PWD/GamepadManagerQt.h
30 | SOURCES += $$PWD/GamepadManagerQt.cpp
31 | }
32 |
33 | include(settings/settings.pri)
34 |
--------------------------------------------------------------------------------
/src/backend/model/internal/settings/settings.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/KeyEditor.h \
3 | $$PWD/Locales.h \
4 | $$PWD/Providers.h \
5 | $$PWD/Settings.h \
6 | $$PWD/Themes.h \
7 |
8 | SOURCES += \
9 | $$PWD/KeyEditor.cpp \
10 | $$PWD/Locales.cpp \
11 | $$PWD/Providers.cpp \
12 | $$PWD/Settings.cpp \
13 | $$PWD/Themes.cpp \
14 |
--------------------------------------------------------------------------------
/src/backend/model/keys/keys.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/Key.h \
3 | $$PWD/Keys.h \
4 |
5 | SOURCES += \
6 | $$PWD/Key.cpp \
7 | $$PWD/Keys.cpp \
8 |
--------------------------------------------------------------------------------
/src/backend/model/memory/memory.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/Memory.h
3 |
4 | SOURCES += \
5 | $$PWD/Memory.cpp
6 |
--------------------------------------------------------------------------------
/src/backend/model/model.pri:
--------------------------------------------------------------------------------
1 | SOURCES += $$PWD/Api.cpp
2 | HEADERS += \
3 | $$PWD/Api.h \
4 | $$PWD/ObjectListModel.h
5 |
6 | include(device/device.pri)
7 | include(gaming/gaming.pri)
8 | include(internal/internal.pri)
9 | include(keys/keys.pri)
10 | include(memory/memory.pri)
11 |
--------------------------------------------------------------------------------
/src/backend/parsers/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | target_sources(pegasus-backend PRIVATE
2 | MetaFile.cpp
3 | MetaFile.h
4 | SettingsFile.cpp
5 | SettingsFile.h
6 | )
7 |
--------------------------------------------------------------------------------
/src/backend/parsers/parsers.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/MetaFile.h \
3 | $$PWD/SettingsFile.h \
4 |
5 | SOURCES += \
6 | $$PWD/MetaFile.cpp \
7 | $$PWD/SettingsFile.cpp \
8 |
--------------------------------------------------------------------------------
/src/backend/platform/AndroidAppIconProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 |
22 |
23 | class AndroidAppIconProvider : public QQuickImageProvider {
24 | public:
25 | AndroidAppIconProvider();
26 |
27 | QPixmap requestPixmap(const QString&, QSize*, const QSize&) override;
28 | };
29 |
--------------------------------------------------------------------------------
/src/backend/platform/AndroidHelpers.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2019 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 |
22 |
23 | namespace android {
24 |
25 | const char* jni_classname();
26 |
27 | QString primary_storage_path();
28 | QStringList storage_paths();
29 | bool has_external_storage_access();
30 |
31 | QStringList granted_paths();
32 | void request_saf_permission(const std::function&);
33 |
34 | QString run_am_call(const QStringList&);
35 | QString to_content_uri(const QString&);
36 | QString to_document_uri(const QString&);
37 |
38 | } // namespace android
39 |
--------------------------------------------------------------------------------
/src/backend/platform/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | target_sources(pegasus-backend PRIVATE
2 | PowerCommands.h
3 | TerminalKbd.cpp
4 | TerminalKbd.h
5 | )
6 |
7 |
8 | if(PEGASUS_ON_ANDROID)
9 | target_sources(pegasus-backend PRIVATE
10 | AndroidAppIconProvider.cpp
11 | AndroidAppIconProvider.h
12 | AndroidHelpers.cpp
13 | AndroidHelpers.h
14 | )
15 | endif()
16 |
17 |
18 | # Select power manager implementation
19 |
20 | if(PEGASUS_ON_X11 OR PEGASUS_ON_EGLFS)
21 | target_sources(pegasus-backend PRIVATE PowerCommands_linux.cpp)
22 | set(POWER_IMPL_NAME "Linux" CACHE INTERNAL "")
23 | elseif(PEGASUS_ON_WINDOWS)
24 | target_sources(pegasus-backend PRIVATE PowerCommands_win.cpp)
25 | set(POWER_IMPL_NAME "Windows" CACHE INTERNAL "")
26 | elseif(PEGASUS_ON_MACOS)
27 | target_sources(pegasus-backend PRIVATE PowerCommands_mac.cpp)
28 | set(POWER_IMPL_NAME "macOS" CACHE INTERNAL "")
29 | else()
30 | target_sources(pegasus-backend PRIVATE PowerCommands_unimpl.cpp)
31 | set(POWER_IMPL_NAME "Disabled" CACHE INTERNAL "")
32 | endif()
33 |
--------------------------------------------------------------------------------
/src/backend/platform/PowerCommands.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 |
21 | namespace platform {
22 | /// Contains the implementation of platform-specific system calls,
23 | /// such as reboot or shutdown
24 | namespace power {
25 |
26 | void reboot();
27 | void shutdown();
28 | void suspend();
29 |
30 | } // namespace power
31 | } // namespace platform
32 |
--------------------------------------------------------------------------------
/src/backend/platform/TerminalKbd.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2018-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 |
21 | namespace TerminalKbd {
22 | void on_startup();
23 | void enable();
24 | void disable();
25 | } // namespace TerminalKbd
26 |
--------------------------------------------------------------------------------
/src/backend/platform/platform.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/PowerCommands.h \
3 | $$PWD/TerminalKbd.h \
4 |
5 | SOURCES += \
6 | $$PWD/TerminalKbd.cpp \
7 |
8 |
9 | win32 {
10 | SOURCES += $$PWD/PowerCommands_win.cpp
11 | }
12 | else:unix:!android {
13 | macx: SOURCES += $$PWD/PowerCommands_mac.cpp
14 | else: SOURCES += $$PWD/PowerCommands_linux.cpp
15 | }
16 | else {
17 | SOURCES += $$PWD/PowerCommands_unimpl.cpp
18 | }
19 |
20 | android {
21 | HEADERS += \
22 | $$PWD/AndroidAppIconProvider.h \
23 | $$PWD/AndroidHelpers.h
24 |
25 | SOURCES += \
26 | $$PWD/AndroidAppIconProvider.cpp \
27 | $$PWD/AndroidHelpers.cpp
28 | }
29 |
--------------------------------------------------------------------------------
/src/backend/providers/android_apps/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "Android Apps"
3 | CXXID ANDROIDAPPS
4 | SOURCES
5 | AndroidAppsMetadata.cpp
6 | AndroidAppsMetadata.h
7 | AndroidAppsProvider.cpp
8 | AndroidAppsProvider.h
9 | USES_JSON_CACHE
10 | PLATFORMS
11 | ANDROID
12 | )
13 |
--------------------------------------------------------------------------------
/src/backend/providers/android_apps/android.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS *= "Android Apps"
2 | USES_JSON_CACHE = yes
3 |
4 | DEFINES *= WITH_COMPAT_ANDROIDAPPS
5 |
6 | HEADERS += \
7 | $$PWD/AndroidAppsProvider.h \
8 | $$PWD/AndroidAppsMetadata.h \
9 |
10 | SOURCES += \
11 | $$PWD/AndroidAppsProvider.cpp \
12 | $$PWD/AndroidAppsMetadata.cpp \
13 |
--------------------------------------------------------------------------------
/src/backend/providers/es2/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "EmulationStation"
3 | CXXID ES2
4 | SOURCES
5 | Es2Games.cpp
6 | Es2Games.h
7 | Es2Metadata.cpp
8 | Es2Metadata.h
9 | Es2Provider.cpp
10 | Es2Provider.h
11 | Es2Systems.cpp
12 | Es2Systems.h
13 | PLATFORMS
14 | WINDOWS
15 | MACOS
16 | X11
17 | EGLFS
18 | )
19 |
--------------------------------------------------------------------------------
/src/backend/providers/es2/Es2Provider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace es2 {
25 |
26 | class Es2Provider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit Es2Provider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace es2
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/es2/Es2Systems.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 | #include
22 |
23 |
24 | namespace providers {
25 | namespace es2 {
26 |
27 | struct SystemEntry {
28 | QString name;
29 | QString shortname;
30 | QString path;
31 | QString extensions;
32 | QString platforms;
33 | QString launch_cmd;
34 | };
35 |
36 |
37 | std::vector find_systems(const QString&, const std::vector&);
38 |
39 | } // namespace es2
40 | } // namespace providers
41 |
--------------------------------------------------------------------------------
/src/backend/providers/es2/es2.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += EmulationStation
2 |
3 | DEFINES *= WITH_COMPAT_ES2
4 |
5 | HEADERS += \
6 | $$PWD/Es2Games.h \
7 | $$PWD/Es2Metadata.h \
8 | $$PWD/Es2Provider.h \
9 | $$PWD/Es2Systems.h \
10 |
11 | SOURCES += \
12 | $$PWD/Es2Games.cpp \
13 | $$PWD/Es2Metadata.cpp \
14 | $$PWD/Es2Provider.cpp \
15 | $$PWD/Es2Systems.cpp \
16 |
--------------------------------------------------------------------------------
/src/backend/providers/gog/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "GOG"
3 | CXXID GOG
4 | SOURCES
5 | GogGamelist.cpp
6 | GogGamelist.h
7 | GogMetadata.cpp
8 | GogMetadata.h
9 | GogProvider.cpp
10 | GogProvider.h
11 | USES_JSON_CACHE
12 | PLATFORMS
13 | WINDOWS
14 | X11
15 | )
16 |
--------------------------------------------------------------------------------
/src/backend/providers/gog/GogProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace gog {
25 |
26 | class GogProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit GogProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace gog
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/gog/gog.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += GOG
2 | USES_JSON_CACHE = yes
3 |
4 | DEFINES *= WITH_COMPAT_GOG
5 |
6 | HEADERS += \
7 | $$PWD/GogGamelist.h \
8 | $$PWD/GogMetadata.h \
9 | $$PWD/GogProvider.h \
10 |
11 | SOURCES += \
12 | $$PWD/GogGamelist.cpp \
13 | $$PWD/GogMetadata.cpp \
14 | $$PWD/GogProvider.cpp \
15 |
--------------------------------------------------------------------------------
/src/backend/providers/launchbox/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "LaunchBox"
3 | CXXID LAUNCHBOX
4 | SOURCES
5 | LaunchBoxAssets.cpp
6 | LaunchBoxAssets.h
7 | LaunchBoxEmulatorsXml.cpp
8 | LaunchBoxEmulatorsXml.h
9 | LaunchBoxGamelistXml.cpp
10 | LaunchBoxGamelistXml.h
11 | LaunchBoxPlatformsXml.cpp
12 | LaunchBoxPlatformsXml.h
13 | LaunchBoxProvider.cpp
14 | LaunchBoxProvider.h
15 | LaunchBoxXml.cpp
16 | LaunchBoxXml.h
17 | PLATFORMS
18 | WINDOWS
19 | )
20 |
--------------------------------------------------------------------------------
/src/backend/providers/launchbox/LaunchBoxPlatformsXml.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 |
22 | class QDir;
23 | class QString;
24 |
25 |
26 | namespace providers {
27 | namespace launchbox {
28 |
29 | struct Platform;
30 | std::vector find_platforms(const QString&, const QDir&);
31 |
32 | } // namespace launchbox
33 | } // namespace providers
34 |
--------------------------------------------------------------------------------
/src/backend/providers/launchbox/LaunchBoxProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace launchbox {
25 |
26 | class LaunchboxProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit LaunchboxProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(providers::SearchContext&) final;
33 | };
34 |
35 | } // namespace launchbox
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/launchbox/launchbox.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += LaunchBox
2 |
3 | DEFINES *= WITH_COMPAT_LAUNCHBOX
4 |
5 | HEADERS += \
6 | $$PWD/LaunchBoxAssets.h \
7 | $$PWD/LaunchBoxEmulatorsXml.h \
8 | $$PWD/LaunchBoxGamelistXml.h \
9 | $$PWD/LaunchBoxPlatformsXml.h \
10 | $$PWD/LaunchBoxProvider.h \
11 | $$PWD/LaunchBoxXml.h
12 |
13 | SOURCES += \
14 | $$PWD/LaunchBoxAssets.cpp \
15 | $$PWD/LaunchBoxEmulatorsXml.cpp \
16 | $$PWD/LaunchBoxGamelistXml.cpp \
17 | $$PWD/LaunchBoxPlatformsXml.cpp \
18 | $$PWD/LaunchBoxProvider.cpp \
19 | $$PWD/LaunchBoxXml.cpp
20 |
--------------------------------------------------------------------------------
/src/backend/providers/logiqx/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "Logiqx"
3 | CXXID LOGIQX
4 | SOURCES
5 | LogiqxProvider.cpp
6 | LogiqxProvider.h
7 | PLATFORMS
8 | ALL
9 | )
10 |
--------------------------------------------------------------------------------
/src/backend/providers/logiqx/LogiqxProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace logiqx {
25 |
26 | class LogiqxProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit LogiqxProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace logiqx
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/logiqx/logiqx.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += "Logiqx"
2 |
3 | DEFINES *= WITH_COMPAT_LOGIQX
4 |
5 | HEADERS += $$PWD/LogiqxProvider.h
6 | SOURCES += $$PWD/LogiqxProvider.cpp
7 |
--------------------------------------------------------------------------------
/src/backend/providers/lutris/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "Lutris"
3 | CXXID LUTRIS
4 | SOURCES
5 | LutrisProvider.cpp
6 | LutrisProvider.h
7 | PLATFORMS
8 | X11
9 | )
10 |
--------------------------------------------------------------------------------
/src/backend/providers/lutris/LutrisProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace lutris {
25 |
26 | class LutrisProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit LutrisProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace lutris
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/lutris/lutris.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS *= "Lutris"
2 |
3 | DEFINES *= WITH_COMPAT_LUTRIS
4 |
5 | HEADERS += \
6 | $$PWD/LutrisProvider.h \
7 |
8 | SOURCES += \
9 | $$PWD/LutrisProvider.cpp \
10 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_favorites/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | INTERNAL
3 | SOURCES
4 | Favorites.cpp
5 | Favorites.h
6 | PLATFORMS
7 | ALL
8 | )
9 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_favorites/pegasus_favorites.pri:
--------------------------------------------------------------------------------
1 | HEADERS += $$PWD/Favorites.h
2 | SOURCES += $$PWD/Favorites.cpp
3 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_media/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | INTERNAL
3 | SOURCES
4 | MediaProvider.cpp
5 | MediaProvider.h
6 | PLATFORMS
7 | ALL
8 | )
9 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_media/MediaProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace media {
25 |
26 | class MediaProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit MediaProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace media
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_media/pegasus_media.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/MediaProvider.h
3 |
4 | SOURCES += \
5 | $$PWD/MediaProvider.cpp
6 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_metadata/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | INTERNAL
3 | SOURCES
4 | PegasusFilter.cpp
5 | PegasusFilter.h
6 | PegasusMetadata.cpp
7 | PegasusMetadata.h
8 | PegasusProvider.cpp
9 | PegasusProvider.h
10 | PLATFORMS
11 | ALL
12 | )
13 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_metadata/PegasusProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace pegasus {
25 |
26 | class PegasusProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit PegasusProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace pegasus
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_metadata/pegasus_metadata.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/PegasusFilter.h \
3 | $$PWD/PegasusMetadata.h \
4 | $$PWD/PegasusProvider.h \
5 |
6 | SOURCES += \
7 | $$PWD/PegasusFilter.cpp \
8 | $$PWD/PegasusMetadata.cpp \
9 | $$PWD/PegasusProvider.cpp \
10 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_playtime/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | INTERNAL
3 | SOURCES
4 | PlaytimeStats.cpp
5 | PlaytimeStats.h
6 | PLATFORMS
7 | ALL
8 | )
9 |
--------------------------------------------------------------------------------
/src/backend/providers/pegasus_playtime/pegasus_playtime.pri:
--------------------------------------------------------------------------------
1 | HEADERS += $$PWD/PlaytimeStats.h
2 | SOURCES += $$PWD/PlaytimeStats.cpp
3 |
--------------------------------------------------------------------------------
/src/backend/providers/playnite/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "Playnite"
3 | CXXID PLAYNITE
4 | SOURCES
5 | PlayniteComponents.h
6 | PlayniteEmulator.h
7 | PlayniteGame.h
8 | PlayniteJsonHelper.cpp
9 | PlayniteJsonHelper.h
10 | PlayniteLaunchHelper.cpp
11 | PlayniteLaunchHelper.h
12 | PlayniteMetadataParser.cpp
13 | PlayniteMetadataParser.h
14 | PlayniteMetadataParser.h
15 | PlayniteProvider.cpp
16 | PlayniteProvider.h
17 | PLATFORMS
18 | WINDOWS
19 | )
20 |
--------------------------------------------------------------------------------
/src/backend/providers/playnite/playnite.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += Playnite
2 |
3 | DEFINES *= WITH_COMPAT_PLAYNITE
4 |
5 | HEADERS += \
6 | $$PWD/PlayniteProvider.h \
7 | $$PWD/PlayniteJsonHelper.h \
8 | $$PWD/PlayniteLaunchHelper.h \
9 | $$PWD/PlayniteMetadataParser.h \
10 | $$PWD/PlayniteEmulator.h \
11 | $$PWD/PlayniteGame.h \
12 | $$PWD/PlayniteComponents.h \
13 | $$PWD/PlayniteMetadataParser.h \
14 |
15 |
16 | SOURCES += \
17 | $$PWD/PlayniteProvider.cpp \
18 | $$PWD/PlayniteJsonHelper.cpp \
19 | $$PWD/PlayniteLaunchHelper.cpp \
20 | $$PWD/PlayniteMetadataParser.cpp \
21 |
--------------------------------------------------------------------------------
/src/backend/providers/skraper/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "Skraper"
3 | CXXID SKRAPER
4 | SOURCES
5 | SkraperAssetsProvider.cpp
6 | SkraperAssetsProvider.h
7 | PLATFORMS
8 | ALL
9 | )
10 |
--------------------------------------------------------------------------------
/src/backend/providers/skraper/SkraperAssetsProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace skraper {
25 |
26 | class SkraperAssetsProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit SkraperAssetsProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace skraper
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/skraper/skraper.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += "Skraper Assets"
2 |
3 | DEFINES *= WITH_COMPAT_SKRAPER
4 |
5 | HEADERS += $$PWD/SkraperAssetsProvider.h
6 | SOURCES += $$PWD/SkraperAssetsProvider.cpp
7 |
--------------------------------------------------------------------------------
/src/backend/providers/steam/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_add_provider(
2 | NAME "Steam"
3 | CXXID STEAM
4 | SOURCES
5 | SteamGamelist.cpp
6 | SteamGamelist.h
7 | SteamMetadata.cpp
8 | SteamMetadata.h
9 | SteamProvider.cpp
10 | SteamProvider.h
11 | USES_JSON_CACHE
12 | PLATFORMS
13 | WINDOWS
14 | MACOS
15 | X11
16 | )
17 |
--------------------------------------------------------------------------------
/src/backend/providers/steam/SteamProvider.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2020 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include "providers/Provider.h"
21 |
22 |
23 | namespace providers {
24 | namespace steam {
25 |
26 | class SteamProvider : public Provider {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit SteamProvider(QObject* parent = nullptr);
31 |
32 | Provider& run(SearchContext&) final;
33 | };
34 |
35 | } // namespace steam
36 | } // namespace providers
37 |
--------------------------------------------------------------------------------
/src/backend/providers/steam/steam.pri:
--------------------------------------------------------------------------------
1 | ENABLED_COMPATS += Steam
2 | USES_JSON_CACHE = yes
3 |
4 | DEFINES *= WITH_COMPAT_STEAM
5 |
6 | HEADERS += \
7 | $$PWD/SteamGamelist.h \
8 | $$PWD/SteamMetadata.h \
9 | $$PWD/SteamProvider.h \
10 |
11 | SOURCES += \
12 | $$PWD/SteamGamelist.cpp \
13 | $$PWD/SteamMetadata.cpp \
14 | $$PWD/SteamProvider.cpp \
15 |
--------------------------------------------------------------------------------
/src/backend/types/AppCloseType.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | enum AppCloseType : unsigned char {
21 | QUIT,
22 | REBOOT,
23 | SHUTDOWN,
24 | SUSPEND,
25 | };
26 |
--------------------------------------------------------------------------------
/src/backend/types/AssetType.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | enum class AssetType : unsigned char {
21 | UNKNOWN,
22 |
23 | BOX_FRONT,
24 | BOX_BACK,
25 | BOX_SPINE,
26 | BOX_FULL,
27 | CARTRIDGE,
28 | LOGO,
29 | POSTER,
30 |
31 | ARCADE_MARQUEE,
32 | ARCADE_BEZEL,
33 | ARCADE_PANEL,
34 | ARCADE_CABINET_L,
35 | ARCADE_CABINET_R,
36 |
37 | UI_TILE,
38 | UI_BANNER,
39 | UI_STEAMGRID,
40 | BACKGROUND,
41 | MUSIC,
42 |
43 | SCREENSHOT,
44 | TITLESCREEN,
45 | VIDEO,
46 | };
47 |
--------------------------------------------------------------------------------
/src/backend/types/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | target_sources(pegasus-backend PRIVATE
2 | AppCloseType.h
3 | AssetType.h
4 | GamepadKeyId.h
5 | KeyEventType.h
6 | )
7 |
--------------------------------------------------------------------------------
/src/backend/types/KeyEventType.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | enum class KeyEvent : unsigned char {
21 | ACCEPT,
22 | CANCEL,
23 | DETAILS,
24 | FILTERS,
25 | NEXT_PAGE,
26 | PREV_PAGE,
27 | PAGE_UP,
28 | PAGE_DOWN,
29 | MAIN_MENU,
30 | // internal only:
31 | LEFT = 64,
32 | RIGHT,
33 | UP,
34 | DOWN,
35 | };
36 |
--------------------------------------------------------------------------------
/src/backend/types/types.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/AppCloseType.h \
3 | $$PWD/AssetType.h \
4 | $$PWD/KeyEventType.h \
5 | $$PWD/GamepadKeyId.h \
6 |
--------------------------------------------------------------------------------
/src/backend/utils/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | target_sources(pegasus-backend PRIVATE
2 | CommandTokenizer.cpp
3 | CommandTokenizer.h
4 | DiskCachedNAM.cpp
5 | DiskCachedNAM.h
6 | FakeQKeyEvent.cpp
7 | FakeQKeyEvent.h
8 | FolderListModel.cpp
9 | FolderListModel.h
10 | HashMap.h
11 | KeySequenceTools.cpp
12 | KeySequenceTools.h
13 | MoveOnly.h
14 | NoCopyNoMove.h
15 | PathTools.cpp
16 | PathTools.h
17 | QmlHelpers.h
18 | SqliteDb.cpp
19 | SqliteDb.h
20 | StdHelpers.h
21 | StringHelpers.cpp
22 | StringHelpers.h
23 | )
24 |
--------------------------------------------------------------------------------
/src/backend/utils/CommandTokenizer.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2019 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 |
22 |
23 | namespace utils {
24 | QStringList tokenize_command(const QString&);
25 | QString escape_command(const QString&);
26 | } // namespace
27 |
--------------------------------------------------------------------------------
/src/backend/utils/DiskCachedNAM.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | class QNetworkAccessManager;
21 | class QObject;
22 |
23 |
24 | namespace utils {
25 |
26 | QNetworkAccessManager* create_disc_cached_nam(QObject* parent);
27 |
28 | } // namespace utils
29 |
--------------------------------------------------------------------------------
/src/backend/utils/FakeQKeyEvent.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include "FakeQKeyEvent.h"
19 |
20 | #include
21 |
22 |
23 | FakeQKeyEvent::FakeQKeyEvent()
24 | : event(QEvent::None, 0, Qt::NoModifier)
25 | {}
26 |
--------------------------------------------------------------------------------
/src/backend/utils/FakeQKeyEvent.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 | #include
22 |
23 |
24 | // Lightweight (and hacky) reproduction of KeyEvent
25 | // because the proper implementation is private in Qt
26 | class FakeQKeyEvent : public QObject {
27 | Q_OBJECT
28 | public:
29 | explicit FakeQKeyEvent();
30 |
31 | QKeyEvent event;
32 | };
33 |
--------------------------------------------------------------------------------
/src/backend/utils/KeySequenceTools.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 | #include
22 |
23 |
24 | namespace utils {
25 | QKeySequence qmlevent_to_keyseq(const QVariant&);
26 | } // namespace utils
27 |
--------------------------------------------------------------------------------
/src/backend/utils/MoveOnly.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #define MOVE_ONLY(T) \
21 | T(const T&) = delete; \
22 | T& operator=(const T&) = delete; \
23 | T(T&&) = default; \
24 | T& operator=(T&&) = default;
25 |
--------------------------------------------------------------------------------
/src/backend/utils/NoCopyNoMove.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #define NO_COPY_NO_MOVE(T) \
21 | T(const T&) = delete; \
22 | T& operator=(const T&) = delete; \
23 | T(T&&) = delete; \
24 | T& operator=(T&&) = delete;
25 |
--------------------------------------------------------------------------------
/src/backend/utils/StringHelpers.h:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2022 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #pragma once
19 |
20 | #include
21 |
22 | class QString;
23 |
24 |
25 | namespace utils {
26 | std::string trimmed(const char* const str);
27 |
28 | bool as_bool(const QString& str, bool& success);
29 | } // namespace utils
30 |
--------------------------------------------------------------------------------
/src/backend/utils/utils.pri:
--------------------------------------------------------------------------------
1 | HEADERS += \
2 | $$PWD/CommandTokenizer.h \
3 | $$PWD/DiskCachedNAM.h \
4 | $$PWD/FakeQKeyEvent.h \
5 | $$PWD/FolderListModel.h \
6 | $$PWD/HashMap.h \
7 | $$PWD/KeySequenceTools.h \
8 | $$PWD/MoveOnly.h \
9 | $$PWD/NoCopyNoMove.h \
10 | $$PWD/PathTools.h \
11 | $$PWD/QmlHelpers.h \
12 | $$PWD/SqliteDb.h \
13 | $$PWD/StdHelpers.h \
14 | $$PWD/StringHelpers.h
15 |
16 | SOURCES += \
17 | $$PWD/CommandTokenizer.cpp \
18 | $$PWD/DiskCachedNAM.cpp \
19 | $$PWD/FakeQKeyEvent.cpp \
20 | $$PWD/FolderListModel.cpp \
21 | $$PWD/KeySequenceTools.cpp \
22 | $$PWD/PathTools.cpp \
23 | $$PWD/SqliteDb.cpp \
24 | $$PWD/StringHelpers.cpp
25 |
--------------------------------------------------------------------------------
/src/deployment_vars.pri:
--------------------------------------------------------------------------------
1 | # This file sets the default values of the deployment variables;
2 | # these control where will your files end up when you call
3 | # `make install` (or similar).
4 | #
5 | # You can change the values by appending KEY=VALUE pairs to the
6 | # `qmake` call, or adding them as `Additional arguments` in
7 | # Qt Creator.
8 |
9 |
10 | # The base/fallback installation directory
11 | isEmpty(INSTALLDIR) {
12 | unix:!macx: INSTALLDIR = /opt/pegasus-frontend
13 | macx: INSTALLDIR = /usr/local/pegasus-frontend
14 | win32: INSTALLDIR = C:/pegasus-frontend
15 | }
16 |
17 | # Linux: installations are portable by default
18 | # Windows and Mac: installations should always be portable (one-dir)
19 | isEmpty(INSTALL_BINDIR): INSTALL_BINDIR = $${INSTALLDIR}
20 |
--------------------------------------------------------------------------------
/src/frontend/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | include(PegasusQtUtils)
2 | pegasus_require_qt(COMPONENTS
3 | Qml
4 | Quick
5 | QuickCompiler
6 | )
7 |
8 | qtquick_compiler_add_resources(PEGASUS_QML_ASSETS
9 | frontend.qrc
10 | "${PROJECT_SOURCE_DIR}/src/qmlutils/qmlutils.qrc" # FIXME
11 | "${PROJECT_SOURCE_DIR}/src/themes/themes.qrc" # FIXME
12 | )
13 |
14 | add_library(pegasus-qml "${PEGASUS_QML_ASSETS}")
15 | target_link_libraries(pegasus-qml PUBLIC
16 | Qt::Qml
17 | Qt::Quick
18 | )
19 |
20 |
21 | include(PegasusCommonProps)
22 | pegasus_add_common_props_optimized(pegasus-qml)
23 |
--------------------------------------------------------------------------------
/src/frontend/assets/dir-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/dir-icon.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/list-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/list-arrow.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/preview.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/a.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/b.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/dpdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/dpdown.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/dpleft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/dpleft.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/dpright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/dpright.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/dpup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/dpup.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/guide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/guide.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/lb.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/lsb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/lsb.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/lsx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/lsx.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/lsy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/lsy.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/lt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/lt.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/rb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/rb.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/rsb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/rsb.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/rsx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/rsx.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/rsy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/rsy.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/rt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/rt.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/select.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/start.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/x.png
--------------------------------------------------------------------------------
/src/frontend/assets/gamepad/x360/y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/gamepad/x360/y.png
--------------------------------------------------------------------------------
/src/frontend/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/logo.png
--------------------------------------------------------------------------------
/src/frontend/assets/pbar-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/pbar-left.png
--------------------------------------------------------------------------------
/src/frontend/assets/pbar-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/pbar-right.png
--------------------------------------------------------------------------------
/src/frontend/assets/pbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/pbar.png
--------------------------------------------------------------------------------
/src/frontend/assets/qr-docs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/qr-docs.png
--------------------------------------------------------------------------------
/src/frontend/assets/qt-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/src/frontend/assets/qt-logo.png
--------------------------------------------------------------------------------
/src/frontend/dialogs/RebootDialog.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.0
19 |
20 |
21 | GenericOkCancelDialog
22 | {
23 | focus: true
24 |
25 | title: qsTr("Reboot") + api.tr
26 | message: qsTr("The system will reboot. Are you sure?") + api.tr
27 | symbol: "\u21BB"
28 |
29 | onAccept: Internal.system.reboot()
30 | }
31 |
--------------------------------------------------------------------------------
/src/frontend/dialogs/Shade.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2019 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.0
19 |
20 |
21 | Rectangle {
22 | signal cancel()
23 |
24 | anchors.fill: parent
25 | color: "#000"
26 |
27 | opacity: 0
28 | visible: opacity > 0
29 | Behavior on opacity { NumberAnimation { duration: 125 } }
30 |
31 |
32 | MouseArea {
33 | anchors.fill: parent
34 | acceptedButtons: Qt.LeftButton | Qt.RightButton
35 | onClicked: cancel()
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/frontend/dialogs/ShutdownDialog.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.0
19 |
20 |
21 | GenericOkCancelDialog
22 | {
23 | focus: true
24 |
25 | title: qsTr("Shutdown") + api.tr
26 | message: qsTr("The system will shut down. Are you sure?") + api.tr
27 | symbol: "\u23FB"
28 |
29 | onAccept: Internal.system.shutdown()
30 | }
31 |
--------------------------------------------------------------------------------
/src/frontend/frontend.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = lib
2 |
3 | QT += qml quick
4 | CONFIG += c++11 staticlib warn_on exceptions_off rtti_off qtquickcompiler
5 | DEFINES *= $${COMMON_DEFINES}
6 |
7 | RESOURCES += \
8 | ./frontend.qrc \
9 | ../qmlutils/qmlutils.qrc \
10 | ../themes/themes.qrc
11 |
--------------------------------------------------------------------------------
/src/frontend/menu/common/MenuScreen.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.0
19 | import QtQuick.Window 2.2
20 |
21 |
22 | FocusScope {
23 | focus: true
24 |
25 | signal close()
26 |
27 | visible: x < Window.window.width
28 |
29 |
30 | Rectangle {
31 | anchors.fill: parent
32 | color: "#222"
33 | }
34 |
35 | MouseArea {
36 | anchors.fill: parent
37 | acceptedButtons: Qt.RightButton
38 | onClicked: parent.close()
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/frontend/menu/mainmenu/PrimaryMenuItem.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.8
19 |
20 | GenericMenuItem {
21 | z: 1000
22 | activeColor: "#555"
23 | inactiveColor: "#333"
24 | textSizePx: vpx(50)
25 | }
26 |
--------------------------------------------------------------------------------
/src/frontend/menu/mainmenu/SecondaryMenuItem.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.8
19 |
20 | GenericMenuItem {
21 | activeColor: "#777"
22 | inactiveColor: "#222"
23 | textSizePx: vpx(35)
24 | selected: focus
25 | }
26 |
--------------------------------------------------------------------------------
/src/frontend/menu/settings/common/ReloadQuestion.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2019 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import "../../../dialogs"
19 |
20 | GenericOkCancelDialog {
21 | title: qsTr("Reload") + api.tr
22 | message: qsTr("Would you like to reload the game list now? This may take some time.") + api.tr
23 | }
24 |
--------------------------------------------------------------------------------
/src/frontend/menu/settings/common/SectionTitle.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.6
19 |
20 |
21 | Text {
22 | property bool first: false
23 |
24 | color: "#bbb"
25 |
26 | font.pixelSize: vpx(22)
27 | font.family: globalFonts.sans
28 | font.capitalization: Font.AllUppercase
29 | font.italic: true
30 |
31 | topPadding: font.pixelSize * (first ? 0.25 : 2.25)
32 | }
33 |
--------------------------------------------------------------------------------
/src/frontend/menu/settings/common/SimpleShade.qml:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2022 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | import QtQuick 2.0
19 |
20 |
21 | Rectangle {
22 | id: root
23 |
24 | signal clicked
25 |
26 | anchors.fill: parent
27 | color: "#000"
28 | opacity: 0.3
29 |
30 | MouseArea {
31 | anchors.fill: parent
32 | acceptedButtons: Qt.LeftButton | Qt.RightButton
33 | onClicked: root.clicked()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/link_to_frontend.pri:
--------------------------------------------------------------------------------
1 | # Link the project that includes this file to the frontend files
2 |
3 | win32:CONFIG(release, debug|release): LIBS += "-L$${TOP_BUILDDIR}/src/frontend/release/" -lfrontend
4 | else:win32:CONFIG(debug, debug|release): LIBS += "-L$${TOP_BUILDDIR}/src/frontend/debug/" -lfrontend
5 | else:unix: LIBS += "-L$${TOP_BUILDDIR}/src/frontend/" -lfrontend
6 |
7 | win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += "$${TOP_BUILDDIR}/src/frontend/release/libfrontend.a"
8 | else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += "$${TOP_BUILDDIR}/src/frontend/debug/libfrontend.a"
9 | else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += "$${TOP_BUILDDIR}/src/frontend/release/frontend.lib"
10 | else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += "$${TOP_BUILDDIR}/src/frontend/debug/frontend.lib"
11 | else:unix: PRE_TARGETDEPS += "$${TOP_BUILDDIR}/src/frontend/libfrontend.a"
12 |
--------------------------------------------------------------------------------
/src/qmlutils/qmlutils.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | AutoScroll.qml
4 | HorizontalSwipeArea.qml
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/src.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | app \
5 | backend \
6 | frontend
7 |
8 | app.depends = backend frontend
9 |
--------------------------------------------------------------------------------
/tests/backend/api/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Api)
2 | target_link_libraries(test_Api PRIVATE pegasus-qml)
3 |
--------------------------------------------------------------------------------
/tests/backend/api/api.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Api
2 | SOURCES = test_Api.cpp
3 | RESOURCES += "$${TOP_SRCDIR}/src/themes/themes.qrc"
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/api/test_Api.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include
19 |
20 | #include "model/Api.h"
21 |
22 |
23 | class test_Api : public QObject {
24 | Q_OBJECT
25 |
26 | private slots:
27 | };
28 |
29 |
30 | QTEST_MAIN(test_Api)
31 | #include "test_Api.moc"
32 |
--------------------------------------------------------------------------------
/tests/backend/backend.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | api \
5 | configfile \
6 | model \
7 | processlauncher \
8 | providers \
9 | utils \
10 |
--------------------------------------------------------------------------------
/tests/backend/configfile/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_ConfigFile)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES configfile.qrc)
4 | target_sources(test_ConfigFile PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/configfile/configfile.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_ConfigFile
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += configfile.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/configfile/configfile.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | test.cfg
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/backend/configfile/test.cfg:
--------------------------------------------------------------------------------
1 | # This is a comment, it should be skipped
2 |
3 | an invalid line, as it starts with space, but isn't a multiline
4 |
5 | key1:val
6 | key2 : val
7 | key with spaces: val with spaces
8 | missing value :
9 | : missing key
10 |
11 | multiline1: hello
12 | world!
13 | multiline2:
14 | purely
15 | multiline
16 | multiline3: text
17 | with
18 | .
19 | line break
20 | multiline4: text
21 | stops here
22 |
23 | line break
24 |
--------------------------------------------------------------------------------
/tests/backend/model/collection/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Collection)
2 |
--------------------------------------------------------------------------------
/tests/backend/model/collection/collection.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Collection
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/backend/model/game/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Game)
2 |
--------------------------------------------------------------------------------
/tests/backend/model/game/game.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Game
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/backend/model/gameassets/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_GameAssets)
2 |
--------------------------------------------------------------------------------
/tests/backend/model/gameassets/gameassets.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_GameAssets
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/backend/model/keyeditor/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_qml_test(test_KeyEditor)
2 |
--------------------------------------------------------------------------------
/tests/backend/model/keyeditor/keyeditor.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_KeyEditor
2 | SOURCES = $${TARGET}.cpp
3 |
4 | OTHER_FILES += \
5 | tst_add.qml \
6 | tst_delete.qml \
7 | tst_keyname.qml \
8 | tst_replace.qml \
9 | utils.js
10 |
11 | include($${TOP_SRCDIR}/tests/qmltest_common.pri)
12 |
--------------------------------------------------------------------------------
/tests/backend/model/keyeditor/utils.js:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | function hasKeyMod(keylist, key, modifiers) {
19 | for (var i = 0; i < keylist.length; i++) {
20 | var eventKey = keylist[i];
21 | if (eventKey.key === key && eventKey.modifiers === modifiers)
22 | return true;
23 | }
24 | return false;
25 | }
26 |
27 | function hasKey(keylist, key) {
28 | return hasKeyMod(keylist, key, 0);
29 | }
30 |
--------------------------------------------------------------------------------
/tests/backend/model/locales/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Locales)
2 |
--------------------------------------------------------------------------------
/tests/backend/model/locales/locales.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Locales
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/backend/model/memory/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Memory)
2 | target_sources(test_Memory PRIVATE
3 | Container.cpp
4 | Container.h
5 | )
6 |
--------------------------------------------------------------------------------
/tests/backend/model/memory/Container.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2018 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include "Container.h"
19 |
20 |
21 | Container::Container(QObject* parent)
22 | : QObject(parent)
23 | {
24 | setup();
25 | }
26 |
27 | Container::Container(QString settings_dir, QObject* parent)
28 | : QObject(parent)
29 | , m_memory(std::move(settings_dir))
30 | {
31 | setup();
32 | }
33 |
34 | void Container::setup()
35 | {
36 | connect(&m_memory, &model::Memory::dataChanged,
37 | this, &Container::memoryChanged);
38 | }
39 |
--------------------------------------------------------------------------------
/tests/backend/model/memory/memory.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Memory
2 | SOURCES = test_Memory.cpp Container.cpp
3 | HEADERS = Container.h
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/model/model.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | collection \
5 | game \
6 | gameassets \
7 | locales \
8 | memory \
9 | system \
10 | themes \
11 |
12 | # Proper QML testing was added in 5.11
13 | !lessThan(QT_MAJOR_VERSION, 5): !lessThan(QT_MINOR_VERSION, 11) {
14 | SUBDIRS += \
15 | keyeditor
16 | }
17 |
--------------------------------------------------------------------------------
/tests/backend/model/system/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_System)
2 |
--------------------------------------------------------------------------------
/tests/backend/model/system/system.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_System
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/backend/model/themes/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Themes)
2 | target_link_libraries(test_Themes PRIVATE pegasus-qml)
3 |
--------------------------------------------------------------------------------
/tests/backend/model/themes/themes.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Themes
2 | SOURCES = $${TARGET}.cpp
3 |
4 | RESOURCES = $${TOP_SRCDIR}/src/themes/themes.qrc
5 |
6 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
7 |
--------------------------------------------------------------------------------
/tests/backend/processlauncher/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_ProcessLauncher)
2 |
--------------------------------------------------------------------------------
/tests/backend/processlauncher/processlauncher.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_ProcessLauncher
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_EmulationStationProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_EmulationStationProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/basic/es/es_systems.cfg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MySys1
5 | My System 1
6 | :/basic/mysys1
7 | .ext .EXT
8 | command1 %ROM%
9 | My Platform
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/basic/mysys1/game.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/basic/mysys1/game.ext
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | empty/es/nothing_to_see_here
4 | basic/es/es_systems.cfg
5 | basic/mysys1/game.ext
6 | gamelist/abs_image1.png
7 | gamelist/abs_image2.png
8 | gamelist/img/abs_image3.png
9 | gamelist/es/es_systems.cfg
10 | gamelist/mysys1/game1.ext
11 | gamelist/mysys1/game2.ext
12 | gamelist/mysys1/gamelist.xml
13 | gamelist/mysys1/local_image1.png
14 | gamelist/mysys1/local_image2.png
15 | gamelist/mysys1/img/local_image3.png
16 |
17 |
18 |
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/empty/es/nothing_to_see_here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/empty/es/nothing_to_see_here
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/abs_image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/abs_image1.png
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/abs_image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/abs_image2.png
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/es/es_systems.cfg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MySys1
5 | My System 1
6 | :/gamelist/mysys1
7 | .ext .EXT
8 | command1 %ROM%
9 | My Platform
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/img/abs_image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/img/abs_image3.png
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/mysys1/game1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/mysys1/game1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/mysys1/game2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/mysys1/game2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/mysys1/gamelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | game1.ext
4 | Game 1
5 | Some Description
6 | Some Developer
7 | Some Publisher
8 | Some Genre
9 | 1-4
10 | 0.6
11 | 10
12 | 2000102T102030
13 | 19990102T102030
14 | :/gamelist/abs_image1.png
15 |
16 |
17 | yes
18 |
19 |
20 | game2.ext
21 | Game 2
22 | 5
23 | ./local_image1.png
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/mysys1/img/local_image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/mysys1/img/local_image3.png
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/mysys1/local_image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/mysys1/local_image1.png
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/data/gamelist/mysys1/local_image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/emulationstation/data/gamelist/mysys1/local_image2.png
--------------------------------------------------------------------------------
/tests/backend/providers/emulationstation/emulationstation.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_EmulationStationProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/favorites/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_FavoriteDB)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_FavoriteDB PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/favorites/data/coll1dummy1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/favorites/data/coll1dummy1
--------------------------------------------------------------------------------
/tests/backend/providers/favorites/data/coll1dummy2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/favorites/data/coll1dummy2
--------------------------------------------------------------------------------
/tests/backend/providers/favorites/data/coll2dummy1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/favorites/data/coll2dummy1
--------------------------------------------------------------------------------
/tests/backend/providers/favorites/data/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | coll1dummy1
4 | coll1dummy2
5 | coll2dummy1
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/backend/providers/favorites/favorites.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_FavoriteDB
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_LaunchBoxProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_LaunchBoxProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/data/basic/LaunchBox/Data/Platforms.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | true
6 | Nintendo Entertainment System
7 | 1985-10-18T09:00:00+02:00
8 | Nintendo
9 | Nintendo
10 | Ricoh 2A03 (NTSC) or Ricoh 2A07 (PAL)
11 | 2 KB RAM plus 2 KB video RAM
12 | RP2C02 (NTSC) or RP2C07 (PAL) PPU
13 | PSG 5 channel mono
14 | 256x240
15 | Cartridge
16 | 2
17 |
18 | Some platform description.
19 |
20 | Nintendo 1985
21 |
22 |
23 | Consoles
24 | Consoles
25 | Some category description.
26 |
27 | false
28 |
29 |
30 |
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/data/basic/emu/nestopia.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/launchbox/data/basic/emu/nestopia.exe
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/data/basic/game/Test Bros (JU) [!].zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/launchbox/data/basic/game/Test Bros (JU) [!].zip
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/data/basic/game/Test Bros Something.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/launchbox/data/basic/game/Test Bros Something.zip
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/data/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | empty/nothing_to_see_here
4 | basic/LaunchBox/Data/Emulators.xml
5 | basic/LaunchBox/Data/Platforms/Nintendo Entertainment System.xml
6 | basic/LaunchBox/Data/Platforms.xml
7 | basic/emu/nestopia.exe
8 | basic/game/Test Bros (JU) [!].zip
9 | basic/game/Test Bros Something.zip
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/data/empty/nothing_to_see_here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/launchbox/data/empty/nothing_to_see_here
--------------------------------------------------------------------------------
/tests/backend/providers/launchbox/launchbox.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_LaunchBoxProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_LogiqxProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_LogiqxProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | faulty/empty.dat
4 | faulty/incorrect_root.dat
5 | faulty/no_doctype.dat
6 | faulty/not_logiqx.dat
7 | malformed/bad_games.dat
8 | malformed/bad_header.dat
9 | malformed/Game 1.ext
10 | malformed/Game 2.ext
11 | malformed/Game 3.ext
12 | simple/Game 1.ext
13 | simple/Game 2x1.ext
14 | simple/Game 2x2.ext
15 | simple/something.dat
16 |
17 |
18 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/faulty/empty.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/faulty/empty.dat
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/faulty/incorrect_root.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/faulty/no_doctype.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/faulty/not_logiqx.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/malformed/Game 1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/malformed/Game 1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/malformed/Game 2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/malformed/Game 2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/malformed/Game 3.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/malformed/Game 3.ext
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/malformed/bad_games.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | asd
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/malformed/bad_header.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | The description of My Platform
7 |
8 |
9 | The description of Game 1.
10 | 1990
11 | Game Corp.
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/simple/Game 1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/simple/Game 1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/simple/Game 2x1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/simple/Game 2x1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/simple/Game 2x2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/logiqx/data/simple/Game 2x2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/data/simple/something.dat:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | My Platform
6 | The description of My Platform
7 |
8 |
9 | The description of Game 1.
10 | 1990
11 | Game Corp.
12 |
13 |
14 |
15 | The description of Game 2.
16 | 2000
17 | Game Corp.
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/tests/backend/providers/logiqx/logiqx.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_LogiqxProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_PegasusProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_PegasusProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/autoparenting/game1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/autoparenting/game1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/autoparenting/game2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/autoparenting/game2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/autoparenting/game3.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/autoparenting/game3.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/autoparenting/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: coll1
2 |
3 | game: game1
4 | file: game1.ext
5 |
6 | collection: coll2
7 |
8 | game: game2
9 | file: game2.ext
10 |
11 | collection: coll3
12 |
13 | game: game3
14 | file: game3.ext
15 |
16 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets/collections.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets/collections.txt
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets/different_dir/whatever.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets/different_dir/whatever.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets/media/mygame1-boxFront.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets/media/mygame1-boxFront.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: mygames
2 | extensions: ext
3 | assets.cartridge: my_collection_assets/cartridge.png
4 |
5 | game: Example Game
6 | file: mygame1.ext
7 | assets.boxFront: different_dir/whatever.png
8 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets/my_collection_assets/cartridge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets/my_collection_assets/cartridge.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets/mygame1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets/mygame1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets_multi/game1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets_multi/game1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets_multi/game2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets_multi/game2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets_multi/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: Test
2 | extension: ext
3 |
4 |
5 | game: Single
6 | file: game1.ext
7 | assets.video: videos/a.mp4
8 |
9 | game: Multi
10 | file: game2.ext
11 | assets.videos:
12 | videos/a.mp4
13 | videos/b.mp4
14 | videos/c.mp4
15 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets_multi/videos/a.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets_multi/videos/a.mp4
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets_multi/videos/b.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets_multi/videos/b.mp4
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_assets_multi/videos/c.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_assets_multi/videos/c.mp4
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/a/mygame.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/a/mygame.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/a/mygame.y:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/a/mygame.y
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/b/mygame.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/b/mygame.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/b/mygame.y:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/b/mygame.y
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/c/mygame.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/c/mygame.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/c/mygame.y:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/c/mygame.y
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/coll/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: x-files
2 | extension: x
3 | directory: ../a
4 | directories: ../b
5 | directory: :/custom_dirs/c
6 |
7 | collection: y-files
8 | extension: y
9 | directory: ../b
10 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/custom_dirs/coll/mygame.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/custom_dirs/coll/mygame.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/empty/nothing_to_see_here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/empty/nothing_to_see_here
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/entryless/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: My Games
2 | file: test.ext
3 |
4 | game: test
5 | file: test.ext
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multicoll/c1/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: C1
2 | file: :/multicoll/games/game.ext
3 |
4 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multicoll/c2/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: C2
2 | file: :/multicoll/games/game.ext
3 |
4 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multicoll/games/game.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/multicoll/games/game.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multicoll/games/game.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/multicoll/games/game.jpg
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multicoll/games/metadata.txt:
--------------------------------------------------------------------------------
1 | game: My Game
2 | file: game.ext
3 | summary: Some Summary
4 | description: Some Description
5 | developer: My Developer
6 | publisher: My Publisher
7 | genre: My Genre
8 | assets.boxFront: game.jpg
9 |
10 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multifile/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: Test
2 | extension: ext
3 |
4 |
5 | game: Singlefile Game
6 | files: single.ext
7 |
8 |
9 | game: Multifile Game
10 | files:
11 | multi.a.ext
12 | multi.b.ext
13 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multifile/multi.a.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/multifile/multi.a.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multifile/multi.b.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/multifile/multi.b.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/multifile/single.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/multifile/single.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files/a/game_a.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files/a/game_a.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files/coll/b/game_b.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files/coll/b/game_b.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files/coll/c/game_c.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files/coll/c/game_c.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files/coll/game_here.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files/coll/game_here.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files/coll/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: myfiles
2 | files:
3 | game_here.ext
4 | ../a/game_a.ext
5 | b/game_b.ext
6 | ./c/game_c.ext
7 |
8 | # Ignored files
9 | files:
10 | ../ignored/ignoreme.ext
11 | ignore-files:
12 | ../ignored/ignoreme.ext
13 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files/ignored/ignoreme.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files/ignored/ignoreme.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/a/game_a.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/a/game_a.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/a/ignoreme.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/a/ignoreme.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/b/game_b.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/b/game_b.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/b/ignoredir/game_ign.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/b/ignoredir/game_ign.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/game_here.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/game_here.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/ignoredir/game_ign.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/ignoredir/game_ign.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/ignoreme.x:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/ignoreme.x
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/relative_files_with_dirs/coll/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: myfiles
2 | extension: x
3 | directory: ../a
4 | ignore-file:
5 | ignoreme.x
6 | ignoredir/game_ign.x
7 | directories: ../b
8 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/9999-in-1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/9999-in-1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/buggygame.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/buggygame.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/duplicategame.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/duplicategame.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/favgame1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/favgame1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/favgame2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/favgame2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/game with spaces.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/game with spaces.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/media/game_ignored.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/media/game_ignored.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/metadata.pegasus.txt:
--------------------------------------------------------------------------------
1 | collection: My Games
2 | extensions: ext
3 | ignore-file: buggygame.ext
4 | ignore-file: duplicategame.ext
5 | launch: myemulator {file.path}
6 |
7 | collection: Favorite games
8 | files:
9 | favgame1.ext
10 | favgame2.ext
11 | game with spaces.ext
12 |
13 | collection: Multi-game ROMs
14 | regex: \d+.in.1
15 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/mygame1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/mygame1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/mygame2.EXT:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/mygame2.EXT
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/mygame3.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/mygame3.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/notgame.unk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/notgame.unk
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/simple/subdir/game_in_subdir.EXT:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/simple/subdir/game_in_subdir.EXT
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/basic.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/basic.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/horse.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/horse.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/media/game_ignored.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/media/game_ignored.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/metadata.txt:
--------------------------------------------------------------------------------
1 | # values before 'file' are ignored
2 | foo: bar
3 |
4 | file: mygame1.ext
5 | title: My Game 1
6 | # repeating the developer, publisher or genre will append, not overwrite
7 | developer: Dev1
8 | developer: Dev2
9 |
10 | file: mygame2.ext
11 | # `name` is also accepted for title
12 | name: My Game 2
13 | # the element separator is `,`
14 | publisher: Publisher with Spaces
15 | publisher: Another Publisher
16 |
17 | file: :/with_meta/mygame3.ext
18 | genres: genre1, genre2,
19 | genre with spaces
20 | players: 2-4
21 |
22 | file: subdir/game_in_subdir.ext
23 | rating: 80%
24 | # repeating keys will overwrite previous values
25 | release: 1998
26 | release: 1998-05
27 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/multi.a.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/multi.a.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/multi.b.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/multi.b.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/mygame2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/mygame2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/mygame3.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/mygame3.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/pre.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/pre.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/data/with_meta/subdir/game_in_subdir.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus/data/with_meta/subdir/game_in_subdir.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus/pegasus.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_PegasusProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_PegasusMediaProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_PegasusMediaProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/media/mygame1/box_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/media/mygame1/box_front.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/media/mygame1/video.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/media/mygame1/video.mp4
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/media/mygame3/music.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/media/mygame3/music.mp3
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/media/mygame3/screenshot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/media/mygame3/screenshot.jpg
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/media/subdir/mygame4/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/media/subdir/mygame4/background.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: mygames
2 | extensions: ext
3 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/mygame1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/mygame1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/mygame2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/mygame2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/mygame3.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/mygame3.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search/subdir/mygame4.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search/subdir/mygame4.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_by_title/media/My Precious Game/box_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search_by_title/media/My Precious Game/box_front.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_by_title/media/My Precious Game/video.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search_by_title/media/My Precious Game/video.mp4
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_by_title/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: mygames
2 | extensions: ext
3 |
4 | game: My Precious Game
5 | file: mygame.ext
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_by_title/mygame.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search_by_title/mygame.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_multifile/media/mygame/screenshot01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search_multifile/media/mygame/screenshot01.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_multifile/media/mygame/screenshot02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search_multifile/media/mygame/screenshot02.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_multifile/metadata.txt:
--------------------------------------------------------------------------------
1 | collection: mygames
2 | extensions: ext
3 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/asset_search_multifile/mygame.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/asset_search_multifile/mygame.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-a/game1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-a/game1.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-a/media/Game 1/box_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-a/media/Game 1/box_front.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-b/.media/Game 2/box_front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-b/.media/Game 2/box_front.png
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-b/game2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/pegasus_media/data/separate_media_dirs/games-b/game2.ext
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/data/separate_media_dirs/metadata/metadata.pegasus.txt:
--------------------------------------------------------------------------------
1 | collection: Games A
2 | extension: ext
3 | directory: ../games-a
4 |
5 | collection: Games B
6 | extension: ext
7 | directory: ../games-b
8 |
9 |
10 | game: Game 1
11 | file: ../games-a/game1.ext
12 |
13 | game: Game 2
14 | file: ../games-b/game2.ext
15 |
--------------------------------------------------------------------------------
/tests/backend/providers/pegasus_media/pegasus_media.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_PegasusMediaProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_PlayniteProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(test_PlayniteProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/companies/133a9c55-2c95-4159-b1df-edf03f686031.json:
--------------------------------------------------------------------------------
1 | {"Id":"133a9c55-2c95-4159-b1df-edf03f686031","Name":"Nintendo, Inc."}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/companies/26e38b33-91f8-4d21-a69e-4c32a29d13de.json:
--------------------------------------------------------------------------------
1 | {"Id":"26e38b33-91f8-4d21-a69e-4c32a29d13de","Name":"Some Company"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/companies/562f95a7-6ac1-4795-9946-e5d13b9a9df6.json:
--------------------------------------------------------------------------------
1 | {"Id":"562f95a7-6ac1-4795-9946-e5d13b9a9df6","Name":"Nintendo"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/companies/6f1fe3aa-c0eb-4d41-9e14-cce859a7af4e.json:
--------------------------------------------------------------------------------
1 | {"Id":"6f1fe3aa-c0eb-4d41-9e14-cce859a7af4e","Name":"Some Developer"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/emulators/7e80bb8a-2e09-4a41-bc17-0035d4ba1709.json:
--------------------------------------------------------------------------------
1 | {
2 | "Profiles": [
3 | {
4 | "Platforms": [
5 | "22fc036d-c73c-4ce1-ba49-105ecacaf9cf"
6 | ],
7 | "ImageExtensions": [
8 | "zip"
9 | ],
10 | "Executable": ":\\basic\\emu\\nestopia.exe",
11 | "Arguments": "--exec=\"{ImagePath}\" --batch",
12 | "WorkingDirectory": ":\\basic\\emu\\",
13 | "Id": "4bb9e953-cf79-434d-bc15-7b9346e83dde",
14 | "Name": "Nintendo Entertainment System"
15 | },
16 | {
17 | "Platforms": [
18 | "3771f5e2-1790-4933-953a-61a56332aeea"
19 | ],
20 | "ImageExtensions": [
21 | "zip"
22 | ],
23 | "Executable": ":\\basic\\emu\\Dolphin.exe",
24 | "Arguments": "--exec=\"{ImagePath}\" --batch",
25 | "WorkingDirectory": ":\\basic\\emu\\",
26 | "Id": "5202729a-04f3-4651-b05a-10de10260b24",
27 | "Name": "Nintendo Wii"
28 | }
29 | ],
30 | "Id": "7e80bb8a-2e09-4a41-bc17-0035d4ba1709",
31 | "Name": "Nestopia"
32 | }
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/7f2a2f5a-aa50-4ac3-a8fc-f38f3e6d4cdb.json:
--------------------------------------------------------------------------------
1 | {"Id":"7f2a2f5a-aa50-4ac3-a8fc-f38f3e6d4cdb","Name":"Card & Board Game"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/9828dab7-5f3f-47b9-b0cc-2cf610e55655.json:
--------------------------------------------------------------------------------
1 | {"Id":"9828dab7-5f3f-47b9-b0cc-2cf610e55655","Name":"Platform"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/b232562e-5ec8-4809-9511-89a2aaa05b32.json:
--------------------------------------------------------------------------------
1 | {"Id":"b232562e-5ec8-4809-9511-89a2aaa05b32","Name":"RPG"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/c3ba2a1a-65ec-4040-a798-f28adb62f955.json:
--------------------------------------------------------------------------------
1 | {"Id":"c3ba2a1a-65ec-4040-a798-f28adb62f955","Name":"Turn-based strategy (TBS)"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/c5c76d06-3ef5-4ba1-939f-2b26caa37514.json:
--------------------------------------------------------------------------------
1 | {"Id":"c5c76d06-3ef5-4ba1-939f-2b26caa37514","Name":"Quiz/Trivia"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/ebeb4bd1-9e2b-4af7-89ef-c2805110ea9f.json:
--------------------------------------------------------------------------------
1 | {"Id":"ebeb4bd1-9e2b-4af7-89ef-c2805110ea9f","Name":"Indie"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/genres/ef3ea3be-3e35-4178-b5f1-f57fed9c57a5.json:
--------------------------------------------------------------------------------
1 | {"Id":"ef3ea3be-3e35-4178-b5f1-f57fed9c57a5","Name":"Multiplayer"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/platforms/22fc036d-c73c-4ce1-ba49-105ecacaf9cf.json:
--------------------------------------------------------------------------------
1 | {"Id":"22fc036d-c73c-4ce1-ba49-105ecacaf9cf","Name":"Nintendo Entertainment System"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/platforms/adb97362-7144-4191-8bcb-a80f5b049265.json:
--------------------------------------------------------------------------------
1 | {"Id":"adb97362-7144-4191-8bcb-a80f5b049265","Name":"PC"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/sources/69a848f2-18a0-48d6-9d27-1c1b17139d6b.json:
--------------------------------------------------------------------------------
1 | {"Id":"69a848f2-18a0-48d6-9d27-1c1b17139d6b","Name":"GOG"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/sources/aee2cb68-7f5a-4a00-a687-64d193a67241.json:
--------------------------------------------------------------------------------
1 | {"Id":"aee2cb68-7f5a-4a00-a687-64d193a67241","Name":"Origin"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/Playnite/library/sources/f356164c-0239-4ae4-95e3-4a0b42c3bb1e.json:
--------------------------------------------------------------------------------
1 | {"Id":"f356164c-0239-4ae4-95e3-4a0b42c3bb1e","Name":"Steam"}
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/game/Test Bros (JU) [!].zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/playnite/data/basic/game/Test Bros (JU) [!].zip
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/basic/game/Test Bros Something.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/playnite/data/basic/game/Test Bros Something.zip
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/data/empty/nothing_to_see_here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/playnite/data/empty/nothing_to_see_here
--------------------------------------------------------------------------------
/tests/backend/providers/playnite/playnite.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_PlayniteProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/playtime/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Playtime)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data.qrc)
4 | target_sources(test_Playtime PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/backend/providers/playtime/data.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/backend/providers/playtime/data.db
--------------------------------------------------------------------------------
/tests/backend/providers/playtime/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | data.db
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/playtime/playtime.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Playtime
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
--------------------------------------------------------------------------------
/tests/backend/providers/providers.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | pegasus \
5 | pegasus_media \
6 | emulationstation \
7 | favorites \
8 | logiqx \
9 | playtime \
10 |
11 | win32: SUBDIRS += \
12 | launchbox \
13 | playnite \
14 |
--------------------------------------------------------------------------------
/tests/backend/utils/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_Utils)
2 |
--------------------------------------------------------------------------------
/tests/backend/utils/utils.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Utils
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/benchmarks/benchmarks.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | configfile \
5 | pegasus_provider \
6 |
--------------------------------------------------------------------------------
/tests/benchmarks/configfile/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(bench_ConfigFile)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data.qrc)
4 | target_sources(bench_ConfigFile PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/benchmarks/configfile/configfile.pro:
--------------------------------------------------------------------------------
1 | TARGET = bench_ConfigFile
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
7 |
--------------------------------------------------------------------------------
/tests/benchmarks/configfile/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | test.cfg
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/benchmarks/configfile/test.cfg:
--------------------------------------------------------------------------------
1 | # This is a comment, it should be skipped
2 |
3 | an invalid line, as it starts with space, but isn't a multiline
4 |
5 | key1:val
6 | key2 : val
7 | key with spaces: val with spaces
8 | missing value :
9 | : missing key
10 |
11 | multiline1: hello
12 | world!
13 | multiline2: a line
14 | with
15 | .
16 | line break
17 | multiline3:
18 | purely
19 | multiline
20 |
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(bench_PegasusProvider)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data/data.qrc)
4 | target_sources(bench_PegasusProvider PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | empty/nothing_to_see_here
4 | filled/9999-in-1.ext
5 | filled/buggygame.ext
6 | filled/duplicategame.ext
7 | filled/mygame1.ext
8 | filled/mygame2.ext
9 | filled/mygame3.ext
10 | filled/notgame.unk
11 | filled/media/game_ignored.ext
12 | filled/subdir/game_in_subdir.ext
13 | filled/metadata.pegasus.txt
14 | filled/favgame1.ext
15 | filled/favgame2.ext
16 |
17 |
18 |
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/empty/nothing_to_see_here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/empty/nothing_to_see_here
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/9999-in-1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/9999-in-1.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/buggygame.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/buggygame.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/duplicategame.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/duplicategame.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/favgame1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/favgame1.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/favgame2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/favgame2.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/media/game_ignored.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/media/game_ignored.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/metadata.pegasus.txt:
--------------------------------------------------------------------------------
1 | collection: My Games
2 | extensions: ext
3 | ignore-file: buggygame.ext
4 | ignore-file: duplicategame.ext
5 | launch: myemulator {file.path}
6 |
7 | collection: Favorite games
8 | files: favgame1.ext favgame2.ext
9 |
10 | collection: Multi-game ROMs
11 | regex: \d+.in.1
12 |
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/mygame1.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/mygame1.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/mygame2.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/mygame2.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/mygame3.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/mygame3.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/notgame.unk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/notgame.unk
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/data/filled/subdir/game_in_subdir.ext:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/benchmarks/pegasus_provider/data/filled/subdir/game_in_subdir.ext
--------------------------------------------------------------------------------
/tests/benchmarks/pegasus_provider/pegasus_provider.pro:
--------------------------------------------------------------------------------
1 | TARGET = bench_PegasusProvider
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data/data.qrc
4 |
5 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
6 |
7 |
--------------------------------------------------------------------------------
/tests/cxxtest_common.pri:
--------------------------------------------------------------------------------
1 | CONFIG += testcase no_testcase_installs
2 | CONFIG += c++17 warn_on exceptions_off rtti_off
3 |
4 | QT += qml testlib
5 |
6 | DEFINES *= $${COMMON_DEFINES}
7 |
8 | include($${TOP_SRCDIR}/src/link_to_backend.pri)
9 |
--------------------------------------------------------------------------------
/tests/integration/apng/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_qml_test(test_apng)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data.qrc)
4 | target_sources(test_apng PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/integration/apng/actual.apng:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/integration/apng/actual.apng
--------------------------------------------------------------------------------
/tests/integration/apng/apng.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_apng
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data.qrc
4 |
5 | OTHER_FILES += \
6 | tst_render.qml
7 |
8 | include($${TOP_SRCDIR}/tests/qmltest_common.pri)
9 |
--------------------------------------------------------------------------------
/tests/integration/apng/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | actual.apng
4 | expected.png
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/integration/apng/expected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/integration/apng/expected.png
--------------------------------------------------------------------------------
/tests/integration/apng/test_apng.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2021 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include
19 |
20 | Q_IMPORT_PLUGIN(ApngImagePlugin)
21 | QUICK_TEST_MAIN(apng)
22 |
--------------------------------------------------------------------------------
/tests/integration/blurhash/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_qml_test(test_Blurhash)
2 |
3 | qtquick_compiler_add_resources(TEST_RESOURCES data.qrc)
4 | target_sources(test_Blurhash PRIVATE ${TEST_RESOURCES})
5 |
--------------------------------------------------------------------------------
/tests/integration/blurhash/blurhash.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_Blurhash
2 | SOURCES = $${TARGET}.cpp
3 | RESOURCES += data.qrc
4 |
5 | OTHER_FILES += \
6 | tst_render.qml
7 |
8 | include($${TOP_SRCDIR}/tests/qmltest_common.pri)
9 |
--------------------------------------------------------------------------------
/tests/integration/blurhash/data.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | expected.png
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/integration/blurhash/expected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mmatyas/pegasus-frontend/66433328e8524b62546802990a7f316f37f879dd/tests/integration/blurhash/expected.png
--------------------------------------------------------------------------------
/tests/integration/integration.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | sortfilter \
5 | blurhash \
6 |
7 | !isEmpty(USE_SDL_GAMEPAD): SUBDIRS += sdl_gamepad
8 | !isEmpty(ENABLE_APNG): SUBDIRS += apng
9 |
--------------------------------------------------------------------------------
/tests/integration/sdl_gamepad/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_cxx_test(test_SdlGamepad)
2 |
3 | find_package(SDL2 REQUIRED)
4 | target_include_directories(test_SdlGamepad PRIVATE ${SDL2_INCLUDE_DIRS})
5 |
--------------------------------------------------------------------------------
/tests/integration/sdl_gamepad/sdl_gamepad.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_SdlGamepad
2 | SOURCES = $${TARGET}.cpp
3 |
4 | include($${TOP_SRCDIR}/tests/cxxtest_common.pri)
5 |
--------------------------------------------------------------------------------
/tests/integration/sdl_gamepad/test_SdlGamepad.cpp:
--------------------------------------------------------------------------------
1 | // Pegasus Frontend
2 | // Copyright (C) 2017-2019 Mátyás Mustoha
3 | //
4 | // This program is free software: you can redistribute it and/or modify
5 | // it under the terms of the GNU General Public License as published by
6 | // the Free Software Foundation, either version 3 of the License, or
7 | // (at your option) any later version.
8 | //
9 | // This program is distributed in the hope that it will be useful,
10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | // GNU General Public License for more details.
13 | //
14 | // You should have received a copy of the GNU General Public License
15 | // along with this program. If not, see .
16 |
17 |
18 | #include
19 |
20 | #include
21 |
22 |
23 | class test_SdlGamepad : public QObject {
24 | Q_OBJECT
25 |
26 | private slots:
27 | void inits();
28 | };
29 |
30 | void test_SdlGamepad::inits()
31 | {
32 | QCOMPARE(SDL_Init(SDL_INIT_GAMECONTROLLER), 0);
33 | SDL_Quit();
34 | }
35 |
36 |
37 | QTEST_MAIN(test_SdlGamepad)
38 | #include "test_SdlGamepad.moc"
39 |
--------------------------------------------------------------------------------
/tests/integration/sortfilter/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | pegasus_qml_test(test_SortFilter)
2 |
--------------------------------------------------------------------------------
/tests/integration/sortfilter/sortfilter.pro:
--------------------------------------------------------------------------------
1 | TARGET = test_SortFilter
2 | SOURCES = $${TARGET}.cpp
3 |
4 | OTHER_FILES += \
5 | tst_all.qml
6 |
7 | include($${TOP_SRCDIR}/tests/qmltest_common.pri)
8 |
--------------------------------------------------------------------------------
/tests/qmltest_common.pri:
--------------------------------------------------------------------------------
1 | CONFIG += qmltestcase no_testcase_installs
2 | CONFIG += c++11 warn_on exceptions_off rtti_off
3 |
4 | QT += qml
5 |
6 | DEFINES *= $${COMMON_DEFINES}
7 |
8 | include($${TOP_SRCDIR}/src/link_to_backend.pri)
9 |
--------------------------------------------------------------------------------
/tests/tests.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | SUBDIRS += \
4 | backend \
5 | benchmarks \
6 | integration \
7 |
8 | requires(qtHaveModule(testlib))
9 |
--------------------------------------------------------------------------------
/thirdparty/README.md:
--------------------------------------------------------------------------------
1 | # Third-party libraries
2 |
3 | - **QtApng**: for loading APNG images, based on `https://github.com/Skycoder42/QtApng`, commit `9c529bd`
4 | - **SortFilterProxyModel**: based on `https://github.com/oKcerG/SortFilterProxyModel`
5 |
--------------------------------------------------------------------------------
/thirdparty/apng/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | find_package(Qt6 COMPONENTS Gui QUIET)
2 | if (NOT Qt6_FOUND)
3 | find_package(Qt5 5.15 COMPONENTS Gui REQUIRED)
4 | endif()
5 |
6 |
7 | add_library(apng
8 | apngimagehandler.cpp
9 | apngimagehandler_p.h
10 | apngimageplugin.cpp
11 | apngimageplugin.h
12 | apngreader.cpp
13 | apngreader_p.h
14 | )
15 |
16 | target_link_libraries(apng PUBLIC Qt::Gui)
17 | target_compile_definitions(apng PRIVATE QT_STATICPLUGIN)
18 |
--------------------------------------------------------------------------------
/thirdparty/apng/apng.pro:
--------------------------------------------------------------------------------
1 | TARGET = qapng
2 | TEMPLATE = lib
3 | CONFIG += plugin static warn_on
4 | QT += gui
5 |
6 | DEFINES *= $${COMMON_DEFINES}
7 |
8 | HEADERS += \
9 | apngimageplugin.h \
10 | apngreader_p.h \
11 | apngimagehandler_p.h
12 |
13 | SOURCES += \
14 | apngimageplugin.cpp \
15 | apngimagehandler.cpp \
16 | apngreader.cpp
17 |
18 | OTHER_FILES += \
19 | qapng.json
20 |
21 | include($${TOP_SRCDIR}/thirdparty/link_to_png.pri)
22 |
--------------------------------------------------------------------------------
/thirdparty/apng/apngimagehandler_p.h:
--------------------------------------------------------------------------------
1 | #ifndef APNGIMAGEHANDLER_P_H
2 | #define APNGIMAGEHANDLER_P_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | class ApngReader;
9 |
10 | class ApngImageHandler : public QImageIOHandler
11 | {
12 | Q_DISABLE_COPY(ApngImageHandler)
13 | public:
14 | ApngImageHandler();
15 | ~ApngImageHandler() override;
16 |
17 | // QImageIOHandler interface
18 | QByteArray name() const final;
19 | bool canRead() const final;
20 | bool read(QImage *image) final;
21 | QVariant option(ImageOption option) const final;
22 | bool supportsOption(ImageOption option) const final;
23 | bool jumpToNextImage() final;
24 | bool jumpToImage(int imageNumber) final;
25 | int loopCount() const final;
26 | int imageCount() const final;
27 | int nextImageDelay() const final;
28 | int currentImageNumber() const final;
29 |
30 | private:
31 | quint32 _index = 0;
32 | QScopedPointer _reader;
33 | };
34 |
35 | #endif // APNGIMAGEHANDLER_P_H
36 |
--------------------------------------------------------------------------------
/thirdparty/apng/apngimageplugin.cpp:
--------------------------------------------------------------------------------
1 | #include "apngimageplugin.h"
2 | #include "apngimagehandler_p.h"
3 | #include "apngreader_p.h"
4 |
5 | ApngImagePlugin::ApngImagePlugin(QObject *parent) :
6 | QImageIOPlugin(parent)
7 | {}
8 |
9 | QImageIOPlugin::Capabilities ApngImagePlugin::capabilities(QIODevice *device, const QByteArray &format) const
10 | {
11 | if (format == "apng") {
12 | if(device && device->bytesAvailable() >= 8)
13 | return ApngReader::checkPngSig(device) ? CanRead : static_cast(0);
14 | else
15 | return CanRead;
16 | } else
17 | return static_cast(0);
18 | }
19 |
20 | QImageIOHandler *ApngImagePlugin::create(QIODevice *device, const QByteArray &format) const
21 | {
22 | if(device && capabilities(device, format).testFlag(CanRead)) {
23 | auto handler = new ApngImageHandler();
24 | handler->setDevice(device);
25 | handler->setFormat(format);
26 | return handler;
27 | } else
28 | return nullptr;
29 | }
30 |
--------------------------------------------------------------------------------
/thirdparty/apng/apngimageplugin.h:
--------------------------------------------------------------------------------
1 | #ifndef APNGIMAGEPLUGIN_H
2 | #define APNGIMAGEPLUGIN_H
3 |
4 | #include
5 |
6 | class ApngImagePlugin : public QImageIOPlugin
7 | {
8 | Q_OBJECT
9 | Q_PLUGIN_METADATA(IID QImageIOHandlerFactoryInterface_iid FILE "qapng.json")
10 |
11 | public:
12 | ApngImagePlugin(QObject *parent = nullptr);
13 |
14 | // QImageIOPlugin interface
15 | Capabilities capabilities(QIODevice *device, const QByteArray &format) const final;
16 | QImageIOHandler *create(QIODevice *device, const QByteArray &format) const final;
17 | };
18 |
19 | #endif // APNGIMAGEPLUGIN_H
20 |
--------------------------------------------------------------------------------
/thirdparty/apng/qapng.json:
--------------------------------------------------------------------------------
1 | {
2 | "Keys" : [ "apng" ]
3 | }
4 |
--------------------------------------------------------------------------------
/thirdparty/link_to_png.pri:
--------------------------------------------------------------------------------
1 | !isEmpty(PNG_LIBS) {
2 | LIBS += $${PNG_LIBS}
3 | }
4 | !isEmpty(PNG_INCLUDES) {
5 | INCLUDEPATH += $${PNG_INCLUDES}
6 | DEPENDPATH += $${PNG_INCLUDES}
7 | }
8 |
--------------------------------------------------------------------------------
/thirdparty/link_to_sdl.pri:
--------------------------------------------------------------------------------
1 | DEFINES *= SDL_MAIN_HANDLED
2 |
3 | !isEmpty(USE_SDL_GAMEPAD): DEFINES *= WITH_SDL_GAMEPAD
4 | !isEmpty(USE_SDL_POWER): DEFINES *= WITH_SDL_POWER
5 |
6 |
7 | isEmpty(SDL_LIBS):isEmpty(SDL_INCLUDES) {
8 | unix|win32-g++: {
9 | CONFIG += link_pkgconfig
10 | PKGCONFIG += sdl2
11 | }
12 | else: error("Please set SDL_LIBS and SDL_INCLUDES")
13 | }
14 | else {
15 | LIBS += $${SDL_LIBS}
16 | INCLUDEPATH += $${SDL_INCLUDES}
17 | DEPENDPATH += $${SDL_INCLUDES}
18 | }
19 |
--------------------------------------------------------------------------------
/thirdparty/thirdparty.pri:
--------------------------------------------------------------------------------
1 | INCLUDEPATH += $$PWD
2 |
3 | include(SortFilterProxyModel/SortFilterProxyModel.pri)
4 |
--------------------------------------------------------------------------------
/thirdparty/thirdparty.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = subdirs
2 |
3 | !isEmpty(ENABLE_APNG): {
4 | SUBDIRS += apng
5 | }
6 |
7 | OTHER_FILES += link_to_png.pri
8 |
--------------------------------------------------------------------------------