15 #ifndef BORNAGAIN_GUI_COREGUI_VIEWS_COMMONWIDGETS_ITEMSTACKPRESENTER_H
16 #define BORNAGAIN_GUI_COREGUI_VIEWS_COMMONWIDGETS_ITEMSTACKPRESENTER_H
22 #include <QStackedWidget>
35 template <
class U>
void setItem(U* item,
bool* isNew = 0);
62 T* widget = itemWidget(item);
68 m_stackedWidget->addWidget(widget);
69 m_itemToWidget[item] = widget;
72 m_stackedWidget->setCurrentWidget(widget);
73 if (widget->isHidden())
76 widget->setItem(item);
81 return dynamic_cast<T*
>(m_stackedWidget->currentWidget());
86 if (m_single_widget) {
87 if (!m_itemToWidget.empty())
88 return m_itemToWidget.first();
90 return m_itemToWidget[item];
98 if (m_stackedWidget->currentWidget())
99 m_stackedWidget->currentWidget()->hide();
109 T* widget = m_itemToWidget[item];
113 typename QMap<SessionItem*, T*>::iterator it = m_itemToWidget.begin();
114 while (it != m_itemToWidget.end()) {
115 if (it.value() == widget)
116 it = m_itemToWidget.erase(it);
121 m_stackedWidget->removeWidget(widget);
127 typename QMap<SessionItem*, T*>::iterator it = m_itemToWidget.begin();
128 while (it != m_itemToWidget.end()) {
129 m_stackedWidget->removeWidget(it.value());
133 m_itemToWidget.clear();
Defines the macro ASSERT.
#define ASSERT(condition)
The ItemStackPresenter templated class extends ItemStackWidget so it could operate with SesionItem ed...
ItemStackPresenter(bool single_widget=false)
void setItem(U *item, bool *isNew=0)
Shows the widget for given item (and hides previous one).
void removeWidgetForItem(SessionItem *item)
bool m_single_widget
Different items will be served by same widget.
QMap< SessionItem *, T * > m_itemToWidget
T * itemWidget(SessionItem *item)