Panorama


A few performance notes for UIs:
  • Making a model (eg. applications) filtering pipeline vary depending on the filtering parameters is a good idea. Filtering with regexp .* is expensive, but rewiring the model filtering chain is cheap. In other words don't do "include all" or "include none" filtering.
  • Filter first, sort last.
  • Filter first by bools and ints, then by strings.
  • "elide" property for Text elements is resource intensive. Don't use it for delegates that are generated at runtime.
  • If your image is in 24x24px space, make it 24x24px in memory. Use Image element's sourceSize. No more scaling while generating delegates. No you can also use smoothing with no additional cost. NEVER make sourceSize dynamic though. Every time it changes the image is reloaded from source (disk, network...).
  • "opacity: 0" is not the same as "visible: false". "opacity: 0" elements and their children will still be processed for geometry, "visible: false" elements and their children are not.
I probably forgot some, but I'll put them here as I bump into them :)
 
This Panorama looks interesting, even if I'm still not sure, what actualy Panorama is for and what are the Advantages. :unsure:
It seems to be a nice GUI but does this drop the performance of the programs, compared to a simple and small Menu system? I can imagine that Panorama closes when an App ius started so I hope it doesn't affect the performance of programs.
I don't use this "Milky" thing for App Management but I guess that Panorama would also work for PND Store? PND Store needs a serious GUI overhaul and I like the look of panorama and all the categorys listed onscreen. Do these different colours have an function by the way? Looks a litle bit chaotic, I would prefer a more clear and simple colour sheme. And if there is an update available for a specific program, the colour of the category where it is in could change, so we see instantly where are Programs with Updates available. For more Overview I would also suggest an option to hide categorys where we don't have programs in, maybe this is already done, I just had a quick look at the videos and didn't test Panorama for myself.
 
The GUIs are just proofs of concepts. If I ever get time to do anything ever again, I'll make the most extremely appealing UI you've ever seen, so good that it'll make your eyes bleed. :p
 
dflemstr said:
The GUIs are just proofs of concepts. If I ever get time to do anything ever again, I'll make the most extremely appealing UI you've ever seen, so good that it'll make your eyes bleed. :p

Words, words... I want facts ; make my eyes bleed :p
 
Last edited by a moderator:
fusion_power said:
This Panorama looks interesting, even if I'm still not sure, what actualy Panorama is for and what are the Advantages. :unsure:
Panorama is a UI engine. This means that it does not specify what the UI it runs looks like or does. The UIs can use plugins to provide features, like executing and listing applications, or showing the battery leval or doing package management. The look, feel and workings of the UI are completely customizable via UI description files written in QML. For example, Tabbed UI uses one plugin to provide access to pandora's game controls, another to list/execute applications and a third to manage settings. MilkyTest uses one plugin to get package management access and another for the pandora's game controls. The UI could be anything from something you see in Windows 8's preview videos to a pong game that you play to hit application icons to launch them.

fusion_power said:
It seems to be a nice GUI but does this drop the performance of the programs, compared to a simple and small Menu system? I can imagine that Panorama closes when an App ius started so I hope it doesn't affect the performance of programs.
Not currently implemented, but definitely not impossible. A well done panorama UI uses practically only memory when in the background though. Anyway, what you say can be done, but isn't yet.

fusion_power said:
I don't use this "Milky" thing for App Management but I guess that Panorama would also work for PND Store?
Libmilky (the library that the package management plugin is based on) basically uses the same system as PNDStore does. It's the same repository spec that both follow.. The only difference is where they store their data about your packages and what features they provide.

fusion_power said:
PND Store needs a serious GUI overhaul and I like the look of panorama and all the categorys listed onscreen. Do these different colours have an function by the way? Looks a litle bit chaotic, I would prefer a more clear and simple colour sheme.
No real function yet, they are generated based on the category name, so the same category always gets the same color. I considered doing some sort of color coding to the package entries using those colors. It's VERY easy to make them all the same color though. The UI files are saved in plain text in your appdata, and the UI creator (in this case, me) can most certaily point you to the right file/line to make of it what you will (in this case, here. Change the color to "gray" or "#ccffdd" or something. You get my drift).

fusion_power said:
And if there is an update available for a specific program, the colour of the category where it is in could change, so we see instantly where are Programs with Updates available.
In the "installed" mode you see what packages you currently have installed. The ones with updates will bubble to the top and are highlighted with a different color. You can tell if there are updates by the button that in the videos says "No upgrades". If there are, it changes to "Upgrade all" and gets a nice light blue color.

