Implement proper support for layoutChange in QQmlDelegateModel

Current implementation is treating model layoutChange the same way as modelReset,
which causes problems when using ListView on top of a QSortFilterProxyModel. The
model emits layoutChanged whenever a data within sorting column change. Treating
it as modelReset leads to poor performance on large models and caused UI issues,
because the scrolling position is reset every time.

This patch implements proper handling for layoutChanged signals by first handling
all items moves and then simulating dataChange for all items.

This fixes regression from Qt 5.1 introduced by Change I16b859d9

Task-number: QTBUG-37983
Task-number: QTBUG-34391
Change-Id: I6d3873b7b87e7f0e8fc0c1ed5dc80c6f8fdf6c22
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Michael Zanetti <michael.zanetti@canonical.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Mark material as dirty after changing color's opacity in Rectangle.

Change-Id: I8037908bb2ba494001c516e2c7606c3bb54a14d8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Fix nested parallel/sequential animations combined with animators.

The logic for looping uncontrolled animations in
QAbstractAnimationJob::setCurrentTime assumes that uncontrolled
animations return duration == -1, always. The logic falls apart when a
duration gets set while the animation is running. To rememdy this,
update QParallelAnimation's duration to return -1 for this case. This
is also how the sequential group's duration is implemented so these
are now using the same pattern.

Update the logic in parallel animations to flush previous loops in
updateAnimationsTime to handle the case where duration is -1. This
solves the case where we have for instance:

ParallelAnimation
  Sequential
    YAnimator: duration: 1000
    ScriptAction ...
  Sequential
    Pause duration: 5000 <--- longer than yanimator
    ScriptAction ...

Task-number: QTBUG-37246
Change-Id: I7a1ea547b2f3090feb8b1e87aa7ca746151736fa
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Fix sequential animations with uncontrolled looped children.

An animation needs to be through all its loop cycles or
explicitly stopped before we can consider it finished.

Task-number: QTBUG-37246
Change-Id: Ia30b27448ec7a1e0d2dd8165575b8a7105caae8d
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reset loop counters when animations are started.

Where normal animations would derive the current loop from the current
time, uncontrolled animations use an iterative approach and which was
not reset when an animation was restarted or a parent had a loop
around it.

Change-Id: Ia7a1880c8b7578463dff4c5ddeab48324bcb32ee
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Append the start time of the current loop to the animation time.

currentTime() uses the total time, so when we use only the loop-local
time for the child animations, normal animations will seem to have
terminated long ago (on the previous loop).

Change-Id: I80a229f40a99569014d8082d153ad579c09fb9db
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Testcase for mixing sequential, parallel with loops and animators.

Task-number: QTBUG-37246
Change-Id: I50c2d46f79fb79cb6eba856ba5b187358f1f2a52
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Merge pull request #20 from sletta/selected-fixes

[qtdeclarative] Selected fixes from Qt 5.3 and 5.4