Create the vertical elements only once and stretch them over the whole
vertical space, but keep all horizontal elements distinct per model.
Also, add horizontal elements to the labels group and rename that
accordingly, so that we don't need a third Flickable or ListView
Change-Id: I4fe3bd526767e8ff5d0ebcd70e9343f65fcc787f
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
It's very handy to know which row changed and what the new height is.
Change-Id: Iff3a45c3fbfc47f9b1001a9cf15741349e1e50b8
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
This potentially allows us to use different views for different
categories and reduces the reliance on TimelineModelAggregator.
Change-Id: I486481599d1517abc0087c565358f27405e4108b
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The timeline did not jump back to the selection when the selection
range detail window was clicked and an error was triggered when it was
closed.
Change-Id: I2de5788a184f2958a07ad39a3a0f298667d9783f
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
It fits better to the OpenHandCursor we show when not dragging.
Change-Id: I6d3d635b4d56dc0b6e5baa502722cac045e2e6e2
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
Make the relevant member functions Q_INVOKABLE and properly notify
about the height change when data is loaded or cleared.
Change-Id: I7c1ee70942617af2045b84a2d8f0ab2adef72f52
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
This reduces the complexity involved in making the row count a
property. Empty models do have rows like this, but don't have a height.
It doesn't get much more consistent than that. Before empty models
didn't have rows but you could still query the row heights. Having
height == 0 is very helpful for assembling the UI, rows == 0 not so
much.
Change-Id: I38ee9f46751a4beb288578d5cd1f0a17ea08814a
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
That's where they belong. Having them in the view makes no sense.
Change-Id: Ia2a6c8b02804ed8a1e10b0731cd62b6fd6489b0c
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The model factory only exists if there is a plugin providing it. Also,
it's a good idea to initialize it.
Change-Id: I904bae1e733c37699a99e84e79c67ab4e8aea805
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
We need a general purpose TimelineModel and a specialized
QmlProfilerTimelineModel.
Change-Id: I2da02d65efa11e160cab5fa9f8a21075beb0e2bf
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The view should check if it needs the labels before requesting them.
Change-Id: I935259e91337202224af7890d0617e1b12dd922a
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
This relieves us of the headaches created by figuring out what should
happen if the model manager is changed later. Extension models can be
safely created through a factory.
Change-Id: I8cf8fd6d639e4e6c9da66351ea44cfc35fd614a5
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The selectionIds are an integral part of the timeline and have to be
given for each event. The typeIds are optional. Thus it makes more
sense to store the selectionIds in the basic Range classes and have the
derived models handle the typeIds instead of doing it the other way
around.
Change-Id: I824224b6f58e8d45311134887482586283fbff41
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The event view deals in type ids and the timeline view has to handle
selection by type id. Using the coincidence that typeId == selectionId
in the cases we're interested in is ugly.
Change-Id: I6f94ccd2c3945d5901d0a225deee7de077bfce58
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
We can easily implement all specialized models with only the public
interface.
Change-Id: I2fc75ad4a4270d9dd40068e78f9364f3963805e0
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Remove things we don't need and add some more methods to allow
specialized models to operate without access to private class.
Change-Id: I1f42c4299825f581361a79dd0a0e00c1c08b79e7
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
In order to provide a stable interface we need most of
SortedTimelineModel to be private. There is no real benefit in keeping
a distinction between AbstractTimelineModel and SortedTimelineModel as
SortedTimelineModel isn't very useful on its own.
Change-Id: Ibc6945e2740320f430f2634f95c7807d6b460123
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The ones we'll refactor into the timeline library should be called
timeline* and the others should be called qmlprofiler*.
Change-Id: I6ecccbe4ef523681ca0baeef140368e2c1839964
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Avoid keeping multiple, potentially diverging copies of the same time
information and make sure all the times are consistent with each other.
Stating the times as properties allows us to use bindings in more
places, too.
Change-Id: I9cdd4f561ac22ad795939594ba340b1fbc070e9a
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The stopIt() slot is already connected in the constructor of
AnalyzerRunControl.
The double connection is clearly not intended and, considering that
various analyzers modify internal state from those callse, could lead
to incorrect behavior.
Change-Id: I1c68eb06729849771f4a25257a219c84a032adf3
Reviewed-by: hjk <hjk121@nokiamail.com>
Keep the rectangles in the row they belong to and use MiterJoin to get
sharp corners.
Change-Id: I0dc9106975ccb550bfb5b5645865d0ea9318d577
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
We cannot just set it unconditionally on setRecording() because the
client recording state is supposed to reflect the user's intention.
Instead, if the recording button's state differs from the intention
and then spontaneously changes to match it (through a change in the
application), we toggle the client recording state twice to make sure
everything is properly synchronized.
Change-Id: I070d38364e63ab9cf0597fabed3d326ac3685589
Task-number: QTCREATORBUG-13322, QTCREATORBUG-13430
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
We want to only navigate the text editor when browsing through profile
data.
Change-Id: I2156b9853a6a1547a52c491ea021a68ca4f6dde9
Task-number: QTCREATORBUG-13433
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
We must not keep intermediate values in 32bit integers as they can
easily get too large for that. This change restores the behavior from
before change 10a14ced36, which coaxed
the compiler into using floats by stating the minimum constants as
"1.0".
Task-number: QTCREATORBUG-13391
Change-Id: Ie83337b7e2b09b37d94a31a07813de14b85152ee
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
If a change was triggered from the profiled application we still need
to update the client recording state for the UI to stay consistent.
Change-Id: I2955bd9f2da27a2c32ac93e33742ee5fefbd2751
Task-number: QTCREATORBUG-13322
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
If this is not done multiple event types with empty locations are
regarded as equal which leads to confusion later. Also, it's not a
good idea to change the "location" member for already inserted event
types as that prevents us from looking them up in the eventTypeIds
map.
Finally, preprocessing the filename and stripping certain parts
from the URL prevents a proper lookup later on, so this is removed.
Change-Id: Idbe87e0b16444291bb13ff604ae65e1d7e74c3a5
Task-number: QTCREATORBUG-13382
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
The respective items are available without it.
Change-Id: Idc840cf08e7bec84f561c096afe8de25b1fb8468
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
These were added when the overall project still supported Qt 4. Now the
general requirement is even stronger than what was specified in these
plugins.
Change-Id: I71241e20a72a413d30c4e089bcc19b0762a732da
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
If you click on a row with a note in the timeline you probably want to
see the place with the note, not some other occurrence of the event
type.
Change-Id: Ic94514e460a33dbadca5cfed0b1455a1718b6d03
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>