Wall view problem - can you fix it?
#1
Image

To create Wall views (icon panels) where the focus object doesn't overshoot the screen edges, I've been using the following trick:

Code:
<animation effect="slide" end="359,0" time="200" condition="Container.Column(0)">Conditional</animation>
             <animation effect="slide" end="180,0" time="200" condition="Container.Column(1)">Conditional</animation>
             <animation effect="slide" end="0,179" time="200" condition="Container.Row(0)">Conditional</animation>
             <animation effect="slide" end="-180,0" time="200" condition="Container.Column(8)">Conditional</animation>
             <animation effect="slide" end="0,-179" time="200" condition="Container.Row(4)">Conditional</animation>

So as you hit the rows near the sides of the panel, it shunts it in the opposite direction, keeping the focus object within the screen perimeter. Furthermore, you only see the edges of the icon panel when it runs out of icons. Problem is, you always see an edge on the left hand side as you scroll backwards, as you can see in the screenshot.

It's a pretty complex situation and I don't expect many people to really get what I'm saying, but I'm assuming there's something about how the icons are buffered that's creating this problem. It's like they're pre-loading as you scroll right but not as you scroll left.

Can anyone shed some light on this situation or, even better, propose a solution?
Reply
#2
That sums it up reasonably well.

The reason is that we only render list items that appear in the space occupied by the list, plus one more in each direction during scroll. This may mean up to 2 items to the right during scroll if not an even number of items fit (1 for the odd number of items, plus an extra one while scrolling). But it'll only ever mean 1 item (or possibly 0 if we're at the "origin" of the container) extra on the left.

You can trick it using the container(id).listitem(number).* stuff with additional items.
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#3
jmarshall Wrote:You can trick it using the container(id).listitem(number).* stuff with additional items.

Sorry about this, jm, but I don't suppose you could elaborate on that?
Reply
#4
Yeah, the trick is to use the listitem offset stuff to render the items to the left separately.

Try using: Container(id).ListItemPosition(-1).Icon to render from the first item to the left for instance. I suspect this will be the item to the left in the bottom row, but am not 100 whether it works with panels or not.

Let me know how it goes Smile

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#5
Cheers, jm. I've more of less got it by creating a separate group of icons using the offsets you suggested. The only problem now is getting them to scroll in from the side as the icon panel scrolls backwards. I tried animating a duplicate group by setting its visibility to Container(51).OnPrevious and its animation condition to Hidden, but there was a delay which left a gap between it and the icon panel.

Any ideas?

EDIT: I've almost got it by using the following:

Code:
        <visible>!Container.OnPrevious</visible>
        <animation effect="slide" start="-180,0" end="0,0" time="200" reversible="false">Visible</animation>

...but there's still a slight delay, and by extension a small gap between offset icons and panel.

EDIT: Oh dear. It's also triggering the animation when I move up within the first column. I guess that's considered an onprevious state.
Reply
#6
Yeah, that'd be very tricky indeed.

Because of the hidden anim you have to wait until the scrolling of the list is already starting before the slide, thus the offset. I don't think you'll be able to do it at all in fact.

I'm not really sure what the solution is in this case (other than you generating the entire thumbpanel with listitemposition stuff) Sad

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#7
jmarshall Wrote:...other than you generating the entire thumbpanel with listitemposition stuff

Would the performance be the same?
Reply
#8
It wouldn't be CPU-wise, no. Whether or not you'd notice it is a different story. It'd be kinda nasty to code up though.

I don't know whether you have any other ideas?
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#9
I think I've made it slightly more bearable by setting the visible condition to:

<visible>Container.Column(0) | Container.Column(1)</visible>

It seems to have removed the loading judder that was only exacerbating the problem. There's also an issue with the fallback textures only working for the offset icons when, ironically, you're at the start of the Panel. In other words, when they're not wanted. I guess you could solve that by having two sets of offset icons, one visible when there is an icon and one when there isn't.

I'll play around with it a bit more, then maybe put an option in for whether you want this "solution" active or not. I could call it the "Bad or Ugly" option.

EDIT: Okay, I'm calling it quits. I'd rather make it obvious that it didn't work than have some messy attempt at a cover-up. What are the chances of there one day being a dedicated fullscreen control for things like this?
Reply

Logout Mark Read Team Forum Stats Members Help
Wall view problem - can you fix it?0