CPUnltd
Active Member
I figure the better fix will come when you have the time to sit and actually work on it... being one who really cares about his code, I'd expect such...
dflemstr said:OK fixed, but you will not like how I did it. There are more efficient ways of doing it, to say the least.
Reason? Lack of time...
You need to report these bugs to the bug tracker so that I remember them <_<B-ZaR said:Uploaded new version of the PND. Remove your existing appdata before using. The PND now copies the provided interfaces to appdata so you can mess around with them . This makes the first launch take a bit longer than the subsequent ones. A whole bunch of small improvements behind the scenes, but nothing too visible. Tab switching in Tabbed currently works only through touch screen, but this will hopefully be dealt with shortly (depending on when I or dflemstr find time to look into why the trigger buttons won't work). Overall stuff is progressing at a steady pace.
These things would be like TextFile and SystemInformation, right? We won't be able to split the Setting system from the core, but at least those other two.B-ZaR said:Content plugins provide access to information without any specific way of displaying it. These are just something that the UIs can choose to include, like battery status, clock rate, wlan strength, bluetooth status and so on. When a UI is loaded it can use a global plugin manager object to request loading a plugin. A reference to the loaded plugin is returned. The plugins are unloaded with the UI. The plugins are provided with an interface to integrate with the Panorama backend.
So you mean a widget system, basically? Except that the plugin only describes how the widget should look, and doesn't get to "draw it itself?" I think that we need to define this very carefully...B-ZaR said:Configuration plugins define items in a configuration item model. The items have a specific type which determines what kind of widget is used to display them, for example text, integer range, list selection or boolean. These settings can be shown using a simple View, and the control widget used defaults to a provided one, but UIs can override these. UIs can also add their own settings to the model to get UI customization. For example one configuration plugin could provide the necessary items in category Connectivity->WLAN to enable/disable wlan and connecting to a network (quite a big plugin, but should be feasible). Another configuration plugin could be used to set the used panorama UI.
No clue.Magic Sam said:- Do you think it will make it to HF6, I mean will it be possible to select Panorama as a default GUI, like minimenu or XFCE ?
Standalone.Magic Sam said:- Does Panorama need XFCE to work, or can it be standalone ?
Send them, we'll add them to the source tree and upgrade them when we upgrade Panorama. It's like the Linux kernel: Everything that is in our source tree will be upgraded along with the code.Magic Sam said:- Can we send you new / modified UIs, or is it too early ?
Something like those, yeah.dflemstr said:These things would be like TextFile and SystemInformation, right? We won't be able to split the Setting system from the core, but at least those other two.
Yes, a widget system, but only for the configuration items. So that UIs don't need to implement support for specific configuration items but can still have a unified look throughout the UI. In my opinion UIs define what the configuration system looks like and the configuration plugins only define the available settings using the predefined setting types. It sounds like the cleanest solution to me.dflemstr said:So you mean a widget system, basically? Except that the plugin only describes how the widget should look, and doesn't get to "draw it itself?" I think that we need to define this very carefully...
Of course! How did I forget the existing QML plugin system ? Ok, so these could work for the content plugins, except for the plugin->panorama interface, but that's not the important part in them anyways. For the configuration plugins I'd like to have no changes required for UI's when new configuration plugins are added, so that definitely has to be done using other kind of plugins. I could try to wrap up an example QML plugin and draft an interface for the configuration plugins. These would be only proposals and subject to immediate dropping if better ideas arise . I'd rather see Panorama evolve towards a modular structure instead of a monolithic one, so that people can customize it to be as slim or bloated as they want without wrapping a gazillion different PNDs.dflemstr said:So a shared library can of course contain any amount of QML resources (New definitions, new item types, etc), so that's one way of defining the interface; we let the UIs do "import Text 1.0 as Text" and then "Text.TextFile { blabla }" (Same for system information).
This doesn't really let us enumerate which plugins are available etc. though, and we'll need a different method especially for the "widget system," maybe something using our own abstract base class definition and dynamic library loading. QPluginLoader is a great help here of course...
- As a launcher it could be ready in time, but I for one think it needs a bit more meat before it's ready to be included in a firmware release.Magic Sam said:- Do you think it will make it to HF6, I mean will it be possible to select Panorama as a default GUI, like minimenu or XFCE ?
- Does Panorama need XFCE to work, or can it be standalone ?
- Can we send you new / modified UIs, or is it too early ?
Well, from the user's perspective it would allow customizing what configuration options are available. From a contributing developer's perspective it would enable users to use a configuration not included in the main tree without recompiling and repackaging the entire application every time. My two main concerns here are keeping the core lean and elegant, while not restricting users to the features the packaging developers deem good. It would also support distributed development better and speed up the adoption of new features from people "outside". One thing I like about panorama is the ease of making it your own by creating a UI without any kind of recompilation/repackaging. This would be further advanced by letting people add things they want to be configurable and share their configuration items easily.dflemstr said:So I'm unsure how one could implement this. I mean, plugins for configuration will obviously be platform-specific .so's, so it makes no sense to have them as plugins; they'll be compiled with the main project anyways. Unless we wanna enforce the loose coupling, which we can do anyways.
I'm seeing this being through a partial delegate. My current idea is to have a custom "ConfigurationWidget" component that instantiates the correct widget component based on a "type" property received from the configuration object and sets it as the ConfigurationWidget's child. So in the code a configuration dialog might be something like this (off the top of my head):dflemstr said:And how should the "available configuration 'widgets'" be exposed to QML? Remember that the language is extremely limited (it doesn't use proper JSON) so the kinds of objects you can have aren't very many.
ListView {
model: configurationModel
delegate: Item {
Text {
anchor.left: parent.left
text: configurationLabel
}
ConfigurationWidget {
anchor.right: parent.right
item: configurationItem
}
}
}