rendered paste bodypackage org.ucam.ned.foxtrot.engine.renderer.transitions;
import java.util.List;
/**
* Slides that are using this transition effect slide in from the right of the
* screen covering the previously displayed one.
*/
public class SlideTransition implements TransitionEffect
{
private QTimer m_timer;
private List<QGraphicsItemInterface> m_oldItems;
private List<QGraphicsItemInterface> m_newItems;
private QGraphicsView m_view;
private int translateX = 0;
public SlideTransition()
{
m_timer = new QTimer(m_view);
m_timer.timeout.connect(this, "translate()");
}
public void animate(QGraphicsView view,
List<QGraphicsItemInterface> newItems)
{
m_newItems = newItems;
m_oldItems = view.scene().items();
m_view = view;
Iterator i = m_newItems.iterator();
FoxtrotItem item;
// Add new items with offset -SCREEN_WIDTH
while (i.hasNext()) {
item = (FoxtrotItem) i.next();
item.moveBy(-1 * Globals.SCREEN_WIDTH, 0);
view.scene().addItem(item);
}
m_timer.start(1);
}
public void translate()
{
if (translateX >= Globals.SCREEN_WIDTH) {
removeOldItems();
m_timer.dispose();
return;
}
int stepValue = 15;
if (Globals.SCREEN_WIDTH - translateX < stepValue)
stepValue = Globals.SCREEN_WIDTH - translateX;
Iterator i;
i = m_view.scene().items().iterator();
FoxtrotItem item;
while (i.hasNext()) {
item = (FoxtrotItem)i.next();
item.moveBy(stepValue, 0);
}
translateX += stepValue;
}
public void removeOldItems()
{
Iterator i;
i = m_oldItems.iterator();
while (i.hasNext()) {
m_view.scene().removeItem((QGraphicsItemInterface) i.next());
}
}
}