Public Member Functions | Private Member Functions | Private Attributes | Friends

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 Member Functions

 OptionList (WContainerWidget *parent=0)
 Create an OptionList.
void add (Option *option)
 Add an Option to the list.
void update ()
 Updates the stateless implementations after an Option has been hidden or shown.

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.

  : WContainerWidget(parent),
    optionNeedReset_(0)
{
  resize(WLength::Auto, WLength(2.5, WLength::FontEx));
}

Member Function Documentation

void OptionList::add ( Option option )

Add an Option to the list.

Definition at line 18 of file OptionList.C.

{
  addWidget(option);
  option->setOptionList(this);

  if (!options_.empty()) {
    options_.back()->addSeparator();
  }

  options_.push_back(option);
}
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.

{
  /*
   * Check if it was the last visible option, in that case the second last
   * visible option loses its separator.
   */
  for (std::size_t i = options_.size() - 1; i > 0; --i) {
    if (options_[i] == opt) {
      for (int j = i - 1; j >= 0; --j) {
        if (!options_[j]->isHidden()) {
          if (hidden)
            options_[j]->hideSeparator();
          else
            options_[j]->showSeparator();
          break;
        }
      }
      break;
    } else
      if (!options_[i]->isHidden())
        break;
  }

  /*
   * The Option to the right needs to relearn its stateless
   * slot code for hide() and show().
   */
  for (unsigned i = 0; i < options_.size(); ++i) {
    if (options_[i] == opt) {
      for (unsigned j = i + 1; j < options_.size(); ++j) {
        if (!options_[j]->isHidden()) {
          optionNeedReset_ = options_[j];
          break;
        }
      }

      break;
    }
  }
}
void OptionList::update (  )

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

Definition at line 30 of file OptionList.C.


Friends And Related Function Documentation

friend class Option [friend]

Definition at line 66 of file OptionList.h.


Member Data Documentation

The option that needs its stateless code updated.

Definition at line 61 of file OptionList.h.

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

The list of options.

Definition at line 58 of file OptionList.h.


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

Generated on Fri Feb 4 2011 for the C++ Web Toolkit (Wt) by doxygen 1.7.2