fusion_power said:
For more Overview I would also suggest an option to hide categorys where we don't have programs in, maybe this is already done, I just had a quick look at the videos and didn't test Panorama for myself.
I've planned a feature like that, and also adding your own categories. Neither of these is a priority though. The MilkyTest UI is mainly the UI I use to test milky-plugin, the plugin that provides Panorama UIs with package management features. I didn't at first intend it to be actually used by anyone, but as there seemed to be intrest toward it, I thought I'd polish it up a bit.

The UI you saw in my few previous videos is not in any PND currently available, because the package management plugin is still under development and not ready for release. After the plugin is ready we'll probably release it with the MilkyTest UI for people to try. I'll probably merge MilkyTest and Tabbed UIs at some point to create a UI that can both install/remove/upgrade applications and launch them.

This is just the start :)

EDIT: typos
 
Last edited by a moderator:
dflemstr said:
The GUIs are just proofs of concepts. If I ever get time to do anything ever again, I'll make the most extremely appealing UI you've ever seen, so good that it'll make your eyes bleed. :p
Do it! :D

B-ZaR said:
Panorama is a UI engine. This means that it does not specify what the UI it runs looks like or does. The UIs can use plugins to provide features, like executing and listing applications, or showing the battery leval or doing package management. The look, feel and workings of the UI are completely customizable via UI description files written in QML. For example, Tabbed UI uses one plugin to provide access to pandora's game controls, another to list/execute applications and a third to manage settings. MilkyTest uses one plugin to get package management access and another for the pandora's game controls. The UI could be anything from something you see in Windows 8's preview videos to a pong game that you play to hit application icons to launch them.
Interesting, so in theory, an entire Pandora OS with Panorama UI would be possible, without missing important functions? :)
 
Last edited by a moderator:
^ Basically yes. Of course the definition of "important functions" varies by people, but that's where Panorama shines. Plugins and UIs are releatively easy to make and are completely separate from the Panorama core, so people with matching intersts can make their own and share them. An idea was thrown at the other forums to include a ROM browser/launcher in a UI. Why not? Just requires makining a plugin and incorporating it to a UI. Of course the more stuff you add to a UI the longer it's gonna load and eat memory. Different UIs for different tastes. Mean and lean, fat and featureful. Snappy and simple, extravagance and eyecandy. You choose.
 
I've been banging my head for a few days on this. Explicitly setting the data ownership and returning QList<QObject*>:s apparently should solve my problem of returning temporary lists of custom data types. Using QVariants loses the properties of said custom types and returning QList<MyType> casts to undefined in QML side. QDeclarativeListProperty<MyType> looks like another route.

99% of the time Qt is awesome. That 1% of the time you really have to stretch your imagination to find a solution. Usually there is one, however, which is nice :)
 
I'll try to get the last bugs with device selection in milky-plugin sorted out and add a destination directory selector to the install dialog of MilkyTest, but I think this should be integrated to the main tree after that. There's already so many changes they affect nearly every part of panorama, and I'd like to get a release out for people to try. I probably won't get much done after tomorrow until the end of next week because of other things happening (family stuff).

dflemstr: I probably need to change the full screen and quit hotkeys to something else. Using ctrl clashes badly with employing the game controls to control a UI. Currently quit MilkyTest, I have to alt-tab out of it, wait for it to finish synchronizing with the server (initiated with the start button) and ctrl-c the process (I run it from a shell when testing) :D . Possibly the F-keys?

Anyway, I've pushed this development forward nearly every day (minus a couple of small breathing pauses) for six weeks now, and I think I need to work on something else (probably something game related) after this release for a while (a few weeks, minus bug fixes or UIs I happen to make) to keep motivated. I have a gazillion game mechanics I'd like to prototype, Wars is sitting there waiting for a gamenode-based rewrite, and it's kinda hard to focus on doing a good UI or plugin with all these small distracting ideas floating around :p . Panorama with the current plugins is already IMO quite capable of hosting a minimenu level UI (not every single feature, but on a general level), if one would be created using it. So I think some horizontal development for a little while couldn't hurt.

