Pegasus theme development general
PlayingKarrde last edited by PlayingKarrde
@fluffypillow I'm unfortunately stuck again haha. How can I use the filters to find a collection from api.allGames? It doesn't seem to accept collection as a roleName from what I can tell.
The reason why is I want to also be able to sort and filter based on the collection and potentially have multiple collections returned (otherwise api.collections would work fine).
@PlayingKarrde ah so that's why SQL would be useful for you! Unfortunately there's no built-in way for such reverse-lookup yet, the games have no information about the collections they contain them at the moment. As a workaround, you could do the lookup manually, by going through all the collections in eg. a
forloop and check its
gamesmember whether it contains the particular game (something like
<theCollection>.games.contains(<theGame>)). It requires some programming, and probably won't be too fast... I'll see how much increase would be in the memory usage by adding a list of collections for each game.
PlayingKarrde last edited by PlayingKarrde
@fluffypillow Ah. Hmm yeah I feel like it would be important. Another (and probably better?) example would be if you're doing a search and it returns all games, having information for what system that game is seems important (especially if you have the same game on various systems).
I won't do the for loop for now as I don't want to sacrifice speed. For the time being I'll just do my filtering based on the current collection as that will get me a large part of the way to accomplish what I'm currently trying.
Also do you happen to know how to return only a certain number of results? I want to do a recently played list but only want to return 3 entries. Can't seem to figure it out.
@PlayingKarrde yeah I can see the use cases, I was just worrying about the increase in memory usage. Such overhead shouldn't cause problems, but better safe than sorry.
Also do you happen to know how to return only a certain number of results?
IndexFilter might fit here, with
maximumIndex: 2(which would result a list with
game, game, gameas elements).
PlayingKarrde last edited by
@fluffypillow Yeah that's what I was originally using but it was just returning the first three games in general. Upon further reflection though I think that suggests my filters aren't working correctly.
AndersHP last edited by
@tronkyfran that's so neat!
It would be so cool to see cartridges getting put into their respective machines upon gamestart, but maybe that's just me dreaming! :-)
spartan last edited by
@fluffypillow I'm trying to build Android version, but after installing QT Creator and everything else, I get the following error in QT Creator:
Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++: not found
Using Android NDK 19.2.534500
Java SDK 8
@spartan yes, Google removed GCC from the NDK not too long ago. To build using the latest NDK, you'll need at least Qt 5.12, while for older versions, you should use NDK r10e.
@fluffypillow a while back you mentioned that you were going to update theme documentation because of some overhaul did the documentation ever get updated?
@wallmachine not yet, but I do have some plans and outlines for their contents. The current ones ended up a bit massive, so this time I'll likely split things into smaller chapters, which should come sooner (well, once I actually start writing the guide) and easier to follow. I also plan to some add QML tutorials too.
2019-04-23T13:38:09 [i] Theme set to 'Simple theme' (`D:/Pegasus/themes/tutorial-simple/`) 2019-04-23T13:38:09 [i] Program settings saved 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:29: TypeError: Cannot read property 'shortname' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:44: TypeError: Cannot read property 'index' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:42: TypeError: Cannot read property 'model' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:40: TypeError: Cannot read property 'gameList' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:102: TypeError: Cannot read property 'assets' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:110: TypeError: Cannot read property 'title' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:134: TypeError: Cannot read property 'developer' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:145: TypeError: Cannot read property 'year' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:141: TypeError: Cannot read property 'year' of undefined 2019-04-23T13:38:09 [w] file:///D:/Pegasus/themes/tutorial-simple/theme.qml:152: TypeError: Cannot read property 'summary' of undefined
@fluffypillow I'll see what I can work out thanks.
does pegasus have an A-Z search?
lilbud last edited by
@fluffypillow Got the carousel to line up
Now for the movement
On the switch itself. The carousel starts on the first item on the left, the selector then moves to the left while moving the carousel to the right (I'm uploading a video I took to better explain this) So when the frontend loads, the carousel is selecting the first item rather than the center item.
Video to better explain the movement: https://photos.app.goo.gl/SofY6eK7N64c12uT9
Looking at the video though, it seems the Switch UI is not actually a carousel. See there are two kinds of this linear layout in Pegasus:
- ListView is easier to use but doesn't loop like a carousel (ie. you jump to the beginning/end on the last/first element). This is what the Switch UI uses in the video.
- PathView is somewhat more complex but loops like the ES systems view. That's what the Carousel object in the theme uses under the hood.
So in case you'd like to make it exactly like the Switch you could take a look on ListViews too.
For both of them, you can use
-Endto set the range where you want to keep the selection. The actual value depends on the type of the layout:
- For ListView, they are in pixels, and mean the left and right edge of the area (like on the image above)
- For PathViews, they are in percentage of the whole path, and mean the center point of the leftmost and rightmost item (maybe this animation helps)
SinisterSpatula last edited by
Just starting to look into this front end and I have to say it's very very nice. I'm currently looking at getting it working on pi zero and small screen 320x240 Retroflag GPi. I'm just doing small edits to the Game OS theme to try and get it to display on such a tiny screen, and I'm sure I'll run into a lot of small issues because this wasn't the design case for either the front end or the theme. (I love both!). Already I have it looking good and running good, but wondered about the video playing code, it looks like it might be using software video decoding, as I see the pi zero hits 100% cpu whenever video is playing. Is there any way currently to take advantage of hardware video acceleration for playing videos, in a similar way that OMXplayer does?
fluffypillow last edited by fluffypillow
gstreamer1.0-omxshould enable the hardware acceleration, but if I remember correctly it also increased the temperature of the Pi and didn't work well for certain video formats. Support might have got better since then though.
Also if you have some photos or videos, I'd be happy to see Pegasus running on the Retroflag :)
SinisterSpatula last edited by SinisterSpatula
@fluffypillow Awesome, I'll look into that. Does it just start using it automatically, or do I need to change the video playing code to use it somehow? I'm still very much a newbie and learning. I have yet to change the game detail/preview screen but plan to. So far, I think this is looking and running great, and I have much more work to do on it. Here's a video of where I'm at with it currently: