OptionList Class Reference
[Composer example]

A list of options, separated by '|'. More...

#include <OptionList.h>

Inheritance diagram for OptionList:

Inheritance graph
[legend]

List of all members.

Public Slots

void update ()
 Update the stateless implementations after an Option has been hidden or shown.

Public Member Functions

 OptionList (WContainerWidget *parent=0)
 Create an OptionList.
void add (Option *option)
 Add an Option to the list.

Private Member Functions

void optionVisibilityChanged (Option *opt, bool hidden)
 An option changed visibility: possibly update the separators inbetween.

Private Attributes

std::vector< Option * > options_
 The list of options.
OptionoptionNeedReset_
 The option that needs its stateless code updated.

Friends

class Option


Detailed Description

A list of options, separated by '|'.

This widget is part of the Wt composer example.

An OptionList displays a list of Option widgets, which are separated by a '|' separator.

For example, Foo | Bar | Huu

When Options are hidden, the separators are adjusted so that there is no separator after the last visible option. However, this requires a call of update() each time an option is hidden or shown. This is because the removing of separators is optimized in stateless implementations, and thus in client-side JavaScript code. Since the behaviour is not entirely stateless, the update() method resets stateless implementations if necessary.

See also:
OptionList

Definition at line 40 of file OptionList.h.


Constructor & Destructor Documentation

OptionList::OptionList ( WContainerWidget parent = 0  ) 

Create an OptionList.

Definition at line 11 of file OptionList.C.

00012   : WContainerWidget(parent),
00013     optionNeedReset_(0)
00014 {
00015   resize(WLength::Auto, WLength(2.5, WLength::FontEx));
00016 }


Member Function Documentation

void OptionList::add ( Option option  ) 

Add an Option to the list.

Definition at line 18 of file OptionList.C.

00019 {
00020   addWidget(option);
00021   option->setOptionList(this);
00022 
00023   if (!options_.empty()) {
00024     options_.back()->addSeparator();
00025   }
00026 
00027   options_.push_back(option);
00028 }

void OptionList::update (  )  [slot]

Update the stateless implementations after an Option has been hidden or shown.

Definition at line 30 of file OptionList.C.

00031 {
00032   if (optionNeedReset_ != 0)
00033     optionNeedReset_->resetLearnedSlots();
00034 
00035   optionNeedReset_ = 0;
00036 }

void OptionList::optionVisibilityChanged ( Option opt,
bool  hidden 
) [private]

An option changed visibility: possibly update the separators inbetween.

Definition at line 38 of file OptionList.C.

00039 {
00040   /*
00041    * Check if it was the last visible option, in that case the second last
00042    * visible option loses its separator.
00043    */
00044   for (unsigned i = options_.size() - 1; i > 0; --i) {
00045     if (options_[i] == opt) {
00046       for (int j = i - 1; j >= 0; --j) {
00047         if (!options_[j]->isHidden()) {
00048           if (hidden)
00049             options_[j]->hideSeparator();
00050           else
00051             options_[j]->showSeparator();
00052           break;
00053         }
00054       }
00055       break;
00056     } else
00057       if (!options_[i]->isHidden())
00058         break;
00059   }
00060 
00061   /*
00062    * The Option to the right needs to relearn its stateless
00063    * slot code for hide() and show().
00064    */
00065   for (unsigned i = 0; i < options_.size(); ++i) {
00066     if (options_[i] == opt) {
00067       for (unsigned j = i + 1; j < options_.size(); ++j) {
00068         if (!options_[j]->isHidden()) {
00069           optionNeedReset_ = options_[j];
00070           break;
00071         }
00072       }
00073 
00074       break;
00075     }
00076   }
00077 }


Friends And Related Function Documentation

friend class Option [friend]

Definition at line 67 of file OptionList.h.


Member Data Documentation

std::vector<Option *> OptionList::options_ [private]

The list of options.

Definition at line 59 of file OptionList.h.

The option that needs its stateless code updated.

Definition at line 62 of file OptionList.h.


The documentation for this class was generated from the following files:

Generated on Mon Mar 9 08:28:56 2009 for Wt by doxygen 1.5.6