1.1k views
in GUI Development by
How can create a variable to a view at a particular index into an Outline? Be it pixels or items in.

1 Answer

0 votes
by

Hi Mike,

I assume you want to move the content within an Outline Box - let me refer to the chapter Adjust the scroll position of an Outline Box.

Hope this helps...

Best regards,

Manfred.

by
I'll take a look. I'm looking to enable a SimpleTouchHandler at a known Offset or index in. And disable all others.

 

[EDIT: Ok I got this figured out...]

var Core::View view = null;

// disable SimpleTouchHandler for all views
var Application::ActiveModeBlock block;
var int32 viewcount = Outline.CountViews();
var int32 i;

for(i = 1; i < viewcount-1; i = i+1) // skip Left and RightSpacer!
{
   view = Outline.GetViewAtIndex(i);
   block = (Application::ActiveModeBlock)view;
   block.SimpleTouchHandler.Enabled = false;
}

// Enable SimpleTouchHandler for current view   
var int32 idx = ((SlideTouchHandler.Offset.x * -1) / block.Bounds.w)+1;
view = Outline.GetViewAtIndex(idx);       
block = (Application::ActiveModeBlock)view;                             
block.SimpleTouchHandler.Enabled = true;
by
Also, I do need to scroll the position as you mentioned as well. So I tried the following in Init{} but its not working.. what am I not understanding?

 

// Create a new animation effect instance.
var Effects::PointEffect effect = new Effects::PointEffect;

// Configure the animation duration and the timing (easing)
effect.Value2 = <-1000,0>;
effect.Value1 = <0,0>;

effect.CycleDuration = 250;  // milliseconds
effect.NoOfCycles    = 1;
effect.Timing        = Effects::Timing.Exp_InOut;
effect.Enabled = true;

// Finally instruct the Outline Box to adjust the scrolling offset
// with the prepared animation.
Outline.AdjustContent( effect, null );
by
Ah,
 Outline.EnsureVisible( view, true, effect, null );

did the trick.  However, it's right justified. As I fit 3 Views on the screen at a time. And it scrolls the view till it is the right most one. And not the center. Whats the best way to address that? FindNextView() ?

[EDIT: Got it.. view = Outline.FindNextView( view, Core::ViewState[]); ]
by
Trying to figure out how to have a Button slot method scroll the Outline to the right one view. This doesn't seem to be working:

var Core::View view = null;

view = FindViewInDirection( null, Core::Direction.Right, Core::ViewState[]);

// Create a new animation effect instance.
var Effects::PointEffect effect = new Effects::PointEffect;

// Configure the animation duration and the timing (easing)
effect.CycleDuration = 250;  // milliseconds
effect.NoOfCycles    = 1;
effect.Timing        = Effects::Timing.Exp_InOut;
effect.Enabled = true;
          
Outline.EnsureVisible( view, true, effect, null );

..or am I suppose to use AdjustContent() ?
by

According to the comments above, I assume that you have a number of items placed within an Outline Box and the Outline Box is larger than a single item so that more than one items are visible on the screen. And: Only the centered item should be enabled to react on touch events.

As long as the size of a single item is identical to the size of the Outline Box, it is easy and convenient to work with EnsureVisible(). However, the method EnsureVisible() does not center a certain item - it ensures that the item is visible.

In your case, let me recommend to calculate the necessary scroll offset and set or animate the property ScrollOffset of the Outline Box. Then you can compare the ScrollOffset with the Bounds of the items in order to find the centered item.

Of course, a few lines of code are necessary to calculate and compare the positions - but at the end you get exactly the desired behavior.

What do you think about that approach?

Best regards,

Manfred.

Ask Embedded Wizard - Archive

Welcome to the Ask Embedded Wizard archive. This community forum served us well for many years, but we've evolved our support approach!

Your resources:

The Embedded Wizard Online Documentation provides comprehensive documentation, tutorials, examples and ready-to-use software packages.

For dedicated assistance, explore our Embedded Wizard Product Support.

You can still browse the valuable discussions from our community history here.

Embedded Wizard Website | Privacy Policy | Imprint

...