Line | Source Code | Coverage |
---|
1 | /**************************************************************************** | - |
2 | ** | - |
3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | - |
4 | ** Contact: http://www.qt-project.org/legal | - |
5 | ** | - |
6 | ** This file is part of the QtGui module of the Qt Toolkit. | - |
7 | ** | - |
8 | ** $QT_BEGIN_LICENSE:LGPL$ | - |
9 | ** Commercial License Usage | - |
10 | ** Licensees holding valid commercial Qt licenses may use this file in | - |
11 | ** accordance with the commercial license agreement provided with the | - |
12 | ** Software or, alternatively, in accordance with the terms contained in | - |
13 | ** a written agreement between you and Digia. For licensing terms and | - |
14 | ** conditions see http://qt.digia.com/licensing. For further information | - |
15 | ** use the contact form at http://qt.digia.com/contact-us. | - |
16 | ** | - |
17 | ** GNU Lesser General Public License Usage | - |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - |
19 | ** General Public License version 2.1 as published by the Free Software | - |
20 | ** Foundation and appearing in the file LICENSE.LGPL included in the | - |
21 | ** packaging of this file. Please review the following information to | - |
22 | ** ensure the GNU Lesser General Public License version 2.1 requirements | - |
23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - |
24 | ** | - |
25 | ** In addition, as a special exception, Digia gives you certain additional | - |
26 | ** rights. These rights are described in the Digia Qt LGPL Exception | - |
27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - |
28 | ** | - |
29 | ** GNU General Public License Usage | - |
30 | ** Alternatively, this file may be used under the terms of the GNU | - |
31 | ** General Public License version 3.0 as published by the Free Software | - |
32 | ** Foundation and appearing in the file LICENSE.GPL included in the | - |
33 | ** packaging of this file. Please review the following information to | - |
34 | ** ensure the GNU General Public License version 3.0 requirements will be | - |
35 | ** met: http://www.gnu.org/copyleft/gpl.html. | - |
36 | ** | - |
37 | ** | - |
38 | ** $QT_END_LICENSE$ | - |
39 | ** | - |
40 | ****************************************************************************/ | - |
41 | | - |
42 | #include "qlistview.h" | - |
43 | | - |
44 | #ifndef QT_NO_LISTVIEW | - |
45 | #include <qabstractitemdelegate.h> | - |
46 | #include <qapplication.h> | - |
47 | #include <qpainter.h> | - |
48 | #include <qbitmap.h> | - |
49 | #include <qdrag.h> | - |
50 | #include <qvector.h> | - |
51 | #include <qstyle.h> | - |
52 | #include <qevent.h> | - |
53 | #include <qscrollbar.h> | - |
54 | #include <qrubberband.h> | - |
55 | #include <private/qlistview_p.h> | - |
56 | #include <qdebug.h> | - |
57 | #ifndef QT_NO_ACCESSIBILITY | - |
58 | #include <qaccessible.h> | - |
59 | #endif | - |
60 | | - |
61 | QT_BEGIN_NAMESPACE | - |
62 | | - |
63 | /*! | - |
64 | \class QListView | - |
65 | | - |
66 | \brief The QListView class provides a list or icon view onto a model. | - |
67 | | - |
68 | \ingroup model-view | - |
69 | \ingroup advanced | - |
70 | \inmodule QtWidgets | - |
71 | | - |
72 | A QListView presents items stored in a model, either as a simple | - |
73 | non-hierarchical list, or as a collection of icons. This class is used | - |
74 | to provide lists and icon views that were previously provided by the | - |
75 | \c QListBox and \c QIconView classes, but using the more flexible | - |
76 | approach provided by Qt's model/view architecture. | - |
77 | | - |
78 | The QListView class is one of the \l{Model/View Classes} | - |
79 | and is part of Qt's \l{Model/View Programming}{model/view framework}. | - |
80 | | - |
81 | This view does not display horizontal or vertical headers; to display | - |
82 | a list of items with a horizontal header, use QTreeView instead. | - |
83 | | - |
84 | QListView implements the interfaces defined by the | - |
85 | QAbstractItemView class to allow it to display data provided by | - |
86 | models derived from the QAbstractItemModel class. | - |
87 | | - |
88 | Items in a list view can be displayed using one of two view modes: | - |
89 | In \l ListMode, the items are displayed in the form of a simple list; | - |
90 | in \l IconMode, the list view takes the form of an \e{icon view} in | - |
91 | which the items are displayed with icons like files in a file manager. | - |
92 | By default, the list view is in \l ListMode. To change the view mode, | - |
93 | use the setViewMode() function, and to determine the current view mode, | - |
94 | use viewMode(). | - |
95 | | - |
96 | Items in these views are laid out in the direction specified by the | - |
97 | flow() of the list view. The items may be fixed in place, or allowed | - |
98 | to move, depending on the view's movement() state. | - |
99 | | - |
100 | If the items in the model cannot be completely laid out in the | - |
101 | direction of flow, they can be wrapped at the boundary of the view | - |
102 | widget; this depends on isWrapping(). This property is useful when the | - |
103 | items are being represented by an icon view. | - |
104 | | - |
105 | The resizeMode() and layoutMode() govern how and when the items are | - |
106 | laid out. Items are spaced according to their spacing(), and can exist | - |
107 | within a notional grid of size specified by gridSize(). The items can | - |
108 | be rendered as large or small icons depending on their iconSize(). | - |
109 | | - |
110 | \table 100% | - |
111 | \row \li \inlineimage windowsvista-listview.png Screenshot of a Windows Vista style list view | - |
112 | \li \inlineimage macintosh-listview.png Screenshot of a Macintosh style table view | - |
113 | \li \inlineimage fusion-listview.png Screenshot of a Fusion style table view | - |
114 | \row \li A \l{Windows Vista Style Widget Gallery}{Windows Vista style} list view. | - |
115 | \li A \l{Macintosh Style Widget Gallery}{Macintosh style} list view. | - |
116 | \li A \l{Fusion Style Widget Gallery}{Fusion style} list view. | - |
117 | \endtable | - |
118 | | - |
119 | \section1 Improving Performance | - |
120 | | - |
121 | It is possible to give the view hints about the data it is handling in order | - |
122 | to improve its performance when displaying large numbers of items. One approach | - |
123 | that can be taken for views that are intended to display items with equal sizes | - |
124 | is to set the \l uniformItemSizes property to true. | - |
125 | | - |
126 | \sa {View Classes}, {Item Views Puzzle Example}, QTreeView, QTableView, QListWidget | - |
127 | */ | - |
128 | | - |
129 | /*! | - |
130 | \enum QListView::ViewMode | - |
131 | | - |
132 | \value ListMode The items are laid out using TopToBottom flow, with Small size and Static movement | - |
133 | \value IconMode The items are laid out using LeftToRight flow, with Large size and Free movement | - |
134 | */ | - |
135 | | - |
136 | /*! | - |
137 | \enum QListView::Movement | - |
138 | | - |
139 | \value Static The items cannot be moved by the user. | - |
140 | \value Free The items can be moved freely by the user. | - |
141 | \value Snap The items snap to the specified grid when moved; see | - |
142 | setGridSize(). | - |
143 | */ | - |
144 | | - |
145 | /*! | - |
146 | \enum QListView::Flow | - |
147 | | - |
148 | \value LeftToRight The items are laid out in the view from the left | - |
149 | to the right. | - |
150 | \value TopToBottom The items are laid out in the view from the top | - |
151 | to the bottom. | - |
152 | */ | - |
153 | | - |
154 | /*! | - |
155 | \enum QListView::ResizeMode | - |
156 | | - |
157 | \value Fixed The items will only be laid out the first time the view is shown. | - |
158 | \value Adjust The items will be laid out every time the view is resized. | - |
159 | */ | - |
160 | | - |
161 | /*! | - |
162 | \enum QListView::LayoutMode | - |
163 | | - |
164 | \value SinglePass The items are laid out all at once. | - |
165 | \value Batched The items are laid out in batches of \l batchSize items. | - |
166 | \sa batchSize | - |
167 | */ | - |
168 | | - |
169 | /*! | - |
170 | \since 4.2 | - |
171 | \fn void QListView::indexesMoved(const QModelIndexList &indexes) | - |
172 | | - |
173 | This signal is emitted when the specified \a indexes are moved in the view. | - |
174 | */ | - |
175 | | - |
176 | /*! | - |
177 | Creates a new QListView with the given \a parent to view a model. | - |
178 | Use setModel() to set the model. | - |
179 | */ | - |
180 | QListView::QListView(QWidget *parent) | - |
181 | : QAbstractItemView(*new QListViewPrivate, parent) | - |
182 | { | - |
183 | setViewMode(ListMode); executed (the execution status of this line is deduced): setViewMode(ListMode); | - |
184 | setSelectionMode(SingleSelection); executed (the execution status of this line is deduced): setSelectionMode(SingleSelection); | - |
185 | setAttribute(Qt::WA_MacShowFocusRect); executed (the execution status of this line is deduced): setAttribute(Qt::WA_MacShowFocusRect); | - |
186 | Q_D(QListView); // We rely on a qobject_cast for PM_DefaultFrameWidth to change executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
187 | d->updateStyledFrameWidths(); // hence we have to force an update now that the object has been constructed executed (the execution status of this line is deduced): d->updateStyledFrameWidths(); | - |
188 | } executed: } Execution Count:900 | 900 |
189 | | - |
190 | /*! | - |
191 | \internal | - |
192 | */ | - |
193 | QListView::QListView(QListViewPrivate &dd, QWidget *parent) | - |
194 | : QAbstractItemView(dd, parent) | - |
195 | { | - |
196 | setViewMode(ListMode); executed (the execution status of this line is deduced): setViewMode(ListMode); | - |
197 | setSelectionMode(SingleSelection); executed (the execution status of this line is deduced): setSelectionMode(SingleSelection); | - |
198 | setAttribute(Qt::WA_MacShowFocusRect); executed (the execution status of this line is deduced): setAttribute(Qt::WA_MacShowFocusRect); | - |
199 | Q_D(QListView); // We rely on a qobject_cast for PM_DefaultFrameWidth to change executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
200 | d->updateStyledFrameWidths(); // hence we have to force an update now that the object has been constructed executed (the execution status of this line is deduced): d->updateStyledFrameWidths(); | - |
201 | } executed: } Execution Count:108 | 108 |
202 | | - |
203 | /*! | - |
204 | Destroys the view. | - |
205 | */ | - |
206 | QListView::~QListView() | - |
207 | { | - |
208 | } | - |
209 | | - |
210 | /*! | - |
211 | \property QListView::movement | - |
212 | \brief whether the items can be moved freely, are snapped to a | - |
213 | grid, or cannot be moved at all. | - |
214 | | - |
215 | This property determines how the user can move the items in the | - |
216 | view. \l Static means that the items can't be moved the user. \l | - |
217 | Free means that the user can drag and drop the items to any | - |
218 | position in the view. \l Snap means that the user can drag and | - |
219 | drop the items, but only to the positions in a notional grid | - |
220 | signified by the gridSize property. | - |
221 | | - |
222 | Setting this property when the view is visible will cause the | - |
223 | items to be laid out again. | - |
224 | | - |
225 | By default, this property is set to \l Static. | - |
226 | | - |
227 | \sa gridSize, resizeMode, viewMode | - |
228 | */ | - |
229 | void QListView::setMovement(Movement movement) | - |
230 | { | - |
231 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
232 | d->modeProperties |= uint(QListViewPrivate::Movement); executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::Movement); | - |
233 | d->movement = movement; executed (the execution status of this line is deduced): d->movement = movement; | - |
234 | | - |
235 | #ifndef QT_NO_DRAGANDDROP | - |
236 | bool movable = (movement != Static); executed (the execution status of this line is deduced): bool movable = (movement != Static); | - |
237 | setDragEnabled(movable); executed (the execution status of this line is deduced): setDragEnabled(movable); | - |
238 | d->viewport->setAcceptDrops(movable); executed (the execution status of this line is deduced): d->viewport->setAcceptDrops(movable); | - |
239 | #endif | - |
240 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
241 | } executed: } Execution Count:5 | 5 |
242 | | - |
243 | QListView::Movement QListView::movement() const | - |
244 | { | - |
245 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
246 | return d->movement; executed: return d->movement; Execution Count:3 | 3 |
247 | } | - |
248 | | - |
249 | /*! | - |
250 | \property QListView::flow | - |
251 | \brief which direction the items layout should flow. | - |
252 | | - |
253 | If this property is \l LeftToRight, the items will be laid out left | - |
254 | to right. If the \l isWrapping property is true, the layout will wrap | - |
255 | when it reaches the right side of the visible area. If this | - |
256 | property is \l TopToBottom, the items will be laid out from the top | - |
257 | of the visible area, wrapping when it reaches the bottom. | - |
258 | | - |
259 | Setting this property when the view is visible will cause the | - |
260 | items to be laid out again. | - |
261 | | - |
262 | By default, this property is set to \l TopToBottom. | - |
263 | | - |
264 | \sa viewMode | - |
265 | */ | - |
266 | void QListView::setFlow(Flow flow) | - |
267 | { | - |
268 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
269 | d->modeProperties |= uint(QListViewPrivate::Flow); executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::Flow); | - |
270 | d->flow = flow; executed (the execution status of this line is deduced): d->flow = flow; | - |
271 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
272 | } executed: } Execution Count:44 | 44 |
273 | | - |
274 | QListView::Flow QListView::flow() const | - |
275 | { | - |
276 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
277 | return d->flow; executed: return d->flow; Execution Count:9114 | 9114 |
278 | } | - |
279 | | - |
280 | /*! | - |
281 | \property QListView::isWrapping | - |
282 | \brief whether the items layout should wrap. | - |
283 | | - |
284 | This property holds whether the layout should wrap when there is | - |
285 | no more space in the visible area. The point at which the layout wraps | - |
286 | depends on the \l flow property. | - |
287 | | - |
288 | Setting this property when the view is visible will cause the | - |
289 | items to be laid out again. | - |
290 | | - |
291 | By default, this property is false. | - |
292 | | - |
293 | \sa viewMode | - |
294 | */ | - |
295 | void QListView::setWrapping(bool enable) | - |
296 | { | - |
297 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
298 | d->modeProperties |= uint(QListViewPrivate::Wrap); executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::Wrap); | - |
299 | d->setWrapping(enable); executed (the execution status of this line is deduced): d->setWrapping(enable); | - |
300 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
301 | } executed: } Execution Count:206 | 206 |
302 | | - |
303 | bool QListView::isWrapping() const | - |
304 | { | - |
305 | Q_D(const QListView); never executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
306 | return d->isWrapping(); never executed: return d->isWrapping(); | 0 |
307 | } | - |
308 | | - |
309 | /*! | - |
310 | \property QListView::resizeMode | - |
311 | \brief whether the items are laid out again when the view is resized. | - |
312 | | - |
313 | If this property is \l Adjust, the items will be laid out again | - |
314 | when the view is resized. If the value is \l Fixed, the items will | - |
315 | not be laid out when the view is resized. | - |
316 | | - |
317 | By default, this property is set to \l Fixed. | - |
318 | | - |
319 | \sa movement, gridSize, viewMode | - |
320 | */ | - |
321 | void QListView::setResizeMode(ResizeMode mode) | - |
322 | { | - |
323 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
324 | d->modeProperties |= uint(QListViewPrivate::ResizeMode); executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::ResizeMode); | - |
325 | d->resizeMode = mode; executed (the execution status of this line is deduced): d->resizeMode = mode; | - |
326 | } executed: } Execution Count:207 | 207 |
327 | | - |
328 | QListView::ResizeMode QListView::resizeMode() const | - |
329 | { | - |
330 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
331 | return d->resizeMode; executed: return d->resizeMode; Execution Count:3 | 3 |
332 | } | - |
333 | | - |
334 | /*! | - |
335 | \property QListView::layoutMode | - |
336 | \brief determines whether the layout of items should happen immediately or be delayed. | - |
337 | | - |
338 | This property holds the layout mode for the items. When the mode | - |
339 | is \l SinglePass (the default), the items are laid out all in one go. | - |
340 | When the mode is \l Batched, the items are laid out in batches of \l batchSize | - |
341 | items, while processing events. This makes it possible to | - |
342 | instantly view and interact with the visible items while the rest | - |
343 | are being laid out. | - |
344 | | - |
345 | \sa viewMode | - |
346 | */ | - |
347 | void QListView::setLayoutMode(LayoutMode mode) | - |
348 | { | - |
349 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
350 | d->layoutMode = mode; executed (the execution status of this line is deduced): d->layoutMode = mode; | - |
351 | } executed: } Execution Count:7 | 7 |
352 | | - |
353 | QListView::LayoutMode QListView::layoutMode() const | - |
354 | { | - |
355 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
356 | return d->layoutMode; executed: return d->layoutMode; Execution Count:1128 | 1128 |
357 | } | - |
358 | | - |
359 | /*! | - |
360 | \property QListView::spacing | - |
361 | \brief the space around the items in the layout | - |
362 | | - |
363 | This property is the size of the empty space that is padded around | - |
364 | an item in the layout. | - |
365 | | - |
366 | Setting this property when the view is visible will cause the | - |
367 | items to be laid out again. | - |
368 | | - |
369 | By default, this property contains a value of 0. | - |
370 | | - |
371 | \sa viewMode | - |
372 | */ | - |
373 | void QListView::setSpacing(int space) | - |
374 | { | - |
375 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
376 | d->modeProperties |= uint(QListViewPrivate::Spacing); executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::Spacing); | - |
377 | d->setSpacing(space); executed (the execution status of this line is deduced): d->setSpacing(space); | - |
378 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
379 | } executed: } Execution Count:26 | 26 |
380 | | - |
381 | int QListView::spacing() const | - |
382 | { | - |
383 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
384 | return d->spacing(); executed: return d->spacing(); Execution Count:7 | 7 |
385 | } | - |
386 | | - |
387 | /*! | - |
388 | \property QListView::batchSize | - |
389 | \brief the number of items laid out in each batch if \l layoutMode is | - |
390 | set to \l Batched | - |
391 | | - |
392 | The default value is 100. | - |
393 | | - |
394 | \since 4.2 | - |
395 | */ | - |
396 | | - |
397 | void QListView::setBatchSize(int batchSize) | - |
398 | { | - |
399 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
400 | if (batchSize <= 0) { partially evaluated: batchSize <= 0 no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
401 | qWarning("Invalid batchSize (%d)", batchSize); never executed (the execution status of this line is deduced): QMessageLogger("itemviews/qlistview.cpp", 401, __PRETTY_FUNCTION__).warning("Invalid batchSize (%d)", batchSize); | - |
402 | return; | 0 |
403 | } | - |
404 | d->batchSize = batchSize; executed (the execution status of this line is deduced): d->batchSize = batchSize; | - |
405 | } executed: } Execution Count:2 | 2 |
406 | | - |
407 | int QListView::batchSize() const | - |
408 | { | - |
409 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
410 | return d->batchSize; executed: return d->batchSize; Execution Count:204 | 204 |
411 | } | - |
412 | | - |
413 | /*! | - |
414 | \property QListView::gridSize | - |
415 | \brief the size of the layout grid | - |
416 | | - |
417 | This property is the size of the grid in which the items are laid | - |
418 | out. The default is an empty size which means that there is no | - |
419 | grid and the layout is not done in a grid. Setting this property | - |
420 | to a non-empty size switches on the grid layout. (When a grid | - |
421 | layout is in force the \l spacing property is ignored.) | - |
422 | | - |
423 | Setting this property when the view is visible will cause the | - |
424 | items to be laid out again. | - |
425 | | - |
426 | \sa viewMode | - |
427 | */ | - |
428 | void QListView::setGridSize(const QSize &size) | - |
429 | { | - |
430 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
431 | d->modeProperties |= uint(QListViewPrivate::GridSize); executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::GridSize); | - |
432 | d->setGridSize(size); executed (the execution status of this line is deduced): d->setGridSize(size); | - |
433 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
434 | } executed: } Execution Count:10 | 10 |
435 | | - |
436 | QSize QListView::gridSize() const | - |
437 | { | - |
438 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
439 | return d->gridSize(); executed: return d->gridSize(); Execution Count:17 | 17 |
440 | } | - |
441 | | - |
442 | /*! | - |
443 | \property QListView::viewMode | - |
444 | \brief the view mode of the QListView. | - |
445 | | - |
446 | This property will change the other unset properties to conform | - |
447 | with the set view mode. QListView-specific properties that have already been set | - |
448 | will not be changed, unless clearPropertyFlags() has been called. | - |
449 | | - |
450 | Setting the view mode will enable or disable drag and drop based on the | - |
451 | selected movement. For ListMode, the default movement is \l Static | - |
452 | (drag and drop disabled); for IconMode, the default movement is | - |
453 | \l Free (drag and drop enabled). | - |
454 | | - |
455 | \sa isWrapping, spacing, gridSize, flow, movement, resizeMode | - |
456 | */ | - |
457 | void QListView::setViewMode(ViewMode mode) | - |
458 | { | - |
459 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
460 | if (d->commonListView && d->viewMode == mode) evaluated: d->commonListView yes Evaluation Count:36 | yes Evaluation Count:1008 |
evaluated: d->viewMode == mode yes Evaluation Count:20 | yes Evaluation Count:16 |
| 16-1008 |
461 | return; executed: return; Execution Count:20 | 20 |
462 | d->viewMode = mode; executed (the execution status of this line is deduced): d->viewMode = mode; | - |
463 | | - |
464 | delete d->commonListView; executed (the execution status of this line is deduced): delete d->commonListView; | - |
465 | if (mode == ListMode) { evaluated: mode == ListMode yes Evaluation Count:1008 | yes Evaluation Count:16 |
| 16-1008 |
466 | d->commonListView = new QListModeViewBase(this, d); executed (the execution status of this line is deduced): d->commonListView = new QListModeViewBase(this, d); | - |
467 | if (!(d->modeProperties & QListViewPrivate::Wrap)) partially evaluated: !(d->modeProperties & QListViewPrivate::Wrap) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
468 | d->setWrapping(false); executed: d->setWrapping(false); Execution Count:1008 | 1008 |
469 | if (!(d->modeProperties & QListViewPrivate::Spacing)) partially evaluated: !(d->modeProperties & QListViewPrivate::Spacing) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
470 | d->setSpacing(0); executed: d->setSpacing(0); Execution Count:1008 | 1008 |
471 | if (!(d->modeProperties & QListViewPrivate::GridSize)) partially evaluated: !(d->modeProperties & QListViewPrivate::GridSize) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
472 | d->setGridSize(QSize()); executed: d->setGridSize(QSize()); Execution Count:1008 | 1008 |
473 | if (!(d->modeProperties & QListViewPrivate::Flow)) partially evaluated: !(d->modeProperties & QListViewPrivate::Flow) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
474 | d->flow = TopToBottom; executed: d->flow = TopToBottom; Execution Count:1008 | 1008 |
475 | if (!(d->modeProperties & QListViewPrivate::Movement)) partially evaluated: !(d->modeProperties & QListViewPrivate::Movement) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
476 | d->movement = Static; executed: d->movement = Static; Execution Count:1008 | 1008 |
477 | if (!(d->modeProperties & QListViewPrivate::ResizeMode)) partially evaluated: !(d->modeProperties & QListViewPrivate::ResizeMode) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
478 | d->resizeMode = Fixed; executed: d->resizeMode = Fixed; Execution Count:1008 | 1008 |
479 | if (!(d->modeProperties & QListViewPrivate::SelectionRectVisible)) partially evaluated: !(d->modeProperties & QListViewPrivate::SelectionRectVisible) yes Evaluation Count:1008 | no Evaluation Count:0 |
| 0-1008 |
480 | d->showElasticBand = false; executed: d->showElasticBand = false; Execution Count:1008 | 1008 |
481 | } else { executed: } Execution Count:1008 | 1008 |
482 | d->commonListView = new QIconModeViewBase(this, d); executed (the execution status of this line is deduced): d->commonListView = new QIconModeViewBase(this, d); | - |
483 | if (!(d->modeProperties & QListViewPrivate::Wrap)) evaluated: !(d->modeProperties & QListViewPrivate::Wrap) yes Evaluation Count:15 | yes Evaluation Count:1 |
| 1-15 |
484 | d->setWrapping(true); executed: d->setWrapping(true); Execution Count:15 | 15 |
485 | if (!(d->modeProperties & QListViewPrivate::Spacing)) evaluated: !(d->modeProperties & QListViewPrivate::Spacing) yes Evaluation Count:15 | yes Evaluation Count:1 |
| 1-15 |
486 | d->setSpacing(0); executed: d->setSpacing(0); Execution Count:15 | 15 |
487 | if (!(d->modeProperties & QListViewPrivate::GridSize)) evaluated: !(d->modeProperties & QListViewPrivate::GridSize) yes Evaluation Count:9 | yes Evaluation Count:7 |
| 7-9 |
488 | d->setGridSize(QSize()); executed: d->setGridSize(QSize()); Execution Count:9 | 9 |
489 | if (!(d->modeProperties & QListViewPrivate::Flow)) evaluated: !(d->modeProperties & QListViewPrivate::Flow) yes Evaluation Count:9 | yes Evaluation Count:7 |
| 7-9 |
490 | d->flow = LeftToRight; executed: d->flow = LeftToRight; Execution Count:9 | 9 |
491 | if (!(d->modeProperties & QListViewPrivate::Movement)) evaluated: !(d->modeProperties & QListViewPrivate::Movement) yes Evaluation Count:14 | yes Evaluation Count:2 |
| 2-14 |
492 | d->movement = Free; executed: d->movement = Free; Execution Count:14 | 14 |
493 | if (!(d->modeProperties & QListViewPrivate::ResizeMode)) evaluated: !(d->modeProperties & QListViewPrivate::ResizeMode) yes Evaluation Count:14 | yes Evaluation Count:2 |
| 2-14 |
494 | d->resizeMode = Fixed; executed: d->resizeMode = Fixed; Execution Count:14 | 14 |
495 | if (!(d->modeProperties & QListViewPrivate::SelectionRectVisible)) partially evaluated: !(d->modeProperties & QListViewPrivate::SelectionRectVisible) yes Evaluation Count:16 | no Evaluation Count:0 |
| 0-16 |
496 | d->showElasticBand = true; executed: d->showElasticBand = true; Execution Count:16 | 16 |
497 | } executed: } Execution Count:16 | 16 |
498 | | - |
499 | #ifndef QT_NO_DRAGANDDROP | - |
500 | bool movable = (d->movement != Static); executed (the execution status of this line is deduced): bool movable = (d->movement != Static); | - |
501 | setDragEnabled(movable); executed (the execution status of this line is deduced): setDragEnabled(movable); | - |
502 | setAcceptDrops(movable); executed (the execution status of this line is deduced): setAcceptDrops(movable); | - |
503 | #endif | - |
504 | d->clear(); executed (the execution status of this line is deduced): d->clear(); | - |
505 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
506 | } executed: } Execution Count:1024 | 1024 |
507 | | - |
508 | QListView::ViewMode QListView::viewMode() const | - |
509 | { | - |
510 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
511 | return d->viewMode; executed: return d->viewMode; Execution Count:2 | 2 |
512 | } | - |
513 | | - |
514 | /*! | - |
515 | Clears the QListView-specific property flags. See \l{viewMode}. | - |
516 | | - |
517 | Properties inherited from QAbstractItemView are not covered by the | - |
518 | property flags. Specifically, \l{QAbstractItemView::dragEnabled} | - |
519 | {dragEnabled} and \l{QAbstractItemView::acceptDrops} | - |
520 | {acceptsDrops} are computed by QListView when calling | - |
521 | setMovement() or setViewMode(). | - |
522 | */ | - |
523 | void QListView::clearPropertyFlags() | - |
524 | { | - |
525 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
526 | d->modeProperties = 0; executed (the execution status of this line is deduced): d->modeProperties = 0; | - |
527 | } executed: } Execution Count:1 | 1 |
528 | | - |
529 | /*! | - |
530 | Returns true if the \a row is hidden; otherwise returns false. | - |
531 | */ | - |
532 | bool QListView::isRowHidden(int row) const | - |
533 | { | - |
534 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
535 | return d->isHidden(row); executed: return d->isHidden(row); Execution Count:15 | 15 |
536 | } | - |
537 | | - |
538 | /*! | - |
539 | If \a hide is true, the given \a row will be hidden; otherwise | - |
540 | the \a row will be shown. | - |
541 | */ | - |
542 | void QListView::setRowHidden(int row, bool hide) | - |
543 | { | - |
544 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
545 | const bool hidden = d->isHidden(row); executed (the execution status of this line is deduced): const bool hidden = d->isHidden(row); | - |
546 | if (hide && !hidden) evaluated: hide yes Evaluation Count:736 | yes Evaluation Count:6 |
evaluated: !hidden yes Evaluation Count:637 | yes Evaluation Count:99 |
| 6-736 |
547 | d->commonListView->appendHiddenRow(row); executed: d->commonListView->appendHiddenRow(row); Execution Count:637 | 637 |
548 | else if (!hide && hidden) evaluated: !hide yes Evaluation Count:6 | yes Evaluation Count:99 |
evaluated: hidden yes Evaluation Count:5 | yes Evaluation Count:1 |
| 1-99 |
549 | d->commonListView->removeHiddenRow(row); executed: d->commonListView->removeHiddenRow(row); Execution Count:5 | 5 |
550 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
551 | d->viewport->update(); executed (the execution status of this line is deduced): d->viewport->update(); | - |
552 | } executed: } Execution Count:742 | 742 |
553 | | - |
554 | /*! | - |
555 | \reimp | - |
556 | */ | - |
557 | QRect QListView::visualRect(const QModelIndex &index) const | - |
558 | { | - |
559 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
560 | return d->mapToViewport(rectForIndex(index)); executed: return d->mapToViewport(rectForIndex(index)); Execution Count:24131 | 24131 |
561 | } | - |
562 | | - |
563 | /*! | - |
564 | \reimp | - |
565 | */ | - |
566 | void QListView::scrollTo(const QModelIndex &index, ScrollHint hint) | - |
567 | { | - |
568 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
569 | | - |
570 | if (index.parent() != d->root || index.column() != d->column) partially evaluated: index.parent() != d->root no Evaluation Count:0 | yes Evaluation Count:6072 |
evaluated: index.column() != d->column yes Evaluation Count:5230 | yes Evaluation Count:842 |
| 0-6072 |
571 | return; executed: return; Execution Count:5230 | 5230 |
572 | | - |
573 | const QRect rect = visualRect(index); executed (the execution status of this line is deduced): const QRect rect = visualRect(index); | - |
574 | if (hint == EnsureVisible && d->viewport->rect().contains(rect)) { evaluated: hint == EnsureVisible yes Evaluation Count:829 | yes Evaluation Count:13 |
evaluated: d->viewport->rect().contains(rect) yes Evaluation Count:418 | yes Evaluation Count:411 |
| 13-829 |
575 | d->viewport->update(rect); executed (the execution status of this line is deduced): d->viewport->update(rect); | - |
576 | return; executed: return; Execution Count:418 | 418 |
577 | } | - |
578 | | - |
579 | if (d->flow == QListView::TopToBottom || d->isWrapping()) // vertical evaluated: d->flow == QListView::TopToBottom yes Evaluation Count:285 | yes Evaluation Count:139 |
evaluated: d->isWrapping() yes Evaluation Count:2 | yes Evaluation Count:137 |
| 2-285 |
580 | verticalScrollBar()->setValue(d->verticalScrollToValue(index, rect, hint)); executed: verticalScrollBar()->setValue(d->verticalScrollToValue(index, rect, hint)); Execution Count:287 | 287 |
581 | | - |
582 | if (d->flow == QListView::LeftToRight || d->isWrapping()) // horizontal evaluated: d->flow == QListView::LeftToRight yes Evaluation Count:139 | yes Evaluation Count:285 |
evaluated: d->isWrapping() yes Evaluation Count:3 | yes Evaluation Count:282 |
| 3-285 |
583 | horizontalScrollBar()->setValue(d->horizontalScrollToValue(index, rect, hint)); executed: horizontalScrollBar()->setValue(d->horizontalScrollToValue(index, rect, hint)); Execution Count:142 | 142 |
584 | } executed: } Execution Count:424 | 424 |
585 | | - |
586 | int QListViewPrivate::horizontalScrollToValue(const QModelIndex &index, const QRect &rect, | - |
587 | QListView::ScrollHint hint) const | - |
588 | { | - |
589 | Q_Q(const QListView); executed (the execution status of this line is deduced): const QListView * const q = q_func(); | - |
590 | const QRect area = viewport->rect(); executed (the execution status of this line is deduced): const QRect area = viewport->rect(); | - |
591 | const bool leftOf = q->isRightToLeft() partially evaluated: q->isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:142 |
| 0-142 |
592 | ? (rect.left() < area.left()) && (rect.right() < area.right()) executed (the execution status of this line is deduced): ? (rect.left() < area.left()) && (rect.right() < area.right()) | - |
593 | : rect.left() < area.left(); executed (the execution status of this line is deduced): : rect.left() < area.left(); | - |
594 | const bool rightOf = q->isRightToLeft() partially evaluated: q->isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:142 |
| 0-142 |
595 | ? rect.right() > area.right() executed (the execution status of this line is deduced): ? rect.right() > area.right() | - |
596 | : (rect.right() > area.right()) && (rect.left() > area.left()); executed (the execution status of this line is deduced): : (rect.right() > area.right()) && (rect.left() > area.left()); | - |
597 | return commonListView->horizontalScrollToValue(q->visualIndex(index), hint, leftOf, rightOf, area, rect); executed: return commonListView->horizontalScrollToValue(q->visualIndex(index), hint, leftOf, rightOf, area, rect); Execution Count:142 | 142 |
598 | } | - |
599 | | - |
600 | int QListViewPrivate::verticalScrollToValue(const QModelIndex &index, const QRect &rect, | - |
601 | QListView::ScrollHint hint) const | - |
602 | { | - |
603 | Q_Q(const QListView); executed (the execution status of this line is deduced): const QListView * const q = q_func(); | - |
604 | const QRect area = viewport->rect(); executed (the execution status of this line is deduced): const QRect area = viewport->rect(); | - |
605 | const bool above = (hint == QListView::EnsureVisible && rect.top() < area.top()); evaluated: hint == QListView::EnsureVisible yes Evaluation Count:276 | yes Evaluation Count:11 |
evaluated: rect.top() < area.top() yes Evaluation Count:92 | yes Evaluation Count:184 |
| 11-276 |
606 | const bool below = (hint == QListView::EnsureVisible && rect.bottom() > area.bottom()); evaluated: hint == QListView::EnsureVisible yes Evaluation Count:276 | yes Evaluation Count:11 |
evaluated: rect.bottom() > area.bottom() yes Evaluation Count:182 | yes Evaluation Count:94 |
| 11-276 |
607 | return commonListView->verticalScrollToValue(q->visualIndex(index), hint, above, below, area, rect); executed: return commonListView->verticalScrollToValue(q->visualIndex(index), hint, above, below, area, rect); Execution Count:287 | 287 |
608 | } | - |
609 | | - |
610 | void QListViewPrivate::selectAll(QItemSelectionModel::SelectionFlags command) | - |
611 | { | - |
612 | if (!selectionModel) evaluated: !selectionModel yes Evaluation Count:5 | yes Evaluation Count:6 |
| 5-6 |
613 | return; executed: return; Execution Count:5 | 5 |
614 | | - |
615 | QItemSelection selection; executed (the execution status of this line is deduced): QItemSelection selection; | - |
616 | QModelIndex topLeft; executed (the execution status of this line is deduced): QModelIndex topLeft; | - |
617 | int row = 0; executed (the execution status of this line is deduced): int row = 0; | - |
618 | const int colCount = model->columnCount(root); executed (the execution status of this line is deduced): const int colCount = model->columnCount(root); | - |
619 | for(; row < model->rowCount(root); ++row) { evaluated: row < model->rowCount(root) yes Evaluation Count:31 | yes Evaluation Count:6 |
| 6-31 |
620 | if (isHidden(row)) { evaluated: isHidden(row) yes Evaluation Count:1 | yes Evaluation Count:30 |
| 1-30 |
621 | //it might be the end of a selection range | - |
622 | if (topLeft.isValid()) { partially evaluated: topLeft.isValid() no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
623 | QModelIndex bottomRight = model->index(row - 1, colCount - 1, root); never executed (the execution status of this line is deduced): QModelIndex bottomRight = model->index(row - 1, colCount - 1, root); | - |
624 | selection.append(QItemSelectionRange(topLeft, bottomRight)); never executed (the execution status of this line is deduced): selection.append(QItemSelectionRange(topLeft, bottomRight)); | - |
625 | topLeft = QModelIndex(); never executed (the execution status of this line is deduced): topLeft = QModelIndex(); | - |
626 | } | 0 |
627 | continue; executed: continue; Execution Count:1 | 1 |
628 | } | - |
629 | | - |
630 | if (!topLeft.isValid()) //start of a new selection range evaluated: !topLeft.isValid() yes Evaluation Count:5 | yes Evaluation Count:25 |
| 5-25 |
631 | topLeft = model->index(row, 0, root); executed: topLeft = model->index(row, 0, root); Execution Count:5 | 5 |
632 | } executed: } Execution Count:30 | 30 |
633 | | - |
634 | if (topLeft.isValid()) { evaluated: topLeft.isValid() yes Evaluation Count:5 | yes Evaluation Count:1 |
| 1-5 |
635 | //last selected range | - |
636 | QModelIndex bottomRight = model->index(row - 1, colCount - 1, root); executed (the execution status of this line is deduced): QModelIndex bottomRight = model->index(row - 1, colCount - 1, root); | - |
637 | selection.append(QItemSelectionRange(topLeft, bottomRight)); executed (the execution status of this line is deduced): selection.append(QItemSelectionRange(topLeft, bottomRight)); | - |
638 | } executed: } Execution Count:5 | 5 |
639 | | - |
640 | if (!selection.isEmpty()) evaluated: !selection.isEmpty() yes Evaluation Count:5 | yes Evaluation Count:1 |
| 1-5 |
641 | selectionModel->select(selection, command); executed: selectionModel->select(selection, command); Execution Count:5 | 5 |
642 | } executed: } Execution Count:6 | 6 |
643 | | - |
644 | /*! | - |
645 | \reimp | - |
646 | | - |
647 | We have a QListView way of knowing what elements are on the viewport | - |
648 | through the intersectingSet function | - |
649 | */ | - |
650 | QItemViewPaintPairs QListViewPrivate::draggablePaintPairs(const QModelIndexList &indexes, QRect *r) const | - |
651 | { | - |
652 | Q_ASSERT(r); executed (the execution status of this line is deduced): qt_noop(); | - |
653 | Q_Q(const QListView); executed (the execution status of this line is deduced): const QListView * const q = q_func(); | - |
654 | QRect &rect = *r; executed (the execution status of this line is deduced): QRect &rect = *r; | - |
655 | const QRect viewportRect = viewport->rect(); executed (the execution status of this line is deduced): const QRect viewportRect = viewport->rect(); | - |
656 | QItemViewPaintPairs ret; executed (the execution status of this line is deduced): QItemViewPaintPairs ret; | - |
657 | const QSet<QModelIndex> visibleIndexes = intersectingSet(viewportRect.translated(q->horizontalOffset(), q->verticalOffset())).toList().toSet(); executed (the execution status of this line is deduced): const QSet<QModelIndex> visibleIndexes = intersectingSet(viewportRect.translated(q->horizontalOffset(), q->verticalOffset())).toList().toSet(); | - |
658 | for (int i = 0; i < indexes.count(); ++i) { evaluated: i < indexes.count() yes Evaluation Count:30 | yes Evaluation Count:30 |
| 30 |
659 | const QModelIndex &index = indexes.at(i); executed (the execution status of this line is deduced): const QModelIndex &index = indexes.at(i); | - |
660 | if (visibleIndexes.contains(index)) { partially evaluated: visibleIndexes.contains(index) yes Evaluation Count:30 | no Evaluation Count:0 |
| 0-30 |
661 | const QRect current = q->visualRect(index); executed (the execution status of this line is deduced): const QRect current = q->visualRect(index); | - |
662 | ret += qMakePair(current, index); executed (the execution status of this line is deduced): ret += qMakePair(current, index); | - |
663 | rect |= current; executed (the execution status of this line is deduced): rect |= current; | - |
664 | } executed: } Execution Count:30 | 30 |
665 | } executed: } Execution Count:30 | 30 |
666 | rect &= viewportRect; executed (the execution status of this line is deduced): rect &= viewportRect; | - |
667 | return ret; executed: return ret; Execution Count:30 | 30 |
668 | } | - |
669 | | - |
670 | /*! | - |
671 | \internal | - |
672 | */ | - |
673 | void QListView::reset() | - |
674 | { | - |
675 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
676 | d->clear(); executed (the execution status of this line is deduced): d->clear(); | - |
677 | d->hiddenRows.clear(); executed (the execution status of this line is deduced): d->hiddenRows.clear(); | - |
678 | QAbstractItemView::reset(); executed (the execution status of this line is deduced): QAbstractItemView::reset(); | - |
679 | } executed: } Execution Count:1749 | 1749 |
680 | | - |
681 | /*! | - |
682 | \internal | - |
683 | */ | - |
684 | void QListView::setRootIndex(const QModelIndex &index) | - |
685 | { | - |
686 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
687 | d->column = qBound(0, d->column, d->model->columnCount(index) - 1); executed (the execution status of this line is deduced): d->column = qBound(0, d->column, d->model->columnCount(index) - 1); | - |
688 | QAbstractItemView::setRootIndex(index); executed (the execution status of this line is deduced): QAbstractItemView::setRootIndex(index); | - |
689 | // sometimes we get an update before reset() is called | - |
690 | d->clear(); executed (the execution status of this line is deduced): d->clear(); | - |
691 | d->hiddenRows.clear(); executed (the execution status of this line is deduced): d->hiddenRows.clear(); | - |
692 | } executed: } Execution Count:1995 | 1995 |
693 | | - |
694 | /*! | - |
695 | \internal | - |
696 | | - |
697 | Scroll the view contents by \a dx and \a dy. | - |
698 | */ | - |
699 | | - |
700 | void QListView::scrollContentsBy(int dx, int dy) | - |
701 | { | - |
702 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
703 | d->delayedAutoScroll.stop(); // auto scroll was canceled by the user scrolling executed (the execution status of this line is deduced): d->delayedAutoScroll.stop(); | - |
704 | d->commonListView->scrollContentsBy(dx, dy, d->state == QListView::DragSelectingState); executed (the execution status of this line is deduced): d->commonListView->scrollContentsBy(dx, dy, d->state == QListView::DragSelectingState); | - |
705 | } executed: } Execution Count:445 | 445 |
706 | | - |
707 | /*! | - |
708 | \internal | - |
709 | | - |
710 | Resize the internal contents to \a width and \a height and set the | - |
711 | scroll bar ranges accordingly. | - |
712 | */ | - |
713 | void QListView::resizeContents(int width, int height) | - |
714 | { | - |
715 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
716 | d->setContentsSize(width, height); executed (the execution status of this line is deduced): d->setContentsSize(width, height); | - |
717 | } executed: } Execution Count:1 | 1 |
718 | | - |
719 | /*! | - |
720 | \internal | - |
721 | */ | - |
722 | QSize QListView::contentsSize() const | - |
723 | { | - |
724 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
725 | return d->contentsSize(); executed: return d->contentsSize(); Execution Count:67 | 67 |
726 | } | - |
727 | | - |
728 | /*! | - |
729 | \reimp | - |
730 | */ | - |
731 | void QListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) | - |
732 | { | - |
733 | d_func()->commonListView->dataChanged(topLeft, bottomRight); executed (the execution status of this line is deduced): d_func()->commonListView->dataChanged(topLeft, bottomRight); | - |
734 | QAbstractItemView::dataChanged(topLeft, bottomRight, roles); executed (the execution status of this line is deduced): QAbstractItemView::dataChanged(topLeft, bottomRight, roles); | - |
735 | } executed: } Execution Count:3979 | 3979 |
736 | | - |
737 | /*! | - |
738 | \reimp | - |
739 | */ | - |
740 | void QListView::rowsInserted(const QModelIndex &parent, int start, int end) | - |
741 | { | - |
742 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
743 | // ### be smarter about inserted items | - |
744 | d->clear(); executed (the execution status of this line is deduced): d->clear(); | - |
745 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
746 | QAbstractItemView::rowsInserted(parent, start, end); executed (the execution status of this line is deduced): QAbstractItemView::rowsInserted(parent, start, end); | - |
747 | } executed: } Execution Count:16401 | 16401 |
748 | | - |
749 | /*! | - |
750 | \reimp | - |
751 | */ | - |
752 | void QListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) | - |
753 | { | - |
754 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
755 | // if the parent is above d->root in the tree, nothing will happen | - |
756 | QAbstractItemView::rowsAboutToBeRemoved(parent, start, end); executed (the execution status of this line is deduced): QAbstractItemView::rowsAboutToBeRemoved(parent, start, end); | - |
757 | if (parent == d->root) { partially evaluated: parent == d->root yes Evaluation Count:176 | no Evaluation Count:0 |
| 0-176 |
758 | QSet<QPersistentModelIndex>::iterator it = d->hiddenRows.begin(); executed (the execution status of this line is deduced): QSet<QPersistentModelIndex>::iterator it = d->hiddenRows.begin(); | - |
759 | while (it != d->hiddenRows.end()) { partially evaluated: it != d->hiddenRows.end() no Evaluation Count:0 | yes Evaluation Count:176 |
| 0-176 |
760 | int hiddenRow = it->row(); never executed (the execution status of this line is deduced): int hiddenRow = it->row(); | - |
761 | if (hiddenRow >= start && hiddenRow <= end) { never evaluated: hiddenRow >= start never evaluated: hiddenRow <= end | 0 |
762 | it = d->hiddenRows.erase(it); never executed (the execution status of this line is deduced): it = d->hiddenRows.erase(it); | - |
763 | } else { | 0 |
764 | ++it; never executed (the execution status of this line is deduced): ++it; | - |
765 | } | 0 |
766 | } | - |
767 | } executed: } Execution Count:176 | 176 |
768 | d->clear(); executed (the execution status of this line is deduced): d->clear(); | - |
769 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
770 | } executed: } Execution Count:176 | 176 |
771 | | - |
772 | /*! | - |
773 | \reimp | - |
774 | */ | - |
775 | void QListView::mouseMoveEvent(QMouseEvent *e) | - |
776 | { | - |
777 | if (!isVisible()) partially evaluated: !isVisible() no Evaluation Count:0 | yes Evaluation Count:3 |
| 0-3 |
778 | return; | 0 |
779 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
780 | QAbstractItemView::mouseMoveEvent(e); executed (the execution status of this line is deduced): QAbstractItemView::mouseMoveEvent(e); | - |
781 | if (state() == DragSelectingState partially evaluated: state() == DragSelectingState yes Evaluation Count:3 | no Evaluation Count:0 |
| 0-3 |
782 | && d->showElasticBand partially evaluated: d->showElasticBand yes Evaluation Count:3 | no Evaluation Count:0 |
| 0-3 |
783 | && d->selectionMode != SingleSelection partially evaluated: d->selectionMode != SingleSelection yes Evaluation Count:3 | no Evaluation Count:0 |
| 0-3 |
784 | && d->selectionMode != NoSelection) { partially evaluated: d->selectionMode != NoSelection yes Evaluation Count:3 | no Evaluation Count:0 |
| 0-3 |
785 | QRect rect(d->pressedPosition, e->pos() + QPoint(horizontalOffset(), verticalOffset())); executed (the execution status of this line is deduced): QRect rect(d->pressedPosition, e->pos() + QPoint(horizontalOffset(), verticalOffset())); | - |
786 | rect = rect.normalized(); executed (the execution status of this line is deduced): rect = rect.normalized(); | - |
787 | d->viewport->update(d->mapToViewport(rect.united(d->elasticBand))); executed (the execution status of this line is deduced): d->viewport->update(d->mapToViewport(rect.united(d->elasticBand))); | - |
788 | d->elasticBand = rect; executed (the execution status of this line is deduced): d->elasticBand = rect; | - |
789 | } executed: } Execution Count:3 | 3 |
790 | } executed: } Execution Count:3 | 3 |
791 | | - |
792 | /*! | - |
793 | \reimp | - |
794 | */ | - |
795 | void QListView::mouseReleaseEvent(QMouseEvent *e) | - |
796 | { | - |
797 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
798 | QAbstractItemView::mouseReleaseEvent(e); executed (the execution status of this line is deduced): QAbstractItemView::mouseReleaseEvent(e); | - |
799 | // #### move this implementation into a dynamic class | - |
800 | if (d->showElasticBand && d->elasticBand.isValid()) { evaluated: d->showElasticBand yes Evaluation Count:4 | yes Evaluation Count:184 |
evaluated: d->elasticBand.isValid() yes Evaluation Count:3 | yes Evaluation Count:1 |
| 1-184 |
801 | d->viewport->update(d->mapToViewport(d->elasticBand)); executed (the execution status of this line is deduced): d->viewport->update(d->mapToViewport(d->elasticBand)); | - |
802 | d->elasticBand = QRect(); executed (the execution status of this line is deduced): d->elasticBand = QRect(); | - |
803 | } executed: } Execution Count:3 | 3 |
804 | } executed: } Execution Count:188 | 188 |
805 | | - |
806 | /*! | - |
807 | \reimp | - |
808 | */ | - |
809 | void QListView::timerEvent(QTimerEvent *e) | - |
810 | { | - |
811 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
812 | if (e->timerId() == d->batchLayoutTimer.timerId()) { evaluated: e->timerId() == d->batchLayoutTimer.timerId() yes Evaluation Count:4 | yes Evaluation Count:993 |
| 4-993 |
813 | if (d->doItemsLayout(d->batchSize)) { // layout is done partially evaluated: d->doItemsLayout(d->batchSize) yes Evaluation Count:4 | no Evaluation Count:0 |
| 0-4 |
814 | d->batchLayoutTimer.stop(); executed (the execution status of this line is deduced): d->batchLayoutTimer.stop(); | - |
815 | updateGeometries(); executed (the execution status of this line is deduced): updateGeometries(); | - |
816 | d->viewport->update(); executed (the execution status of this line is deduced): d->viewport->update(); | - |
817 | } executed: } Execution Count:4 | 4 |
818 | } executed: } Execution Count:4 | 4 |
819 | QAbstractItemView::timerEvent(e); executed (the execution status of this line is deduced): QAbstractItemView::timerEvent(e); | - |
820 | } executed: } Execution Count:997 | 997 |
821 | | - |
822 | /*! | - |
823 | \reimp | - |
824 | */ | - |
825 | void QListView::resizeEvent(QResizeEvent *e) | - |
826 | { | - |
827 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
828 | if (d->delayedPendingLayout) evaluated: d->delayedPendingLayout yes Evaluation Count:213 | yes Evaluation Count:356 |
| 213-356 |
829 | return; executed: return; Execution Count:213 | 213 |
830 | | - |
831 | QSize delta = e->size() - e->oldSize(); executed (the execution status of this line is deduced): QSize delta = e->size() - e->oldSize(); | - |
832 | | - |
833 | if (delta.isNull()) partially evaluated: delta.isNull() no Evaluation Count:0 | yes Evaluation Count:356 |
| 0-356 |
834 | return; | 0 |
835 | | - |
836 | bool listWrap = (d->viewMode == ListMode) && d->wrapItemText; evaluated: (d->viewMode == ListMode) yes Evaluation Count:352 | yes Evaluation Count:4 |
evaluated: d->wrapItemText yes Evaluation Count:2 | yes Evaluation Count:350 |
| 2-352 |
837 | bool flowDimensionChanged = (d->flow == LeftToRight && delta.width() != 0) evaluated: d->flow == LeftToRight yes Evaluation Count:17 | yes Evaluation Count:339 |
evaluated: delta.width() != 0 yes Evaluation Count:5 | yes Evaluation Count:12 |
| 5-339 |
838 | || (d->flow == TopToBottom && delta.height() != 0); evaluated: d->flow == TopToBottom yes Evaluation Count:339 | yes Evaluation Count:12 |
evaluated: delta.height() != 0 yes Evaluation Count:276 | yes Evaluation Count:63 |
| 12-339 |
839 | | - |
840 | // We post a delayed relayout in the following cases : | - |
841 | // - we're wrapping | - |
842 | // - the state is NoState, we're adjusting and the size has changed in the flowing direction | - |
843 | if (listWrap evaluated: listWrap yes Evaluation Count:2 | yes Evaluation Count:354 |
| 2-354 |
844 | || (state() == NoState && d->resizeMode == Adjust && flowDimensionChanged)) { evaluated: state() == NoState yes Evaluation Count:353 | yes Evaluation Count:1 |
evaluated: d->resizeMode == Adjust yes Evaluation Count:35 | yes Evaluation Count:318 |
partially evaluated: flowDimensionChanged yes Evaluation Count:35 | no Evaluation Count:0 |
| 0-353 |
845 | d->doDelayedItemsLayout(100); // wait 1/10 sec before starting the layout executed (the execution status of this line is deduced): d->doDelayedItemsLayout(100); | - |
846 | } else { executed: } Execution Count:37 | 37 |
847 | QAbstractItemView::resizeEvent(e); executed (the execution status of this line is deduced): QAbstractItemView::resizeEvent(e); | - |
848 | } executed: } Execution Count:319 | 319 |
849 | } | - |
850 | | - |
851 | #ifndef QT_NO_DRAGANDDROP | - |
852 | | - |
853 | /*! | - |
854 | \reimp | - |
855 | */ | - |
856 | void QListView::dragMoveEvent(QDragMoveEvent *e) | - |
857 | { | - |
858 | Q_D(QListView); never executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
859 | if (!d->commonListView->filterDragMoveEvent(e)) { never evaluated: !d->commonListView->filterDragMoveEvent(e) | 0 |
860 | if (viewMode() == QListView::ListMode && flow() == QListView::LeftToRight) never evaluated: viewMode() == QListView::ListMode never evaluated: flow() == QListView::LeftToRight | 0 |
861 | static_cast<QListModeViewBase *>(d->commonListView)->dragMoveEvent(e); never executed: static_cast<QListModeViewBase *>(d->commonListView)->dragMoveEvent(e); | 0 |
862 | else | - |
863 | QAbstractItemView::dragMoveEvent(e); never executed: QAbstractItemView::dragMoveEvent(e); | 0 |
864 | } | - |
865 | } | 0 |
866 | | - |
867 | | - |
868 | /*! | - |
869 | \reimp | - |
870 | */ | - |
871 | void QListView::dragLeaveEvent(QDragLeaveEvent *e) | - |
872 | { | - |
873 | if (!d_func()->commonListView->filterDragLeaveEvent(e)) never evaluated: !d_func()->commonListView->filterDragLeaveEvent(e) | 0 |
874 | QAbstractItemView::dragLeaveEvent(e); never executed: QAbstractItemView::dragLeaveEvent(e); | 0 |
875 | } | 0 |
876 | | - |
877 | /*! | - |
878 | \reimp | - |
879 | */ | - |
880 | void QListView::dropEvent(QDropEvent *e) | - |
881 | { | - |
882 | if (!d_func()->commonListView->filterDropEvent(e)) never evaluated: !d_func()->commonListView->filterDropEvent(e) | 0 |
883 | QAbstractItemView::dropEvent(e); never executed: QAbstractItemView::dropEvent(e); | 0 |
884 | } | 0 |
885 | | - |
886 | /*! | - |
887 | \reimp | - |
888 | */ | - |
889 | void QListView::startDrag(Qt::DropActions supportedActions) | - |
890 | { | - |
891 | if (!d_func()->commonListView->filterStartDrag(supportedActions)) partially evaluated: !d_func()->commonListView->filterStartDrag(supportedActions) yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
892 | QAbstractItemView::startDrag(supportedActions); executed: QAbstractItemView::startDrag(supportedActions); Execution Count:1 | 1 |
893 | } executed: } Execution Count:1 | 1 |
894 | | - |
895 | #endif // QT_NO_DRAGANDDROP | - |
896 | | - |
897 | /*! | - |
898 | \reimp | - |
899 | */ | - |
900 | QStyleOptionViewItem QListView::viewOptions() const | - |
901 | { | - |
902 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
903 | return d->viewOptions(); executed: return d->viewOptions(); Execution Count:4 | 4 |
904 | } | - |
905 | | - |
906 | QStyleOptionViewItem QListViewPrivate::viewOptions() const | - |
907 | { | - |
908 | Q_Q(const QListView); executed (the execution status of this line is deduced): const QListView * const q = q_func(); | - |
909 | QStyleOptionViewItem option = QAbstractItemViewPrivate::viewOptions(); executed (the execution status of this line is deduced): QStyleOptionViewItem option = QAbstractItemViewPrivate::viewOptions(); | - |
910 | if (!iconSize.isValid()) { // otherwise it was already set in abstractitemview evaluated: !iconSize.isValid() yes Evaluation Count:22381 | yes Evaluation Count:503 |
| 503-22381 |
911 | int pm = (viewMode == QListView::ListMode evaluated: viewMode == QListView::ListMode yes Evaluation Count:22301 | yes Evaluation Count:80 |
| 80-22301 |
912 | ? q->style()->pixelMetric(QStyle::PM_ListViewIconSize, 0, q) executed (the execution status of this line is deduced): ? q->style()->pixelMetric(QStyle::PM_ListViewIconSize, 0, q) | - |
913 | : q->style()->pixelMetric(QStyle::PM_IconViewIconSize, 0, q)); executed (the execution status of this line is deduced): : q->style()->pixelMetric(QStyle::PM_IconViewIconSize, 0, q)); | - |
914 | option.decorationSize = QSize(pm, pm); executed (the execution status of this line is deduced): option.decorationSize = QSize(pm, pm); | - |
915 | } executed: } Execution Count:22381 | 22381 |
916 | if (viewMode == QListView::IconMode) { evaluated: viewMode == QListView::IconMode yes Evaluation Count:83 | yes Evaluation Count:22801 |
| 83-22801 |
917 | option.showDecorationSelected = false; executed (the execution status of this line is deduced): option.showDecorationSelected = false; | - |
918 | option.decorationPosition = QStyleOptionViewItem::Top; executed (the execution status of this line is deduced): option.decorationPosition = QStyleOptionViewItem::Top; | - |
919 | option.displayAlignment = Qt::AlignCenter; executed (the execution status of this line is deduced): option.displayAlignment = Qt::AlignCenter; | - |
920 | } else { executed: } Execution Count:83 | 83 |
921 | option.decorationPosition = QStyleOptionViewItem::Left; executed (the execution status of this line is deduced): option.decorationPosition = QStyleOptionViewItem::Left; | - |
922 | } executed: } Execution Count:22801 | 22801 |
923 | return option; executed: return option; Execution Count:22884 | 22884 |
924 | } | - |
925 | | - |
926 | | - |
927 | /*! | - |
928 | \reimp | - |
929 | */ | - |
930 | void QListView::paintEvent(QPaintEvent *e) | - |
931 | { | - |
932 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
933 | if (!d->itemDelegate) partially evaluated: !d->itemDelegate no Evaluation Count:0 | yes Evaluation Count:1057 |
| 0-1057 |
934 | return; | 0 |
935 | QStyleOptionViewItem option = d->viewOptions(); executed (the execution status of this line is deduced): QStyleOptionViewItem option = d->viewOptions(); | - |
936 | QPainter painter(d->viewport); executed (the execution status of this line is deduced): QPainter painter(d->viewport); | - |
937 | | - |
938 | const QVector<QModelIndex> toBeRendered = d->intersectingSet(e->rect().translated(horizontalOffset(), verticalOffset()), false); executed (the execution status of this line is deduced): const QVector<QModelIndex> toBeRendered = d->intersectingSet(e->rect().translated(horizontalOffset(), verticalOffset()), false); | - |
939 | | - |
940 | const QModelIndex current = currentIndex(); executed (the execution status of this line is deduced): const QModelIndex current = currentIndex(); | - |
941 | const QModelIndex hover = d->hover; executed (the execution status of this line is deduced): const QModelIndex hover = d->hover; | - |
942 | const QAbstractItemModel *itemModel = d->model; executed (the execution status of this line is deduced): const QAbstractItemModel *itemModel = d->model; | - |
943 | const QItemSelectionModel *selections = d->selectionModel; executed (the execution status of this line is deduced): const QItemSelectionModel *selections = d->selectionModel; | - |
944 | const bool focus = (hasFocus() || d->viewport->hasFocus()) && current.isValid(); evaluated: hasFocus() yes Evaluation Count:755 | yes Evaluation Count:302 |
partially evaluated: d->viewport->hasFocus() no Evaluation Count:0 | yes Evaluation Count:302 |
evaluated: current.isValid() yes Evaluation Count:701 | yes Evaluation Count:54 |
| 0-755 |
945 | const bool alternate = d->alternatingColors; executed (the execution status of this line is deduced): const bool alternate = d->alternatingColors; | - |
946 | const QStyle::State state = option.state; executed (the execution status of this line is deduced): const QStyle::State state = option.state; | - |
947 | const QAbstractItemView::State viewState = this->state(); executed (the execution status of this line is deduced): const QAbstractItemView::State viewState = this->state(); | - |
948 | const bool enabled = (state & QStyle::State_Enabled) != 0; executed (the execution status of this line is deduced): const bool enabled = (state & QStyle::State_Enabled) != 0; | - |
949 | | - |
950 | bool alternateBase = false; executed (the execution status of this line is deduced): bool alternateBase = false; | - |
951 | int previousRow = -2; // trigger the alternateBase adjustment on first pass executed (the execution status of this line is deduced): int previousRow = -2; | - |
952 | | - |
953 | int maxSize = (flow() == TopToBottom) evaluated: (flow() == TopToBottom) yes Evaluation Count:800 | yes Evaluation Count:257 |
| 257-800 |
954 | ? qMax(viewport()->size().width(), d->contentsSize().width()) - 2 * d->spacing() executed (the execution status of this line is deduced): ? qMax(viewport()->size().width(), d->contentsSize().width()) - 2 * d->spacing() | - |
955 | : qMax(viewport()->size().height(), d->contentsSize().height()) - 2 * d->spacing(); executed (the execution status of this line is deduced): : qMax(viewport()->size().height(), d->contentsSize().height()) - 2 * d->spacing(); | - |
956 | | - |
957 | QVector<QModelIndex>::const_iterator end = toBeRendered.constEnd(); executed (the execution status of this line is deduced): QVector<QModelIndex>::const_iterator end = toBeRendered.constEnd(); | - |
958 | for (QVector<QModelIndex>::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { evaluated: it != end yes Evaluation Count:8033 | yes Evaluation Count:1057 |
| 1057-8033 |
959 | Q_ASSERT((*it).isValid()); executed (the execution status of this line is deduced): qt_noop(); | - |
960 | option.rect = visualRect(*it); executed (the execution status of this line is deduced): option.rect = visualRect(*it); | - |
961 | | - |
962 | if (flow() == TopToBottom) evaluated: flow() == TopToBottom yes Evaluation Count:6391 | yes Evaluation Count:1642 |
| 1642-6391 |
963 | option.rect.setWidth(qMin(maxSize, option.rect.width())); executed: option.rect.setWidth(qMin(maxSize, option.rect.width())); Execution Count:6391 | 6391 |
964 | else | - |
965 | option.rect.setHeight(qMin(maxSize, option.rect.height())); executed: option.rect.setHeight(qMin(maxSize, option.rect.height())); Execution Count:1642 | 1642 |
966 | | - |
967 | option.state = state; executed (the execution status of this line is deduced): option.state = state; | - |
968 | if (selections && selections->isSelected(*it)) partially evaluated: selections yes Evaluation Count:8033 | no Evaluation Count:0 |
evaluated: selections->isSelected(*it) yes Evaluation Count:514 | yes Evaluation Count:7519 |
| 0-8033 |
969 | option.state |= QStyle::State_Selected; executed: option.state |= QStyle::State_Selected; Execution Count:514 | 514 |
970 | if (enabled) { partially evaluated: enabled yes Evaluation Count:8033 | no Evaluation Count:0 |
| 0-8033 |
971 | QPalette::ColorGroup cg; executed (the execution status of this line is deduced): QPalette::ColorGroup cg; | - |
972 | if ((itemModel->flags(*it) & Qt::ItemIsEnabled) == 0) { evaluated: (itemModel->flags(*it) & Qt::ItemIsEnabled) == 0 yes Evaluation Count:54 | yes Evaluation Count:7979 |
| 54-7979 |
973 | option.state &= ~QStyle::State_Enabled; executed (the execution status of this line is deduced): option.state &= ~QStyle::State_Enabled; | - |
974 | cg = QPalette::Disabled; executed (the execution status of this line is deduced): cg = QPalette::Disabled; | - |
975 | } else { executed: } Execution Count:54 | 54 |
976 | cg = QPalette::Normal; executed (the execution status of this line is deduced): cg = QPalette::Normal; | - |
977 | } executed: } Execution Count:7979 | 7979 |
978 | option.palette.setCurrentColorGroup(cg); executed (the execution status of this line is deduced): option.palette.setCurrentColorGroup(cg); | - |
979 | } executed: } Execution Count:8033 | 8033 |
980 | if (focus && current == *it) { evaluated: focus yes Evaluation Count:4643 | yes Evaluation Count:3390 |
evaluated: current == *it yes Evaluation Count:685 | yes Evaluation Count:3958 |
| 685-4643 |
981 | option.state |= QStyle::State_HasFocus; executed (the execution status of this line is deduced): option.state |= QStyle::State_HasFocus; | - |
982 | if (viewState == EditingState) partially evaluated: viewState == EditingState no Evaluation Count:0 | yes Evaluation Count:685 |
| 0-685 |
983 | option.state |= QStyle::State_Editing; never executed: option.state |= QStyle::State_Editing; | 0 |
984 | } executed: } Execution Count:685 | 685 |
985 | if (*it == hover) evaluated: *it == hover yes Evaluation Count:243 | yes Evaluation Count:7790 |
| 243-7790 |
986 | option.state |= QStyle::State_MouseOver; executed: option.state |= QStyle::State_MouseOver; Execution Count:243 | 243 |
987 | else | - |
988 | option.state &= ~QStyle::State_MouseOver; executed: option.state &= ~QStyle::State_MouseOver; Execution Count:7790 | 7790 |
989 | | - |
990 | if (alternate) { partially evaluated: alternate no Evaluation Count:0 | yes Evaluation Count:8033 |
| 0-8033 |
991 | int row = (*it).row(); never executed (the execution status of this line is deduced): int row = (*it).row(); | - |
992 | if (row != previousRow + 1) { never evaluated: row != previousRow + 1 | 0 |
993 | // adjust alternateBase according to rows in the "gap" | - |
994 | if (!d->hiddenRows.isEmpty()) { never evaluated: !d->hiddenRows.isEmpty() | 0 |
995 | for (int r = qMax(previousRow + 1, 0); r < row; ++r) { | 0 |
996 | if (!d->isHidden(r)) never evaluated: !d->isHidden(r) | 0 |
997 | alternateBase = !alternateBase; never executed: alternateBase = !alternateBase; | 0 |
998 | } | 0 |
999 | } else { | 0 |
1000 | alternateBase = (row & 1) != 0; never executed (the execution status of this line is deduced): alternateBase = (row & 1) != 0; | - |
1001 | } | 0 |
1002 | } | - |
1003 | if (alternateBase) { never evaluated: alternateBase | 0 |
1004 | option.features |= QStyleOptionViewItem::Alternate; never executed (the execution status of this line is deduced): option.features |= QStyleOptionViewItem::Alternate; | - |
1005 | } else { | 0 |
1006 | option.features &= ~QStyleOptionViewItem::Alternate; never executed (the execution status of this line is deduced): option.features &= ~QStyleOptionViewItem::Alternate; | - |
1007 | } | 0 |
1008 | | - |
1009 | // draw background of the item (only alternate row). rest of the background | - |
1010 | // is provided by the delegate | - |
1011 | QStyle::State oldState = option.state; never executed (the execution status of this line is deduced): QStyle::State oldState = option.state; | - |
1012 | option.state &= ~QStyle::State_Selected; never executed (the execution status of this line is deduced): option.state &= ~QStyle::State_Selected; | - |
1013 | style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &option, &painter, this); never executed (the execution status of this line is deduced): style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &option, &painter, this); | - |
1014 | option.state = oldState; never executed (the execution status of this line is deduced): option.state = oldState; | - |
1015 | | - |
1016 | alternateBase = !alternateBase; never executed (the execution status of this line is deduced): alternateBase = !alternateBase; | - |
1017 | previousRow = row; never executed (the execution status of this line is deduced): previousRow = row; | - |
1018 | } | 0 |
1019 | | - |
1020 | d->delegateForIndex(*it)->paint(&painter, option, *it); executed (the execution status of this line is deduced): d->delegateForIndex(*it)->paint(&painter, option, *it); | - |
1021 | } executed: } Execution Count:8033 | 8033 |
1022 | | - |
1023 | #ifndef QT_NO_DRAGANDDROP | - |
1024 | d->commonListView->paintDragDrop(&painter); executed (the execution status of this line is deduced): d->commonListView->paintDragDrop(&painter); | - |
1025 | #endif | - |
1026 | | - |
1027 | #ifndef QT_NO_RUBBERBAND | - |
1028 | // #### move this implementation into a dynamic class | - |
1029 | if (d->showElasticBand && d->elasticBand.isValid()) { evaluated: d->showElasticBand yes Evaluation Count:39 | yes Evaluation Count:1018 |
partially evaluated: d->elasticBand.isValid() no Evaluation Count:0 | yes Evaluation Count:39 |
| 0-1018 |
1030 | QStyleOptionRubberBand opt; never executed (the execution status of this line is deduced): QStyleOptionRubberBand opt; | - |
1031 | opt.initFrom(this); never executed (the execution status of this line is deduced): opt.initFrom(this); | - |
1032 | opt.shape = QRubberBand::Rectangle; never executed (the execution status of this line is deduced): opt.shape = QRubberBand::Rectangle; | - |
1033 | opt.opaque = false; never executed (the execution status of this line is deduced): opt.opaque = false; | - |
1034 | opt.rect = d->mapToViewport(d->elasticBand, false).intersected( never executed (the execution status of this line is deduced): opt.rect = d->mapToViewport(d->elasticBand, false).intersected( | - |
1035 | d->viewport->rect().adjusted(-16, -16, 16, 16)); never executed (the execution status of this line is deduced): d->viewport->rect().adjusted(-16, -16, 16, 16)); | - |
1036 | painter.save(); never executed (the execution status of this line is deduced): painter.save(); | - |
1037 | style()->drawControl(QStyle::CE_RubberBand, &opt, &painter); never executed (the execution status of this line is deduced): style()->drawControl(QStyle::CE_RubberBand, &opt, &painter); | - |
1038 | painter.restore(); never executed (the execution status of this line is deduced): painter.restore(); | - |
1039 | } | 0 |
1040 | #endif | - |
1041 | } executed: } Execution Count:1057 | 1057 |
1042 | | - |
1043 | /*! | - |
1044 | \reimp | - |
1045 | */ | - |
1046 | QModelIndex QListView::indexAt(const QPoint &p) const | - |
1047 | { | - |
1048 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1049 | QRect rect(p.x() + horizontalOffset(), p.y() + verticalOffset(), 1, 1); executed (the execution status of this line is deduced): QRect rect(p.x() + horizontalOffset(), p.y() + verticalOffset(), 1, 1); | - |
1050 | const QVector<QModelIndex> intersectVector = d->intersectingSet(rect); executed (the execution status of this line is deduced): const QVector<QModelIndex> intersectVector = d->intersectingSet(rect); | - |
1051 | QModelIndex index = intersectVector.count() > 0 evaluated: intersectVector.count() > 0 yes Evaluation Count:1257 | yes Evaluation Count:62 |
| 62-1257 |
1052 | ? intersectVector.last() : QModelIndex(); executed (the execution status of this line is deduced): ? intersectVector.last() : QModelIndex(); | - |
1053 | if (index.isValid() && visualRect(index).contains(p)) evaluated: index.isValid() yes Evaluation Count:1257 | yes Evaluation Count:62 |
evaluated: visualRect(index).contains(p) yes Evaluation Count:1179 | yes Evaluation Count:78 |
| 62-1257 |
1054 | return index; executed: return index; Execution Count:1179 | 1179 |
1055 | return QModelIndex(); executed: return QModelIndex(); Execution Count:140 | 140 |
1056 | } | - |
1057 | | - |
1058 | /*! | - |
1059 | \reimp | - |
1060 | */ | - |
1061 | int QListView::horizontalOffset() const | - |
1062 | { | - |
1063 | return d_func()->commonListView->horizontalOffset(); executed: return d_func()->commonListView->horizontalOffset(); Execution Count:24903 | 24903 |
1064 | } | - |
1065 | | - |
1066 | /*! | - |
1067 | \reimp | - |
1068 | */ | - |
1069 | int QListView::verticalOffset() const | - |
1070 | { | - |
1071 | return d_func()->commonListView->verticalOffset(); executed: return d_func()->commonListView->verticalOffset(); Execution Count:24903 | 24903 |
1072 | } | - |
1073 | | - |
1074 | /*! | - |
1075 | \reimp | - |
1076 | */ | - |
1077 | QModelIndex QListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) | - |
1078 | { | - |
1079 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1080 | Q_UNUSED(modifiers); executed (the execution status of this line is deduced): (void)modifiers;; | - |
1081 | | - |
1082 | QModelIndex current = currentIndex(); executed (the execution status of this line is deduced): QModelIndex current = currentIndex(); | - |
1083 | if (!current.isValid()) { evaluated: !current.isValid() yes Evaluation Count:107 | yes Evaluation Count:469 |
| 107-469 |
1084 | int rowCount = d->model->rowCount(d->root); executed (the execution status of this line is deduced): int rowCount = d->model->rowCount(d->root); | - |
1085 | if (!rowCount) evaluated: !rowCount yes Evaluation Count:8 | yes Evaluation Count:99 |
| 8-99 |
1086 | return QModelIndex(); executed: return QModelIndex(); Execution Count:8 | 8 |
1087 | int row = 0; executed (the execution status of this line is deduced): int row = 0; | - |
1088 | while (row < rowCount && d->isHiddenOrDisabled(row)) evaluated: row < rowCount yes Evaluation Count:204 | yes Evaluation Count:1 |
evaluated: d->isHiddenOrDisabled(row) yes Evaluation Count:106 | yes Evaluation Count:98 |
| 1-204 |
1089 | ++row; executed: ++row; Execution Count:106 | 106 |
1090 | if (row >= rowCount) evaluated: row >= rowCount yes Evaluation Count:1 | yes Evaluation Count:98 |
| 1-98 |
1091 | return QModelIndex(); executed: return QModelIndex(); Execution Count:1 | 1 |
1092 | return d->model->index(row, d->column, d->root); executed: return d->model->index(row, d->column, d->root); Execution Count:98 | 98 |
1093 | } | - |
1094 | | - |
1095 | const QRect initialRect = rectForIndex(current); executed (the execution status of this line is deduced): const QRect initialRect = rectForIndex(current); | - |
1096 | QRect rect = initialRect; executed (the execution status of this line is deduced): QRect rect = initialRect; | - |
1097 | if (rect.isEmpty()) { partially evaluated: rect.isEmpty() no Evaluation Count:0 | yes Evaluation Count:469 |
| 0-469 |
1098 | return d->model->index(0, d->column, d->root); never executed: return d->model->index(0, d->column, d->root); | 0 |
1099 | } | - |
1100 | if (d->gridSize().isValid()) rect.setSize(d->gridSize()); executed: rect.setSize(d->gridSize()); Execution Count:25 evaluated: d->gridSize().isValid() yes Evaluation Count:25 | yes Evaluation Count:444 |
| 25-444 |
1101 | | - |
1102 | QSize contents = d->contentsSize(); executed (the execution status of this line is deduced): QSize contents = d->contentsSize(); | - |
1103 | QVector<QModelIndex> intersectVector; executed (the execution status of this line is deduced): QVector<QModelIndex> intersectVector; | - |
1104 | | - |
1105 | switch (cursorAction) { | - |
1106 | case MoveLeft: | - |
1107 | while (intersectVector.isEmpty()) { evaluated: intersectVector.isEmpty() yes Evaluation Count:117 | yes Evaluation Count:94 |
| 94-117 |
1108 | rect.translate(-rect.width(), 0); executed (the execution status of this line is deduced): rect.translate(-rect.width(), 0); | - |
1109 | if (rect.right() <= 0) evaluated: rect.right() <= 0 yes Evaluation Count:22 | yes Evaluation Count:95 |
| 22-95 |
1110 | return current; executed: return current; Execution Count:22 | 22 |
1111 | if (rect.left() < 0) evaluated: rect.left() < 0 yes Evaluation Count:1 | yes Evaluation Count:94 |
| 1-94 |
1112 | rect.setLeft(0); executed: rect.setLeft(0); Execution Count:1 | 1 |
1113 | intersectVector = d->intersectingSet(rect); executed (the execution status of this line is deduced): intersectVector = d->intersectingSet(rect); | - |
1114 | d->removeCurrentAndDisabled(&intersectVector, current); executed (the execution status of this line is deduced): d->removeCurrentAndDisabled(&intersectVector, current); | - |
1115 | } executed: } Execution Count:95 | 95 |
1116 | return d->closestIndex(initialRect, intersectVector); executed: return d->closestIndex(initialRect, intersectVector); Execution Count:94 | 94 |
1117 | case MoveRight: | - |
1118 | while (intersectVector.isEmpty()) { evaluated: intersectVector.isEmpty() yes Evaluation Count:94 | yes Evaluation Count:89 |
| 89-94 |
1119 | rect.translate(rect.width(), 0); executed (the execution status of this line is deduced): rect.translate(rect.width(), 0); | - |
1120 | if (rect.left() >= contents.width()) evaluated: rect.left() >= contents.width() yes Evaluation Count:4 | yes Evaluation Count:90 |
| 4-90 |
1121 | return current; executed: return current; Execution Count:4 | 4 |
1122 | if (rect.right() > contents.width()) evaluated: rect.right() > contents.width() yes Evaluation Count:2 | yes Evaluation Count:88 |
| 2-88 |
1123 | rect.setRight(contents.width()); executed: rect.setRight(contents.width()); Execution Count:2 | 2 |
1124 | intersectVector = d->intersectingSet(rect); executed (the execution status of this line is deduced): intersectVector = d->intersectingSet(rect); | - |
1125 | d->removeCurrentAndDisabled(&intersectVector, current); executed (the execution status of this line is deduced): d->removeCurrentAndDisabled(&intersectVector, current); | - |
1126 | } executed: } Execution Count:90 | 90 |
1127 | return d->closestIndex(initialRect, intersectVector); executed: return d->closestIndex(initialRect, intersectVector); Execution Count:89 | 89 |
1128 | case MovePageUp: | - |
1129 | // move current by (visibileRowCount - 1) items. | - |
1130 | // rect.translate(0, -rect.height()); will happen in the switch fallthrough for MoveUp. | - |
1131 | rect.moveTop(rect.top() - d->viewport->height() + 2 * rect.height()); executed (the execution status of this line is deduced): rect.moveTop(rect.top() - d->viewport->height() + 2 * rect.height()); | - |
1132 | if (rect.top() < rect.height()) evaluated: rect.top() < rect.height() yes Evaluation Count:2 | yes Evaluation Count:10 |
| 2-10 |
1133 | rect.moveTop(rect.height()); executed: rect.moveTop(rect.height()); Execution Count:2 | 2 |
1134 | case MovePrevious: code before this statement executed: case MovePrevious: Execution Count:12 | 12 |
1135 | case MoveUp: | - |
1136 | while (intersectVector.isEmpty()) { evaluated: intersectVector.isEmpty() yes Evaluation Count:147 | yes Evaluation Count:129 |
| 129-147 |
1137 | rect.translate(0, -rect.height()); executed (the execution status of this line is deduced): rect.translate(0, -rect.height()); | - |
1138 | if (rect.bottom() <= 0) { evaluated: rect.bottom() <= 0 yes Evaluation Count:10 | yes Evaluation Count:137 |
| 10-137 |
1139 | #ifdef QT_KEYPAD_NAVIGATION | - |
1140 | if (QApplication::keypadNavigationEnabled()) { | - |
1141 | int row = d->batchStartRow() - 1; | - |
1142 | while (row >= 0 && d->isHiddenOrDisabled(row)) | - |
1143 | --row; | - |
1144 | if (row >= 0) | - |
1145 | return d->model->index(row, d->column, d->root); | - |
1146 | } | - |
1147 | #endif | - |
1148 | return current; executed: return current; Execution Count:10 | 10 |
1149 | } | - |
1150 | if (rect.top() < 0) evaluated: rect.top() < 0 yes Evaluation Count:1 | yes Evaluation Count:136 |
| 1-136 |
1151 | rect.setTop(0); executed: rect.setTop(0); Execution Count:1 | 1 |
1152 | intersectVector = d->intersectingSet(rect); executed (the execution status of this line is deduced): intersectVector = d->intersectingSet(rect); | - |
1153 | d->removeCurrentAndDisabled(&intersectVector, current); executed (the execution status of this line is deduced): d->removeCurrentAndDisabled(&intersectVector, current); | - |
1154 | } executed: } Execution Count:137 | 137 |
1155 | return d->closestIndex(initialRect, intersectVector); executed: return d->closestIndex(initialRect, intersectVector); Execution Count:129 | 129 |
1156 | case MovePageDown: | - |
1157 | // move current by (visibileRowCount - 1) items. | - |
1158 | // rect.translate(0, rect.height()); will happen in the switch fallthrough for MoveDown. | - |
1159 | rect.moveTop(rect.top() + d->viewport->height() - 2 * rect.height()); executed (the execution status of this line is deduced): rect.moveTop(rect.top() + d->viewport->height() - 2 * rect.height()); | - |
1160 | if (rect.bottom() > contents.height() - rect.height()) evaluated: rect.bottom() > contents.height() - rect.height() yes Evaluation Count:2 | yes Evaluation Count:10 |
| 2-10 |
1161 | rect.moveBottom(contents.height() - rect.height()); executed: rect.moveBottom(contents.height() - rect.height()); Execution Count:2 | 2 |
1162 | case MoveNext: code before this statement executed: case MoveNext: Execution Count:12 | 12 |
1163 | case MoveDown: | - |
1164 | while (intersectVector.isEmpty()) { evaluated: intersectVector.isEmpty() yes Evaluation Count:121 | yes Evaluation Count:115 |
| 115-121 |
1165 | rect.translate(0, rect.height()); executed (the execution status of this line is deduced): rect.translate(0, rect.height()); | - |
1166 | if (rect.top() >= contents.height()) { evaluated: rect.top() >= contents.height() yes Evaluation Count:5 | yes Evaluation Count:116 |
| 5-116 |
1167 | #ifdef QT_KEYPAD_NAVIGATION | - |
1168 | if (QApplication::keypadNavigationEnabled()) { | - |
1169 | int rowCount = d->model->rowCount(d->root); | - |
1170 | int row = 0; | - |
1171 | while (row < rowCount && d->isHiddenOrDisabled(row)) | - |
1172 | ++row; | - |
1173 | if (row < rowCount) | - |
1174 | return d->model->index(row, d->column, d->root); | - |
1175 | } | - |
1176 | #endif | - |
1177 | return current; executed: return current; Execution Count:5 | 5 |
1178 | } | - |
1179 | if (rect.bottom() > contents.height()) evaluated: rect.bottom() > contents.height() yes Evaluation Count:3 | yes Evaluation Count:113 |
| 3-113 |
1180 | rect.setBottom(contents.height()); executed: rect.setBottom(contents.height()); Execution Count:3 | 3 |
1181 | intersectVector = d->intersectingSet(rect); executed (the execution status of this line is deduced): intersectVector = d->intersectingSet(rect); | - |
1182 | d->removeCurrentAndDisabled(&intersectVector, current); executed (the execution status of this line is deduced): d->removeCurrentAndDisabled(&intersectVector, current); | - |
1183 | } executed: } Execution Count:116 | 116 |
1184 | return d->closestIndex(initialRect, intersectVector); executed: return d->closestIndex(initialRect, intersectVector); Execution Count:115 | 115 |
1185 | case MoveHome: | - |
1186 | return d->model->index(0, d->column, d->root); executed: return d->model->index(0, d->column, d->root); Execution Count:1 | 1 |
1187 | case MoveEnd: | - |
1188 | return d->model->index(d->batchStartRow() - 1, d->column, d->root);} never executed: return d->model->index(d->batchStartRow() - 1, d->column, d->root); | 0 |
1189 | | - |
1190 | return current; never executed: return current; | 0 |
1191 | } | - |
1192 | | - |
1193 | /*! | - |
1194 | Returns the rectangle of the item at position \a index in the | - |
1195 | model. The rectangle is in contents coordinates. | - |
1196 | | - |
1197 | \sa visualRect() | - |
1198 | */ | - |
1199 | QRect QListView::rectForIndex(const QModelIndex &index) const | - |
1200 | { | - |
1201 | return d_func()->rectForIndex(index); executed: return d_func()->rectForIndex(index); Execution Count:24628 | 24628 |
1202 | } | - |
1203 | | - |
1204 | /*! | - |
1205 | \since 4.1 | - |
1206 | | - |
1207 | Sets the contents position of the item at \a index in the model to the given | - |
1208 | \a position. | - |
1209 | If the list view's movement mode is Static or its view mode is ListView, | - |
1210 | this function will have no effect. | - |
1211 | */ | - |
1212 | void QListView::setPositionForIndex(const QPoint &position, const QModelIndex &index) | - |
1213 | { | - |
1214 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1215 | if (d->movement == Static partially evaluated: d->movement == Static no Evaluation Count:0 | yes Evaluation Count:17 |
| 0-17 |
1216 | || !d->isIndexValid(index) partially evaluated: !d->isIndexValid(index) no Evaluation Count:0 | yes Evaluation Count:17 |
| 0-17 |
1217 | || index.parent() != d->root partially evaluated: index.parent() != d->root no Evaluation Count:0 | yes Evaluation Count:17 |
| 0-17 |
1218 | || index.column() != d->column) evaluated: index.column() != d->column yes Evaluation Count:12 | yes Evaluation Count:5 |
| 5-12 |
1219 | return; executed: return; Execution Count:12 | 12 |
1220 | | - |
1221 | d->executePostedLayout(); executed (the execution status of this line is deduced): d->executePostedLayout(); | - |
1222 | d->commonListView->setPositionForIndex(position, index); executed (the execution status of this line is deduced): d->commonListView->setPositionForIndex(position, index); | - |
1223 | } executed: } Execution Count:5 | 5 |
1224 | | - |
1225 | /*! | - |
1226 | \reimp | - |
1227 | */ | - |
1228 | void QListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) | - |
1229 | { | - |
1230 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1231 | if (!d->selectionModel) evaluated: !d->selectionModel yes Evaluation Count:2 | yes Evaluation Count:660 |
| 2-660 |
1232 | return; executed: return; Execution Count:2 | 2 |
1233 | | - |
1234 | // if we are wrapping, we can only selecte inside the contents rectangle | - |
1235 | int w = qMax(d->contentsSize().width(), d->viewport->width()); executed (the execution status of this line is deduced): int w = qMax(d->contentsSize().width(), d->viewport->width()); | - |
1236 | int h = qMax(d->contentsSize().height(), d->viewport->height()); executed (the execution status of this line is deduced): int h = qMax(d->contentsSize().height(), d->viewport->height()); | - |
1237 | if (d->wrap && !QRect(0, 0, w, h).intersects(rect)) evaluated: d->wrap yes Evaluation Count:40 | yes Evaluation Count:620 |
evaluated: !QRect(0, 0, w, h).intersects(rect) yes Evaluation Count:2 | yes Evaluation Count:38 |
| 2-620 |
1238 | return; executed: return; Execution Count:2 | 2 |
1239 | | - |
1240 | QItemSelection selection; executed (the execution status of this line is deduced): QItemSelection selection; | - |
1241 | | - |
1242 | if (rect.width() == 1 && rect.height() == 1) { evaluated: rect.width() == 1 yes Evaluation Count:648 | yes Evaluation Count:10 |
evaluated: rect.height() == 1 yes Evaluation Count:638 | yes Evaluation Count:10 |
| 10-648 |
1243 | const QVector<QModelIndex> intersectVector = d->intersectingSet(rect.translated(horizontalOffset(), verticalOffset())); executed (the execution status of this line is deduced): const QVector<QModelIndex> intersectVector = d->intersectingSet(rect.translated(horizontalOffset(), verticalOffset())); | - |
1244 | QModelIndex tl; executed (the execution status of this line is deduced): QModelIndex tl; | - |
1245 | if (!intersectVector.isEmpty()) evaluated: !intersectVector.isEmpty() yes Evaluation Count:634 | yes Evaluation Count:4 |
| 4-634 |
1246 | tl = intersectVector.last(); // special case for mouse press; only select the top item executed: tl = intersectVector.last(); Execution Count:634 | 634 |
1247 | if (tl.isValid() && d->isIndexEnabled(tl)) evaluated: tl.isValid() yes Evaluation Count:634 | yes Evaluation Count:4 |
partially evaluated: d->isIndexEnabled(tl) yes Evaluation Count:634 | no Evaluation Count:0 |
| 0-634 |
1248 | selection.select(tl, tl); executed: selection.select(tl, tl); Execution Count:634 | 634 |
1249 | } else { executed: } Execution Count:638 | 638 |
1250 | if (state() == DragSelectingState) { // visual selection mode (rubberband selection) evaluated: state() == DragSelectingState yes Evaluation Count:3 | yes Evaluation Count:17 |
| 3-17 |
1251 | selection = d->selection(rect.translated(horizontalOffset(), verticalOffset())); executed (the execution status of this line is deduced): selection = d->selection(rect.translated(horizontalOffset(), verticalOffset())); | - |
1252 | } else { // logical selection mode (key and mouse click selection) executed: } Execution Count:3 | 3 |
1253 | QModelIndex tl, br; executed (the execution status of this line is deduced): QModelIndex tl, br; | - |
1254 | // get the first item | - |
1255 | const QRect topLeft(rect.left() + horizontalOffset(), rect.top() + verticalOffset(), 1, 1); executed (the execution status of this line is deduced): const QRect topLeft(rect.left() + horizontalOffset(), rect.top() + verticalOffset(), 1, 1); | - |
1256 | QVector<QModelIndex> intersectVector = d->intersectingSet(topLeft); executed (the execution status of this line is deduced): QVector<QModelIndex> intersectVector = d->intersectingSet(topLeft); | - |
1257 | if (!intersectVector.isEmpty()) evaluated: !intersectVector.isEmpty() yes Evaluation Count:14 | yes Evaluation Count:3 |
| 3-14 |
1258 | tl = intersectVector.last(); executed: tl = intersectVector.last(); Execution Count:14 | 14 |
1259 | // get the last item | - |
1260 | const QRect bottomRight(rect.right() + horizontalOffset(), rect.bottom() + verticalOffset(), 1, 1); executed (the execution status of this line is deduced): const QRect bottomRight(rect.right() + horizontalOffset(), rect.bottom() + verticalOffset(), 1, 1); | - |
1261 | intersectVector = d->intersectingSet(bottomRight); executed (the execution status of this line is deduced): intersectVector = d->intersectingSet(bottomRight); | - |
1262 | if (!intersectVector.isEmpty()) evaluated: !intersectVector.isEmpty() yes Evaluation Count:14 | yes Evaluation Count:3 |
| 3-14 |
1263 | br = intersectVector.last(); executed: br = intersectVector.last(); Execution Count:14 | 14 |
1264 | | - |
1265 | // get the ranges | - |
1266 | if (tl.isValid() && br.isValid() evaluated: tl.isValid() yes Evaluation Count:14 | yes Evaluation Count:3 |
partially evaluated: br.isValid() yes Evaluation Count:14 | no Evaluation Count:0 |
| 0-14 |
1267 | && d->isIndexEnabled(tl) partially evaluated: d->isIndexEnabled(tl) yes Evaluation Count:14 | no Evaluation Count:0 |
| 0-14 |
1268 | && d->isIndexEnabled(br)) { partially evaluated: d->isIndexEnabled(br) yes Evaluation Count:14 | no Evaluation Count:0 |
| 0-14 |
1269 | QRect first = rectForIndex(tl); executed (the execution status of this line is deduced): QRect first = rectForIndex(tl); | - |
1270 | QRect last = rectForIndex(br); executed (the execution status of this line is deduced): QRect last = rectForIndex(br); | - |
1271 | QRect middle; executed (the execution status of this line is deduced): QRect middle; | - |
1272 | if (d->flow == LeftToRight) { evaluated: d->flow == LeftToRight yes Evaluation Count:7 | yes Evaluation Count:7 |
| 7 |
1273 | QRect &top = first; executed (the execution status of this line is deduced): QRect &top = first; | - |
1274 | QRect &bottom = last; executed (the execution status of this line is deduced): QRect &bottom = last; | - |
1275 | // if bottom is above top, swap them | - |
1276 | if (top.center().y() > bottom.center().y()) { evaluated: top.center().y() > bottom.center().y() yes Evaluation Count:1 | yes Evaluation Count:6 |
| 1-6 |
1277 | QRect tmp = top; executed (the execution status of this line is deduced): QRect tmp = top; | - |
1278 | top = bottom; executed (the execution status of this line is deduced): top = bottom; | - |
1279 | bottom = tmp; executed (the execution status of this line is deduced): bottom = tmp; | - |
1280 | } executed: } Execution Count:1 | 1 |
1281 | // if the rect are on differnet lines, expand | - |
1282 | if (top.top() != bottom.top()) { evaluated: top.top() != bottom.top() yes Evaluation Count:5 | yes Evaluation Count:2 |
| 2-5 |
1283 | // top rectangle | - |
1284 | if (isRightToLeft()) partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:5 |
| 0-5 |
1285 | top.setLeft(0); never executed: top.setLeft(0); | 0 |
1286 | else | - |
1287 | top.setRight(contentsSize().width()); executed: top.setRight(contentsSize().width()); Execution Count:5 | 5 |
1288 | // bottom rectangle | - |
1289 | if (isRightToLeft()) partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:5 |
| 0-5 |
1290 | bottom.setRight(contentsSize().width()); never executed: bottom.setRight(contentsSize().width()); | 0 |
1291 | else | - |
1292 | bottom.setLeft(0); executed: bottom.setLeft(0); Execution Count:5 | 5 |
1293 | } else if (top.left() > bottom.right()) { evaluated: top.left() > bottom.right() yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
1294 | if (isRightToLeft()) partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
1295 | bottom.setLeft(top.right()); never executed: bottom.setLeft(top.right()); | 0 |
1296 | else | - |
1297 | bottom.setRight(top.left()); executed: bottom.setRight(top.left()); Execution Count:1 | 1 |
1298 | } else { | - |
1299 | if (isRightToLeft()) partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
1300 | top.setLeft(bottom.right()); never executed: top.setLeft(bottom.right()); | 0 |
1301 | else | - |
1302 | top.setRight(bottom.left()); executed: top.setRight(bottom.left()); Execution Count:1 | 1 |
1303 | } | - |
1304 | // middle rectangle | - |
1305 | if (top.bottom() < bottom.top()) { evaluated: top.bottom() < bottom.top() yes Evaluation Count:5 | yes Evaluation Count:2 |
| 2-5 |
1306 | if (gridSize().isValid() && !gridSize().isNull()) evaluated: gridSize().isValid() yes Evaluation Count:4 | yes Evaluation Count:1 |
partially evaluated: !gridSize().isNull() yes Evaluation Count:4 | no Evaluation Count:0 |
| 0-4 |
1307 | middle.setTop(top.top() + gridSize().height()); executed: middle.setTop(top.top() + gridSize().height()); Execution Count:4 | 4 |
1308 | else | - |
1309 | middle.setTop(top.bottom() + 1); executed: middle.setTop(top.bottom() + 1); Execution Count:1 | 1 |
1310 | middle.setLeft(qMin(top.left(), bottom.left())); executed (the execution status of this line is deduced): middle.setLeft(qMin(top.left(), bottom.left())); | - |
1311 | middle.setBottom(bottom.top() - 1); executed (the execution status of this line is deduced): middle.setBottom(bottom.top() - 1); | - |
1312 | middle.setRight(qMax(top.right(), bottom.right())); executed (the execution status of this line is deduced): middle.setRight(qMax(top.right(), bottom.right())); | - |
1313 | } executed: } Execution Count:5 | 5 |
1314 | } else { // TopToBottom executed: } Execution Count:7 | 7 |
1315 | QRect &left = first; executed (the execution status of this line is deduced): QRect &left = first; | - |
1316 | QRect &right = last; executed (the execution status of this line is deduced): QRect &right = last; | - |
1317 | if (left.center().x() > right.center().x()) evaluated: left.center().x() > right.center().x() yes Evaluation Count:1 | yes Evaluation Count:6 |
| 1-6 |
1318 | qSwap(left, right); executed: qSwap(left, right); Execution Count:1 | 1 |
1319 | | - |
1320 | int ch = contentsSize().height(); executed (the execution status of this line is deduced): int ch = contentsSize().height(); | - |
1321 | if (left.left() != right.left()) { evaluated: left.left() != right.left() yes Evaluation Count:2 | yes Evaluation Count:5 |
| 2-5 |
1322 | // left rectangle | - |
1323 | if (isRightToLeft()) partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1324 | left.setTop(0); never executed: left.setTop(0); | 0 |
1325 | else | - |
1326 | left.setBottom(ch); executed: left.setBottom(ch); Execution Count:2 | 2 |
1327 | | - |
1328 | // top rectangle | - |
1329 | if (isRightToLeft()) partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1330 | right.setBottom(ch); never executed: right.setBottom(ch); | 0 |
1331 | else | - |
1332 | right.setTop(0); executed: right.setTop(0); Execution Count:2 | 2 |
1333 | // only set middle if the | - |
1334 | middle.setTop(0); executed (the execution status of this line is deduced): middle.setTop(0); | - |
1335 | middle.setBottom(ch); executed (the execution status of this line is deduced): middle.setBottom(ch); | - |
1336 | if (gridSize().isValid() && !gridSize().isNull()) evaluated: gridSize().isValid() yes Evaluation Count:1 | yes Evaluation Count:1 |
partially evaluated: !gridSize().isNull() yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
1337 | middle.setLeft(left.left() + gridSize().width()); executed: middle.setLeft(left.left() + gridSize().width()); Execution Count:1 | 1 |
1338 | else | - |
1339 | middle.setLeft(left.right() + 1); executed: middle.setLeft(left.right() + 1); Execution Count:1 | 1 |
1340 | middle.setRight(right.left() - 1); executed (the execution status of this line is deduced): middle.setRight(right.left() - 1); | - |
1341 | } else if (left.bottom() < right.top()) { executed: } Execution Count:2 evaluated: left.bottom() < right.top() yes Evaluation Count:2 | yes Evaluation Count:3 |
| 2-3 |
1342 | left.setBottom(right.top() - 1); executed (the execution status of this line is deduced): left.setBottom(right.top() - 1); | - |
1343 | } else { executed: } Execution Count:2 | 2 |
1344 | right.setBottom(left.top() - 1); executed (the execution status of this line is deduced): right.setBottom(left.top() - 1); | - |
1345 | } executed: } Execution Count:3 | 3 |
1346 | } | - |
1347 | | - |
1348 | // do the selections | - |
1349 | QItemSelection topSelection = d->selection(first); executed (the execution status of this line is deduced): QItemSelection topSelection = d->selection(first); | - |
1350 | QItemSelection middleSelection = d->selection(middle); executed (the execution status of this line is deduced): QItemSelection middleSelection = d->selection(middle); | - |
1351 | QItemSelection bottomSelection = d->selection(last); executed (the execution status of this line is deduced): QItemSelection bottomSelection = d->selection(last); | - |
1352 | // merge | - |
1353 | selection.merge(topSelection, QItemSelectionModel::Select); executed (the execution status of this line is deduced): selection.merge(topSelection, QItemSelectionModel::Select); | - |
1354 | selection.merge(middleSelection, QItemSelectionModel::Select); executed (the execution status of this line is deduced): selection.merge(middleSelection, QItemSelectionModel::Select); | - |
1355 | selection.merge(bottomSelection, QItemSelectionModel::Select); executed (the execution status of this line is deduced): selection.merge(bottomSelection, QItemSelectionModel::Select); | - |
1356 | } executed: } Execution Count:14 | 14 |
1357 | } executed: } Execution Count:17 | 17 |
1358 | } | - |
1359 | | - |
1360 | d->selectionModel->select(selection, command); executed (the execution status of this line is deduced): d->selectionModel->select(selection, command); | - |
1361 | } executed: } Execution Count:658 | 658 |
1362 | | - |
1363 | /*! | - |
1364 | \reimp | - |
1365 | | - |
1366 | Since 4.7, the returned region only contains rectangles intersecting | - |
1367 | (or included in) the viewport. | - |
1368 | */ | - |
1369 | QRegion QListView::visualRegionForSelection(const QItemSelection &selection) const | - |
1370 | { | - |
1371 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1372 | // ### NOTE: this is a potential bottleneck in non-static mode | - |
1373 | int c = d->column; executed (the execution status of this line is deduced): int c = d->column; | - |
1374 | QRegion selectionRegion; executed (the execution status of this line is deduced): QRegion selectionRegion; | - |
1375 | const QRect &viewportRect = d->viewport->rect(); executed (the execution status of this line is deduced): const QRect &viewportRect = d->viewport->rect(); | - |
1376 | for (int i = 0; i < selection.count(); ++i) { evaluated: i < selection.count() yes Evaluation Count:1570 | yes Evaluation Count:1681 |
| 1570-1681 |
1377 | if (!selection.at(i).isValid()) partially evaluated: !selection.at(i).isValid() no Evaluation Count:0 | yes Evaluation Count:1570 |
| 0-1570 |
1378 | continue; never executed: continue; | 0 |
1379 | QModelIndex parent = selection.at(i).topLeft().parent(); executed (the execution status of this line is deduced): QModelIndex parent = selection.at(i).topLeft().parent(); | - |
1380 | //we only display the children of the root in a listview | - |
1381 | //we're not interested in the other model indexes | - |
1382 | if (parent != d->root) evaluated: parent != d->root yes Evaluation Count:13 | yes Evaluation Count:1557 |
| 13-1557 |
1383 | continue; executed: continue; Execution Count:13 | 13 |
1384 | int t = selection.at(i).topLeft().row(); executed (the execution status of this line is deduced): int t = selection.at(i).topLeft().row(); | - |
1385 | int b = selection.at(i).bottomRight().row(); executed (the execution status of this line is deduced): int b = selection.at(i).bottomRight().row(); | - |
1386 | if (d->viewMode == IconMode || d->isWrapping()) { // in non-static mode, we have to go through all selected items evaluated: d->viewMode == IconMode yes Evaluation Count:46 | yes Evaluation Count:1511 |
evaluated: d->isWrapping() yes Evaluation Count:51 | yes Evaluation Count:1460 |
| 46-1511 |
1387 | for (int r = t; r <= b; ++r) { evaluated: r <= b yes Evaluation Count:142 | yes Evaluation Count:97 |
| 97-142 |
1388 | const QRect &rect = visualRect(d->model->index(r, c, parent)); executed (the execution status of this line is deduced): const QRect &rect = visualRect(d->model->index(r, c, parent)); | - |
1389 | if (viewportRect.intersects(rect)) evaluated: viewportRect.intersects(rect) yes Evaluation Count:134 | yes Evaluation Count:8 |
| 8-134 |
1390 | selectionRegion += rect; executed: selectionRegion += rect; Execution Count:134 | 134 |
1391 | } executed: } Execution Count:142 | 142 |
1392 | } else { // in static mode, we can optimize a bit executed: } Execution Count:97 | 97 |
1393 | while (t <= b && d->isHidden(t)) ++t; never executed: ++t; partially evaluated: t <= b yes Evaluation Count:1460 | no Evaluation Count:0 |
partially evaluated: d->isHidden(t) no Evaluation Count:0 | yes Evaluation Count:1460 |
| 0-1460 |
1394 | while (b >= t && d->isHidden(b)) --b; never executed: --b; partially evaluated: b >= t yes Evaluation Count:1460 | no Evaluation Count:0 |
partially evaluated: d->isHidden(b) no Evaluation Count:0 | yes Evaluation Count:1460 |
| 0-1460 |
1395 | const QModelIndex top = d->model->index(t, c, parent); executed (the execution status of this line is deduced): const QModelIndex top = d->model->index(t, c, parent); | - |
1396 | const QModelIndex bottom = d->model->index(b, c, parent); executed (the execution status of this line is deduced): const QModelIndex bottom = d->model->index(b, c, parent); | - |
1397 | QRect rect(visualRect(top).topLeft(), executed (the execution status of this line is deduced): QRect rect(visualRect(top).topLeft(), | - |
1398 | visualRect(bottom).bottomRight()); executed (the execution status of this line is deduced): visualRect(bottom).bottomRight()); | - |
1399 | if (viewportRect.intersects(rect)) evaluated: viewportRect.intersects(rect) yes Evaluation Count:1225 | yes Evaluation Count:235 |
| 235-1225 |
1400 | selectionRegion += rect; executed: selectionRegion += rect; Execution Count:1225 | 1225 |
1401 | } executed: } Execution Count:1460 | 1460 |
1402 | } | - |
1403 | | - |
1404 | return selectionRegion; executed: return selectionRegion; Execution Count:1681 | 1681 |
1405 | } | - |
1406 | | - |
1407 | /*! | - |
1408 | \reimp | - |
1409 | */ | - |
1410 | QModelIndexList QListView::selectedIndexes() const | - |
1411 | { | - |
1412 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1413 | if (!d->selectionModel) evaluated: !d->selectionModel yes Evaluation Count:2 | yes Evaluation Count:1 |
| 1-2 |
1414 | return QModelIndexList(); executed: return QModelIndexList(); Execution Count:2 | 2 |
1415 | | - |
1416 | QModelIndexList viewSelected = d->selectionModel->selectedIndexes(); executed (the execution status of this line is deduced): QModelIndexList viewSelected = d->selectionModel->selectedIndexes(); | - |
1417 | for (int i = 0; i < viewSelected.count(); ++i) { partially evaluated: i < viewSelected.count() no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
1418 | const QModelIndex &index = viewSelected.at(i); never executed (the execution status of this line is deduced): const QModelIndex &index = viewSelected.at(i); | - |
1419 | if (!isIndexHidden(index) && index.parent() == d->root && index.column() == d->column) never evaluated: !isIndexHidden(index) never evaluated: index.parent() == d->root never evaluated: index.column() == d->column | 0 |
1420 | ++i; | 0 |
1421 | else | - |
1422 | viewSelected.removeAt(i); never executed: viewSelected.removeAt(i); | 0 |
1423 | } | - |
1424 | return viewSelected; executed: return viewSelected; Execution Count:1 | 1 |
1425 | } | - |
1426 | | - |
1427 | /*! | - |
1428 | \internal | - |
1429 | | - |
1430 | Layout the items according to the flow and wrapping properties. | - |
1431 | */ | - |
1432 | void QListView::doItemsLayout() | - |
1433 | { | - |
1434 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1435 | // showing the scroll bars will trigger a resize event, | - |
1436 | // so we set the state to expanding to avoid | - |
1437 | // triggering another layout | - |
1438 | QAbstractItemView::State oldState = state(); executed (the execution status of this line is deduced): QAbstractItemView::State oldState = state(); | - |
1439 | setState(ExpandingState); executed (the execution status of this line is deduced): setState(ExpandingState); | - |
1440 | if (d->model->columnCount(d->root) > 0) { // no columns means no contents evaluated: d->model->columnCount(d->root) > 0 yes Evaluation Count:1126 | yes Evaluation Count:39 |
| 39-1126 |
1441 | d->resetBatchStartRow(); executed (the execution status of this line is deduced): d->resetBatchStartRow(); | - |
1442 | if (layoutMode() == SinglePass) evaluated: layoutMode() == SinglePass yes Evaluation Count:1121 | yes Evaluation Count:5 |
| 5-1121 |
1443 | d->doItemsLayout(d->model->rowCount(d->root)); // layout everything executed: d->doItemsLayout(d->model->rowCount(d->root)); Execution Count:1121 | 1121 |
1444 | else if (!d->batchLayoutTimer.isActive()) { partially evaluated: !d->batchLayoutTimer.isActive() yes Evaluation Count:5 | no Evaluation Count:0 |
| 0-5 |
1445 | if (!d->doItemsLayout(d->batchSize)) // layout is done evaluated: !d->doItemsLayout(d->batchSize) yes Evaluation Count:4 | yes Evaluation Count:1 |
| 1-4 |
1446 | d->batchLayoutTimer.start(0, this); // do a new batch as fast as possible executed: d->batchLayoutTimer.start(0, this); Execution Count:4 | 4 |
1447 | } executed: } Execution Count:5 | 5 |
1448 | } | - |
1449 | QAbstractItemView::doItemsLayout(); executed (the execution status of this line is deduced): QAbstractItemView::doItemsLayout(); | - |
1450 | setState(oldState); // restoring the oldState executed (the execution status of this line is deduced): setState(oldState); | - |
1451 | } executed: } Execution Count:1165 | 1165 |
1452 | | - |
1453 | /*! | - |
1454 | \reimp | - |
1455 | */ | - |
1456 | void QListView::updateGeometries() | - |
1457 | { | - |
1458 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1459 | if (d->model->rowCount(d->root) <= 0 || d->model->columnCount(d->root) <= 0) { evaluated: d->model->rowCount(d->root) <= 0 yes Evaluation Count:286 | yes Evaluation Count:1275 |
partially evaluated: d->model->columnCount(d->root) <= 0 no Evaluation Count:0 | yes Evaluation Count:1275 |
| 0-1275 |
1460 | horizontalScrollBar()->setRange(0, 0); executed (the execution status of this line is deduced): horizontalScrollBar()->setRange(0, 0); | - |
1461 | verticalScrollBar()->setRange(0, 0); executed (the execution status of this line is deduced): verticalScrollBar()->setRange(0, 0); | - |
1462 | } else { executed: } Execution Count:286 | 286 |
1463 | QModelIndex index = d->model->index(0, d->column, d->root); executed (the execution status of this line is deduced): QModelIndex index = d->model->index(0, d->column, d->root); | - |
1464 | QStyleOptionViewItem option = d->viewOptions(); executed (the execution status of this line is deduced): QStyleOptionViewItem option = d->viewOptions(); | - |
1465 | QSize step = d->itemSize(option, index); executed (the execution status of this line is deduced): QSize step = d->itemSize(option, index); | - |
1466 | d->commonListView->updateHorizontalScrollBar(step); executed (the execution status of this line is deduced): d->commonListView->updateHorizontalScrollBar(step); | - |
1467 | d->commonListView->updateVerticalScrollBar(step); executed (the execution status of this line is deduced): d->commonListView->updateVerticalScrollBar(step); | - |
1468 | } executed: } Execution Count:1275 | 1275 |
1469 | | - |
1470 | QAbstractItemView::updateGeometries(); executed (the execution status of this line is deduced): QAbstractItemView::updateGeometries(); | - |
1471 | | - |
1472 | // if the scroll bars are turned off, we resize the contents to the viewport | - |
1473 | if (d->movement == Static && !d->isWrapping()) { evaluated: d->movement == Static yes Evaluation Count:1540 | yes Evaluation Count:21 |
evaluated: !d->isWrapping() yes Evaluation Count:1262 | yes Evaluation Count:278 |
| 21-1540 |
1474 | const QSize maxSize = maximumViewportSize(); executed (the execution status of this line is deduced): const QSize maxSize = maximumViewportSize(); | - |
1475 | if (d->flow == TopToBottom) { evaluated: d->flow == TopToBottom yes Evaluation Count:1215 | yes Evaluation Count:47 |
| 47-1215 |
1476 | if (horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) { evaluated: horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff yes Evaluation Count:52 | yes Evaluation Count:1163 |
| 52-1163 |
1477 | d->setContentsSize(maxSize.width(), contentsSize().height()); executed (the execution status of this line is deduced): d->setContentsSize(maxSize.width(), contentsSize().height()); | - |
1478 | horizontalScrollBar()->setRange(0, 0); // we see all the contents anyway executed (the execution status of this line is deduced): horizontalScrollBar()->setRange(0, 0); | - |
1479 | } executed: } Execution Count:52 | 52 |
1480 | } else { // LeftToRight executed: } Execution Count:1215 | 1215 |
1481 | if (verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) { partially evaluated: verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff no Evaluation Count:0 | yes Evaluation Count:47 |
| 0-47 |
1482 | d->setContentsSize(contentsSize().width(), maxSize.height()); never executed (the execution status of this line is deduced): d->setContentsSize(contentsSize().width(), maxSize.height()); | - |
1483 | verticalScrollBar()->setRange(0, 0); // we see all the contents anyway never executed (the execution status of this line is deduced): verticalScrollBar()->setRange(0, 0); | - |
1484 | } | 0 |
1485 | } executed: } Execution Count:47 | 47 |
1486 | } | - |
1487 | | - |
1488 | } executed: } Execution Count:1561 | 1561 |
1489 | | - |
1490 | /*! | - |
1491 | \reimp | - |
1492 | */ | - |
1493 | bool QListView::isIndexHidden(const QModelIndex &index) const | - |
1494 | { | - |
1495 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1496 | return (d->isHidden(index.row()) executed: return (d->isHidden(index.row()) && (index.parent() == d->root) && index.column() == d->column); Execution Count:4 | 4 |
1497 | && (index.parent() == d->root) executed: return (d->isHidden(index.row()) && (index.parent() == d->root) && index.column() == d->column); Execution Count:4 | 4 |
1498 | && index.column() == d->column); executed: return (d->isHidden(index.row()) && (index.parent() == d->root) && index.column() == d->column); Execution Count:4 | 4 |
1499 | } | - |
1500 | | - |
1501 | /*! | - |
1502 | \property QListView::modelColumn | - |
1503 | \brief the column in the model that is visible | - |
1504 | | - |
1505 | By default, this property contains 0, indicating that the first | - |
1506 | column in the model will be shown. | - |
1507 | */ | - |
1508 | void QListView::setModelColumn(int column) | - |
1509 | { | - |
1510 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1511 | if (column < 0 || column >= d->model->columnCount(d->root)) evaluated: column < 0 yes Evaluation Count:2 | yes Evaluation Count:65 |
evaluated: column >= d->model->columnCount(d->root) yes Evaluation Count:29 | yes Evaluation Count:36 |
| 2-65 |
1512 | return; executed: return; Execution Count:31 | 31 |
1513 | d->column = column; executed (the execution status of this line is deduced): d->column = column; | - |
1514 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
1515 | } executed: } Execution Count:36 | 36 |
1516 | | - |
1517 | int QListView::modelColumn() const | - |
1518 | { | - |
1519 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1520 | return d->column; executed: return d->column; Execution Count:9 | 9 |
1521 | } | - |
1522 | | - |
1523 | /*! | - |
1524 | \property QListView::uniformItemSizes | - |
1525 | \brief whether all items in the listview have the same size | - |
1526 | \since 4.1 | - |
1527 | | - |
1528 | This property should only be set to true if it is guaranteed that all items | - |
1529 | in the view have the same size. This enables the view to do some | - |
1530 | optimizations for performance purposes. | - |
1531 | | - |
1532 | By default, this property is false. | - |
1533 | */ | - |
1534 | void QListView::setUniformItemSizes(bool enable) | - |
1535 | { | - |
1536 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1537 | d->uniformItemSizes = enable; executed (the execution status of this line is deduced): d->uniformItemSizes = enable; | - |
1538 | } executed: } Execution Count:337 | 337 |
1539 | | - |
1540 | bool QListView::uniformItemSizes() const | - |
1541 | { | - |
1542 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1543 | return d->uniformItemSizes; executed: return d->uniformItemSizes; Execution Count:2 | 2 |
1544 | } | - |
1545 | | - |
1546 | /*! | - |
1547 | \property QListView::wordWrap | - |
1548 | \brief the item text word-wrapping policy | - |
1549 | \since 4.2 | - |
1550 | | - |
1551 | If this property is true then the item text is wrapped where | - |
1552 | necessary at word-breaks; otherwise it is not wrapped at all. | - |
1553 | This property is false by default. | - |
1554 | | - |
1555 | Please note that even if wrapping is enabled, the cell will not be | - |
1556 | expanded to make room for the text. It will print ellipsis for | - |
1557 | text that cannot be shown, according to the view's | - |
1558 | \l{QAbstractItemView::}{textElideMode}. | - |
1559 | */ | - |
1560 | void QListView::setWordWrap(bool on) | - |
1561 | { | - |
1562 | Q_D(QListView); executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1563 | if (d->wrapItemText == on) evaluated: d->wrapItemText == on yes Evaluation Count:1 | yes Evaluation Count:4 |
| 1-4 |
1564 | return; executed: return; Execution Count:1 | 1 |
1565 | d->wrapItemText = on; executed (the execution status of this line is deduced): d->wrapItemText = on; | - |
1566 | d->doDelayedItemsLayout(); executed (the execution status of this line is deduced): d->doDelayedItemsLayout(); | - |
1567 | } executed: } Execution Count:4 | 4 |
1568 | | - |
1569 | bool QListView::wordWrap() const | - |
1570 | { | - |
1571 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1572 | return d->wrapItemText; executed: return d->wrapItemText; Execution Count:2 | 2 |
1573 | } | - |
1574 | | - |
1575 | /*! | - |
1576 | \property QListView::selectionRectVisible | - |
1577 | \brief if the selection rectangle should be visible | - |
1578 | \since 4.3 | - |
1579 | | - |
1580 | If this property is true then the selection rectangle is visible; | - |
1581 | otherwise it will be hidden. | - |
1582 | | - |
1583 | \note The selection rectangle will only be visible if the selection mode | - |
1584 | is in a mode where more than one item can be selected; i.e., it will not | - |
1585 | draw a selection rectangle if the selection mode is | - |
1586 | QAbstractItemView::SingleSelection. | - |
1587 | | - |
1588 | By default, this property is false. | - |
1589 | */ | - |
1590 | void QListView::setSelectionRectVisible(bool show) | - |
1591 | { | - |
1592 | Q_D(QListView); never executed (the execution status of this line is deduced): QListViewPrivate * const d = d_func(); | - |
1593 | d->modeProperties |= uint(QListViewPrivate::SelectionRectVisible); never executed (the execution status of this line is deduced): d->modeProperties |= uint(QListViewPrivate::SelectionRectVisible); | - |
1594 | d->setSelectionRectVisible(show); never executed (the execution status of this line is deduced): d->setSelectionRectVisible(show); | - |
1595 | } | 0 |
1596 | | - |
1597 | bool QListView::isSelectionRectVisible() const | - |
1598 | { | - |
1599 | Q_D(const QListView); never executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
1600 | return d->isSelectionRectVisible(); never executed: return d->isSelectionRectVisible(); | 0 |
1601 | } | - |
1602 | | - |
1603 | /*! | - |
1604 | \reimp | - |
1605 | */ | - |
1606 | bool QListView::event(QEvent *e) | - |
1607 | { | - |
1608 | return QAbstractItemView::event(e); executed: return QAbstractItemView::event(e); Execution Count:15078 | 15078 |
1609 | } | - |
1610 | | - |
1611 | /* | - |
1612 | * private object implementation | - |
1613 | */ | - |
1614 | | - |
1615 | QListViewPrivate::QListViewPrivate() | - |
1616 | : QAbstractItemViewPrivate(), | - |
1617 | commonListView(0), | - |
1618 | wrap(false), | - |
1619 | space(0), | - |
1620 | flow(QListView::TopToBottom), | - |
1621 | movement(QListView::Static), | - |
1622 | resizeMode(QListView::Fixed), | - |
1623 | layoutMode(QListView::SinglePass), | - |
1624 | viewMode(QListView::ListMode), | - |
1625 | modeProperties(0), | - |
1626 | column(0), | - |
1627 | uniformItemSizes(false), | - |
1628 | batchSize(100), | - |
1629 | showElasticBand(false) | - |
1630 | { | - |
1631 | } executed: } Execution Count:1008 | 1008 |
1632 | | - |
1633 | QListViewPrivate::~QListViewPrivate() | - |
1634 | { | - |
1635 | delete commonListView; executed (the execution status of this line is deduced): delete commonListView; | - |
1636 | } executed: } Execution Count:902 | 902 |
1637 | | - |
1638 | void QListViewPrivate::clear() | - |
1639 | { | - |
1640 | // initialization of data structs | - |
1641 | cachedItemSize = QSize(); executed (the execution status of this line is deduced): cachedItemSize = QSize(); | - |
1642 | commonListView->clear(); executed (the execution status of this line is deduced): commonListView->clear(); | - |
1643 | } executed: } Execution Count:22471 | 22471 |
1644 | | - |
1645 | void QListViewPrivate::prepareItemsLayout() | - |
1646 | { | - |
1647 | Q_Q(QListView); executed (the execution status of this line is deduced): QListView * const q = q_func(); | - |
1648 | clear(); executed (the execution status of this line is deduced): clear(); | - |
1649 | | - |
1650 | //take the size as if there were scrollbar in order to prevent scrollbar to blink | - |
1651 | layoutBounds = QRect(QPoint(), q->maximumViewportSize()); executed (the execution status of this line is deduced): layoutBounds = QRect(QPoint(), q->maximumViewportSize()); | - |
1652 | | - |
1653 | int frameAroundContents = 0; executed (the execution status of this line is deduced): int frameAroundContents = 0; | - |
1654 | if (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents)) partially evaluated: q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents) no Evaluation Count:0 | yes Evaluation Count:1126 |
| 0-1126 |
1655 | frameAroundContents = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth) * 2; never executed: frameAroundContents = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth) * 2; | 0 |
1656 | | - |
1657 | // maximumViewportSize() already takes scrollbar into account if policy is | - |
1658 | // Qt::ScrollBarAlwaysOn but scrollbar extent must be deduced if policy | - |
1659 | // is Qt::ScrollBarAsNeeded | - |
1660 | int verticalMargin = vbarpolicy==Qt::ScrollBarAsNeeded evaluated: vbarpolicy==Qt::ScrollBarAsNeeded yes Evaluation Count:1114 | yes Evaluation Count:12 |
| 12-1114 |
1661 | ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, vbar) + frameAroundContents executed (the execution status of this line is deduced): ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, vbar) + frameAroundContents | - |
1662 | : 0; executed (the execution status of this line is deduced): : 0; | - |
1663 | int horizontalMargin = hbarpolicy==Qt::ScrollBarAsNeeded evaluated: hbarpolicy==Qt::ScrollBarAsNeeded yes Evaluation Count:1071 | yes Evaluation Count:55 |
| 55-1071 |
1664 | ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, hbar) + frameAroundContents executed (the execution status of this line is deduced): ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, hbar) + frameAroundContents | - |
1665 | : 0; executed (the execution status of this line is deduced): : 0; | - |
1666 | | - |
1667 | layoutBounds.adjust(0, 0, -verticalMargin, -horizontalMargin); executed (the execution status of this line is deduced): layoutBounds.adjust(0, 0, -verticalMargin, -horizontalMargin); | - |
1668 | | - |
1669 | int rowCount = model->columnCount(root) <= 0 ? 0 : model->rowCount(root); partially evaluated: model->columnCount(root) <= 0 no Evaluation Count:0 | yes Evaluation Count:1126 |
| 0-1126 |
1670 | commonListView->setRowCount(rowCount); executed (the execution status of this line is deduced): commonListView->setRowCount(rowCount); | - |
1671 | } executed: } Execution Count:1126 | 1126 |
1672 | | - |
1673 | /*! | - |
1674 | \internal | - |
1675 | */ | - |
1676 | bool QListViewPrivate::doItemsLayout(int delta) | - |
1677 | { | - |
1678 | int max = model->rowCount(root) - 1; executed (the execution status of this line is deduced): int max = model->rowCount(root) - 1; | - |
1679 | int first = batchStartRow(); executed (the execution status of this line is deduced): int first = batchStartRow(); | - |
1680 | int last = qMin(first + delta - 1, max); executed (the execution status of this line is deduced): int last = qMin(first + delta - 1, max); | - |
1681 | | - |
1682 | if (first == 0) { evaluated: first == 0 yes Evaluation Count:1126 | yes Evaluation Count:4 |
| 4-1126 |
1683 | layoutChildren(); // make sure the viewport has the right size executed (the execution status of this line is deduced): layoutChildren(); | - |
1684 | prepareItemsLayout(); executed (the execution status of this line is deduced): prepareItemsLayout(); | - |
1685 | } executed: } Execution Count:1126 | 1126 |
1686 | | - |
1687 | if (max < 0 || last < first) { evaluated: max < 0 yes Evaluation Count:175 | yes Evaluation Count:955 |
partially evaluated: last < first no Evaluation Count:0 | yes Evaluation Count:955 |
| 0-955 |
1688 | return true; // nothing to do executed: return true; Execution Count:175 | 175 |
1689 | } | - |
1690 | | - |
1691 | QListViewLayoutInfo info; executed (the execution status of this line is deduced): QListViewLayoutInfo info; | - |
1692 | info.bounds = layoutBounds; executed (the execution status of this line is deduced): info.bounds = layoutBounds; | - |
1693 | info.grid = gridSize(); executed (the execution status of this line is deduced): info.grid = gridSize(); | - |
1694 | info.spacing = (info.grid.isValid() ? 0 : spacing()); evaluated: info.grid.isValid() yes Evaluation Count:10 | yes Evaluation Count:945 |
| 10-945 |
1695 | info.first = first; executed (the execution status of this line is deduced): info.first = first; | - |
1696 | info.last = last; executed (the execution status of this line is deduced): info.last = last; | - |
1697 | info.wrap = isWrapping(); executed (the execution status of this line is deduced): info.wrap = isWrapping(); | - |
1698 | info.flow = flow; executed (the execution status of this line is deduced): info.flow = flow; | - |
1699 | info.max = max; executed (the execution status of this line is deduced): info.max = max; | - |
1700 | | - |
1701 | return commonListView->doBatchedItemLayout(info, max); executed: return commonListView->doBatchedItemLayout(info, max); Execution Count:955 | 955 |
1702 | } | - |
1703 | | - |
1704 | QListViewItem QListViewPrivate::indexToListViewItem(const QModelIndex &index) const | - |
1705 | { | - |
1706 | if (!index.isValid() || isHidden(index.row())) partially evaluated: !index.isValid() no Evaluation Count:0 | yes Evaluation Count:20110 |
partially evaluated: isHidden(index.row()) no Evaluation Count:0 | yes Evaluation Count:20110 |
| 0-20110 |
1707 | return QListViewItem(); never executed: return QListViewItem(); | 0 |
1708 | | - |
1709 | return commonListView->indexToListViewItem(index); executed: return commonListView->indexToListViewItem(index); Execution Count:20110 | 20110 |
1710 | } | - |
1711 | | - |
1712 | QRect QListViewPrivate::mapToViewport(const QRect &rect, bool extend) const | - |
1713 | { | - |
1714 | Q_Q(const QListView); executed (the execution status of this line is deduced): const QListView * const q = q_func(); | - |
1715 | if (!rect.isValid()) evaluated: !rect.isValid() yes Evaluation Count:5435 | yes Evaluation Count:18702 |
| 5435-18702 |
1716 | return rect; executed: return rect; Execution Count:5435 | 5435 |
1717 | | - |
1718 | QRect result = extend ? commonListView->mapToViewport(rect) : rect; partially evaluated: extend yes Evaluation Count:18702 | no Evaluation Count:0 |
| 0-18702 |
1719 | int dx = -q->horizontalOffset(); executed (the execution status of this line is deduced): int dx = -q->horizontalOffset(); | - |
1720 | int dy = -q->verticalOffset(); executed (the execution status of this line is deduced): int dy = -q->verticalOffset(); | - |
1721 | return result.adjusted(dx, dy, dx, dy); executed: return result.adjusted(dx, dy, dx, dy); Execution Count:18702 | 18702 |
1722 | } | - |
1723 | | - |
1724 | QModelIndex QListViewPrivate::closestIndex(const QRect &target, | - |
1725 | const QVector<QModelIndex> &candidates) const | - |
1726 | { | - |
1727 | int distance = 0; executed (the execution status of this line is deduced): int distance = 0; | - |
1728 | int shortest = INT_MAX; executed (the execution status of this line is deduced): int shortest = 2147483647; | - |
1729 | QModelIndex closest; executed (the execution status of this line is deduced): QModelIndex closest; | - |
1730 | QVector<QModelIndex>::const_iterator it = candidates.begin(); executed (the execution status of this line is deduced): QVector<QModelIndex>::const_iterator it = candidates.begin(); | - |
1731 | | - |
1732 | for (; it != candidates.end(); ++it) { evaluated: it != candidates.end() yes Evaluation Count:472 | yes Evaluation Count:427 |
| 427-472 |
1733 | if (!(*it).isValid()) partially evaluated: !(*it).isValid() no Evaluation Count:0 | yes Evaluation Count:472 |
| 0-472 |
1734 | continue; never executed: continue; | 0 |
1735 | | - |
1736 | const QRect indexRect = indexToListViewItem(*it).rect(); executed (the execution status of this line is deduced): const QRect indexRect = indexToListViewItem(*it).rect(); | - |
1737 | | - |
1738 | //if the center x (or y) position of an item is included in the rect of the other item, | - |
1739 | //we define the distance between them as the difference in x (or y) of their respective center. | - |
1740 | // Otherwise, we use the nahattan length between the 2 items | - |
1741 | if ((target.center().x() >= indexRect.x() && target.center().x() < indexRect.right()) evaluated: target.center().x() >= indexRect.x() yes Evaluation Count:375 | yes Evaluation Count:97 |
evaluated: target.center().x() < indexRect.right() yes Evaluation Count:263 | yes Evaluation Count:112 |
| 97-375 |
1742 | || (indexRect.center().x() >= target.x() && indexRect.center().x() < target.right())) { evaluated: indexRect.center().x() >= target.x() yes Evaluation Count:113 | yes Evaluation Count:96 |
evaluated: indexRect.center().x() < target.right() yes Evaluation Count:16 | yes Evaluation Count:97 |
| 16-113 |
1743 | //one item's center is at the vertical of the other | - |
1744 | distance = qAbs(indexRect.center().y() - target.center().y()); executed (the execution status of this line is deduced): distance = qAbs(indexRect.center().y() - target.center().y()); | - |
1745 | } else if ((target.center().y() >= indexRect.y() && target.center().y() < indexRect.bottom()) executed: } Execution Count:279 evaluated: target.center().y() >= indexRect.y() yes Evaluation Count:192 | yes Evaluation Count:1 |
evaluated: target.center().y() < indexRect.bottom() yes Evaluation Count:184 | yes Evaluation Count:8 |
| 1-279 |
1746 | || (indexRect.center().y() >= target.y() && indexRect.center().y() < target.bottom())) { partially evaluated: indexRect.center().y() >= target.y() yes Evaluation Count:9 | no Evaluation Count:0 |
evaluated: indexRect.center().y() < target.bottom() yes Evaluation Count:8 | yes Evaluation Count:1 |
| 0-9 |
1747 | //one item's center is at the vertical of the other | - |
1748 | distance = qAbs(indexRect.center().x() - target.center().x()); executed (the execution status of this line is deduced): distance = qAbs(indexRect.center().x() - target.center().x()); | - |
1749 | } else { executed: } Execution Count:192 | 192 |
1750 | distance = (indexRect.center() - target.center()).manhattanLength(); executed (the execution status of this line is deduced): distance = (indexRect.center() - target.center()).manhattanLength(); | - |
1751 | } executed: } Execution Count:1 | 1 |
1752 | if (distance < shortest) { evaluated: distance < shortest yes Evaluation Count:439 | yes Evaluation Count:33 |
| 33-439 |
1753 | shortest = distance; executed (the execution status of this line is deduced): shortest = distance; | - |
1754 | closest = *it; executed (the execution status of this line is deduced): closest = *it; | - |
1755 | } executed: } Execution Count:439 | 439 |
1756 | } executed: } Execution Count:472 | 472 |
1757 | return closest; executed: return closest; Execution Count:427 | 427 |
1758 | } | - |
1759 | | - |
1760 | QSize QListViewPrivate::itemSize(const QStyleOptionViewItem &option, const QModelIndex &index) const | - |
1761 | { | - |
1762 | if (!uniformItemSizes) { evaluated: !uniformItemSizes yes Evaluation Count:55543 | yes Evaluation Count:857 |
| 857-55543 |
1763 | const QAbstractItemDelegate *delegate = delegateForIndex(index); executed (the execution status of this line is deduced): const QAbstractItemDelegate *delegate = delegateForIndex(index); | - |
1764 | return delegate ? delegate->sizeHint(option, index) : QSize(); executed: return delegate ? delegate->sizeHint(option, index) : QSize(); Execution Count:55543 | 55543 |
1765 | } | - |
1766 | if (!cachedItemSize.isValid()) { // the last item is probaly the largest, so we use its size evaluated: !cachedItemSize.isValid() yes Evaluation Count:105 | yes Evaluation Count:752 |
| 105-752 |
1767 | int row = model->rowCount(root) - 1; executed (the execution status of this line is deduced): int row = model->rowCount(root) - 1; | - |
1768 | QModelIndex sample = model->index(row, column, root); executed (the execution status of this line is deduced): QModelIndex sample = model->index(row, column, root); | - |
1769 | const QAbstractItemDelegate *delegate = delegateForIndex(sample); executed (the execution status of this line is deduced): const QAbstractItemDelegate *delegate = delegateForIndex(sample); | - |
1770 | cachedItemSize = delegate ? delegate->sizeHint(option, sample) : QSize(); partially evaluated: delegate yes Evaluation Count:105 | no Evaluation Count:0 |
| 0-105 |
1771 | } executed: } Execution Count:105 | 105 |
1772 | return cachedItemSize; executed: return cachedItemSize; Execution Count:857 | 857 |
1773 | } | - |
1774 | | - |
1775 | QItemSelection QListViewPrivate::selection(const QRect &rect) const | - |
1776 | { | - |
1777 | QItemSelection selection; executed (the execution status of this line is deduced): QItemSelection selection; | - |
1778 | QModelIndex tl, br; executed (the execution status of this line is deduced): QModelIndex tl, br; | - |
1779 | const QVector<QModelIndex> intersectVector = intersectingSet(rect); executed (the execution status of this line is deduced): const QVector<QModelIndex> intersectVector = intersectingSet(rect); | - |
1780 | QVector<QModelIndex>::const_iterator it = intersectVector.begin(); executed (the execution status of this line is deduced): QVector<QModelIndex>::const_iterator it = intersectVector.begin(); | - |
1781 | for (; it != intersectVector.end(); ++it) { evaluated: it != intersectVector.end() yes Evaluation Count:89 | yes Evaluation Count:45 |
| 45-89 |
1782 | if (!tl.isValid() && !br.isValid()) { evaluated: !tl.isValid() yes Evaluation Count:33 | yes Evaluation Count:56 |
partially evaluated: !br.isValid() yes Evaluation Count:33 | no Evaluation Count:0 |
| 0-56 |
1783 | tl = br = *it; executed (the execution status of this line is deduced): tl = br = *it; | - |
1784 | } else if ((*it).row() == (tl.row() - 1)) { executed: } Execution Count:33 partially evaluated: (*it).row() == (tl.row() - 1) no Evaluation Count:0 | yes Evaluation Count:56 |
| 0-56 |
1785 | tl = *it; // expand current range never executed (the execution status of this line is deduced): tl = *it; | - |
1786 | } else if ((*it).row() == (br.row() + 1)) { never executed: } partially evaluated: (*it).row() == (br.row() + 1) yes Evaluation Count:56 | no Evaluation Count:0 |
| 0-56 |
1787 | br = (*it); // expand current range executed (the execution status of this line is deduced): br = (*it); | - |
1788 | } else { executed: } Execution Count:56 | 56 |
1789 | selection.select(tl, br); // select current range never executed (the execution status of this line is deduced): selection.select(tl, br); | - |
1790 | tl = br = *it; // start new range never executed (the execution status of this line is deduced): tl = br = *it; | - |
1791 | } | 0 |
1792 | } | - |
1793 | | - |
1794 | if (tl.isValid() && br.isValid()) evaluated: tl.isValid() yes Evaluation Count:33 | yes Evaluation Count:12 |
partially evaluated: br.isValid() yes Evaluation Count:33 | no Evaluation Count:0 |
| 0-33 |
1795 | selection.select(tl, br); executed: selection.select(tl, br); Execution Count:33 | 33 |
1796 | else if (tl.isValid()) partially evaluated: tl.isValid() no Evaluation Count:0 | yes Evaluation Count:12 |
| 0-12 |
1797 | selection.select(tl, tl); never executed: selection.select(tl, tl); | 0 |
1798 | else if (br.isValid()) partially evaluated: br.isValid() no Evaluation Count:0 | yes Evaluation Count:12 |
| 0-12 |
1799 | selection.select(br, br); never executed: selection.select(br, br); | 0 |
1800 | | - |
1801 | return selection; executed: return selection; Execution Count:45 | 45 |
1802 | } | - |
1803 | | - |
1804 | #ifndef QT_NO_DRAGANDDROP | - |
1805 | QAbstractItemView::DropIndicatorPosition QListViewPrivate::position(const QPoint &pos, const QRect &rect, const QModelIndex &idx) const | - |
1806 | { | - |
1807 | if (viewMode == QListView::ListMode && flow == QListView::LeftToRight) never evaluated: viewMode == QListView::ListMode never evaluated: flow == QListView::LeftToRight | 0 |
1808 | return static_cast<QListModeViewBase *>(commonListView)->position(pos, rect, idx); never executed: return static_cast<QListModeViewBase *>(commonListView)->position(pos, rect, idx); | 0 |
1809 | else | - |
1810 | return QAbstractItemViewPrivate::position(pos, rect, idx); never executed: return QAbstractItemViewPrivate::position(pos, rect, idx); | 0 |
1811 | } | - |
1812 | | - |
1813 | bool QListViewPrivate::dropOn(QDropEvent *event, int *dropRow, int *dropCol, QModelIndex *dropIndex) | - |
1814 | { | - |
1815 | if (viewMode == QListView::ListMode && flow == QListView::LeftToRight) never evaluated: viewMode == QListView::ListMode never evaluated: flow == QListView::LeftToRight | 0 |
1816 | return static_cast<QListModeViewBase *>(commonListView)->dropOn(event, dropRow, dropCol, dropIndex); never executed: return static_cast<QListModeViewBase *>(commonListView)->dropOn(event, dropRow, dropCol, dropIndex); | 0 |
1817 | else | - |
1818 | return QAbstractItemViewPrivate::dropOn(event, dropRow, dropCol, dropIndex); never executed: return QAbstractItemViewPrivate::dropOn(event, dropRow, dropCol, dropIndex); | 0 |
1819 | } | - |
1820 | #endif | - |
1821 | | - |
1822 | /* | - |
1823 | * Common ListView Implementation | - |
1824 | */ | - |
1825 | | - |
1826 | void QCommonListViewBase::appendHiddenRow(int row) | - |
1827 | { | - |
1828 | dd->hiddenRows.insert(dd->model->index(row, 0, qq->rootIndex())); executed (the execution status of this line is deduced): dd->hiddenRows.insert(dd->model->index(row, 0, qq->rootIndex())); | - |
1829 | } executed: } Execution Count:637 | 637 |
1830 | | - |
1831 | void QCommonListViewBase::removeHiddenRow(int row) | - |
1832 | { | - |
1833 | dd->hiddenRows.remove(dd->model->index(row, 0, qq->rootIndex())); executed (the execution status of this line is deduced): dd->hiddenRows.remove(dd->model->index(row, 0, qq->rootIndex())); | - |
1834 | } executed: } Execution Count:5 | 5 |
1835 | | - |
1836 | void QCommonListViewBase::updateHorizontalScrollBar(const QSize &step) | - |
1837 | { | - |
1838 | horizontalScrollBar()->setSingleStep(step.width() + spacing()); executed (the execution status of this line is deduced): horizontalScrollBar()->setSingleStep(step.width() + spacing()); | - |
1839 | horizontalScrollBar()->setPageStep(viewport()->width()); executed (the execution status of this line is deduced): horizontalScrollBar()->setPageStep(viewport()->width()); | - |
1840 | horizontalScrollBar()->setRange(0, contentsSize.width() - viewport()->width()); executed (the execution status of this line is deduced): horizontalScrollBar()->setRange(0, contentsSize.width() - viewport()->width()); | - |
1841 | } executed: } Execution Count:1121 | 1121 |
1842 | | - |
1843 | void QCommonListViewBase::updateVerticalScrollBar(const QSize &step) | - |
1844 | { | - |
1845 | verticalScrollBar()->setSingleStep(step.height() + spacing()); executed (the execution status of this line is deduced): verticalScrollBar()->setSingleStep(step.height() + spacing()); | - |
1846 | verticalScrollBar()->setPageStep(viewport()->height()); executed (the execution status of this line is deduced): verticalScrollBar()->setPageStep(viewport()->height()); | - |
1847 | verticalScrollBar()->setRange(0, contentsSize.height() - viewport()->height()); executed (the execution status of this line is deduced): verticalScrollBar()->setRange(0, contentsSize.height() - viewport()->height()); | - |
1848 | } executed: } Execution Count:189 | 189 |
1849 | | - |
1850 | void QCommonListViewBase::scrollContentsBy(int dx, int dy, bool /*scrollElasticBand*/) | - |
1851 | { | - |
1852 | dd->scrollContentsBy(isRightToLeft() ? -dx : dx, dy); executed (the execution status of this line is deduced): dd->scrollContentsBy(isRightToLeft() ? -dx : dx, dy); | - |
1853 | } executed: } Execution Count:445 | 445 |
1854 | | - |
1855 | int QCommonListViewBase::verticalScrollToValue(int /*index*/, QListView::ScrollHint hint, | - |
1856 | bool above, bool below, const QRect &area, const QRect &rect) const | - |
1857 | { | - |
1858 | int verticalValue = verticalScrollBar()->value(); executed (the execution status of this line is deduced): int verticalValue = verticalScrollBar()->value(); | - |
1859 | QRect adjusted = rect.adjusted(-spacing(), -spacing(), spacing(), spacing()); executed (the execution status of this line is deduced): QRect adjusted = rect.adjusted(-spacing(), -spacing(), spacing(), spacing()); | - |
1860 | if (hint == QListView::PositionAtTop || above) partially evaluated: hint == QListView::PositionAtTop no Evaluation Count:0 | yes Evaluation Count:36 |
evaluated: above yes Evaluation Count:5 | yes Evaluation Count:31 |
| 0-36 |
1861 | verticalValue += adjusted.top(); executed: verticalValue += adjusted.top(); Execution Count:5 | 5 |
1862 | else if (hint == QListView::PositionAtBottom || below) partially evaluated: hint == QListView::PositionAtBottom no Evaluation Count:0 | yes Evaluation Count:31 |
partially evaluated: below yes Evaluation Count:31 | no Evaluation Count:0 |
| 0-31 |
1863 | verticalValue += qMin(adjusted.top(), adjusted.bottom() - area.height() + 1); executed: verticalValue += qMin(adjusted.top(), adjusted.bottom() - area.height() + 1); Execution Count:31 | 31 |
1864 | else if (hint == QListView::PositionAtCenter) never evaluated: hint == QListView::PositionAtCenter | 0 |
1865 | verticalValue += adjusted.top() - ((area.height() - adjusted.height()) / 2); never executed: verticalValue += adjusted.top() - ((area.height() - adjusted.height()) / 2); | 0 |
1866 | return verticalValue; executed: return verticalValue; Execution Count:36 | 36 |
1867 | } | - |
1868 | | - |
1869 | int QCommonListViewBase::horizontalOffset() const | - |
1870 | { | - |
1871 | return (isRightToLeft() ? horizontalScrollBar()->maximum() - horizontalScrollBar()->value() : horizontalScrollBar()->value()); executed: return (isRightToLeft() ? horizontalScrollBar()->maximum() - horizontalScrollBar()->value() : horizontalScrollBar()->value()); Execution Count:17361 | 17361 |
1872 | } | - |
1873 | | - |
1874 | int QCommonListViewBase::horizontalScrollToValue(const int /*index*/, QListView::ScrollHint hint, | - |
1875 | bool leftOf, bool rightOf, const QRect &area, const QRect &rect) const | - |
1876 | { | - |
1877 | int horizontalValue = horizontalScrollBar()->value(); executed (the execution status of this line is deduced): int horizontalValue = horizontalScrollBar()->value(); | - |
1878 | if (isRightToLeft()) { partially evaluated: isRightToLeft() no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1879 | if (hint == QListView::PositionAtCenter) { never evaluated: hint == QListView::PositionAtCenter | 0 |
1880 | horizontalValue += ((area.width() - rect.width()) / 2) - rect.left(); never executed (the execution status of this line is deduced): horizontalValue += ((area.width() - rect.width()) / 2) - rect.left(); | - |
1881 | } else { | 0 |
1882 | if (leftOf) | 0 |
1883 | horizontalValue -= rect.left(); never executed: horizontalValue -= rect.left(); | 0 |
1884 | else if (rightOf) | 0 |
1885 | horizontalValue += qMin(rect.left(), area.width() - rect.right()); never executed: horizontalValue += qMin(rect.left(), area.width() - rect.right()); | 0 |
1886 | } | - |
1887 | } else { | - |
1888 | if (hint == QListView::PositionAtCenter) { partially evaluated: hint == QListView::PositionAtCenter no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1889 | horizontalValue += rect.left() - ((area.width()- rect.width()) / 2); never executed (the execution status of this line is deduced): horizontalValue += rect.left() - ((area.width()- rect.width()) / 2); | - |
1890 | } else { | 0 |
1891 | if (leftOf) partially evaluated: leftOf no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1892 | horizontalValue += rect.left(); never executed: horizontalValue += rect.left(); | 0 |
1893 | else if (rightOf) partially evaluated: rightOf no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1894 | horizontalValue += qMin(rect.left(), rect.right() - area.width()); never executed: horizontalValue += qMin(rect.left(), rect.right() - area.width()); | 0 |
1895 | } | - |
1896 | } | - |
1897 | return horizontalValue; executed: return horizontalValue; Execution Count:2 | 2 |
1898 | } | - |
1899 | | - |
1900 | /* | - |
1901 | * ListMode ListView Implementation | - |
1902 | */ | - |
1903 | | - |
1904 | #ifndef QT_NO_DRAGANDDROP | - |
1905 | void QListModeViewBase::paintDragDrop(QPainter *painter) | - |
1906 | { | - |
1907 | // FIXME: Until the we can provide a proper drop indicator | - |
1908 | // in IconMode, it makes no sense to show it | - |
1909 | dd->paintDropIndicator(painter); executed (the execution status of this line is deduced): dd->paintDropIndicator(painter); | - |
1910 | } executed: } Execution Count:1018 | 1018 |
1911 | | - |
1912 | QAbstractItemView::DropIndicatorPosition QListModeViewBase::position(const QPoint &pos, const QRect &rect, const QModelIndex &index) const | - |
1913 | { | - |
1914 | QAbstractItemView::DropIndicatorPosition r = QAbstractItemView::OnViewport; never executed (the execution status of this line is deduced): QAbstractItemView::DropIndicatorPosition r = QAbstractItemView::OnViewport; | - |
1915 | if (!dd->overwrite) { never evaluated: !dd->overwrite | 0 |
1916 | const int margin = 2; never executed (the execution status of this line is deduced): const int margin = 2; | - |
1917 | if (pos.x() - rect.left() < margin) { never evaluated: pos.x() - rect.left() < margin | 0 |
1918 | r = QAbstractItemView::AboveItem; // Visually, on the left never executed (the execution status of this line is deduced): r = QAbstractItemView::AboveItem; | - |
1919 | } else if (rect.right() - pos.x() < margin) { never executed: } never evaluated: rect.right() - pos.x() < margin | 0 |
1920 | r = QAbstractItemView::BelowItem; // Visually, on the right never executed (the execution status of this line is deduced): r = QAbstractItemView::BelowItem; | - |
1921 | } else if (rect.contains(pos, true)) { never executed: } never evaluated: rect.contains(pos, true) | 0 |
1922 | r = QAbstractItemView::OnItem; never executed (the execution status of this line is deduced): r = QAbstractItemView::OnItem; | - |
1923 | } | 0 |
1924 | } else { | - |
1925 | QRect touchingRect = rect; never executed (the execution status of this line is deduced): QRect touchingRect = rect; | - |
1926 | touchingRect.adjust(-1, -1, 1, 1); never executed (the execution status of this line is deduced): touchingRect.adjust(-1, -1, 1, 1); | - |
1927 | if (touchingRect.contains(pos, false)) { never evaluated: touchingRect.contains(pos, false) | 0 |
1928 | r = QAbstractItemView::OnItem; never executed (the execution status of this line is deduced): r = QAbstractItemView::OnItem; | - |
1929 | } | 0 |
1930 | } | 0 |
1931 | | - |
1932 | if (r == QAbstractItemView::OnItem && (!(dd->model->flags(index) & Qt::ItemIsDropEnabled))) never evaluated: r == QAbstractItemView::OnItem never evaluated: (!(dd->model->flags(index) & Qt::ItemIsDropEnabled)) | 0 |
1933 | r = pos.x() < rect.center().x() ? QAbstractItemView::AboveItem : QAbstractItemView::BelowItem; never executed: r = pos.x() < rect.center().x() ? QAbstractItemView::AboveItem : QAbstractItemView::BelowItem; never evaluated: pos.x() < rect.center().x() | 0 |
1934 | | - |
1935 | return r; never executed: return r; | 0 |
1936 | } | - |
1937 | | - |
1938 | void QListModeViewBase::dragMoveEvent(QDragMoveEvent *event) | - |
1939 | { | - |
1940 | if (qq->dragDropMode() == QAbstractItemView::InternalMove never evaluated: qq->dragDropMode() == QAbstractItemView::InternalMove | 0 |
1941 | && (event->source() != qq || !(event->possibleActions() & Qt::MoveAction))) never evaluated: event->source() != qq never evaluated: !(event->possibleActions() & Qt::MoveAction) | 0 |
1942 | return; | 0 |
1943 | | - |
1944 | // ignore by default | - |
1945 | event->ignore(); never executed (the execution status of this line is deduced): event->ignore(); | - |
1946 | | - |
1947 | // can't use indexAt, doesn't account for spacing. | - |
1948 | QPoint p = event->pos(); never executed (the execution status of this line is deduced): QPoint p = event->pos(); | - |
1949 | QRect rect(p.x() + horizontalOffset(), p.y() + verticalOffset(), 1, 1); never executed (the execution status of this line is deduced): QRect rect(p.x() + horizontalOffset(), p.y() + verticalOffset(), 1, 1); | - |
1950 | rect.adjust(-dd->spacing(), -dd->spacing(), dd->spacing(), dd->spacing()); never executed (the execution status of this line is deduced): rect.adjust(-dd->spacing(), -dd->spacing(), dd->spacing(), dd->spacing()); | - |
1951 | const QVector<QModelIndex> intersectVector = dd->intersectingSet(rect); never executed (the execution status of this line is deduced): const QVector<QModelIndex> intersectVector = dd->intersectingSet(rect); | - |
1952 | QModelIndex index = intersectVector.count() > 0 never evaluated: intersectVector.count() > 0 | 0 |
1953 | ? intersectVector.last() : QModelIndex(); never executed (the execution status of this line is deduced): ? intersectVector.last() : QModelIndex(); | - |
1954 | dd->hover = index; never executed (the execution status of this line is deduced): dd->hover = index; | - |
1955 | if (!dd->droppingOnItself(event, index) never evaluated: !dd->droppingOnItself(event, index) | 0 |
1956 | && dd->canDecode(event)) { never evaluated: dd->canDecode(event) | 0 |
1957 | | - |
1958 | if (index.isValid() && dd->showDropIndicator) { never evaluated: index.isValid() never evaluated: dd->showDropIndicator | 0 |
1959 | QRect rect = qq->visualRect(index); never executed (the execution status of this line is deduced): QRect rect = qq->visualRect(index); | - |
1960 | dd->dropIndicatorPosition = position(event->pos(), rect, index); never executed (the execution status of this line is deduced): dd->dropIndicatorPosition = position(event->pos(), rect, index); | - |
1961 | // if spacing, should try to draw between items, not just next to item. | - |
1962 | switch (dd->dropIndicatorPosition) { | - |
1963 | case QAbstractItemView::AboveItem: | - |
1964 | if (dd->isIndexDropEnabled(index.parent())) { never evaluated: dd->isIndexDropEnabled(index.parent()) | 0 |
1965 | dd->dropIndicatorRect = QRect(rect.left()-dd->spacing(), rect.top(), 0, rect.height()); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(rect.left()-dd->spacing(), rect.top(), 0, rect.height()); | - |
1966 | event->accept(); never executed (the execution status of this line is deduced): event->accept(); | - |
1967 | } else { | 0 |
1968 | dd->dropIndicatorRect = QRect(); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(); | - |
1969 | } | 0 |
1970 | break; | 0 |
1971 | case QAbstractItemView::BelowItem: | - |
1972 | if (dd->isIndexDropEnabled(index.parent())) { never evaluated: dd->isIndexDropEnabled(index.parent()) | 0 |
1973 | dd->dropIndicatorRect = QRect(rect.right()+dd->spacing(), rect.top(), 0, rect.height()); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(rect.right()+dd->spacing(), rect.top(), 0, rect.height()); | - |
1974 | event->accept(); never executed (the execution status of this line is deduced): event->accept(); | - |
1975 | } else { | 0 |
1976 | dd->dropIndicatorRect = QRect(); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(); | - |
1977 | } | 0 |
1978 | break; | 0 |
1979 | case QAbstractItemView::OnItem: | - |
1980 | if (dd->isIndexDropEnabled(index)) { never evaluated: dd->isIndexDropEnabled(index) | 0 |
1981 | dd->dropIndicatorRect = rect; never executed (the execution status of this line is deduced): dd->dropIndicatorRect = rect; | - |
1982 | event->accept(); never executed (the execution status of this line is deduced): event->accept(); | - |
1983 | } else { | 0 |
1984 | dd->dropIndicatorRect = QRect(); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(); | - |
1985 | } | 0 |
1986 | break; | 0 |
1987 | case QAbstractItemView::OnViewport: | - |
1988 | dd->dropIndicatorRect = QRect(); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(); | - |
1989 | if (dd->isIndexDropEnabled(qq->rootIndex())) { never evaluated: dd->isIndexDropEnabled(qq->rootIndex()) | 0 |
1990 | event->accept(); // allow dropping in empty areas never executed (the execution status of this line is deduced): event->accept(); | - |
1991 | } | 0 |
1992 | break; | 0 |
1993 | } | - |
1994 | } else { | 0 |
1995 | dd->dropIndicatorRect = QRect(); never executed (the execution status of this line is deduced): dd->dropIndicatorRect = QRect(); | - |
1996 | dd->dropIndicatorPosition = QAbstractItemView::OnViewport; never executed (the execution status of this line is deduced): dd->dropIndicatorPosition = QAbstractItemView::OnViewport; | - |
1997 | if (dd->isIndexDropEnabled(qq->rootIndex())) { never evaluated: dd->isIndexDropEnabled(qq->rootIndex()) | 0 |
1998 | event->accept(); // allow dropping in empty areas never executed (the execution status of this line is deduced): event->accept(); | - |
1999 | } | 0 |
2000 | } | 0 |
2001 | dd->viewport->update(); never executed (the execution status of this line is deduced): dd->viewport->update(); | - |
2002 | } // can decode | 0 |
2003 | | - |
2004 | if (dd->shouldAutoScroll(event->pos())) never evaluated: dd->shouldAutoScroll(event->pos()) | 0 |
2005 | qq->startAutoScroll(); never executed: qq->startAutoScroll(); | 0 |
2006 | } | 0 |
2007 | | - |
2008 | /*! | - |
2009 | If the event hasn't already been accepted, determines the index to drop on. | - |
2010 | | - |
2011 | if (row == -1 && col == -1) | - |
2012 | // append to this drop index | - |
2013 | else | - |
2014 | // place at row, col in drop index | - |
2015 | | - |
2016 | If it returns true a drop can be done, and dropRow, dropCol and dropIndex reflects the position of the drop. | - |
2017 | \internal | - |
2018 | */ | - |
2019 | bool QListModeViewBase::dropOn(QDropEvent *event, int *dropRow, int *dropCol, QModelIndex *dropIndex) | - |
2020 | { | - |
2021 | if (event->isAccepted()) never evaluated: event->isAccepted() | 0 |
2022 | return false; never executed: return false; | 0 |
2023 | | - |
2024 | QModelIndex index; never executed (the execution status of this line is deduced): QModelIndex index; | - |
2025 | if (dd->viewport->rect().contains(event->pos())) { never evaluated: dd->viewport->rect().contains(event->pos()) | 0 |
2026 | // can't use indexAt, doesn't account for spacing. | - |
2027 | QPoint p = event->pos(); never executed (the execution status of this line is deduced): QPoint p = event->pos(); | - |
2028 | QRect rect(p.x() + horizontalOffset(), p.y() + verticalOffset(), 1, 1); never executed (the execution status of this line is deduced): QRect rect(p.x() + horizontalOffset(), p.y() + verticalOffset(), 1, 1); | - |
2029 | rect.adjust(-dd->spacing(), -dd->spacing(), dd->spacing(), dd->spacing()); never executed (the execution status of this line is deduced): rect.adjust(-dd->spacing(), -dd->spacing(), dd->spacing(), dd->spacing()); | - |
2030 | const QVector<QModelIndex> intersectVector = dd->intersectingSet(rect); never executed (the execution status of this line is deduced): const QVector<QModelIndex> intersectVector = dd->intersectingSet(rect); | - |
2031 | index = intersectVector.count() > 0 never evaluated: intersectVector.count() > 0 | 0 |
2032 | ? intersectVector.last() : QModelIndex(); never executed (the execution status of this line is deduced): ? intersectVector.last() : QModelIndex(); | - |
2033 | if (!index.isValid()) never evaluated: !index.isValid() | 0 |
2034 | index = dd->root; never executed: index = dd->root; | 0 |
2035 | } | 0 |
2036 | | - |
2037 | // If we are allowed to do the drop | - |
2038 | if (dd->model->supportedDropActions() & event->dropAction()) { never evaluated: dd->model->supportedDropActions() & event->dropAction() | 0 |
2039 | int row = -1; never executed (the execution status of this line is deduced): int row = -1; | - |
2040 | int col = -1; never executed (the execution status of this line is deduced): int col = -1; | - |
2041 | if (index != dd->root) { never evaluated: index != dd->root | 0 |
2042 | dd->dropIndicatorPosition = position(event->pos(), qq->visualRect(index), index); never executed (the execution status of this line is deduced): dd->dropIndicatorPosition = position(event->pos(), qq->visualRect(index), index); | - |
2043 | switch (dd->dropIndicatorPosition) { | - |
2044 | case QAbstractItemView::AboveItem: | - |
2045 | row = index.row(); never executed (the execution status of this line is deduced): row = index.row(); | - |
2046 | col = index.column(); never executed (the execution status of this line is deduced): col = index.column(); | - |
2047 | index = index.parent(); never executed (the execution status of this line is deduced): index = index.parent(); | - |
2048 | break; | 0 |
2049 | case QAbstractItemView::BelowItem: | - |
2050 | row = index.row() + 1; never executed (the execution status of this line is deduced): row = index.row() + 1; | - |
2051 | col = index.column(); never executed (the execution status of this line is deduced): col = index.column(); | - |
2052 | index = index.parent(); never executed (the execution status of this line is deduced): index = index.parent(); | - |
2053 | break; | 0 |
2054 | case QAbstractItemView::OnItem: | - |
2055 | case QAbstractItemView::OnViewport: | - |
2056 | break; | 0 |
2057 | } | - |
2058 | } else { | 0 |
2059 | dd->dropIndicatorPosition = QAbstractItemView::OnViewport; never executed (the execution status of this line is deduced): dd->dropIndicatorPosition = QAbstractItemView::OnViewport; | - |
2060 | } | 0 |
2061 | *dropIndex = index; never executed (the execution status of this line is deduced): *dropIndex = index; | - |
2062 | *dropRow = row; never executed (the execution status of this line is deduced): *dropRow = row; | - |
2063 | *dropCol = col; never executed (the execution status of this line is deduced): *dropCol = col; | - |
2064 | if (!dd->droppingOnItself(event, index)) never evaluated: !dd->droppingOnItself(event, index) | 0 |
2065 | return true; never executed: return true; | 0 |
2066 | } | 0 |
2067 | return false; never executed: return false; | 0 |
2068 | } | - |
2069 | | - |
2070 | #endif //QT_NO_DRAGANDDROP | - |
2071 | | - |
2072 | void QListModeViewBase::updateVerticalScrollBar(const QSize &step) | - |
2073 | { | - |
2074 | if (verticalScrollMode() == QAbstractItemView::ScrollPerItem evaluated: verticalScrollMode() == QAbstractItemView::ScrollPerItem yes Evaluation Count:1240 | yes Evaluation Count:10 |
| 10-1240 |
2075 | && ((flow() == QListView::TopToBottom && !isWrapping()) evaluated: flow() == QListView::TopToBottom yes Evaluation Count:1200 | yes Evaluation Count:40 |
evaluated: !isWrapping() yes Evaluation Count:1083 | yes Evaluation Count:117 |
| 40-1200 |
2076 | || (flow() == QListView::LeftToRight && isWrapping()))) { evaluated: flow() == QListView::LeftToRight yes Evaluation Count:40 | yes Evaluation Count:117 |
evaluated: isWrapping() yes Evaluation Count:3 | yes Evaluation Count:37 |
| 3-117 |
2077 | const int steps = (flow() == QListView::TopToBottom ? scrollValueMap : segmentPositions).count() - 1; evaluated: flow() == QListView::TopToBottom yes Evaluation Count:1083 | yes Evaluation Count:3 |
| 3-1083 |
2078 | if (steps > 0) { partially evaluated: steps > 0 yes Evaluation Count:1086 | no Evaluation Count:0 |
| 0-1086 |
2079 | const int pageSteps = perItemScrollingPageSteps(viewport()->height(), contentsSize.height(), isWrapping()); executed (the execution status of this line is deduced): const int pageSteps = perItemScrollingPageSteps(viewport()->height(), contentsSize.height(), isWrapping()); | - |
2080 | verticalScrollBar()->setSingleStep(1); executed (the execution status of this line is deduced): verticalScrollBar()->setSingleStep(1); | - |
2081 | verticalScrollBar()->setPageStep(pageSteps); executed (the execution status of this line is deduced): verticalScrollBar()->setPageStep(pageSteps); | - |
2082 | verticalScrollBar()->setRange(0, steps - pageSteps); executed (the execution status of this line is deduced): verticalScrollBar()->setRange(0, steps - pageSteps); | - |
2083 | } else { executed: } Execution Count:1086 | 1086 |
2084 | verticalScrollBar()->setRange(0, 0); never executed (the execution status of this line is deduced): verticalScrollBar()->setRange(0, 0); | - |
2085 | } | 0 |
2086 | // } else if (vertical && d->isWrapping() && d->movement == Static) { | - |
2087 | // ### wrapped scrolling in flow direction | - |
2088 | } else { | - |
2089 | QCommonListViewBase::updateVerticalScrollBar(step); executed (the execution status of this line is deduced): QCommonListViewBase::updateVerticalScrollBar(step); | - |
2090 | } executed: } Execution Count:164 | 164 |
2091 | } | - |
2092 | | - |
2093 | void QListModeViewBase::updateHorizontalScrollBar(const QSize &step) | - |
2094 | { | - |
2095 | if (horizontalScrollMode() == QAbstractItemView::ScrollPerItem evaluated: horizontalScrollMode() == QAbstractItemView::ScrollPerItem yes Evaluation Count:1238 | yes Evaluation Count:12 |
| 12-1238 |
2096 | && ((flow() == QListView::TopToBottom && isWrapping()) evaluated: flow() == QListView::TopToBottom yes Evaluation Count:1198 | yes Evaluation Count:40 |
evaluated: isWrapping() yes Evaluation Count:117 | yes Evaluation Count:1081 |
| 40-1198 |
2097 | || (flow() == QListView::LeftToRight && !isWrapping()))) { evaluated: flow() == QListView::LeftToRight yes Evaluation Count:40 | yes Evaluation Count:1081 |
evaluated: !isWrapping() yes Evaluation Count:37 | yes Evaluation Count:3 |
| 3-1081 |
2098 | int steps = (flow() == QListView::TopToBottom ? segmentPositions : scrollValueMap).count() - 1; evaluated: flow() == QListView::TopToBottom yes Evaluation Count:117 | yes Evaluation Count:37 |
| 37-117 |
2099 | if (steps > 0) { partially evaluated: steps > 0 yes Evaluation Count:154 | no Evaluation Count:0 |
| 0-154 |
2100 | const int pageSteps = perItemScrollingPageSteps(viewport()->width(), contentsSize.width(), isWrapping()); executed (the execution status of this line is deduced): const int pageSteps = perItemScrollingPageSteps(viewport()->width(), contentsSize.width(), isWrapping()); | - |
2101 | horizontalScrollBar()->setSingleStep(1); executed (the execution status of this line is deduced): horizontalScrollBar()->setSingleStep(1); | - |
2102 | horizontalScrollBar()->setPageStep(pageSteps); executed (the execution status of this line is deduced): horizontalScrollBar()->setPageStep(pageSteps); | - |
2103 | horizontalScrollBar()->setRange(0, steps - pageSteps); executed (the execution status of this line is deduced): horizontalScrollBar()->setRange(0, steps - pageSteps); | - |
2104 | } else { executed: } Execution Count:154 | 154 |
2105 | horizontalScrollBar()->setRange(0, 0); never executed (the execution status of this line is deduced): horizontalScrollBar()->setRange(0, 0); | - |
2106 | } | 0 |
2107 | } else { | - |
2108 | QCommonListViewBase::updateHorizontalScrollBar(step); executed (the execution status of this line is deduced): QCommonListViewBase::updateHorizontalScrollBar(step); | - |
2109 | } executed: } Execution Count:1096 | 1096 |
2110 | } | - |
2111 | | - |
2112 | int QListModeViewBase::verticalScrollToValue(int index, QListView::ScrollHint hint, | - |
2113 | bool above, bool below, const QRect &area, const QRect &rect) const | - |
2114 | { | - |
2115 | if (verticalScrollMode() == QAbstractItemView::ScrollPerItem) { evaluated: verticalScrollMode() == QAbstractItemView::ScrollPerItem yes Evaluation Count:251 | yes Evaluation Count:34 |
| 34-251 |
2116 | int value; executed (the execution status of this line is deduced): int value; | - |
2117 | if (scrollValueMap.isEmpty()) { partially evaluated: scrollValueMap.isEmpty() no Evaluation Count:0 | yes Evaluation Count:251 |
| 0-251 |
2118 | value = 0; never executed (the execution status of this line is deduced): value = 0; | - |
2119 | } else { | 0 |
2120 | int scrollBarValue = verticalScrollBar()->value(); executed (the execution status of this line is deduced): int scrollBarValue = verticalScrollBar()->value(); | - |
2121 | int numHidden = 0; executed (the execution status of this line is deduced): int numHidden = 0; | - |
2122 | for (int i = 0; i < flowPositions.count() - 1 && i <= scrollBarValue; ++i) evaluated: i < flowPositions.count() - 1 yes Evaluation Count:2534 | yes Evaluation Count:2 |
evaluated: i <= scrollBarValue yes Evaluation Count:2285 | yes Evaluation Count:249 |
| 2-2534 |
2123 | if (isHidden(i)) evaluated: isHidden(i) yes Evaluation Count:528 | yes Evaluation Count:1757 |
| 528-1757 |
2124 | ++numHidden; executed: ++numHidden; Execution Count:528 | 528 |
2125 | value = qBound(0, scrollValueMap.at(verticalScrollBar()->value()) - numHidden, flowPositions.count() - 1); executed (the execution status of this line is deduced): value = qBound(0, scrollValueMap.at(verticalScrollBar()->value()) - numHidden, flowPositions.count() - 1); | - |
2126 | } executed: } Execution Count:251 | 251 |
2127 | if (above) evaluated: above yes Evaluation Count:87 | yes Evaluation Count:164 |
| 87-164 |
2128 | hint = QListView::PositionAtTop; executed: hint = QListView::PositionAtTop; Execution Count:87 | 87 |
2129 | else if (below) evaluated: below yes Evaluation Count:151 | yes Evaluation Count:13 |
| 13-151 |
2130 | hint = QListView::PositionAtBottom; executed: hint = QListView::PositionAtBottom; Execution Count:151 | 151 |
2131 | if (hint == QListView::EnsureVisible) evaluated: hint == QListView::EnsureVisible yes Evaluation Count:2 | yes Evaluation Count:249 |
| 2-249 |
2132 | return value; executed: return value; Execution Count:2 | 2 |
2133 | | - |
2134 | return perItemScrollToValue(index, value, area.height(), hint, Qt::Vertical, isWrapping(), rect.height()); executed: return perItemScrollToValue(index, value, area.height(), hint, Qt::Vertical, isWrapping(), rect.height()); Execution Count:249 | 249 |
2135 | } | - |
2136 | | - |
2137 | return QCommonListViewBase::verticalScrollToValue(index, hint, above, below, area, rect); executed: return QCommonListViewBase::verticalScrollToValue(index, hint, above, below, area, rect); Execution Count:34 | 34 |
2138 | } | - |
2139 | | - |
2140 | int QListModeViewBase::horizontalOffset() const | - |
2141 | { | - |
2142 | if (horizontalScrollMode() == QAbstractItemView::ScrollPerItem) { evaluated: horizontalScrollMode() == QAbstractItemView::ScrollPerItem yes Evaluation Count:21670 | yes Evaluation Count:2552 |
| 2552-21670 |
2143 | if (isWrapping()) { evaluated: isWrapping() yes Evaluation Count:3405 | yes Evaluation Count:18265 |
| 3405-18265 |
2144 | if (flow() == QListView::TopToBottom && !segmentPositions.isEmpty()) { evaluated: flow() == QListView::TopToBottom yes Evaluation Count:2930 | yes Evaluation Count:475 |
evaluated: !segmentPositions.isEmpty() yes Evaluation Count:2897 | yes Evaluation Count:33 |
| 33-2930 |
2145 | const int max = segmentPositions.count() - 1; executed (the execution status of this line is deduced): const int max = segmentPositions.count() - 1; | - |
2146 | int currentValue = qBound(0, horizontalScrollBar()->value(), max); executed (the execution status of this line is deduced): int currentValue = qBound(0, horizontalScrollBar()->value(), max); | - |
2147 | int position = segmentPositions.at(currentValue); executed (the execution status of this line is deduced): int position = segmentPositions.at(currentValue); | - |
2148 | int maximumValue = qBound(0, horizontalScrollBar()->maximum(), max); executed (the execution status of this line is deduced): int maximumValue = qBound(0, horizontalScrollBar()->maximum(), max); | - |
2149 | int maximum = segmentPositions.at(maximumValue); executed (the execution status of this line is deduced): int maximum = segmentPositions.at(maximumValue); | - |
2150 | return (isRightToLeft() ? maximum - position : position); executed: return (isRightToLeft() ? maximum - position : position); Execution Count:2897 | 2897 |
2151 | } | - |
2152 | } else if (flow() == QListView::LeftToRight && !flowPositions.isEmpty()) { executed: } Execution Count:508 evaluated: flow() == QListView::LeftToRight yes Evaluation Count:4668 | yes Evaluation Count:13597 |
evaluated: !flowPositions.isEmpty() yes Evaluation Count:4645 | yes Evaluation Count:23 |
| 23-13597 |
2153 | int position = flowPositions.at(scrollValueMap.at(horizontalScrollBar()->value())); executed (the execution status of this line is deduced): int position = flowPositions.at(scrollValueMap.at(horizontalScrollBar()->value())); | - |
2154 | int maximum = flowPositions.at(scrollValueMap.at(horizontalScrollBar()->maximum())); executed (the execution status of this line is deduced): int maximum = flowPositions.at(scrollValueMap.at(horizontalScrollBar()->maximum())); | - |
2155 | return (isRightToLeft() ? maximum - position : position); executed: return (isRightToLeft() ? maximum - position : position); Execution Count:4645 | 4645 |
2156 | } | - |
2157 | } | - |
2158 | return QCommonListViewBase::horizontalOffset(); executed: return QCommonListViewBase::horizontalOffset(); Execution Count:16680 | 16680 |
2159 | } | - |
2160 | | - |
2161 | int QListModeViewBase::verticalOffset() const | - |
2162 | { | - |
2163 | if (verticalScrollMode() == QAbstractItemView::ScrollPerItem) { evaluated: verticalScrollMode() == QAbstractItemView::ScrollPerItem yes Evaluation Count:21743 | yes Evaluation Count:2479 |
| 2479-21743 |
2164 | if (isWrapping()) { evaluated: isWrapping() yes Evaluation Count:3405 | yes Evaluation Count:18338 |
| 3405-18338 |
2165 | if (flow() == QListView::LeftToRight && !segmentPositions.isEmpty()) { evaluated: flow() == QListView::LeftToRight yes Evaluation Count:475 | yes Evaluation Count:2930 |
partially evaluated: !segmentPositions.isEmpty() yes Evaluation Count:475 | no Evaluation Count:0 |
| 0-2930 |
2166 | int value = verticalScrollBar()->value(); executed (the execution status of this line is deduced): int value = verticalScrollBar()->value(); | - |
2167 | if (value >= segmentPositions.count()) partially evaluated: value >= segmentPositions.count() no Evaluation Count:0 | yes Evaluation Count:475 |
| 0-475 |
2168 | return 0; never executed: return 0; | 0 |
2169 | return segmentPositions.at(value) - spacing(); executed: return segmentPositions.at(value) - spacing(); Execution Count:475 | 475 |
2170 | } | - |
2171 | } else if (flow() == QListView::TopToBottom && !flowPositions.isEmpty()) { executed: } Execution Count:2930 evaluated: flow() == QListView::TopToBottom yes Evaluation Count:13670 | yes Evaluation Count:4668 |
evaluated: !flowPositions.isEmpty() yes Evaluation Count:13094 | yes Evaluation Count:576 |
| 576-13670 |
2172 | int value = verticalScrollBar()->value(); executed (the execution status of this line is deduced): int value = verticalScrollBar()->value(); | - |
2173 | if (value > scrollValueMap.count()) partially evaluated: value > scrollValueMap.count() no Evaluation Count:0 | yes Evaluation Count:13094 |
| 0-13094 |
2174 | return 0; never executed: return 0; | 0 |
2175 | return flowPositions.at(scrollValueMap.at(value)) - spacing(); executed: return flowPositions.at(scrollValueMap.at(value)) - spacing(); Execution Count:13094 | 13094 |
2176 | } | - |
2177 | } | - |
2178 | return QCommonListViewBase::verticalOffset(); executed: return QCommonListViewBase::verticalOffset(); Execution Count:10653 | 10653 |
2179 | } | - |
2180 | | - |
2181 | int QListModeViewBase::horizontalScrollToValue(int index, QListView::ScrollHint hint, | - |
2182 | bool leftOf, bool rightOf, const QRect &area, const QRect &rect) const | - |
2183 | { | - |
2184 | if (horizontalScrollMode() != QAbstractItemView::ScrollPerItem) partially evaluated: horizontalScrollMode() != QAbstractItemView::ScrollPerItem no Evaluation Count:0 | yes Evaluation Count:140 |
| 0-140 |
2185 | return QCommonListViewBase::horizontalScrollToValue(index, hint, leftOf, rightOf, area, rect); never executed: return QCommonListViewBase::horizontalScrollToValue(index, hint, leftOf, rightOf, area, rect); | 0 |
2186 | | - |
2187 | int value; executed (the execution status of this line is deduced): int value; | - |
2188 | if (scrollValueMap.isEmpty()) partially evaluated: scrollValueMap.isEmpty() no Evaluation Count:0 | yes Evaluation Count:140 |
| 0-140 |
2189 | value = 0; never executed: value = 0; | 0 |
2190 | else | - |
2191 | value = qBound(0, scrollValueMap.at(horizontalScrollBar()->value()), flowPositions.count() - 1); executed: value = qBound(0, scrollValueMap.at(horizontalScrollBar()->value()), flowPositions.count() - 1); Execution Count:140 | 140 |
2192 | if (leftOf) evaluated: leftOf yes Evaluation Count:72 | yes Evaluation Count:68 |
| 68-72 |
2193 | hint = QListView::PositionAtTop; executed: hint = QListView::PositionAtTop; Execution Count:72 | 72 |
2194 | else if (rightOf) evaluated: rightOf yes Evaluation Count:67 | yes Evaluation Count:1 |
| 1-67 |
2195 | hint = QListView::PositionAtBottom; executed: hint = QListView::PositionAtBottom; Execution Count:67 | 67 |
2196 | if (hint == QListView::EnsureVisible) partially evaluated: hint == QListView::EnsureVisible no Evaluation Count:0 | yes Evaluation Count:140 |
| 0-140 |
2197 | return value; never executed: return value; | 0 |
2198 | | - |
2199 | return perItemScrollToValue(index, value, area.width(), hint, Qt::Horizontal, isWrapping(), rect.width()); executed: return perItemScrollToValue(index, value, area.width(), hint, Qt::Horizontal, isWrapping(), rect.width()); Execution Count:140 | 140 |
2200 | } | - |
2201 | | - |
2202 | void QListModeViewBase::scrollContentsBy(int dx, int dy, bool scrollElasticBand) | - |
2203 | { | - |
2204 | // ### reorder this logic | - |
2205 | const int verticalValue = verticalScrollBar()->value(); executed (the execution status of this line is deduced): const int verticalValue = verticalScrollBar()->value(); | - |
2206 | const int horizontalValue = horizontalScrollBar()->value(); executed (the execution status of this line is deduced): const int horizontalValue = horizontalScrollBar()->value(); | - |
2207 | const bool vertical = (verticalScrollMode() == QAbstractItemView::ScrollPerItem); executed (the execution status of this line is deduced): const bool vertical = (verticalScrollMode() == QAbstractItemView::ScrollPerItem); | - |
2208 | const bool horizontal = (horizontalScrollMode() == QAbstractItemView::ScrollPerItem); executed (the execution status of this line is deduced): const bool horizontal = (horizontalScrollMode() == QAbstractItemView::ScrollPerItem); | - |
2209 | | - |
2210 | if (isWrapping()) { evaluated: isWrapping() yes Evaluation Count:4 | yes Evaluation Count:439 |
| 4-439 |
2211 | if (segmentPositions.isEmpty()) partially evaluated: segmentPositions.isEmpty() no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
2212 | return; | 0 |
2213 | const int max = segmentPositions.count() - 1; executed (the execution status of this line is deduced): const int max = segmentPositions.count() - 1; | - |
2214 | if (horizontal && flow() == QListView::TopToBottom && dx != 0) { partially evaluated: horizontal yes Evaluation Count:4 | no Evaluation Count:0 |
partially evaluated: flow() == QListView::TopToBottom yes Evaluation Count:4 | no Evaluation Count:0 |
evaluated: dx != 0 yes Evaluation Count:3 | yes Evaluation Count:1 |
| 0-4 |
2215 | int currentValue = qBound(0, horizontalValue, max); executed (the execution status of this line is deduced): int currentValue = qBound(0, horizontalValue, max); | - |
2216 | int previousValue = qBound(0, currentValue + dx, max); executed (the execution status of this line is deduced): int previousValue = qBound(0, currentValue + dx, max); | - |
2217 | int currentCoordinate = segmentPositions.at(currentValue) - spacing(); executed (the execution status of this line is deduced): int currentCoordinate = segmentPositions.at(currentValue) - spacing(); | - |
2218 | int previousCoordinate = segmentPositions.at(previousValue) - spacing(); executed (the execution status of this line is deduced): int previousCoordinate = segmentPositions.at(previousValue) - spacing(); | - |
2219 | dx = previousCoordinate - currentCoordinate; executed (the execution status of this line is deduced): dx = previousCoordinate - currentCoordinate; | - |
2220 | } else if (vertical && flow() == QListView::LeftToRight && dy != 0) { executed: } Execution Count:3 partially evaluated: vertical yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: flow() == QListView::LeftToRight no Evaluation Count:0 | yes Evaluation Count:1 |
never evaluated: dy != 0 | 0-3 |
2221 | int currentValue = qBound(0, verticalValue, max); never executed (the execution status of this line is deduced): int currentValue = qBound(0, verticalValue, max); | - |
2222 | int previousValue = qBound(0, currentValue + dy, max); never executed (the execution status of this line is deduced): int previousValue = qBound(0, currentValue + dy, max); | - |
2223 | int currentCoordinate = segmentPositions.at(currentValue) - spacing(); never executed (the execution status of this line is deduced): int currentCoordinate = segmentPositions.at(currentValue) - spacing(); | - |
2224 | int previousCoordinate = segmentPositions.at(previousValue) - spacing(); never executed (the execution status of this line is deduced): int previousCoordinate = segmentPositions.at(previousValue) - spacing(); | - |
2225 | dy = previousCoordinate - currentCoordinate; never executed (the execution status of this line is deduced): dy = previousCoordinate - currentCoordinate; | - |
2226 | } | 0 |
2227 | } else { | - |
2228 | if (flowPositions.isEmpty()) partially evaluated: flowPositions.isEmpty() no Evaluation Count:0 | yes Evaluation Count:439 |
| 0-439 |
2229 | return; | 0 |
2230 | const int max = scrollValueMap.count() - 1; executed (the execution status of this line is deduced): const int max = scrollValueMap.count() - 1; | - |
2231 | if (vertical && flow() == QListView::TopToBottom && dy != 0) { evaluated: vertical yes Evaluation Count:403 | yes Evaluation Count:36 |
evaluated: flow() == QListView::TopToBottom yes Evaluation Count:255 | yes Evaluation Count:148 |
partially evaluated: dy != 0 yes Evaluation Count:255 | no Evaluation Count:0 |
| 0-403 |
2232 | int currentValue = qBound(0, verticalValue, max); executed (the execution status of this line is deduced): int currentValue = qBound(0, verticalValue, max); | - |
2233 | int previousValue = qBound(0, currentValue + dy, max); executed (the execution status of this line is deduced): int previousValue = qBound(0, currentValue + dy, max); | - |
2234 | int currentCoordinate = flowPositions.at(scrollValueMap.at(currentValue)); executed (the execution status of this line is deduced): int currentCoordinate = flowPositions.at(scrollValueMap.at(currentValue)); | - |
2235 | int previousCoordinate = flowPositions.at(scrollValueMap.at(previousValue)); executed (the execution status of this line is deduced): int previousCoordinate = flowPositions.at(scrollValueMap.at(previousValue)); | - |
2236 | dy = previousCoordinate - currentCoordinate; executed (the execution status of this line is deduced): dy = previousCoordinate - currentCoordinate; | - |
2237 | } else if (horizontal && flow() == QListView::LeftToRight && dx != 0) { executed: } Execution Count:255 evaluated: horizontal yes Evaluation Count:148 | yes Evaluation Count:36 |
partially evaluated: flow() == QListView::LeftToRight yes Evaluation Count:148 | no Evaluation Count:0 |
partially evaluated: dx != 0 yes Evaluation Count:148 | no Evaluation Count:0 |
| 0-255 |
2238 | int currentValue = qBound(0, horizontalValue, max); executed (the execution status of this line is deduced): int currentValue = qBound(0, horizontalValue, max); | - |
2239 | int previousValue = qBound(0, currentValue + dx, max); executed (the execution status of this line is deduced): int previousValue = qBound(0, currentValue + dx, max); | - |
2240 | int currentCoordinate = flowPositions.at(scrollValueMap.at(currentValue)); executed (the execution status of this line is deduced): int currentCoordinate = flowPositions.at(scrollValueMap.at(currentValue)); | - |
2241 | int previousCoordinate = flowPositions.at(scrollValueMap.at(previousValue)); executed (the execution status of this line is deduced): int previousCoordinate = flowPositions.at(scrollValueMap.at(previousValue)); | - |
2242 | dx = previousCoordinate - currentCoordinate; executed (the execution status of this line is deduced): dx = previousCoordinate - currentCoordinate; | - |
2243 | } executed: } Execution Count:148 | 148 |
2244 | } | - |
2245 | QCommonListViewBase::scrollContentsBy(dx, dy, scrollElasticBand); executed (the execution status of this line is deduced): QCommonListViewBase::scrollContentsBy(dx, dy, scrollElasticBand); | - |
2246 | } executed: } Execution Count:443 | 443 |
2247 | | - |
2248 | bool QListModeViewBase::doBatchedItemLayout(const QListViewLayoutInfo &info, int max) | - |
2249 | { | - |
2250 | doStaticLayout(info); executed (the execution status of this line is deduced): doStaticLayout(info); | - |
2251 | if (batchStartRow > max) { // stop items layout evaluated: batchStartRow > max yes Evaluation Count:936 | yes Evaluation Count:1 |
| 1-936 |
2252 | flowPositions.resize(flowPositions.count()); executed (the execution status of this line is deduced): flowPositions.resize(flowPositions.count()); | - |
2253 | segmentPositions.resize(segmentPositions.count()); executed (the execution status of this line is deduced): segmentPositions.resize(segmentPositions.count()); | - |
2254 | segmentStartRows.resize(segmentStartRows.count()); executed (the execution status of this line is deduced): segmentStartRows.resize(segmentStartRows.count()); | - |
2255 | return true; // done executed: return true; Execution Count:936 | 936 |
2256 | } | - |
2257 | return false; // not done executed: return false; Execution Count:1 | 1 |
2258 | } | - |
2259 | | - |
2260 | QListViewItem QListModeViewBase::indexToListViewItem(const QModelIndex &index) const | - |
2261 | { | - |
2262 | if (flowPositions.isEmpty() evaluated: flowPositions.isEmpty() yes Evaluation Count:6 | yes Evaluation Count:19593 |
| 6-19593 |
2263 | || segmentPositions.isEmpty() partially evaluated: segmentPositions.isEmpty() no Evaluation Count:0 | yes Evaluation Count:19593 |
| 0-19593 |
2264 | || index.row() >= flowPositions.count()) partially evaluated: index.row() >= flowPositions.count() no Evaluation Count:0 | yes Evaluation Count:19593 |
| 0-19593 |
2265 | return QListViewItem(); executed: return QListViewItem(); Execution Count:6 | 6 |
2266 | | - |
2267 | const int segment = qBinarySearch<int>(segmentStartRows, index.row(), executed (the execution status of this line is deduced): const int segment = qBinarySearch<int>(segmentStartRows, index.row(), | - |
2268 | 0, segmentStartRows.count() - 1); executed (the execution status of this line is deduced): 0, segmentStartRows.count() - 1); | - |
2269 | | - |
2270 | | - |
2271 | QStyleOptionViewItem options = viewOptions(); executed (the execution status of this line is deduced): QStyleOptionViewItem options = viewOptions(); | - |
2272 | options.rect.setSize(contentsSize); executed (the execution status of this line is deduced): options.rect.setSize(contentsSize); | - |
2273 | QSize size = (uniformItemSizes() && cachedItemSize().isValid()) evaluated: uniformItemSizes() yes Evaluation Count:493 | yes Evaluation Count:19100 |
partially evaluated: cachedItemSize().isValid() yes Evaluation Count:493 | no Evaluation Count:0 |
| 0-19100 |
2274 | ? cachedItemSize() : itemSize(options, index); executed (the execution status of this line is deduced): ? cachedItemSize() : itemSize(options, index); | - |
2275 | | - |
2276 | QPoint pos; executed (the execution status of this line is deduced): QPoint pos; | - |
2277 | if (flow() == QListView::LeftToRight) { evaluated: flow() == QListView::LeftToRight yes Evaluation Count:4474 | yes Evaluation Count:15119 |
| 4474-15119 |
2278 | pos.setX(flowPositions.at(index.row())); executed (the execution status of this line is deduced): pos.setX(flowPositions.at(index.row())); | - |
2279 | pos.setY(segmentPositions.at(segment)); executed (the execution status of this line is deduced): pos.setY(segmentPositions.at(segment)); | - |
2280 | } else { // TopToBottom executed: } Execution Count:4474 | 4474 |
2281 | pos.setY(flowPositions.at(index.row())); executed (the execution status of this line is deduced): pos.setY(flowPositions.at(index.row())); | - |
2282 | pos.setX(segmentPositions.at(segment)); executed (the execution status of this line is deduced): pos.setX(segmentPositions.at(segment)); | - |
2283 | if (isWrapping()) { // make the items as wide as the segment evaluated: isWrapping() yes Evaluation Count:2664 | yes Evaluation Count:12455 |
| 2664-12455 |
2284 | int right = (segment + 1 >= segmentPositions.count() partially evaluated: segment + 1 >= segmentPositions.count() no Evaluation Count:0 | yes Evaluation Count:2664 |
| 0-2664 |
2285 | ? contentsSize.width() executed (the execution status of this line is deduced): ? contentsSize.width() | - |
2286 | : segmentPositions.at(segment + 1)); executed (the execution status of this line is deduced): : segmentPositions.at(segment + 1)); | - |
2287 | size.setWidth(right - pos.x()); executed (the execution status of this line is deduced): size.setWidth(right - pos.x()); | - |
2288 | } else { // make the items as wide as the viewport executed: } Execution Count:2664 | 2664 |
2289 | size.setWidth(qMax(size.width(), viewport()->width() - 2 * spacing())); executed (the execution status of this line is deduced): size.setWidth(qMax(size.width(), viewport()->width() - 2 * spacing())); | - |
2290 | } executed: } Execution Count:12455 | 12455 |
2291 | } | - |
2292 | | - |
2293 | return QListViewItem(QRect(pos, size), index.row()); executed: return QListViewItem(QRect(pos, size), index.row()); Execution Count:19593 | 19593 |
2294 | } | - |
2295 | | - |
2296 | QPoint QListModeViewBase::initStaticLayout(const QListViewLayoutInfo &info) | - |
2297 | { | - |
2298 | int x, y; executed (the execution status of this line is deduced): int x, y; | - |
2299 | if (info.first == 0) { evaluated: info.first == 0 yes Evaluation Count:936 | yes Evaluation Count:1 |
| 1-936 |
2300 | flowPositions.clear(); executed (the execution status of this line is deduced): flowPositions.clear(); | - |
2301 | segmentPositions.clear(); executed (the execution status of this line is deduced): segmentPositions.clear(); | - |
2302 | segmentStartRows.clear(); executed (the execution status of this line is deduced): segmentStartRows.clear(); | - |
2303 | segmentExtents.clear(); executed (the execution status of this line is deduced): segmentExtents.clear(); | - |
2304 | scrollValueMap.clear(); executed (the execution status of this line is deduced): scrollValueMap.clear(); | - |
2305 | x = info.bounds.left() + info.spacing; executed (the execution status of this line is deduced): x = info.bounds.left() + info.spacing; | - |
2306 | y = info.bounds.top() + info.spacing; executed (the execution status of this line is deduced): y = info.bounds.top() + info.spacing; | - |
2307 | segmentPositions.append(info.flow == QListView::LeftToRight ? y : x); executed (the execution status of this line is deduced): segmentPositions.append(info.flow == QListView::LeftToRight ? y : x); | - |
2308 | segmentStartRows.append(0); executed (the execution status of this line is deduced): segmentStartRows.append(0); | - |
2309 | } else if (info.wrap) { executed: } Execution Count:936 partially evaluated: info.wrap no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-936 |
2310 | if (info.flow == QListView::LeftToRight) { never evaluated: info.flow == QListView::LeftToRight | 0 |
2311 | x = batchSavedPosition; never executed (the execution status of this line is deduced): x = batchSavedPosition; | - |
2312 | y = segmentPositions.last(); never executed (the execution status of this line is deduced): y = segmentPositions.last(); | - |
2313 | } else { // flow == QListView::TopToBottom | 0 |
2314 | x = segmentPositions.last(); never executed (the execution status of this line is deduced): x = segmentPositions.last(); | - |
2315 | y = batchSavedPosition; never executed (the execution status of this line is deduced): y = batchSavedPosition; | - |
2316 | } | 0 |
2317 | } else { // not first and not wrap | - |
2318 | if (info.flow == QListView::LeftToRight) { partially evaluated: info.flow == QListView::LeftToRight no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2319 | x = batchSavedPosition; never executed (the execution status of this line is deduced): x = batchSavedPosition; | - |
2320 | y = info.bounds.top() + info.spacing; never executed (the execution status of this line is deduced): y = info.bounds.top() + info.spacing; | - |
2321 | } else { // flow == QListView::TopToBottom | 0 |
2322 | x = info.bounds.left() + info.spacing; executed (the execution status of this line is deduced): x = info.bounds.left() + info.spacing; | - |
2323 | y = batchSavedPosition; executed (the execution status of this line is deduced): y = batchSavedPosition; | - |
2324 | } executed: } Execution Count:1 | 1 |
2325 | } | - |
2326 | return QPoint(x, y); executed: return QPoint(x, y); Execution Count:937 | 937 |
2327 | } | - |
2328 | | - |
2329 | /*! | - |
2330 | \internal | - |
2331 | */ | - |
2332 | void QListModeViewBase::doStaticLayout(const QListViewLayoutInfo &info) | - |
2333 | { | - |
2334 | const bool useItemSize = !info.grid.isValid(); executed (the execution status of this line is deduced): const bool useItemSize = !info.grid.isValid(); | - |
2335 | const QPoint topLeft = initStaticLayout(info); executed (the execution status of this line is deduced): const QPoint topLeft = initStaticLayout(info); | - |
2336 | QStyleOptionViewItem option = viewOptions(); executed (the execution status of this line is deduced): QStyleOptionViewItem option = viewOptions(); | - |
2337 | option.rect = info.bounds; executed (the execution status of this line is deduced): option.rect = info.bounds; | - |
2338 | option.rect.adjust(info.spacing, info.spacing, -info.spacing, -info.spacing); executed (the execution status of this line is deduced): option.rect.adjust(info.spacing, info.spacing, -info.spacing, -info.spacing); | - |
2339 | | - |
2340 | // The static layout data structures are as follows: | - |
2341 | // One vector contains the coordinate in the direction of layout flow. | - |
2342 | // Another vector contains the coordinates of the segments. | - |
2343 | // A third vector contains the index (model row) of the first item | - |
2344 | // of each segment. | - |
2345 | | - |
2346 | int segStartPosition; executed (the execution status of this line is deduced): int segStartPosition; | - |
2347 | int segEndPosition; executed (the execution status of this line is deduced): int segEndPosition; | - |
2348 | int deltaFlowPosition; executed (the execution status of this line is deduced): int deltaFlowPosition; | - |
2349 | int deltaSegPosition; executed (the execution status of this line is deduced): int deltaSegPosition; | - |
2350 | int deltaSegHint; executed (the execution status of this line is deduced): int deltaSegHint; | - |
2351 | int flowPosition; executed (the execution status of this line is deduced): int flowPosition; | - |
2352 | int segPosition; executed (the execution status of this line is deduced): int segPosition; | - |
2353 | | - |
2354 | if (info.flow == QListView::LeftToRight) { evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:28 | yes Evaluation Count:909 |
| 28-909 |
2355 | segStartPosition = info.bounds.left(); executed (the execution status of this line is deduced): segStartPosition = info.bounds.left(); | - |
2356 | segEndPosition = info.bounds.width(); executed (the execution status of this line is deduced): segEndPosition = info.bounds.width(); | - |
2357 | flowPosition = topLeft.x(); executed (the execution status of this line is deduced): flowPosition = topLeft.x(); | - |
2358 | segPosition = topLeft.y(); executed (the execution status of this line is deduced): segPosition = topLeft.y(); | - |
2359 | deltaFlowPosition = info.grid.width(); // dx executed (the execution status of this line is deduced): deltaFlowPosition = info.grid.width(); | - |
2360 | deltaSegPosition = useItemSize ? batchSavedDeltaSeg : info.grid.height(); // dy evaluated: useItemSize yes Evaluation Count:27 | yes Evaluation Count:1 |
| 1-27 |
2361 | deltaSegHint = info.grid.height(); executed (the execution status of this line is deduced): deltaSegHint = info.grid.height(); | - |
2362 | } else { // flow == QListView::TopToBottom executed: } Execution Count:28 | 28 |
2363 | segStartPosition = info.bounds.top(); executed (the execution status of this line is deduced): segStartPosition = info.bounds.top(); | - |
2364 | segEndPosition = info.bounds.height(); executed (the execution status of this line is deduced): segEndPosition = info.bounds.height(); | - |
2365 | flowPosition = topLeft.y(); executed (the execution status of this line is deduced): flowPosition = topLeft.y(); | - |
2366 | segPosition = topLeft.x(); executed (the execution status of this line is deduced): segPosition = topLeft.x(); | - |
2367 | deltaFlowPosition = info.grid.height(); // dy executed (the execution status of this line is deduced): deltaFlowPosition = info.grid.height(); | - |
2368 | deltaSegPosition = useItemSize ? batchSavedDeltaSeg : info.grid.width(); // dx evaluated: useItemSize yes Evaluation Count:908 | yes Evaluation Count:1 |
| 1-908 |
2369 | deltaSegHint = info.grid.width(); executed (the execution status of this line is deduced): deltaSegHint = info.grid.width(); | - |
2370 | } executed: } Execution Count:909 | 909 |
2371 | | - |
2372 | for (int row = info.first; row <= info.last; ++row) { evaluated: row <= info.last yes Evaluation Count:36280 | yes Evaluation Count:937 |
| 937-36280 |
2373 | if (isHidden(row)) { // ### evaluated: isHidden(row) yes Evaluation Count:631 | yes Evaluation Count:35649 |
| 631-35649 |
2374 | flowPositions.append(flowPosition); executed (the execution status of this line is deduced): flowPositions.append(flowPosition); | - |
2375 | } else { executed: } Execution Count:631 | 631 |
2376 | // if we are not using a grid, we need to find the deltas | - |
2377 | if (useItemSize) { evaluated: useItemSize yes Evaluation Count:35609 | yes Evaluation Count:40 |
| 40-35609 |
2378 | QSize hint = itemSize(option, modelIndex(row)); executed (the execution status of this line is deduced): QSize hint = itemSize(option, modelIndex(row)); | - |
2379 | if (info.flow == QListView::LeftToRight) { evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:852 | yes Evaluation Count:34757 |
| 852-34757 |
2380 | deltaFlowPosition = hint.width() + info.spacing; executed (the execution status of this line is deduced): deltaFlowPosition = hint.width() + info.spacing; | - |
2381 | deltaSegHint = hint.height() + info.spacing; executed (the execution status of this line is deduced): deltaSegHint = hint.height() + info.spacing; | - |
2382 | } else { // TopToBottom executed: } Execution Count:852 | 852 |
2383 | deltaFlowPosition = hint.height() + info.spacing; executed (the execution status of this line is deduced): deltaFlowPosition = hint.height() + info.spacing; | - |
2384 | deltaSegHint = hint.width() + info.spacing; executed (the execution status of this line is deduced): deltaSegHint = hint.width() + info.spacing; | - |
2385 | } executed: } Execution Count:34757 | 34757 |
2386 | } | - |
2387 | // create new segment | - |
2388 | if (info.wrap && (flowPosition + deltaFlowPosition >= segEndPosition)) { evaluated: info.wrap yes Evaluation Count:15032 | yes Evaluation Count:20617 |
evaluated: (flowPosition + deltaFlowPosition >= segEndPosition) yes Evaluation Count:925 | yes Evaluation Count:14107 |
| 925-20617 |
2389 | segmentExtents.append(flowPosition); executed (the execution status of this line is deduced): segmentExtents.append(flowPosition); | - |
2390 | flowPosition = info.spacing + segStartPosition; executed (the execution status of this line is deduced): flowPosition = info.spacing + segStartPosition; | - |
2391 | segPosition += deltaSegPosition; executed (the execution status of this line is deduced): segPosition += deltaSegPosition; | - |
2392 | if (info.wrap) partially evaluated: info.wrap yes Evaluation Count:925 | no Evaluation Count:0 |
| 0-925 |
2393 | segPosition += info.spacing; executed: segPosition += info.spacing; Execution Count:925 | 925 |
2394 | segmentPositions.append(segPosition); executed (the execution status of this line is deduced): segmentPositions.append(segPosition); | - |
2395 | segmentStartRows.append(row); executed (the execution status of this line is deduced): segmentStartRows.append(row); | - |
2396 | deltaSegPosition = 0; executed (the execution status of this line is deduced): deltaSegPosition = 0; | - |
2397 | } executed: } Execution Count:925 | 925 |
2398 | // save the flow position of this item | - |
2399 | scrollValueMap.append(flowPositions.count()); executed (the execution status of this line is deduced): scrollValueMap.append(flowPositions.count()); | - |
2400 | flowPositions.append(flowPosition); executed (the execution status of this line is deduced): flowPositions.append(flowPosition); | - |
2401 | // prepare for the next item | - |
2402 | deltaSegPosition = qMax(deltaSegHint, deltaSegPosition); executed (the execution status of this line is deduced): deltaSegPosition = qMax(deltaSegHint, deltaSegPosition); | - |
2403 | flowPosition += info.spacing + deltaFlowPosition; executed (the execution status of this line is deduced): flowPosition += info.spacing + deltaFlowPosition; | - |
2404 | } executed: } Execution Count:35649 | 35649 |
2405 | } | - |
2406 | // used when laying out next batch | - |
2407 | batchSavedPosition = flowPosition; executed (the execution status of this line is deduced): batchSavedPosition = flowPosition; | - |
2408 | batchSavedDeltaSeg = deltaSegPosition; executed (the execution status of this line is deduced): batchSavedDeltaSeg = deltaSegPosition; | - |
2409 | batchStartRow = info.last + 1; executed (the execution status of this line is deduced): batchStartRow = info.last + 1; | - |
2410 | if (info.last == info.max) evaluated: info.last == info.max yes Evaluation Count:936 | yes Evaluation Count:1 |
| 1-936 |
2411 | flowPosition -= info.spacing; // remove extra spacing executed: flowPosition -= info.spacing; Execution Count:936 | 936 |
2412 | // set the contents size | - |
2413 | QRect rect = info.bounds; executed (the execution status of this line is deduced): QRect rect = info.bounds; | - |
2414 | if (info.flow == QListView::LeftToRight) { evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:28 | yes Evaluation Count:909 |
| 28-909 |
2415 | rect.setRight(segmentPositions.count() == 1 ? flowPosition : info.bounds.right()); executed (the execution status of this line is deduced): rect.setRight(segmentPositions.count() == 1 ? flowPosition : info.bounds.right()); | - |
2416 | rect.setBottom(segPosition + deltaSegPosition); executed (the execution status of this line is deduced): rect.setBottom(segPosition + deltaSegPosition); | - |
2417 | } else { // TopToBottom executed: } Execution Count:28 | 28 |
2418 | rect.setRight(segPosition + deltaSegPosition); executed (the execution status of this line is deduced): rect.setRight(segPosition + deltaSegPosition); | - |
2419 | rect.setBottom(segmentPositions.count() == 1 ? flowPosition : info.bounds.bottom()); executed (the execution status of this line is deduced): rect.setBottom(segmentPositions.count() == 1 ? flowPosition : info.bounds.bottom()); | - |
2420 | } executed: } Execution Count:909 | 909 |
2421 | contentsSize = QSize(rect.right(), rect.bottom()); executed (the execution status of this line is deduced): contentsSize = QSize(rect.right(), rect.bottom()); | - |
2422 | // if it is the last batch, save the end of the segments | - |
2423 | if (info.last == info.max) { evaluated: info.last == info.max yes Evaluation Count:936 | yes Evaluation Count:1 |
| 1-936 |
2424 | segmentExtents.append(flowPosition); executed (the execution status of this line is deduced): segmentExtents.append(flowPosition); | - |
2425 | scrollValueMap.append(flowPositions.count()); executed (the execution status of this line is deduced): scrollValueMap.append(flowPositions.count()); | - |
2426 | flowPositions.append(flowPosition); executed (the execution status of this line is deduced): flowPositions.append(flowPosition); | - |
2427 | segmentPositions.append(info.wrap ? segPosition + deltaSegPosition : INT_MAX); executed (the execution status of this line is deduced): segmentPositions.append(info.wrap ? segPosition + deltaSegPosition : 2147483647); | - |
2428 | } executed: } Execution Count:936 | 936 |
2429 | // if the new items are visble, update the viewport | - |
2430 | QRect changedRect(topLeft, rect.bottomRight()); executed (the execution status of this line is deduced): QRect changedRect(topLeft, rect.bottomRight()); | - |
2431 | if (clipRect().intersects(changedRect)) evaluated: clipRect().intersects(changedRect) yes Evaluation Count:374 | yes Evaluation Count:563 |
| 374-563 |
2432 | viewport()->update(); executed: viewport()->update(); Execution Count:374 | 374 |
2433 | } executed: } Execution Count:937 | 937 |
2434 | | - |
2435 | /*! | - |
2436 | \internal | - |
2437 | Finds the set of items intersecting with \a area. | - |
2438 | In this function, itemsize is counted from topleft to the start of the next item. | - |
2439 | */ | - |
2440 | QVector<QModelIndex> QListModeViewBase::intersectingSet(const QRect &area) const | - |
2441 | { | - |
2442 | QVector<QModelIndex> ret; executed (the execution status of this line is deduced): QVector<QModelIndex> ret; | - |
2443 | int segStartPosition; executed (the execution status of this line is deduced): int segStartPosition; | - |
2444 | int segEndPosition; executed (the execution status of this line is deduced): int segEndPosition; | - |
2445 | int flowStartPosition; executed (the execution status of this line is deduced): int flowStartPosition; | - |
2446 | int flowEndPosition; executed (the execution status of this line is deduced): int flowEndPosition; | - |
2447 | if (flow() == QListView::LeftToRight) { evaluated: flow() == QListView::LeftToRight yes Evaluation Count:741 | yes Evaluation Count:2652 |
| 741-2652 |
2448 | segStartPosition = area.top(); executed (the execution status of this line is deduced): segStartPosition = area.top(); | - |
2449 | segEndPosition = area.bottom(); executed (the execution status of this line is deduced): segEndPosition = area.bottom(); | - |
2450 | flowStartPosition = area.left(); executed (the execution status of this line is deduced): flowStartPosition = area.left(); | - |
2451 | flowEndPosition = area.right(); executed (the execution status of this line is deduced): flowEndPosition = area.right(); | - |
2452 | } else { executed: } Execution Count:741 | 741 |
2453 | segStartPosition = area.left(); executed (the execution status of this line is deduced): segStartPosition = area.left(); | - |
2454 | segEndPosition = area.right(); executed (the execution status of this line is deduced): segEndPosition = area.right(); | - |
2455 | flowStartPosition = area.top(); executed (the execution status of this line is deduced): flowStartPosition = area.top(); | - |
2456 | flowEndPosition = area.bottom(); executed (the execution status of this line is deduced): flowEndPosition = area.bottom(); | - |
2457 | } executed: } Execution Count:2652 | 2652 |
2458 | if (segmentPositions.count() < 2 || flowPositions.isEmpty()) evaluated: segmentPositions.count() < 2 yes Evaluation Count:83 | yes Evaluation Count:3310 |
partially evaluated: flowPositions.isEmpty() no Evaluation Count:0 | yes Evaluation Count:3310 |
| 0-3310 |
2459 | return ret; executed: return ret; Execution Count:83 | 83 |
2460 | // the last segment position is actually the edge of the last segment | - |
2461 | const int segLast = segmentPositions.count() - 2; executed (the execution status of this line is deduced): const int segLast = segmentPositions.count() - 2; | - |
2462 | int seg = qBinarySearch<int>(segmentPositions, segStartPosition, 0, segLast + 1); executed (the execution status of this line is deduced): int seg = qBinarySearch<int>(segmentPositions, segStartPosition, 0, segLast + 1); | - |
2463 | for (; seg <= segLast && segmentPositions.at(seg) <= segEndPosition; ++seg) { evaluated: seg <= segLast yes Evaluation Count:3536 | yes Evaluation Count:3246 |
evaluated: segmentPositions.at(seg) <= segEndPosition yes Evaluation Count:3472 | yes Evaluation Count:64 |
| 64-3536 |
2464 | int first = segmentStartRows.at(seg); executed (the execution status of this line is deduced): int first = segmentStartRows.at(seg); | - |
2465 | int last = (seg < segLast ? segmentStartRows.at(seg + 1) : batchStartRow) - 1; evaluated: seg < segLast yes Evaluation Count:231 | yes Evaluation Count:3241 |
| 231-3241 |
2466 | if (segmentExtents.at(seg) < flowStartPosition) evaluated: segmentExtents.at(seg) < flowStartPosition yes Evaluation Count:11 | yes Evaluation Count:3461 |
| 11-3461 |
2467 | continue; executed: continue; Execution Count:11 | 11 |
2468 | int row = qBinarySearch<int>(flowPositions, flowStartPosition, first, last); executed (the execution status of this line is deduced): int row = qBinarySearch<int>(flowPositions, flowStartPosition, first, last); | - |
2469 | for (; row <= last && flowPositions.at(row) <= flowEndPosition; ++row) { evaluated: row <= last yes Evaluation Count:15243 | yes Evaluation Count:560 |
evaluated: flowPositions.at(row) <= flowEndPosition yes Evaluation Count:12342 | yes Evaluation Count:2901 |
| 560-15243 |
2470 | if (isHidden(row)) evaluated: isHidden(row) yes Evaluation Count:1679 | yes Evaluation Count:10663 |
| 1679-10663 |
2471 | continue; executed: continue; Execution Count:1679 | 1679 |
2472 | QModelIndex index = modelIndex(row); executed (the execution status of this line is deduced): QModelIndex index = modelIndex(row); | - |
2473 | if (index.isValid()) partially evaluated: index.isValid() yes Evaluation Count:10663 | no Evaluation Count:0 |
| 0-10663 |
2474 | ret += index; executed: ret += index; Execution Count:10663 | 10663 |
2475 | #if 0 // for debugging | - |
2476 | else | - |
2477 | qWarning("intersectingSet: row %d was invalid", row); | - |
2478 | #endif | - |
2479 | } executed: } Execution Count:10663 | 10663 |
2480 | } executed: } Execution Count:3461 | 3461 |
2481 | return ret; executed: return ret; Execution Count:3310 | 3310 |
2482 | } | - |
2483 | | - |
2484 | void QListModeViewBase::dataChanged(const QModelIndex &, const QModelIndex &) | - |
2485 | { | - |
2486 | dd->doDelayedItemsLayout(); executed (the execution status of this line is deduced): dd->doDelayedItemsLayout(); | - |
2487 | } executed: } Execution Count:3979 | 3979 |
2488 | | - |
2489 | | - |
2490 | QRect QListModeViewBase::mapToViewport(const QRect &rect) const | - |
2491 | { | - |
2492 | if (isWrapping()) evaluated: isWrapping() yes Evaluation Count:3096 | yes Evaluation Count:15146 |
| 3096-15146 |
2493 | return rect; executed: return rect; Execution Count:3096 | 3096 |
2494 | // If the listview is in "listbox-mode", the items are as wide as the view. | - |
2495 | // But we don't shrink the items. | - |
2496 | QRect result = rect; executed (the execution status of this line is deduced): QRect result = rect; | - |
2497 | if (flow() == QListView::TopToBottom) { evaluated: flow() == QListView::TopToBottom yes Evaluation Count:11630 | yes Evaluation Count:3516 |
| 3516-11630 |
2498 | result.setLeft(spacing()); executed (the execution status of this line is deduced): result.setLeft(spacing()); | - |
2499 | result.setWidth(qMax(rect.width(), qMax(contentsSize.width(), viewport()->width()) - 2 * spacing())); executed (the execution status of this line is deduced): result.setWidth(qMax(rect.width(), qMax(contentsSize.width(), viewport()->width()) - 2 * spacing())); | - |
2500 | } else { // LeftToRight executed: } Execution Count:11630 | 11630 |
2501 | result.setTop(spacing()); executed (the execution status of this line is deduced): result.setTop(spacing()); | - |
2502 | result.setHeight(qMax(rect.height(), qMax(contentsSize.height(), viewport()->height()) - 2 * spacing())); executed (the execution status of this line is deduced): result.setHeight(qMax(rect.height(), qMax(contentsSize.height(), viewport()->height()) - 2 * spacing())); | - |
2503 | } executed: } Execution Count:3516 | 3516 |
2504 | return result; executed: return result; Execution Count:15146 | 15146 |
2505 | } | - |
2506 | | - |
2507 | int QListModeViewBase::perItemScrollingPageSteps(int length, int bounds, bool wrap) const | - |
2508 | { | - |
2509 | QVector<int> positions; executed (the execution status of this line is deduced): QVector<int> positions; | - |
2510 | if (wrap) evaluated: wrap yes Evaluation Count:120 | yes Evaluation Count:1120 |
| 120-1120 |
2511 | positions = segmentPositions; executed: positions = segmentPositions; Execution Count:120 | 120 |
2512 | else if (!flowPositions.isEmpty()) { evaluated: !flowPositions.isEmpty() yes Evaluation Count:1118 | yes Evaluation Count:2 |
| 2-1118 |
2513 | positions.reserve(scrollValueMap.size()); executed (the execution status of this line is deduced): positions.reserve(scrollValueMap.size()); | - |
2514 | foreach (int itemShown, scrollValueMap) executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(scrollValueMap)> _container_(scrollValueMap); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (int itemShown = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
2515 | positions.append(flowPositions.at(itemShown)); executed: positions.append(flowPositions.at(itemShown)); Execution Count:29227 | 29227 |
2516 | } executed: } Execution Count:1118 | 1118 |
2517 | if (positions.isEmpty() || bounds <= length) evaluated: positions.isEmpty() yes Evaluation Count:2 | yes Evaluation Count:1238 |
evaluated: bounds <= length yes Evaluation Count:372 | yes Evaluation Count:866 |
| 2-1238 |
2518 | return positions.count(); executed: return positions.count(); Execution Count:374 | 374 |
2519 | if (uniformItemSizes()) { evaluated: uniformItemSizes() yes Evaluation Count:14 | yes Evaluation Count:852 |
| 14-852 |
2520 | for (int i = 1; i < positions.count(); ++i) partially evaluated: i < positions.count() yes Evaluation Count:14 | no Evaluation Count:0 |
| 0-14 |
2521 | if (positions.at(i) > 0) partially evaluated: positions.at(i) > 0 yes Evaluation Count:14 | no Evaluation Count:0 |
| 0-14 |
2522 | return length / positions.at(i); executed: return length / positions.at(i); Execution Count:14 | 14 |
2523 | return 0; // all items had height 0 never executed: return 0; | 0 |
2524 | } | - |
2525 | int pageSteps = 0; executed (the execution status of this line is deduced): int pageSteps = 0; | - |
2526 | int steps = positions.count() - 1; executed (the execution status of this line is deduced): int steps = positions.count() - 1; | - |
2527 | int max = qMax(length, bounds); executed (the execution status of this line is deduced): int max = qMax(length, bounds); | - |
2528 | int min = qMin(length, bounds); executed (the execution status of this line is deduced): int min = qMin(length, bounds); | - |
2529 | int pos = min - (max - positions.last()); executed (the execution status of this line is deduced): int pos = min - (max - positions.last()); | - |
2530 | | - |
2531 | while (pos >= 0 && steps > 0) { evaluated: pos >= 0 yes Evaluation Count:3691 | yes Evaluation Count:852 |
partially evaluated: steps > 0 yes Evaluation Count:3691 | no Evaluation Count:0 |
| 0-3691 |
2532 | pos -= (positions.at(steps) - positions.at(steps - 1)); executed (the execution status of this line is deduced): pos -= (positions.at(steps) - positions.at(steps - 1)); | - |
2533 | if (pos >= 0) //this item should be visible evaluated: pos >= 0 yes Evaluation Count:2839 | yes Evaluation Count:852 |
| 852-2839 |
2534 | ++pageSteps; executed: ++pageSteps; Execution Count:2839 | 2839 |
2535 | --steps; executed (the execution status of this line is deduced): --steps; | - |
2536 | } executed: } Execution Count:3691 | 3691 |
2537 | | - |
2538 | // at this point we know that positions has at least one entry | - |
2539 | return qMax(pageSteps, 1); executed: return qMax(pageSteps, 1); Execution Count:852 | 852 |
2540 | } | - |
2541 | | - |
2542 | int QListModeViewBase::perItemScrollToValue(int index, int scrollValue, int viewportSize, | - |
2543 | QAbstractItemView::ScrollHint hint, | - |
2544 | Qt::Orientation orientation, bool wrap, int itemExtent) const | - |
2545 | { | - |
2546 | if (index < 0) partially evaluated: index < 0 no Evaluation Count:0 | yes Evaluation Count:389 |
| 0-389 |
2547 | return scrollValue; never executed: return scrollValue; | 0 |
2548 | | - |
2549 | itemExtent += spacing(); executed (the execution status of this line is deduced): itemExtent += spacing(); | - |
2550 | QVector<int> visibleFlowPositions; executed (the execution status of this line is deduced): QVector<int> visibleFlowPositions; | - |
2551 | visibleFlowPositions.reserve(flowPositions.count() - 1); executed (the execution status of this line is deduced): visibleFlowPositions.reserve(flowPositions.count() - 1); | - |
2552 | for (int i = 0; i < flowPositions.count() - 1; i++) { // flowPositions count is +1 larger than actual row count evaluated: i < flowPositions.count() - 1 yes Evaluation Count:17381 | yes Evaluation Count:389 |
| 389-17381 |
2553 | if (!isHidden(i)) evaluated: !isHidden(i) yes Evaluation Count:11102 | yes Evaluation Count:6279 |
| 6279-11102 |
2554 | visibleFlowPositions.append(flowPositions.at(i)); executed: visibleFlowPositions.append(flowPositions.at(i)); Execution Count:11102 | 11102 |
2555 | } executed: } Execution Count:17381 | 17381 |
2556 | | - |
2557 | if (!wrap) { evaluated: !wrap yes Evaluation Count:384 | yes Evaluation Count:5 |
| 5-384 |
2558 | int topIndex = index; executed (the execution status of this line is deduced): int topIndex = index; | - |
2559 | const int bottomIndex = topIndex; executed (the execution status of this line is deduced): const int bottomIndex = topIndex; | - |
2560 | const int bottomCoordinate = visibleFlowPositions.at(index); executed (the execution status of this line is deduced): const int bottomCoordinate = visibleFlowPositions.at(index); | - |
2561 | | - |
2562 | while (topIndex > 0 && evaluated: topIndex > 0 yes Evaluation Count:2609 | yes Evaluation Count:95 |
| 95-2609 |
2563 | (bottomCoordinate - visibleFlowPositions.at(topIndex - 1) + itemExtent) <= (viewportSize)) { evaluated: (bottomCoordinate - visibleFlowPositions.at(topIndex - 1) + itemExtent) <= (viewportSize) yes Evaluation Count:2320 | yes Evaluation Count:289 |
| 289-2320 |
2564 | topIndex--; executed (the execution status of this line is deduced): topIndex--; | - |
2565 | } executed: } Execution Count:2320 | 2320 |
2566 | | - |
2567 | const int itemCount = bottomIndex - topIndex + 1; executed (the execution status of this line is deduced): const int itemCount = bottomIndex - topIndex + 1; | - |
2568 | switch (hint) { | - |
2569 | case QAbstractItemView::PositionAtTop: | - |
2570 | return index; executed: return index; Execution Count:170 | 170 |
2571 | case QAbstractItemView::PositionAtBottom: | - |
2572 | return index - itemCount + 1; executed: return index - itemCount + 1; Execution Count:214 | 214 |
2573 | case QAbstractItemView::PositionAtCenter: | - |
2574 | return index - (itemCount / 2); never executed: return index - (itemCount / 2); | 0 |
2575 | default: | - |
2576 | break; | 0 |
2577 | } | - |
2578 | } else { // wrapping | 0 |
2579 | Qt::Orientation flowOrientation = (flow() == QListView::LeftToRight partially evaluated: flow() == QListView::LeftToRight no Evaluation Count:0 | yes Evaluation Count:5 |
| 0-5 |
2580 | ? Qt::Horizontal : Qt::Vertical); executed (the execution status of this line is deduced): ? Qt::Horizontal : Qt::Vertical); | - |
2581 | if (flowOrientation == orientation) { // scrolling in the "flow" direction evaluated: flowOrientation == orientation yes Evaluation Count:2 | yes Evaluation Count:3 |
| 2-3 |
2582 | // ### wrapped scrolling in the flow direction | - |
2583 | return visibleFlowPositions.at(index); // ### always pixel based for now executed: return visibleFlowPositions.at(index); Execution Count:2 | 2 |
2584 | } else if (!segmentStartRows.isEmpty()) { // we are scrolling in the "segment" direction partially evaluated: !segmentStartRows.isEmpty() yes Evaluation Count:3 | no Evaluation Count:0 |
| 0-3 |
2585 | int segment = qBinarySearch<int>(segmentStartRows, index, 0, segmentStartRows.count() - 1); executed (the execution status of this line is deduced): int segment = qBinarySearch<int>(segmentStartRows, index, 0, segmentStartRows.count() - 1); | - |
2586 | int leftSegment = segment; executed (the execution status of this line is deduced): int leftSegment = segment; | - |
2587 | const int rightSegment = leftSegment; executed (the execution status of this line is deduced): const int rightSegment = leftSegment; | - |
2588 | const int bottomCoordinate = segmentPositions.at(segment); executed (the execution status of this line is deduced): const int bottomCoordinate = segmentPositions.at(segment); | - |
2589 | | - |
2590 | while (leftSegment > scrollValue && evaluated: leftSegment > scrollValue yes Evaluation Count:2 | yes Evaluation Count:1 |
| 1-2 |
2591 | (bottomCoordinate - segmentPositions.at(leftSegment-1) + itemExtent) <= (viewportSize)) { partially evaluated: (bottomCoordinate - segmentPositions.at(leftSegment-1) + itemExtent) <= (viewportSize) no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
2592 | leftSegment--; never executed (the execution status of this line is deduced): leftSegment--; | - |
2593 | } | 0 |
2594 | | - |
2595 | const int segmentCount = rightSegment - leftSegment + 1; executed (the execution status of this line is deduced): const int segmentCount = rightSegment - leftSegment + 1; | - |
2596 | switch (hint) { | - |
2597 | case QAbstractItemView::PositionAtTop: | - |
2598 | return segment; executed: return segment; Execution Count:1 | 1 |
2599 | case QAbstractItemView::PositionAtBottom: | - |
2600 | return segment - segmentCount + 1; executed: return segment - segmentCount + 1; Execution Count:2 | 2 |
2601 | case QAbstractItemView::PositionAtCenter: | - |
2602 | return segment - (segmentCount / 2); never executed: return segment - (segmentCount / 2); | 0 |
2603 | default: | - |
2604 | break; | 0 |
2605 | } | - |
2606 | } | 0 |
2607 | } | - |
2608 | return scrollValue; never executed: return scrollValue; | 0 |
2609 | } | - |
2610 | | - |
2611 | void QListModeViewBase::clear() | - |
2612 | { | - |
2613 | flowPositions.clear(); executed (the execution status of this line is deduced): flowPositions.clear(); | - |
2614 | segmentPositions.clear(); executed (the execution status of this line is deduced): segmentPositions.clear(); | - |
2615 | segmentStartRows.clear(); executed (the execution status of this line is deduced): segmentStartRows.clear(); | - |
2616 | segmentExtents.clear(); executed (the execution status of this line is deduced): segmentExtents.clear(); | - |
2617 | batchSavedPosition = 0; executed (the execution status of this line is deduced): batchSavedPosition = 0; | - |
2618 | batchStartRow = 0; executed (the execution status of this line is deduced): batchStartRow = 0; | - |
2619 | batchSavedDeltaSeg = 0; executed (the execution status of this line is deduced): batchSavedDeltaSeg = 0; | - |
2620 | } executed: } Execution Count:22224 | 22224 |
2621 | | - |
2622 | /* | - |
2623 | * IconMode ListView Implementation | - |
2624 | */ | - |
2625 | | - |
2626 | void QIconModeViewBase::setPositionForIndex(const QPoint &position, const QModelIndex &index) | - |
2627 | { | - |
2628 | if (index.row() >= items.count()) partially evaluated: index.row() >= items.count() no Evaluation Count:0 | yes Evaluation Count:5 |
| 0-5 |
2629 | return; | 0 |
2630 | const QSize oldContents = contentsSize; executed (the execution status of this line is deduced): const QSize oldContents = contentsSize; | - |
2631 | qq->update(index); // update old position executed (the execution status of this line is deduced): qq->update(index); | - |
2632 | moveItem(index.row(), position); executed (the execution status of this line is deduced): moveItem(index.row(), position); | - |
2633 | qq->update(index); // update new position executed (the execution status of this line is deduced): qq->update(index); | - |
2634 | | - |
2635 | if (contentsSize != oldContents) evaluated: contentsSize != oldContents yes Evaluation Count:4 | yes Evaluation Count:1 |
| 1-4 |
2636 | dd->viewUpdateGeometries(); // update the scroll bars executed: dd->viewUpdateGeometries(); Execution Count:4 | 4 |
2637 | } executed: } Execution Count:5 | 5 |
2638 | | - |
2639 | void QIconModeViewBase::appendHiddenRow(int row) | - |
2640 | { | - |
2641 | if (row >= 0 && row < items.count()) //remove item partially evaluated: row >= 0 yes Evaluation Count:182 | no Evaluation Count:0 |
partially evaluated: row < items.count() no Evaluation Count:0 | yes Evaluation Count:182 |
| 0-182 |
2642 | tree.removeLeaf(items.at(row).rect(), row); never executed: tree.removeLeaf(items.at(row).rect(), row); | 0 |
2643 | QCommonListViewBase::appendHiddenRow(row); executed (the execution status of this line is deduced): QCommonListViewBase::appendHiddenRow(row); | - |
2644 | } executed: } Execution Count:182 | 182 |
2645 | | - |
2646 | void QIconModeViewBase::removeHiddenRow(int row) | - |
2647 | { | - |
2648 | QCommonListViewBase::removeHiddenRow(row); never executed (the execution status of this line is deduced): QCommonListViewBase::removeHiddenRow(row); | - |
2649 | if (row >= 0 && row < items.count()) //insert item never evaluated: row >= 0 never evaluated: row < items.count() | 0 |
2650 | tree.insertLeaf(items.at(row).rect(), row); never executed: tree.insertLeaf(items.at(row).rect(), row); | 0 |
2651 | } | 0 |
2652 | | - |
2653 | #ifndef QT_NO_DRAGANDDROP | - |
2654 | void QIconModeViewBase::paintDragDrop(QPainter *painter) | - |
2655 | { | - |
2656 | if (!draggedItems.isEmpty() && viewport()->rect().contains(draggedItemsPos)) { partially evaluated: !draggedItems.isEmpty() no Evaluation Count:0 | yes Evaluation Count:39 |
never evaluated: viewport()->rect().contains(draggedItemsPos) | 0-39 |
2657 | //we need to draw the items that arre dragged | - |
2658 | painter->translate(draggedItemsDelta()); never executed (the execution status of this line is deduced): painter->translate(draggedItemsDelta()); | - |
2659 | QStyleOptionViewItem option = viewOptions(); never executed (the execution status of this line is deduced): QStyleOptionViewItem option = viewOptions(); | - |
2660 | option.state &= ~QStyle::State_MouseOver; never executed (the execution status of this line is deduced): option.state &= ~QStyle::State_MouseOver; | - |
2661 | QVector<QModelIndex>::const_iterator it = draggedItems.constBegin(); never executed (the execution status of this line is deduced): QVector<QModelIndex>::const_iterator it = draggedItems.constBegin(); | - |
2662 | QListViewItem item = indexToListViewItem(*it); never executed (the execution status of this line is deduced): QListViewItem item = indexToListViewItem(*it); | - |
2663 | for (; it != draggedItems.constEnd(); ++it) { never evaluated: it != draggedItems.constEnd() | 0 |
2664 | item = indexToListViewItem(*it); never executed (the execution status of this line is deduced): item = indexToListViewItem(*it); | - |
2665 | option.rect = viewItemRect(item); never executed (the execution status of this line is deduced): option.rect = viewItemRect(item); | - |
2666 | delegate(*it)->paint(painter, option, *it); never executed (the execution status of this line is deduced): delegate(*it)->paint(painter, option, *it); | - |
2667 | } | 0 |
2668 | } | 0 |
2669 | } executed: } Execution Count:39 | 39 |
2670 | | - |
2671 | bool QIconModeViewBase::filterStartDrag(Qt::DropActions supportedActions) | - |
2672 | { | - |
2673 | // This function does the same thing as in QAbstractItemView::startDrag(), | - |
2674 | // plus adding viewitems to the draggedItems list. | - |
2675 | // We need these items to draw the drag items | - |
2676 | QModelIndexList indexes = dd->selectionModel->selectedIndexes(); never executed (the execution status of this line is deduced): QModelIndexList indexes = dd->selectionModel->selectedIndexes(); | - |
2677 | if (indexes.count() > 0 ) { never evaluated: indexes.count() > 0 | 0 |
2678 | if (viewport()->acceptDrops()) { never evaluated: viewport()->acceptDrops() | 0 |
2679 | QModelIndexList::ConstIterator it = indexes.constBegin(); never executed (the execution status of this line is deduced): QModelIndexList::ConstIterator it = indexes.constBegin(); | - |
2680 | for (; it != indexes.constEnd(); ++it) never evaluated: it != indexes.constEnd() | 0 |
2681 | if (dd->model->flags(*it) & Qt::ItemIsDragEnabled never evaluated: dd->model->flags(*it) & Qt::ItemIsDragEnabled | 0 |
2682 | && (*it).column() == dd->column) never evaluated: (*it).column() == dd->column | 0 |
2683 | draggedItems.push_back(*it); never executed: draggedItems.push_back(*it); | 0 |
2684 | } | 0 |
2685 | QDrag *drag = new QDrag(qq); never executed (the execution status of this line is deduced): QDrag *drag = new QDrag(qq); | - |
2686 | drag->setMimeData(dd->model->mimeData(indexes)); never executed (the execution status of this line is deduced): drag->setMimeData(dd->model->mimeData(indexes)); | - |
2687 | Qt::DropAction action = drag->exec(supportedActions, Qt::CopyAction); never executed (the execution status of this line is deduced): Qt::DropAction action = drag->exec(supportedActions, Qt::CopyAction); | - |
2688 | draggedItems.clear(); never executed (the execution status of this line is deduced): draggedItems.clear(); | - |
2689 | if (action == Qt::MoveAction) never evaluated: action == Qt::MoveAction | 0 |
2690 | dd->clearOrRemove(); never executed: dd->clearOrRemove(); | 0 |
2691 | } | 0 |
2692 | return true; never executed: return true; | 0 |
2693 | } | - |
2694 | | - |
2695 | bool QIconModeViewBase::filterDropEvent(QDropEvent *e) | - |
2696 | { | - |
2697 | if (e->source() != qq) never evaluated: e->source() != qq | 0 |
2698 | return false; never executed: return false; | 0 |
2699 | | - |
2700 | const QSize contents = contentsSize; never executed (the execution status of this line is deduced): const QSize contents = contentsSize; | - |
2701 | QPoint offset(horizontalOffset(), verticalOffset()); never executed (the execution status of this line is deduced): QPoint offset(horizontalOffset(), verticalOffset()); | - |
2702 | QPoint end = e->pos() + offset; never executed (the execution status of this line is deduced): QPoint end = e->pos() + offset; | - |
2703 | if (qq->acceptDrops()) { never evaluated: qq->acceptDrops() | 0 |
2704 | const Qt::ItemFlags dropableFlags = Qt::ItemIsDropEnabled|Qt::ItemIsEnabled; never executed (the execution status of this line is deduced): const Qt::ItemFlags dropableFlags = Qt::ItemIsDropEnabled|Qt::ItemIsEnabled; | - |
2705 | const QVector<QModelIndex> &dropIndices = intersectingSet(QRect(end, QSize(1, 1))); never executed (the execution status of this line is deduced): const QVector<QModelIndex> &dropIndices = intersectingSet(QRect(end, QSize(1, 1))); | - |
2706 | foreach (const QModelIndex &index, dropIndices) never executed (the execution status of this line is deduced): for (QForeachContainer<__typeof__(dropIndices)> _container_(dropIndices); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (const QModelIndex &index = *_container_.i;; __extension__ ({--_container_.brk; break;})) | - |
2707 | if ((index.flags() & dropableFlags) == dropableFlags) never evaluated: (index.flags() & dropableFlags) == dropableFlags | 0 |
2708 | return false; never executed: return false; | 0 |
2709 | } | 0 |
2710 | QPoint start = dd->pressedPosition; never executed (the execution status of this line is deduced): QPoint start = dd->pressedPosition; | - |
2711 | QPoint delta = (dd->movement == QListView::Snap ? snapToGrid(end) - snapToGrid(start) : end - start); never evaluated: dd->movement == QListView::Snap | 0 |
2712 | QList<QModelIndex> indexes = dd->selectionModel->selectedIndexes(); never executed (the execution status of this line is deduced): QList<QModelIndex> indexes = dd->selectionModel->selectedIndexes(); | - |
2713 | for (int i = 0; i < indexes.count(); ++i) { never evaluated: i < indexes.count() | 0 |
2714 | QModelIndex index = indexes.at(i); never executed (the execution status of this line is deduced): QModelIndex index = indexes.at(i); | - |
2715 | QRect rect = dd->rectForIndex(index); never executed (the execution status of this line is deduced): QRect rect = dd->rectForIndex(index); | - |
2716 | viewport()->update(dd->mapToViewport(rect, false)); never executed (the execution status of this line is deduced): viewport()->update(dd->mapToViewport(rect, false)); | - |
2717 | QPoint dest = rect.topLeft() + delta; never executed (the execution status of this line is deduced): QPoint dest = rect.topLeft() + delta; | - |
2718 | if (qq->isRightToLeft()) never evaluated: qq->isRightToLeft() | 0 |
2719 | dest.setX(dd->flipX(dest.x()) - rect.width()); never executed: dest.setX(dd->flipX(dest.x()) - rect.width()); | 0 |
2720 | moveItem(index.row(), dest); never executed (the execution status of this line is deduced): moveItem(index.row(), dest); | - |
2721 | qq->update(index); never executed (the execution status of this line is deduced): qq->update(index); | - |
2722 | } | 0 |
2723 | dd->stopAutoScroll(); never executed (the execution status of this line is deduced): dd->stopAutoScroll(); | - |
2724 | draggedItems.clear(); never executed (the execution status of this line is deduced): draggedItems.clear(); | - |
2725 | dd->emitIndexesMoved(indexes); never executed (the execution status of this line is deduced): dd->emitIndexesMoved(indexes); | - |
2726 | e->accept(); // we have handled the event never executed (the execution status of this line is deduced): e->accept(); | - |
2727 | // if the size has not grown, we need to check if it has shrinked | - |
2728 | if (contentsSize != contents) { never evaluated: contentsSize != contents | 0 |
2729 | if ((contentsSize.width() <= contents.width() never evaluated: contentsSize.width() <= contents.width() | 0 |
2730 | || contentsSize.height() <= contents.height())) { never evaluated: contentsSize.height() <= contents.height() | 0 |
2731 | updateContentsSize(); never executed (the execution status of this line is deduced): updateContentsSize(); | - |
2732 | } | 0 |
2733 | dd->viewUpdateGeometries(); never executed (the execution status of this line is deduced): dd->viewUpdateGeometries(); | - |
2734 | } | 0 |
2735 | return true; never executed: return true; | 0 |
2736 | } | - |
2737 | | - |
2738 | bool QIconModeViewBase::filterDragLeaveEvent(QDragLeaveEvent *e) | - |
2739 | { | - |
2740 | viewport()->update(draggedItemsRect()); // erase the area never executed (the execution status of this line is deduced): viewport()->update(draggedItemsRect()); | - |
2741 | draggedItemsPos = QPoint(-1, -1); // don't draw the dragged items never executed (the execution status of this line is deduced): draggedItemsPos = QPoint(-1, -1); | - |
2742 | return QCommonListViewBase::filterDragLeaveEvent(e); never executed: return QCommonListViewBase::filterDragLeaveEvent(e); | 0 |
2743 | } | - |
2744 | | - |
2745 | bool QIconModeViewBase::filterDragMoveEvent(QDragMoveEvent *e) | - |
2746 | { | - |
2747 | if (e->source() != qq || !dd->canDecode(e)) never evaluated: e->source() != qq never evaluated: !dd->canDecode(e) | 0 |
2748 | return false; never executed: return false; | 0 |
2749 | | - |
2750 | // ignore by default | - |
2751 | e->ignore(); never executed (the execution status of this line is deduced): e->ignore(); | - |
2752 | // get old dragged items rect | - |
2753 | QRect itemsRect = this->itemsRect(draggedItems); never executed (the execution status of this line is deduced): QRect itemsRect = this->itemsRect(draggedItems); | - |
2754 | viewport()->update(itemsRect.translated(draggedItemsDelta())); never executed (the execution status of this line is deduced): viewport()->update(itemsRect.translated(draggedItemsDelta())); | - |
2755 | // update position | - |
2756 | draggedItemsPos = e->pos(); never executed (the execution status of this line is deduced): draggedItemsPos = e->pos(); | - |
2757 | // get new items rect | - |
2758 | viewport()->update(itemsRect.translated(draggedItemsDelta())); never executed (the execution status of this line is deduced): viewport()->update(itemsRect.translated(draggedItemsDelta())); | - |
2759 | // set the item under the cursor to current | - |
2760 | QModelIndex index; never executed (the execution status of this line is deduced): QModelIndex index; | - |
2761 | if (movement() == QListView::Snap) { never evaluated: movement() == QListView::Snap | 0 |
2762 | QRect rect(snapToGrid(e->pos() + offset()), gridSize()); never executed (the execution status of this line is deduced): QRect rect(snapToGrid(e->pos() + offset()), gridSize()); | - |
2763 | const QVector<QModelIndex> intersectVector = intersectingSet(rect); never executed (the execution status of this line is deduced): const QVector<QModelIndex> intersectVector = intersectingSet(rect); | - |
2764 | index = intersectVector.count() > 0 ? intersectVector.last() : QModelIndex(); never evaluated: intersectVector.count() > 0 | 0 |
2765 | } else { | 0 |
2766 | index = qq->indexAt(e->pos()); never executed (the execution status of this line is deduced): index = qq->indexAt(e->pos()); | - |
2767 | } | 0 |
2768 | // check if we allow drops here | - |
2769 | if (draggedItems.contains(index)) never evaluated: draggedItems.contains(index) | 0 |
2770 | e->accept(); // allow changing item position never executed: e->accept(); | 0 |
2771 | else if (dd->model->flags(index) & Qt::ItemIsDropEnabled) never evaluated: dd->model->flags(index) & Qt::ItemIsDropEnabled | 0 |
2772 | e->accept(); // allow dropping on dropenabled items never executed: e->accept(); | 0 |
2773 | else if (!index.isValid()) never evaluated: !index.isValid() | 0 |
2774 | e->accept(); // allow dropping in empty areas never executed: e->accept(); | 0 |
2775 | | - |
2776 | // the event was treated. do autoscrolling | - |
2777 | if (dd->shouldAutoScroll(e->pos())) never evaluated: dd->shouldAutoScroll(e->pos()) | 0 |
2778 | dd->startAutoScroll(); never executed: dd->startAutoScroll(); | 0 |
2779 | return true; never executed: return true; | 0 |
2780 | } | - |
2781 | #endif // QT_NO_DRAGANDDROP | - |
2782 | | - |
2783 | void QIconModeViewBase::setRowCount(int rowCount) | - |
2784 | { | - |
2785 | tree.create(qMax(rowCount - hiddenCount(), 0)); executed (the execution status of this line is deduced): tree.create(qMax(rowCount - hiddenCount(), 0)); | - |
2786 | } executed: } Execution Count:15 | 15 |
2787 | | - |
2788 | void QIconModeViewBase::scrollContentsBy(int dx, int dy, bool scrollElasticBand) | - |
2789 | { | - |
2790 | if (scrollElasticBand) partially evaluated: scrollElasticBand no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
2791 | dd->scrollElasticBandBy(isRightToLeft() ? -dx : dx, dy); never executed: dd->scrollElasticBandBy(isRightToLeft() ? -dx : dx, dy); | 0 |
2792 | | - |
2793 | QCommonListViewBase::scrollContentsBy(dx, dy, scrollElasticBand); executed (the execution status of this line is deduced): QCommonListViewBase::scrollContentsBy(dx, dy, scrollElasticBand); | - |
2794 | if (!draggedItems.isEmpty()) partially evaluated: !draggedItems.isEmpty() no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
2795 | viewport()->update(draggedItemsRect().translated(dx, dy)); never executed: viewport()->update(draggedItemsRect().translated(dx, dy)); | 0 |
2796 | } executed: } Execution Count:2 | 2 |
2797 | | - |
2798 | void QIconModeViewBase::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) | - |
2799 | { | - |
2800 | if (column() >= topLeft.column() && column() <= bottomRight.column()) { never evaluated: column() >= topLeft.column() never evaluated: column() <= bottomRight.column() | 0 |
2801 | QStyleOptionViewItem option = viewOptions(); never executed (the execution status of this line is deduced): QStyleOptionViewItem option = viewOptions(); | - |
2802 | int bottom = qMin(items.count(), bottomRight.row() + 1); never executed (the execution status of this line is deduced): int bottom = qMin(items.count(), bottomRight.row() + 1); | - |
2803 | for (int row = topLeft.row(); row < bottom; ++row) never evaluated: row < bottom | 0 |
2804 | items[row].resize(itemSize(option, modelIndex(row))); never executed: items[row].resize(itemSize(option, modelIndex(row))); | 0 |
2805 | } | 0 |
2806 | } | 0 |
2807 | | - |
2808 | bool QIconModeViewBase::doBatchedItemLayout(const QListViewLayoutInfo &info, int max) | - |
2809 | { | - |
2810 | if (info.last >= items.count()) { partially evaluated: info.last >= items.count() yes Evaluation Count:18 | no Evaluation Count:0 |
| 0-18 |
2811 | //first we create the items | - |
2812 | QStyleOptionViewItem option = viewOptions(); executed (the execution status of this line is deduced): QStyleOptionViewItem option = viewOptions(); | - |
2813 | for (int row = items.count(); row <= info.last; ++row) { evaluated: row <= info.last yes Evaluation Count:416 | yes Evaluation Count:18 |
| 18-416 |
2814 | QSize size = itemSize(option, modelIndex(row)); executed (the execution status of this line is deduced): QSize size = itemSize(option, modelIndex(row)); | - |
2815 | QListViewItem item(QRect(0, 0, size.width(), size.height()), row); // default pos executed (the execution status of this line is deduced): QListViewItem item(QRect(0, 0, size.width(), size.height()), row); | - |
2816 | items.append(item); executed (the execution status of this line is deduced): items.append(item); | - |
2817 | } executed: } Execution Count:416 | 416 |
2818 | doDynamicLayout(info); executed (the execution status of this line is deduced): doDynamicLayout(info); | - |
2819 | } executed: } Execution Count:18 | 18 |
2820 | return (batchStartRow > max); // done executed: return (batchStartRow > max); Execution Count:18 | 18 |
2821 | } | - |
2822 | | - |
2823 | QListViewItem QIconModeViewBase::indexToListViewItem(const QModelIndex &index) const | - |
2824 | { | - |
2825 | if (index.isValid() && index.row() < items.count()) partially evaluated: index.isValid() yes Evaluation Count:511 | no Evaluation Count:0 |
partially evaluated: index.row() < items.count() yes Evaluation Count:511 | no Evaluation Count:0 |
| 0-511 |
2826 | return items.at(index.row()); executed: return items.at(index.row()); Execution Count:511 | 511 |
2827 | return QListViewItem(); never executed: return QListViewItem(); | 0 |
2828 | } | - |
2829 | | - |
2830 | void QIconModeViewBase::initBspTree(const QSize &contents) | - |
2831 | { | - |
2832 | // remove all items from the tree | - |
2833 | int leafCount = tree.leafCount(); executed (the execution status of this line is deduced): int leafCount = tree.leafCount(); | - |
2834 | for (int l = 0; l < leafCount; ++l) evaluated: l < leafCount yes Evaluation Count:186 | yes Evaluation Count:17 |
| 17-186 |
2835 | tree.leaf(l).clear(); executed: tree.leaf(l).clear(); Execution Count:186 | 186 |
2836 | // we have to get the bounding rect of the items before we can initialize the tree | - |
2837 | QBspTree::Node::Type type = QBspTree::Node::Both; // 2D executed (the execution status of this line is deduced): QBspTree::Node::Type type = QBspTree::Node::Both; | - |
2838 | // simple heuristics to get better bsp | - |
2839 | if (contents.height() / contents.width() >= 3) evaluated: contents.height() / contents.width() >= 3 yes Evaluation Count:4 | yes Evaluation Count:13 |
| 4-13 |
2840 | type = QBspTree::Node::HorizontalPlane; executed: type = QBspTree::Node::HorizontalPlane; Execution Count:4 | 4 |
2841 | else if (contents.width() / contents.height() >= 3) evaluated: contents.width() / contents.height() >= 3 yes Evaluation Count:1 | yes Evaluation Count:12 |
| 1-12 |
2842 | type = QBspTree::Node::VerticalPlane; executed: type = QBspTree::Node::VerticalPlane; Execution Count:1 | 1 |
2843 | // build tree for the bounding rect (not just the contents rect) | - |
2844 | tree.init(QRect(0, 0, contents.width(), contents.height()), type); executed (the execution status of this line is deduced): tree.init(QRect(0, 0, contents.width(), contents.height()), type); | - |
2845 | } executed: } Execution Count:17 | 17 |
2846 | | - |
2847 | QPoint QIconModeViewBase::initDynamicLayout(const QListViewLayoutInfo &info) | - |
2848 | { | - |
2849 | int x, y; executed (the execution status of this line is deduced): int x, y; | - |
2850 | if (info.first == 0) { evaluated: info.first == 0 yes Evaluation Count:15 | yes Evaluation Count:3 |
| 3-15 |
2851 | x = info.bounds.x() + info.spacing; executed (the execution status of this line is deduced): x = info.bounds.x() + info.spacing; | - |
2852 | y = info.bounds.y() + info.spacing; executed (the execution status of this line is deduced): y = info.bounds.y() + info.spacing; | - |
2853 | items.reserve(rowCount() - hiddenCount()); executed (the execution status of this line is deduced): items.reserve(rowCount() - hiddenCount()); | - |
2854 | } else { executed: } Execution Count:15 | 15 |
2855 | int idx = info.first - 1; executed (the execution status of this line is deduced): int idx = info.first - 1; | - |
2856 | while (idx > 0 && !items.at(idx).isValid()) evaluated: idx > 0 yes Evaluation Count:109 | yes Evaluation Count:1 |
evaluated: !items.at(idx).isValid() yes Evaluation Count:107 | yes Evaluation Count:2 |
| 1-109 |
2857 | --idx; executed: --idx; Execution Count:107 | 107 |
2858 | const QListViewItem &item = items.at(idx); executed (the execution status of this line is deduced): const QListViewItem &item = items.at(idx); | - |
2859 | x = item.x; executed (the execution status of this line is deduced): x = item.x; | - |
2860 | y = item.y; executed (the execution status of this line is deduced): y = item.y; | - |
2861 | if (info.flow == QListView::LeftToRight) evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:2 | yes Evaluation Count:1 |
| 1-2 |
2862 | x += (info.grid.isValid() ? info.grid.width() : item.w) + info.spacing; executed: x += (info.grid.isValid() ? info.grid.width() : item.w) + info.spacing; Execution Count:2 partially evaluated: info.grid.isValid() no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
2863 | else | - |
2864 | y += (info.grid.isValid() ? info.grid.height() : item.h) + info.spacing; executed: y += (info.grid.isValid() ? info.grid.height() : item.h) + info.spacing; Execution Count:1 partially evaluated: info.grid.isValid() no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2865 | } | - |
2866 | return QPoint(x, y); executed: return QPoint(x, y); Execution Count:18 | 18 |
2867 | } | - |
2868 | | - |
2869 | /*! | - |
2870 | \internal | - |
2871 | */ | - |
2872 | void QIconModeViewBase::doDynamicLayout(const QListViewLayoutInfo &info) | - |
2873 | { | - |
2874 | const bool useItemSize = !info.grid.isValid(); executed (the execution status of this line is deduced): const bool useItemSize = !info.grid.isValid(); | - |
2875 | const QPoint topLeft = initDynamicLayout(info); executed (the execution status of this line is deduced): const QPoint topLeft = initDynamicLayout(info); | - |
2876 | | - |
2877 | int segStartPosition; executed (the execution status of this line is deduced): int segStartPosition; | - |
2878 | int segEndPosition; executed (the execution status of this line is deduced): int segEndPosition; | - |
2879 | int deltaFlowPosition; executed (the execution status of this line is deduced): int deltaFlowPosition; | - |
2880 | int deltaSegPosition; executed (the execution status of this line is deduced): int deltaSegPosition; | - |
2881 | int deltaSegHint; executed (the execution status of this line is deduced): int deltaSegHint; | - |
2882 | int flowPosition; executed (the execution status of this line is deduced): int flowPosition; | - |
2883 | int segPosition; executed (the execution status of this line is deduced): int segPosition; | - |
2884 | | - |
2885 | if (info.flow == QListView::LeftToRight) { evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:15 | yes Evaluation Count:3 |
| 3-15 |
2886 | segStartPosition = info.bounds.left() + info.spacing; executed (the execution status of this line is deduced): segStartPosition = info.bounds.left() + info.spacing; | - |
2887 | segEndPosition = info.bounds.right(); executed (the execution status of this line is deduced): segEndPosition = info.bounds.right(); | - |
2888 | deltaFlowPosition = info.grid.width(); // dx executed (the execution status of this line is deduced): deltaFlowPosition = info.grid.width(); | - |
2889 | deltaSegPosition = (useItemSize ? batchSavedDeltaSeg : info.grid.height()); // dy evaluated: useItemSize yes Evaluation Count:8 | yes Evaluation Count:7 |
| 7-8 |
2890 | deltaSegHint = info.grid.height(); executed (the execution status of this line is deduced): deltaSegHint = info.grid.height(); | - |
2891 | flowPosition = topLeft.x(); executed (the execution status of this line is deduced): flowPosition = topLeft.x(); | - |
2892 | segPosition = topLeft.y(); executed (the execution status of this line is deduced): segPosition = topLeft.y(); | - |
2893 | } else { // flow == QListView::TopToBottom executed: } Execution Count:15 | 15 |
2894 | segStartPosition = info.bounds.top() + info.spacing; executed (the execution status of this line is deduced): segStartPosition = info.bounds.top() + info.spacing; | - |
2895 | segEndPosition = info.bounds.bottom(); executed (the execution status of this line is deduced): segEndPosition = info.bounds.bottom(); | - |
2896 | deltaFlowPosition = info.grid.height(); // dy executed (the execution status of this line is deduced): deltaFlowPosition = info.grid.height(); | - |
2897 | deltaSegPosition = (useItemSize ? batchSavedDeltaSeg : info.grid.width()); // dx evaluated: useItemSize yes Evaluation Count:2 | yes Evaluation Count:1 |
| 1-2 |
2898 | deltaSegHint = info.grid.width(); executed (the execution status of this line is deduced): deltaSegHint = info.grid.width(); | - |
2899 | flowPosition = topLeft.y(); executed (the execution status of this line is deduced): flowPosition = topLeft.y(); | - |
2900 | segPosition = topLeft.x(); executed (the execution status of this line is deduced): segPosition = topLeft.x(); | - |
2901 | } executed: } Execution Count:3 | 3 |
2902 | | - |
2903 | if (moved.count() != items.count()) partially evaluated: moved.count() != items.count() yes Evaluation Count:18 | no Evaluation Count:0 |
| 0-18 |
2904 | moved.resize(items.count()); executed: moved.resize(items.count()); Execution Count:18 | 18 |
2905 | | - |
2906 | QRect rect(QPoint(), topLeft); executed (the execution status of this line is deduced): QRect rect(QPoint(), topLeft); | - |
2907 | QListViewItem *item = 0; executed (the execution status of this line is deduced): QListViewItem *item = 0; | - |
2908 | for (int row = info.first; row <= info.last; ++row) { evaluated: row <= info.last yes Evaluation Count:416 | yes Evaluation Count:18 |
| 18-416 |
2909 | item = &items[row]; executed (the execution status of this line is deduced): item = &items[row]; | - |
2910 | if (isHidden(row)) { evaluated: isHidden(row) yes Evaluation Count:182 | yes Evaluation Count:234 |
| 182-234 |
2911 | item->invalidate(); executed (the execution status of this line is deduced): item->invalidate(); | - |
2912 | } else { executed: } Execution Count:182 | 182 |
2913 | // if we are not using a grid, we need to find the deltas | - |
2914 | if (useItemSize) { evaluated: useItemSize yes Evaluation Count:38 | yes Evaluation Count:196 |
| 38-196 |
2915 | if (info.flow == QListView::LeftToRight) evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:35 | yes Evaluation Count:3 |
| 3-35 |
2916 | deltaFlowPosition = item->w + info.spacing; executed: deltaFlowPosition = item->w + info.spacing; Execution Count:35 | 35 |
2917 | else | - |
2918 | deltaFlowPosition = item->h + info.spacing; executed: deltaFlowPosition = item->h + info.spacing; Execution Count:3 | 3 |
2919 | } else { | - |
2920 | item->w = qMin<int>(info.grid.width(), item->w); executed (the execution status of this line is deduced): item->w = qMin<int>(info.grid.width(), item->w); | - |
2921 | item->h = qMin<int>(info.grid.height(), item->h); executed (the execution status of this line is deduced): item->h = qMin<int>(info.grid.height(), item->h); | - |
2922 | } executed: } Execution Count:196 | 196 |
2923 | | - |
2924 | // create new segment | - |
2925 | if (info.wrap partially evaluated: info.wrap yes Evaluation Count:234 | no Evaluation Count:0 |
| 0-234 |
2926 | && flowPosition + deltaFlowPosition > segEndPosition evaluated: flowPosition + deltaFlowPosition > segEndPosition yes Evaluation Count:49 | yes Evaluation Count:185 |
| 49-185 |
2927 | && flowPosition > segStartPosition) { evaluated: flowPosition > segStartPosition yes Evaluation Count:48 | yes Evaluation Count:1 |
| 1-48 |
2928 | flowPosition = segStartPosition; executed (the execution status of this line is deduced): flowPosition = segStartPosition; | - |
2929 | segPosition += deltaSegPosition; executed (the execution status of this line is deduced): segPosition += deltaSegPosition; | - |
2930 | if (useItemSize) evaluated: useItemSize yes Evaluation Count:11 | yes Evaluation Count:37 |
| 11-37 |
2931 | deltaSegPosition = 0; executed: deltaSegPosition = 0; Execution Count:11 | 11 |
2932 | } executed: } Execution Count:48 | 48 |
2933 | // We must delay calculation of the seg adjustment, as this item | - |
2934 | // may have caused a wrap to occur | - |
2935 | if (useItemSize) { evaluated: useItemSize yes Evaluation Count:38 | yes Evaluation Count:196 |
| 38-196 |
2936 | if (info.flow == QListView::LeftToRight) evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:35 | yes Evaluation Count:3 |
| 3-35 |
2937 | deltaSegHint = item->h + info.spacing; executed: deltaSegHint = item->h + info.spacing; Execution Count:35 | 35 |
2938 | else | - |
2939 | deltaSegHint = item->w + info.spacing; executed: deltaSegHint = item->w + info.spacing; Execution Count:3 | 3 |
2940 | deltaSegPosition = qMax(deltaSegPosition, deltaSegHint); executed (the execution status of this line is deduced): deltaSegPosition = qMax(deltaSegPosition, deltaSegHint); | - |
2941 | } executed: } Execution Count:38 | 38 |
2942 | | - |
2943 | // set the position of the item | - |
2944 | // ### idealy we should have some sort of alignment hint for the item | - |
2945 | // ### (normally that would be a point between the icon and the text) | - |
2946 | if (!moved.testBit(row)) { partially evaluated: !moved.testBit(row) yes Evaluation Count:234 | no Evaluation Count:0 |
| 0-234 |
2947 | if (info.flow == QListView::LeftToRight) { evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:227 | yes Evaluation Count:7 |
| 7-227 |
2948 | if (useItemSize) { evaluated: useItemSize yes Evaluation Count:35 | yes Evaluation Count:192 |
| 35-192 |
2949 | item->x = flowPosition; executed (the execution status of this line is deduced): item->x = flowPosition; | - |
2950 | item->y = segPosition; executed (the execution status of this line is deduced): item->y = segPosition; | - |
2951 | } else { // use grid executed: } Execution Count:35 | 35 |
2952 | item->x = flowPosition + ((deltaFlowPosition - item->w) / 2); executed (the execution status of this line is deduced): item->x = flowPosition + ((deltaFlowPosition - item->w) / 2); | - |
2953 | item->y = segPosition; executed (the execution status of this line is deduced): item->y = segPosition; | - |
2954 | } executed: } Execution Count:192 | 192 |
2955 | } else { // TopToBottom | - |
2956 | if (useItemSize) { evaluated: useItemSize yes Evaluation Count:3 | yes Evaluation Count:4 |
| 3-4 |
2957 | item->y = flowPosition; executed (the execution status of this line is deduced): item->y = flowPosition; | - |
2958 | item->x = segPosition; executed (the execution status of this line is deduced): item->x = segPosition; | - |
2959 | } else { // use grid executed: } Execution Count:3 | 3 |
2960 | item->y = flowPosition + ((deltaFlowPosition - item->h) / 2); executed (the execution status of this line is deduced): item->y = flowPosition + ((deltaFlowPosition - item->h) / 2); | - |
2961 | item->x = segPosition; executed (the execution status of this line is deduced): item->x = segPosition; | - |
2962 | } executed: } Execution Count:4 | 4 |
2963 | } | - |
2964 | } | - |
2965 | | - |
2966 | // let the contents contain the new item | - |
2967 | if (useItemSize) evaluated: useItemSize yes Evaluation Count:38 | yes Evaluation Count:196 |
| 38-196 |
2968 | rect |= item->rect(); executed: rect |= item->rect(); Execution Count:38 | 38 |
2969 | else if (info.flow == QListView::LeftToRight) evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:192 | yes Evaluation Count:4 |
| 4-192 |
2970 | rect |= QRect(flowPosition, segPosition, deltaFlowPosition, deltaSegPosition); executed: rect |= QRect(flowPosition, segPosition, deltaFlowPosition, deltaSegPosition); Execution Count:192 | 192 |
2971 | else // flow == TopToBottom | - |
2972 | rect |= QRect(segPosition, flowPosition, deltaSegPosition, deltaFlowPosition); executed: rect |= QRect(segPosition, flowPosition, deltaSegPosition, deltaFlowPosition); Execution Count:4 | 4 |
2973 | | - |
2974 | // prepare for next item | - |
2975 | flowPosition += deltaFlowPosition; // current position + item width + gap executed (the execution status of this line is deduced): flowPosition += deltaFlowPosition; | - |
2976 | } executed: } Execution Count:234 | 234 |
2977 | } | - |
2978 | batchSavedDeltaSeg = deltaSegPosition; executed (the execution status of this line is deduced): batchSavedDeltaSeg = deltaSegPosition; | - |
2979 | batchStartRow = info.last + 1; executed (the execution status of this line is deduced): batchStartRow = info.last + 1; | - |
2980 | bool done = (info.last >= rowCount() - 1); executed (the execution status of this line is deduced): bool done = (info.last >= rowCount() - 1); | - |
2981 | // resize the content area | - |
2982 | if (done || !info.bounds.contains(item->rect())) { evaluated: done yes Evaluation Count:15 | yes Evaluation Count:3 |
evaluated: !info.bounds.contains(item->rect()) yes Evaluation Count:2 | yes Evaluation Count:1 |
| 1-15 |
2983 | contentsSize = rect.size(); executed (the execution status of this line is deduced): contentsSize = rect.size(); | - |
2984 | if (info.flow == QListView::LeftToRight) evaluated: info.flow == QListView::LeftToRight yes Evaluation Count:15 | yes Evaluation Count:2 |
| 2-15 |
2985 | contentsSize.rheight() += info.spacing; executed: contentsSize.rheight() += info.spacing; Execution Count:15 | 15 |
2986 | else | - |
2987 | contentsSize.rwidth() += info.spacing; executed: contentsSize.rwidth() += info.spacing; Execution Count:2 | 2 |
2988 | } | - |
2989 | if (rect.size().isEmpty()) evaluated: rect.size().isEmpty() yes Evaluation Count:1 | yes Evaluation Count:17 |
| 1-17 |
2990 | return; executed: return; Execution Count:1 | 1 |
2991 | // resize tree | - |
2992 | int insertFrom = info.first; executed (the execution status of this line is deduced): int insertFrom = info.first; | - |
2993 | if (done || info.first == 0) { evaluated: done yes Evaluation Count:14 | yes Evaluation Count:3 |
partially evaluated: info.first == 0 yes Evaluation Count:3 | no Evaluation Count:0 |
| 0-14 |
2994 | initBspTree(rect.size()); executed (the execution status of this line is deduced): initBspTree(rect.size()); | - |
2995 | insertFrom = 0; executed (the execution status of this line is deduced): insertFrom = 0; | - |
2996 | } executed: } Execution Count:17 | 17 |
2997 | // insert items in tree | - |
2998 | for (int row = insertFrom; row <= info.last; ++row) evaluated: row <= info.last yes Evaluation Count:517 | yes Evaluation Count:17 |
| 17-517 |
2999 | tree.insertLeaf(items.at(row).rect(), row); executed: tree.insertLeaf(items.at(row).rect(), row); Execution Count:517 | 517 |
3000 | // if the new items are visble, update the viewport | - |
3001 | QRect changedRect(topLeft, rect.bottomRight()); executed (the execution status of this line is deduced): QRect changedRect(topLeft, rect.bottomRight()); | - |
3002 | if (clipRect().intersects(changedRect)) evaluated: clipRect().intersects(changedRect) yes Evaluation Count:15 | yes Evaluation Count:2 |
| 2-15 |
3003 | viewport()->update(); executed: viewport()->update(); Execution Count:15 | 15 |
3004 | } executed: } Execution Count:17 | 17 |
3005 | | - |
3006 | QVector<QModelIndex> QIconModeViewBase::intersectingSet(const QRect &area) const | - |
3007 | { | - |
3008 | QIconModeViewBase *that = const_cast<QIconModeViewBase*>(this); executed (the execution status of this line is deduced): QIconModeViewBase *that = const_cast<QIconModeViewBase*>(this); | - |
3009 | QBspTree::Data data(static_cast<void*>(that)); executed (the execution status of this line is deduced): QBspTree::Data data(static_cast<void*>(that)); | - |
3010 | QVector<QModelIndex> res; executed (the execution status of this line is deduced): QVector<QModelIndex> res; | - |
3011 | that->interSectingVector = &res; executed (the execution status of this line is deduced): that->interSectingVector = &res; | - |
3012 | that->tree.climbTree(area, &QIconModeViewBase::addLeaf, data); executed (the execution status of this line is deduced): that->tree.climbTree(area, &QIconModeViewBase::addLeaf, data); | - |
3013 | that->interSectingVector = 0; executed (the execution status of this line is deduced): that->interSectingVector = 0; | - |
3014 | return res; executed: return res; Execution Count:168 | 168 |
3015 | } | - |
3016 | | - |
3017 | QRect QIconModeViewBase::itemsRect(const QVector<QModelIndex> &indexes) const | - |
3018 | { | - |
3019 | QVector<QModelIndex>::const_iterator it = indexes.begin(); never executed (the execution status of this line is deduced): QVector<QModelIndex>::const_iterator it = indexes.begin(); | - |
3020 | QListViewItem item = indexToListViewItem(*it); never executed (the execution status of this line is deduced): QListViewItem item = indexToListViewItem(*it); | - |
3021 | QRect rect(item.x, item.y, item.w, item.h); never executed (the execution status of this line is deduced): QRect rect(item.x, item.y, item.w, item.h); | - |
3022 | for (; it != indexes.end(); ++it) { never evaluated: it != indexes.end() | 0 |
3023 | item = indexToListViewItem(*it); never executed (the execution status of this line is deduced): item = indexToListViewItem(*it); | - |
3024 | rect |= viewItemRect(item); never executed (the execution status of this line is deduced): rect |= viewItemRect(item); | - |
3025 | } | 0 |
3026 | return rect; never executed: return rect; | 0 |
3027 | } | - |
3028 | | - |
3029 | int QIconModeViewBase::itemIndex(const QListViewItem &item) const | - |
3030 | { | - |
3031 | if (!item.isValid()) partially evaluated: !item.isValid() no Evaluation Count:0 | yes Evaluation Count:310 |
| 0-310 |
3032 | return -1; never executed: return -1; | 0 |
3033 | int i = item.indexHint; executed (the execution status of this line is deduced): int i = item.indexHint; | - |
3034 | if (i < items.count()) { partially evaluated: i < items.count() yes Evaluation Count:310 | no Evaluation Count:0 |
| 0-310 |
3035 | if (items.at(i) == item) partially evaluated: items.at(i) == item yes Evaluation Count:310 | no Evaluation Count:0 |
| 0-310 |
3036 | return i; executed: return i; Execution Count:310 | 310 |
3037 | } else { | 0 |
3038 | i = items.count() - 1; never executed (the execution status of this line is deduced): i = items.count() - 1; | - |
3039 | } | 0 |
3040 | | - |
3041 | int j = i; never executed (the execution status of this line is deduced): int j = i; | - |
3042 | int c = items.count(); never executed (the execution status of this line is deduced): int c = items.count(); | - |
3043 | bool a = true; never executed (the execution status of this line is deduced): bool a = true; | - |
3044 | bool b = true; never executed (the execution status of this line is deduced): bool b = true; | - |
3045 | | - |
3046 | while (a || b) { never evaluated: a never evaluated: b | 0 |
3047 | if (a) { | 0 |
3048 | if (items.at(i) == item) { never evaluated: items.at(i) == item | 0 |
3049 | items.at(i).indexHint = i; never executed (the execution status of this line is deduced): items.at(i).indexHint = i; | - |
3050 | return i; never executed: return i; | 0 |
3051 | } | - |
3052 | a = ++i < c; never executed (the execution status of this line is deduced): a = ++i < c; | - |
3053 | } | 0 |
3054 | if (b) { | 0 |
3055 | if (items.at(j) == item) { never evaluated: items.at(j) == item | 0 |
3056 | items.at(j).indexHint = j; never executed (the execution status of this line is deduced): items.at(j).indexHint = j; | - |
3057 | return j; never executed: return j; | 0 |
3058 | } | - |
3059 | b = --j > -1; never executed (the execution status of this line is deduced): b = --j > -1; | - |
3060 | } | 0 |
3061 | } | 0 |
3062 | return -1; never executed: return -1; | 0 |
3063 | } | - |
3064 | | - |
3065 | void QIconModeViewBase::addLeaf(QVector<int> &leaf, const QRect &area, | - |
3066 | uint visited, QBspTree::Data data) | - |
3067 | { | - |
3068 | QListViewItem *vi; executed (the execution status of this line is deduced): QListViewItem *vi; | - |
3069 | QIconModeViewBase *_this = static_cast<QIconModeViewBase *>(data.ptr); executed (the execution status of this line is deduced): QIconModeViewBase *_this = static_cast<QIconModeViewBase *>(data.ptr); | - |
3070 | for (int i = 0; i < leaf.count(); ++i) { evaluated: i < leaf.count() yes Evaluation Count:922 | yes Evaluation Count:330 |
| 330-922 |
3071 | int idx = leaf.at(i); executed (the execution status of this line is deduced): int idx = leaf.at(i); | - |
3072 | if (idx < 0 || idx >= _this->items.count()) partially evaluated: idx < 0 no Evaluation Count:0 | yes Evaluation Count:922 |
partially evaluated: idx >= _this->items.count() no Evaluation Count:0 | yes Evaluation Count:922 |
| 0-922 |
3073 | continue; never executed: continue; | 0 |
3074 | vi = &_this->items[idx]; executed (the execution status of this line is deduced): vi = &_this->items[idx]; | - |
3075 | Q_ASSERT(vi); executed (the execution status of this line is deduced): qt_noop(); | - |
3076 | if (vi->isValid() && vi->rect().intersects(area) && vi->visited != visited) { evaluated: vi->isValid() yes Evaluation Count:756 | yes Evaluation Count:166 |
evaluated: vi->rect().intersects(area) yes Evaluation Count:486 | yes Evaluation Count:270 |
evaluated: vi->visited != visited yes Evaluation Count:306 | yes Evaluation Count:180 |
| 166-756 |
3077 | QModelIndex index = _this->dd->listViewItemToIndex(*vi); executed (the execution status of this line is deduced): QModelIndex index = _this->dd->listViewItemToIndex(*vi); | - |
3078 | Q_ASSERT(index.isValid()); executed (the execution status of this line is deduced): qt_noop(); | - |
3079 | _this->interSectingVector->append(index); executed (the execution status of this line is deduced): _this->interSectingVector->append(index); | - |
3080 | vi->visited = visited; executed (the execution status of this line is deduced): vi->visited = visited; | - |
3081 | } executed: } Execution Count:306 | 306 |
3082 | } executed: } Execution Count:922 | 922 |
3083 | } executed: } Execution Count:330 | 330 |
3084 | | - |
3085 | void QIconModeViewBase::moveItem(int index, const QPoint &dest) | - |
3086 | { | - |
3087 | // does not impact on the bintree itself or the contents rect | - |
3088 | QListViewItem *item = &items[index]; executed (the execution status of this line is deduced): QListViewItem *item = &items[index]; | - |
3089 | QRect rect = item->rect(); executed (the execution status of this line is deduced): QRect rect = item->rect(); | - |
3090 | | - |
3091 | // move the item without removing it from the tree | - |
3092 | tree.removeLeaf(rect, index); executed (the execution status of this line is deduced): tree.removeLeaf(rect, index); | - |
3093 | item->move(dest); executed (the execution status of this line is deduced): item->move(dest); | - |
3094 | tree.insertLeaf(QRect(dest, rect.size()), index); executed (the execution status of this line is deduced): tree.insertLeaf(QRect(dest, rect.size()), index); | - |
3095 | | - |
3096 | // resize the contents area | - |
3097 | contentsSize = (QRect(QPoint(0, 0), contentsSize)|QRect(dest, rect.size())).size(); executed (the execution status of this line is deduced): contentsSize = (QRect(QPoint(0, 0), contentsSize)|QRect(dest, rect.size())).size(); | - |
3098 | | - |
3099 | // mark the item as moved | - |
3100 | if (moved.count() != items.count()) partially evaluated: moved.count() != items.count() no Evaluation Count:0 | yes Evaluation Count:5 |
| 0-5 |
3101 | moved.resize(items.count()); never executed: moved.resize(items.count()); | 0 |
3102 | moved.setBit(index, true); executed (the execution status of this line is deduced): moved.setBit(index, true); | - |
3103 | } executed: } Execution Count:5 | 5 |
3104 | | - |
3105 | QPoint QIconModeViewBase::snapToGrid(const QPoint &pos) const | - |
3106 | { | - |
3107 | int x = pos.x() - (pos.x() % gridSize().width()); never executed (the execution status of this line is deduced): int x = pos.x() - (pos.x() % gridSize().width()); | - |
3108 | int y = pos.y() - (pos.y() % gridSize().height()); never executed (the execution status of this line is deduced): int y = pos.y() - (pos.y() % gridSize().height()); | - |
3109 | return QPoint(x, y); never executed: return QPoint(x, y); | 0 |
3110 | } | - |
3111 | | - |
3112 | QPoint QIconModeViewBase::draggedItemsDelta() const | - |
3113 | { | - |
3114 | if (movement() == QListView::Snap) { never evaluated: movement() == QListView::Snap | 0 |
3115 | QPoint snapdelta = QPoint((offset().x() % gridSize().width()), never executed (the execution status of this line is deduced): QPoint snapdelta = QPoint((offset().x() % gridSize().width()), | - |
3116 | (offset().y() % gridSize().height())); never executed (the execution status of this line is deduced): (offset().y() % gridSize().height())); | - |
3117 | return snapToGrid(draggedItemsPos + snapdelta) - snapToGrid(pressedPosition()) - snapdelta; never executed: return snapToGrid(draggedItemsPos + snapdelta) - snapToGrid(pressedPosition()) - snapdelta; | 0 |
3118 | } | - |
3119 | return draggedItemsPos - pressedPosition(); never executed: return draggedItemsPos - pressedPosition(); | 0 |
3120 | } | - |
3121 | | - |
3122 | QRect QIconModeViewBase::draggedItemsRect() const | - |
3123 | { | - |
3124 | QRect rect = itemsRect(draggedItems); never executed (the execution status of this line is deduced): QRect rect = itemsRect(draggedItems); | - |
3125 | rect.translate(draggedItemsDelta()); never executed (the execution status of this line is deduced): rect.translate(draggedItemsDelta()); | - |
3126 | return rect; never executed: return rect; | 0 |
3127 | } | - |
3128 | | - |
3129 | void QListViewPrivate::scrollElasticBandBy(int dx, int dy) | - |
3130 | { | - |
3131 | if (dx > 0) // right | 0 |
3132 | elasticBand.moveRight(elasticBand.right() + dx); never executed: elasticBand.moveRight(elasticBand.right() + dx); | 0 |
3133 | else if (dx < 0) // left | 0 |
3134 | elasticBand.moveLeft(elasticBand.left() - dx); never executed: elasticBand.moveLeft(elasticBand.left() - dx); | 0 |
3135 | if (dy > 0) // down | 0 |
3136 | elasticBand.moveBottom(elasticBand.bottom() + dy); never executed: elasticBand.moveBottom(elasticBand.bottom() + dy); | 0 |
3137 | else if (dy < 0) // up | 0 |
3138 | elasticBand.moveTop(elasticBand.top() - dy); never executed: elasticBand.moveTop(elasticBand.top() - dy); | 0 |
3139 | } | - |
3140 | | - |
3141 | void QIconModeViewBase::clear() | - |
3142 | { | - |
3143 | tree.destroy(); executed (the execution status of this line is deduced): tree.destroy(); | - |
3144 | items.clear(); executed (the execution status of this line is deduced): items.clear(); | - |
3145 | moved.clear(); executed (the execution status of this line is deduced): moved.clear(); | - |
3146 | batchStartRow = 0; executed (the execution status of this line is deduced): batchStartRow = 0; | - |
3147 | batchSavedDeltaSeg = 0; executed (the execution status of this line is deduced): batchSavedDeltaSeg = 0; | - |
3148 | } executed: } Execution Count:247 | 247 |
3149 | | - |
3150 | void QIconModeViewBase::updateContentsSize() | - |
3151 | { | - |
3152 | QRect bounding; never executed (the execution status of this line is deduced): QRect bounding; | - |
3153 | for (int i = 0; i < items.count(); ++i) never evaluated: i < items.count() | 0 |
3154 | bounding |= items.at(i).rect(); never executed: bounding |= items.at(i).rect(); | 0 |
3155 | contentsSize = bounding.size(); never executed (the execution status of this line is deduced): contentsSize = bounding.size(); | - |
3156 | } | 0 |
3157 | | - |
3158 | /*! | - |
3159 | \reimp | - |
3160 | */ | - |
3161 | void QListView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) | - |
3162 | { | - |
3163 | #ifndef QT_NO_ACCESSIBILITY | - |
3164 | if (QAccessible::isActive()) { evaluated: QAccessible::isActive() yes Evaluation Count:4 | yes Evaluation Count:1888 |
| 4-1888 |
3165 | if (current.isValid()) { partially evaluated: current.isValid() yes Evaluation Count:4 | no Evaluation Count:0 |
| 0-4 |
3166 | int entry = visualIndex(current); executed (the execution status of this line is deduced): int entry = visualIndex(current); | - |
3167 | QAccessibleEvent event(this, QAccessible::Focus); executed (the execution status of this line is deduced): QAccessibleEvent event(this, QAccessible::Focus); | - |
3168 | event.setChild(entry); executed (the execution status of this line is deduced): event.setChild(entry); | - |
3169 | QAccessible::updateAccessibility(&event); executed (the execution status of this line is deduced): QAccessible::updateAccessibility(&event); | - |
3170 | } executed: } Execution Count:4 | 4 |
3171 | } executed: } Execution Count:4 | 4 |
3172 | #endif | - |
3173 | QAbstractItemView::currentChanged(current, previous); executed (the execution status of this line is deduced): QAbstractItemView::currentChanged(current, previous); | - |
3174 | } executed: } Execution Count:1892 | 1892 |
3175 | | - |
3176 | /*! | - |
3177 | \reimp | - |
3178 | */ | - |
3179 | void QListView::selectionChanged(const QItemSelection &selected, | - |
3180 | const QItemSelection &deselected) | - |
3181 | { | - |
3182 | #ifndef QT_NO_ACCESSIBILITY | - |
3183 | if (QAccessible::isActive()) { evaluated: QAccessible::isActive() yes Evaluation Count:5 | yes Evaluation Count:2263 |
| 5-2263 |
3184 | // ### does not work properly for selection ranges. | - |
3185 | QModelIndex sel = selected.indexes().value(0); executed (the execution status of this line is deduced): QModelIndex sel = selected.indexes().value(0); | - |
3186 | if (sel.isValid()) { evaluated: sel.isValid() yes Evaluation Count:4 | yes Evaluation Count:1 |
| 1-4 |
3187 | int entry = visualIndex(sel); executed (the execution status of this line is deduced): int entry = visualIndex(sel); | - |
3188 | QAccessibleEvent event(this, QAccessible::Selection); executed (the execution status of this line is deduced): QAccessibleEvent event(this, QAccessible::Selection); | - |
3189 | event.setChild(entry); executed (the execution status of this line is deduced): event.setChild(entry); | - |
3190 | QAccessible::updateAccessibility(&event); executed (the execution status of this line is deduced): QAccessible::updateAccessibility(&event); | - |
3191 | } executed: } Execution Count:4 | 4 |
3192 | QModelIndex desel = deselected.indexes().value(0); executed (the execution status of this line is deduced): QModelIndex desel = deselected.indexes().value(0); | - |
3193 | if (desel.isValid()) { evaluated: desel.isValid() yes Evaluation Count:2 | yes Evaluation Count:3 |
| 2-3 |
3194 | int entry = visualIndex(desel); executed (the execution status of this line is deduced): int entry = visualIndex(desel); | - |
3195 | QAccessibleEvent event(this, QAccessible::SelectionRemove); executed (the execution status of this line is deduced): QAccessibleEvent event(this, QAccessible::SelectionRemove); | - |
3196 | event.setChild(entry); executed (the execution status of this line is deduced): event.setChild(entry); | - |
3197 | QAccessible::updateAccessibility(&event); executed (the execution status of this line is deduced): QAccessible::updateAccessibility(&event); | - |
3198 | } executed: } Execution Count:2 | 2 |
3199 | } executed: } Execution Count:5 | 5 |
3200 | #endif | - |
3201 | QAbstractItemView::selectionChanged(selected, deselected); executed (the execution status of this line is deduced): QAbstractItemView::selectionChanged(selected, deselected); | - |
3202 | } executed: } Execution Count:2268 | 2268 |
3203 | | - |
3204 | int QListView::visualIndex(const QModelIndex &index) const | - |
3205 | { | - |
3206 | Q_D(const QListView); executed (the execution status of this line is deduced): const QListViewPrivate * const d = d_func(); | - |
3207 | d->executePostedLayout(); executed (the execution status of this line is deduced): d->executePostedLayout(); | - |
3208 | QListViewItem itm = d->indexToListViewItem(index); executed (the execution status of this line is deduced): QListViewItem itm = d->indexToListViewItem(index); | - |
3209 | int visualIndex = d->commonListView->itemIndex(itm); executed (the execution status of this line is deduced): int visualIndex = d->commonListView->itemIndex(itm); | - |
3210 | for (int row = 0; row <= index.row() && visualIndex >= 0; row++) { evaluated: row <= index.row() yes Evaluation Count:9072 | yes Evaluation Count:439 |
partially evaluated: visualIndex >= 0 yes Evaluation Count:9072 | no Evaluation Count:0 |
| 0-9072 |
3211 | if (d->isHidden(row)) evaluated: d->isHidden(row) yes Evaluation Count:2704 | yes Evaluation Count:6368 |
| 2704-6368 |
3212 | visualIndex--; executed: visualIndex--; Execution Count:2704 | 2704 |
3213 | } executed: } Execution Count:9072 | 9072 |
3214 | return visualIndex; executed: return visualIndex; Execution Count:439 | 439 |
3215 | } | - |
3216 | | - |
3217 | QT_END_NAMESPACE | - |
3218 | | - |
3219 | #endif // QT_NO_LISTVIEW | - |
3220 | | - |
| | |