Oh, and I've been asked several times if Panorama can be booted into directly instead of launching a PND from xfce/minimenu. It should be easy-ish to accomplish by extracting the PND to NAND and adding the startup script to pandora's interface switcher thingy. Running it from minimenu is also a good option (at least for now) since you can eliminate any overhead by having minimenu terminate on application launch.
 
Collaborated with Cloudef today to fix the device selection bug. After I/we get the install directory setting working right, I'll make a new video, wrap things up and prepare for a massive merge :p
 
So I still don't have time to work on this, but I would prefer if the changes stayed out of the "main tree" for now; they are your changes after all, and I'll have to have a look before they go into "my tree" (Which I renamed to the Panorama organization but yeah...).

Feel free to tag for release or whatever; you can do whatever to your code :p I'd prefer if you tagged with e.g. 0.1268~bzar or whatever to distinguish the version lineages in that case tho.

I'll see if I can get things sorted out in maybe a week? Probably during your extended hiatus when you work on other things.
 
^ Will do. If it's OK with you I'll let you handle the organization tree unless we make explicit arrangements to the contrary. You seem generally better suited for such task and historically it's your tree :p. I can take care of the pandora packaging side and keep people informed on the official pandora forum.
 
Bugs fixed, preparing for a release. Keep in mind that MilkyTest is ultimately another test UI :p. It most definitely still has stuff that could be done better, but in my opinion it's a good first try :)
 
Uploaded Panorama 1.268~bzar (went with dflemstr's random version pick, couldn't think of areason why not :p ) to the repo.

New stuff:
  • New Qt plugins (like JPEG support)
  • Milky-plugin package management plugin based on Cloudef's libmilky backend library
  • MilkyTest UI to try milky-plugin out with
  • Several smaller changes (like moving libpnd support from static to dynamic loading)
Remember to delete your old appdata to get the new UI!
 
Oooh looking very good, love it.
I like how you have little button symbols for every action, that's better than any manual. The kinetic scrolling also seems to work nice (was surprised to see it work on that little log :eek: ).

Can't really judge how it work in practice, but I hope I get my Pandora soon ;)

Some things though:
Having A for cancel and B to confirm goes against my Nintendo influenced roots, but that is probably due to the action button layout on the Pandora ;)
Can you filter the list simply by tying on your keyboard? That would be nice.
The colourful category overview seems to show every category no matter what list you are applying it on (at least there were a lot of categories shown for 7-ish PNDs on that second SD), in my opinion it should only show categories which are actually present.

Keep up the good work :)
 
foxblock said:
Having A for cancel and B to confirm goes against my Nintendo influenced roots, but that is probably due to the action button layout on the Pandora ;)
This is indeed the case. Because the B button is located in a good place to use it as the "default" button for actions like OK, I thought it would be weird to have the same button function as "OK" and "No". On the other hand having "OK" and "Yes" mapped to the same button, same as "Remove" and "No" made more sense. I then swapped the yes/no buttons on the screen to match the button layout. This also makes it so that you can't by accident press the remove button twice and end up with a PND being deleted accidentally. A nice usability bonus :)

foxblock said:
Can you filter the list simply by tying on your keyboard? That would be nice.
Yes, check the previous videos in my channel :) . Also the description of the latest video ;) .

foxblock said:
The colourful category overview seems to show every category no matter what list you are applying it on (at least there were a lot of categories shown for 7-ish PNDs on that second SD), in my opinion it should only show categories which are actually present.
A very good point. I'll have to look into this at some point.

EDIT: Also you mentioned kinetic scrolling. It's easy as pie to do in QML. Seriously, it's like five lines for adding it to anything :p. In that case I used a ListView though, which implements it by default.
 
Last edited by a moderator:
B-ZaR said:
foxblock said:
Can you filter the list simply by tying on your keyboard? That would be nice.
Yes, check the previous videos in my channel :) . Also the description of the latest video ;) .
Duh, I knew I already saw it somewhere, but could not quite put my finger on it, sorry ;)

B-ZaR said:
EDIT: Also you mentioned kinetic scrolling. It's easy as pie to do in QML. Seriously, it's like five lines for adding it to anything :p . In that case I used a ListView though, which implements it by default.
Hehe, one reason more to like Qt (I am a big fan of kinetic scrolling and organic interfaces in general).
 
Last edited by a moderator:
Really nice B-ZaR!
I usedx it to upgrade and install some pnds.
I got some unreproducable segfaults though.
 
Back
Top