Experimental test, Joerg I hope you won't hate me ;) Switch some GUI code to for_each instead of for, i think it's easier to read

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@8511 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria
2011-05-03 23:46:03 +00:00
parent e0361f53f1
commit a4c846bbe3
6 changed files with 42 additions and 45 deletions

View File

@@ -1206,10 +1206,10 @@ void IrrDriver::update(float dt)
{
// This code needs to go outside beginScene() / endScene() since
// the model view widget will do off-screen rendering there
const int updateAmount = GUIEngine::needsUpdate.size();
for(int n=0; n<updateAmount; n++)
GUIEngine::Widget* widget;
for_each (widget, GUIEngine::needsUpdate)
{
GUIEngine::needsUpdate[n].update(dt);
widget->update(dt);
}
}

View File

@@ -138,10 +138,10 @@ ModalDialog::~ModalDialog()
void ModalDialog::clearWindow()
{
// TODO: extract this code and its eqauivalent from Screen into the common base class?
const int children_amount = m_widgets.size();
for(int i=0; i<children_amount; i++)
Widget* w;
for_each (w, m_widgets);
{
m_irrlicht_window->removeChild( m_widgets[i].getIrrlichtElement() );
m_irrlicht_window->removeChild( w->getIrrlichtElement() );
}
m_widgets.clearAndDeleteAll();

View File

@@ -134,9 +134,10 @@ void Screen::loadFromFile()
void Screen::unload()
{
assert(m_magic_number == 0xCAFEC001);
for (int n=0; n<m_widgets.size(); n++)
Widget* w;
for_each (w, m_widgets)
{
assert(m_widgets[n].m_magic_number == 0xCAFEC001);
assert(w->m_magic_number == 0xCAFEC001);
}
m_loaded = false;

View File

@@ -488,35 +488,31 @@ const irr::core::stringw& DynamicRibbonWidget::getSelectionText(const int player
return nothing;
}
// -----------------------------------------------------------------------------
RibbonWidget* DynamicRibbonWidget::getRowContaining(Widget* w) const
RibbonWidget* DynamicRibbonWidget::getRowContaining(Widget* w)
{
const int row_amount = m_rows.size();
for(int n=0; n<row_amount; n++)
RibbonWidget* row;
for_each (row, m_rows)
{
const RibbonWidget* row = &m_rows[n];
if(row != NULL)
if (row != NULL)
{
if(m_children.contains( w ) ) return (RibbonWidget*)row;
if (row->m_children.contains( w ) ) return row;
}
}
return NULL;
}
// -----------------------------------------------------------------------------
RibbonWidget* DynamicRibbonWidget::getSelectedRibbon(const int playerID) const
RibbonWidget* DynamicRibbonWidget::getSelectedRibbon(const int playerID)
{
const int row_amount = m_rows.size();
for(int n=0; n<row_amount; n++)
RibbonWidget* row;
for_each (row, m_rows)
{
const RibbonWidget* row = &m_rows[n];
if (GUIEngine::isFocusedForPlayer(row, playerID))
{
return (RibbonWidget*)row;
return row;
}
}
return NULL;
}
@@ -568,11 +564,11 @@ EventPropagation DynamicRibbonWidget::leftPressed(const int playerID)
updateLabel();
propagateSelection();
const int listenerAmount = m_hover_listeners.size();
for (int n=0; n<listenerAmount; n++)
DynamicRibbonHoverListener* listener;
for_each( listener, m_hover_listeners )
{
m_hover_listeners[n].onSelectionChanged(this, w->getSelectionIDString(playerID),
w->getSelectionText(playerID), playerID);
listener->onSelectionChanged(this, w->getSelectionIDString(playerID),
w->getSelectionText(playerID), playerID);
}
}
@@ -621,11 +617,11 @@ EventPropagation DynamicRibbonWidget::mouseHovered(Widget* child, const int play
if (getSelectedRibbon(playerID) != NULL)
{
const int listenerAmount = m_hover_listeners.size();
for (int n=0; n<listenerAmount; n++)
DynamicRibbonHoverListener* listener;
for_each( listener, m_hover_listeners )
{
m_hover_listeners[n].onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
listener->onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
}
}
@@ -637,11 +633,11 @@ EventPropagation DynamicRibbonWidget::focused(const int playerID)
Widget::focused(playerID);
updateLabel();
const int listenerAmount = m_hover_listeners.size();
for(int n=0; n<listenerAmount; n++)
DynamicRibbonHoverListener* listener;
for_each( listener, m_hover_listeners )
{
m_hover_listeners[n].onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
listener->onSelectionChanged(this, getSelectedRibbon(playerID)->getSelectionIDString(playerID),
getSelectedRibbon(playerID)->getSelectionText(playerID), playerID);
}
return EVENT_LET;
@@ -667,11 +663,11 @@ void DynamicRibbonWidget::onRibbonWidgetFocus(RibbonWidget* emitter, const int p
updateLabel(emitter);
const int listenerAmount = m_hover_listeners.size();
for (int n=0; n<listenerAmount; n++)
DynamicRibbonHoverListener* listener;
for_each( listener, m_hover_listeners )
{
m_hover_listeners[n].onSelectionChanged(this, emitter->getSelectionIDString(playerID),
emitter->getSelectionText(playerID), playerID);
listener->onSelectionChanged(this, emitter->getSelectionIDString(playerID),
emitter->getSelectionText(playerID), playerID);
}
}
@@ -743,10 +739,9 @@ void DynamicRibbonWidget::propagateSelection()
}
// set same selection in all ribbons
const int row_amount = m_rows.size();
for (int n=0; n<row_amount; n++)
RibbonWidget* ribbon;
for_each( ribbon, m_rows )
{
RibbonWidget* ribbon = m_rows.get(n);
if (ribbon != selected_ribbon)
{
ribbon->m_selection[p] = (int)round(where*(ribbon->m_children.size()-1));
@@ -778,7 +773,7 @@ void DynamicRibbonWidget::updateLabel(RibbonWidget* from_this_ribbon)
return;
}
}
if (selection_id == RibbonWidget::NO_ITEM_ID) m_label->setText( L"" );
else m_label->setText( L"Unknown Item" );
}

View File

@@ -133,10 +133,10 @@ namespace GUIEngine
Widget* m_right_widget;
/** Returns the currently selected row */
RibbonWidget* getSelectedRibbon(const int playerID) const;
RibbonWidget* getSelectedRibbon(const int playerID);
/** Returns the row */
RibbonWidget* getRowContaining(Widget* w) const;
RibbonWidget* getRowContaining(Widget* w);
/** Updates the visible label to match the currently selected item */
void updateLabel(RibbonWidget* from_this_ribbon=NULL);

View File

@@ -274,9 +274,10 @@ public:
template<typename T, typename U>
int init_foreach(T& val, const U& vect)
int init_foreach(T& val, U& vect)
{
val = vect.get(0);
if (vect.size() > 0)
val = vect.get(0);
return 0;
}