Hey Eric,

Le 11 août 09 à 20:11, Eric Wasylishen a écrit :

> Author: ericwa
> Date: Tue Aug 11 20:11:51 2009
> New Revision: 5106
>
> URL: http://svn.gna.org/viewcvs/etoile?rev=5106&view=rev
> Log:
> Added an experimental 'slideshow' layout, which displays one layout  
> item at a time, stretched to fit the available space.
>
> Added:
>    trunk/Etoile/Frameworks/EtoileUI/Headers/ETSlideshowLayout.h
>      - copied, changed from r5089, trunk/Etoile/Frameworks/EtoileUI/ 
> Headers/ETLineLayout.h
>    trunk/Etoile/Frameworks/EtoileUI/Source/ETSlideshowLayout.m
>      - copied, changed from r5089, trunk/Etoile/Frameworks/EtoileUI/ 
> Source/ETLineLayout.m


The slideshow layout is a nice idea… :-)
However ETPaneLayout already provides almost all you need. A slideshow  
is just a pane-like layout with a navigation bar that can be visible  
or not.
ETPaneLayout still a bit rough and miss some methods but it should now  
be usable (since July).
I think you don't even need a subclass. My idea was to add several  
factory methods to ETPaneLayout like +slideshowLayout,  
+drillDownLayout, +paneNavigationLayout, +wizardLayout etc. that  
return a pane layout configured in a special way.

+ slideshowLayout
{
        ETPaneLayout *layout = [self layout]; // self is ETPaneLayout class  
here
        // This method isn't yet implemented though
        [layout setBarVisible: NO];
        return layout;
}

A variant with back/forward/etc. buttons would be like:

+ slideshowLayoutWithNavigationbar
{
        ETPaneLayout *layout = [self layout];
        [[layout barItem] setLayout: [ETLineLayout layout]];
        [[layout barItem] addItem: [itemFactory buttonWithTitle: _(@"Back")  
target: layout action: @selector(goBack:)];
        [[layout barItem] addItem: [itemFactory buttonWithTitle:  
_(@"Forward") target: layout action: @selector(goForward:)];
        // More buttons could be added and the bar position (left, top, down,  
bottom) controlled with -setBarPosition:
        // Take note -setBarPosition: exists but only 'top' is supported (the  
missing implementation is in the -tile method)
        return layout;
}

As a side note, to sublass ETComputedLayout to present a single item  
isn't a good idea and make everything a lot more complex than it ought  
to be.

You'll probably encounter bugs or limitations with ETPaneLayout  
though. Just tell me and I'll help you to fix them quickly :-)

Cheers,
Quentin.


_______________________________________________
Etoile-dev mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-dev

Reply via email to