qdirmodel.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/itemviews/qdirmodel.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5class QDirModelPrivate : public QAbstractItemModelPrivate-
6{-
7 inline QDirModel* q_func() { return static_cast<QDirModel *>(q_ptr); } inline const QDirModel* q_func() const { return static_cast<const QDirModel *>(q_ptr); } friend class QDirModel;-
8-
9public:-
10 struct QDirNode-
11 {-
12 QDirNode() : parent(0), populated(false), stat(false) {}
never executed: end of block
0
13 QDirNode *parent;-
14 QFileInfo info;-
15 QIcon icon;-
16 mutable QVector<QDirNode> children;-
17 mutable bool populated;-
18 mutable bool stat;-
19 };-
20-
21 QDirModelPrivate()-
22 : resolveSymlinks(true),-
23 readOnly(true),-
24 lazyChildCount(false),-
25 allowAppendChild(true),-
26 iconProvider(&defaultProvider),-
27 shouldStat(true)-
28 { }
never executed: end of block
0
29-
30 void init();-
31 QDirNode *node(int row, QDirNode *parent) const;-
32 QVector<QDirNode> children(QDirNode *parent, bool stat) const;-
33-
34 void _q_refresh();-
35-
36 void savePersistentIndexes();-
37 void restorePersistentIndexes();-
38-
39 QFileInfoList entryInfoList(const QString &path) const;-
40 QStringList entryList(const QString &path) const;-
41-
42 QString name(const QModelIndex &index) const;-
43 QString size(const QModelIndex &index) const;-
44 QString type(const QModelIndex &index) const;-
45 QString time(const QModelIndex &index) const;-
46-
47 void appendChild(QDirModelPrivate::QDirNode *parent, const QString &path) const;-
48 static QFileInfo resolvedInfo(QFileInfo info);-
49-
50 inline QDirNode *node(const QModelIndex &index) const;-
51 inline void populate(QDirNode *parent) const;-
52 inline void clear(QDirNode *parent) const;-
53-
54 void invalidate();-
55-
56 mutable QDirNode root;-
57 bool resolveSymlinks;-
58 bool readOnly;-
59 bool lazyChildCount;-
60 bool allowAppendChild;-
61-
62 QDir::Filters filters;-
63 QDir::SortFlags sort;-
64 QStringList nameFilters;-
65-
66 QFileIconProvider *iconProvider;-
67 QFileIconProvider defaultProvider;-
68-
69 struct SavedPersistent {-
70 QString path;-
71 int column;-
72 QPersistentModelIndexData *data;-
73 QPersistentModelIndex index;-
74 };-
75 QList<SavedPersistent> savedPersistent;-
76 QPersistentModelIndex toBeRefreshed;-
77-
78 bool shouldStat;-
79};-
80-
81void qt_setDirModelShouldNotStat(QDirModelPrivate *modelPrivate)-
82{-
83 modelPrivate->shouldStat = false;-
84}
never executed: end of block
0
85-
86QDirModelPrivate::QDirNode *QDirModelPrivate::node(const QModelIndex &index) const-
87{-
88 QDirModelPrivate::QDirNode *n =-
89 static_cast<QDirModelPrivate::QDirNode*>(index.internalPointer());-
90 ((!(n)) ? qt_assert("n",__FILE__,146) : qt_noop());-
91 return
never executed: return n;
n;
never executed: return n;
0
92}-
93-
94void QDirModelPrivate::populate(QDirNode *parent) const-
95{-
96 ((!(parent)) ? qt_assert("parent",__FILE__,152) : qt_noop());-
97 parent->children = children(parent, parent->stat);-
98 parent->populated = true;-
99}
never executed: end of block
0
100-
101void QDirModelPrivate::clear(QDirNode *parent) const-
102{-
103 ((!(parent)) ? qt_assert("parent",__FILE__,159) : qt_noop());-
104 parent->children.clear();-
105 parent->populated = false;-
106}
never executed: end of block
0
107-
108void QDirModelPrivate::invalidate()-
109{-
110 QStack<const QDirNode*> nodes;-
111 nodes.push(&root);-
112 while (!nodes.empty()
!nodes.empty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
113 const QDirNode *current = nodes.pop();-
114 current->stat = false;-
115 const QVector<QDirNode> children = current->children;-
116 for (int i = 0; i < children.count()
i < children.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
117 nodes.push(&children.at(i));
never executed: nodes.push(&children.at(i));
0
118 }
never executed: end of block
0
119}
never executed: end of block
0
120QDirModel::QDirModel(const QStringList &nameFilters,-
121 QDir::Filters filters,-
122 QDir::SortFlags sort,-
123 QObject *parent)-
124 : QAbstractItemModel(*new QDirModelPrivate, parent)-
125{-
126 QDirModelPrivate * const d = d_func();-
127-
128 d->nameFilters = nameFilters.isEmpty()
nameFilters.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
? QStringList(QLatin1String("*")) : nameFilters;
0
129 d->filters = filters;-
130 d->sort = sort;-
131 d->root.parent = 0;-
132 d->root.info = QFileInfo();-
133 d->clear(&d->root);-
134}
never executed: end of block
0
135-
136-
137-
138-
139-
140QDirModel::QDirModel(QObject *parent)-
141 : QAbstractItemModel(*new QDirModelPrivate, parent)-
142{-
143 QDirModelPrivate * const d = d_func();-
144 d->init();-
145}
never executed: end of block
0
146-
147-
148-
149-
150QDirModel::QDirModel(QDirModelPrivate &dd, QObject *parent)-
151 : QAbstractItemModel(dd, parent)-
152{-
153 QDirModelPrivate * const d = d_func();-
154 d->init();-
155}
never executed: end of block
0
156-
157-
158-
159-
160-
161QDirModel::~QDirModel()-
162{-
163-
164}-
165-
166-
167-
168-
169-
170-
171-
172QModelIndex QDirModel::index(int row, int column, const QModelIndex &parent) const-
173{-
174 const QDirModelPrivate * const d = d_func();-
175-
176 if (column < 0
column < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| column >= columnCount(parent)
column >= columnCount(parent)Description
TRUEnever evaluated
FALSEnever evaluated
|| row < 0
row < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| parent.column() > 0
parent.column() > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
177 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
178-
179 QDirModelPrivate::QDirNode *p = (d->indexValid(parent)
d->indexValid(parent)Description
TRUEnever evaluated
FALSEnever evaluated
? d->node(parent) : &d->root);
0
180 ((!(p)) ? qt_assert("p",__FILE__,278) : qt_noop());-
181 if (!p->populated
!p->populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
182 d->populate(p);
never executed: d->populate(p);
0
183 if (row >= p->children.count()
row >= p->children.count()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
184 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
185-
186 QDirModelPrivate::QDirNode *n = d->node(row, d->indexValid(parent) ? p : 0);-
187 ((!(n)) ? qt_assert("n",__FILE__,285) : qt_noop());-
188-
189 return
never executed: return createIndex(row, column, n);
createIndex(row, column, n);
never executed: return createIndex(row, column, n);
0
190}-
191-
192-
193-
194-
195-
196QModelIndex QDirModel::parent(const QModelIndex &child) const-
197{-
198 const QDirModelPrivate * const d = d_func();-
199-
200 if (!d->indexValid(child)
!d->indexValid(child)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
201 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
202 QDirModelPrivate::QDirNode *node = d->node(child);-
203 QDirModelPrivate::QDirNode *par = (node
nodeDescription
TRUEnever evaluated
FALSEnever evaluated
? node->parent : 0);
0
204 if (par == 0
par == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
205 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
206-
207-
208 const QVector<QDirModelPrivate::QDirNode> children =-
209 par->parent
par->parentDescription
TRUEnever evaluated
FALSEnever evaluated
? par->parent->children : d->root.children;
0
210 ((!(children.count() > 0)) ? qt_assert("children.count() > 0",__FILE__,308) : qt_noop());-
211 int row = (par - &(children.at(0)));-
212 ((!(row >= 0)) ? qt_assert("row >= 0",__FILE__,310) : qt_noop());-
213-
214 return
never executed: return createIndex(row, 0, par);
createIndex(row, 0, par);
never executed: return createIndex(row, 0, par);
0
215}-
216-
217-
218-
219-
220-
221-
222int QDirModel::rowCount(const QModelIndex &parent) const-
223{-
224 const QDirModelPrivate * const d = d_func();-
225 if (parent.column() > 0
parent.column() > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
226 return
never executed: return 0;
0;
never executed: return 0;
0
227-
228 if (!parent.isValid()
!parent.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
229 if (!d->root.populated
!d->root.populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
230 d->populate(&d->root);
never executed: d->populate(&d->root);
0
231 return
never executed: return d->root.children.count();
d->root.children.count();
never executed: return d->root.children.count();
0
232 }-
233 if (parent.model() != this
parent.model() != thisDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
234 return
never executed: return 0;
0;
never executed: return 0;
0
235 QDirModelPrivate::QDirNode *p = d->node(parent);-
236 if (p->info.isDir()
p->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
&& !p->populated
!p->populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
237 d->populate(p);
never executed: d->populate(p);
0
238 return
never executed: return p->children.count();
p->children.count();
never executed: return p->children.count();
0
239}-
240-
241-
242-
243-
244-
245-
246int QDirModel::columnCount(const QModelIndex &parent) const-
247{-
248 if (parent.column() > 0
parent.column() > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
249 return
never executed: return 0;
0;
never executed: return 0;
0
250 return
never executed: return 4;
4;
never executed: return 4;
0
251}-
252-
253-
254-
255-
256QVariant QDirModel::data(const QModelIndex &index, int role) const-
257{-
258 const QDirModelPrivate * const d = d_func();-
259 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
260 return
never executed: return QVariant();
QVariant();
never executed: return QVariant();
0
261-
262 if (role == Qt::DisplayRole
role == Qt::DisplayRoleDescription
TRUEnever evaluated
FALSEnever evaluated
|| role == Qt::EditRole
role == Qt::EditRoleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
263 switch (index.column()) {-
264 case
never executed: case 0:
0:
never executed: case 0:
return
never executed: return d->name(index);
d->name(index);
never executed: return d->name(index);
0
265 case
never executed: case 1:
1:
never executed: case 1:
return
never executed: return d->size(index);
d->size(index);
never executed: return d->size(index);
0
266 case
never executed: case 2:
2:
never executed: case 2:
return
never executed: return d->type(index);
d->type(index);
never executed: return d->type(index);
0
267 case
never executed: case 3:
3:
never executed: case 3:
return
never executed: return d->time(index);
d->time(index);
never executed: return d->time(index);
0
268 default
never executed: default:
:
never executed: default:
0
269 QMessageLogger(__FILE__, 367, __PRETTY_FUNCTION__).warning("data: invalid display value column %d", index.column());-
270 return
never executed: return QVariant();
QVariant();
never executed: return QVariant();
0
271 }-
272 }-
273-
274 if (index.column() == 0
index.column() == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
275 if (role == FileIconRole
role == FileIconRoleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
276 return
never executed: return fileIcon(index);
fileIcon(index);
never executed: return fileIcon(index);
0
277 if (role == FilePathRole
role == FilePathRoleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
278 return
never executed: return filePath(index);
filePath(index);
never executed: return filePath(index);
0
279 if (role == FileNameRole
role == FileNameRoleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
280 return
never executed: return fileName(index);
fileName(index);
never executed: return fileName(index);
0
281 }
never executed: end of block
0
282-
283 if (index.column() == 1
index.column() == 1Description
TRUEnever evaluated
FALSEnever evaluated
&& Qt::TextAlignmentRole == role
Qt::TextAlignmentRole == roleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
284 return
never executed: return Qt::AlignRight;
Qt::AlignRight;
never executed: return Qt::AlignRight;
0
285 }-
286 return
never executed: return QVariant();
QVariant();
never executed: return QVariant();
0
287}-
288bool QDirModel::setData(const QModelIndex &index, const QVariant &value, int role)-
289{-
290 QDirModelPrivate * const d = d_func();-
291 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
|| index.column() != 0
index.column() != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
292 || (
(flags(index) ...Editable) == 0Description
TRUEnever evaluated
FALSEnever evaluated
flags(index) & Qt::ItemIsEditable) == 0
(flags(index) ...Editable) == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| role != Qt::EditRole
role != Qt::EditRoleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
293 return
never executed: return false;
false;
never executed: return false;
0
294-
295 QDirModelPrivate::QDirNode *node = d->node(index);-
296 QDir dir = node->info.dir();-
297 QString name = value.toString();-
298 if (dir.rename(node->info.fileName(), name)
dir.rename(nod...eName(), name)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
299 node->info = QFileInfo(dir, name);-
300 QModelIndex sibling = index.sibling(index.row(), 3);-
301 dataChanged(index, sibling);-
302-
303 d->toBeRefreshed = index.parent();-
304 QMetaObject::invokeMethod(this, "_q_refresh", Qt::QueuedConnection);-
305-
306 return
never executed: return true;
true;
never executed: return true;
0
307 }-
308-
309 return
never executed: return false;
false;
never executed: return false;
0
310}-
311-
312-
313-
314-
315-
316-
317QVariant QDirModel::headerData(int section, Qt::Orientation orientation, int role) const-
318{-
319 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
320 if (role != Qt::DisplayRole
role != Qt::DisplayRoleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
321 return
never executed: return QVariant();
QVariant();
never executed: return QVariant();
0
322 switch (section) {-
323 case
never executed: case 0:
0:
never executed: case 0:
return
never executed: return tr("Name");
tr("Name");
never executed: return tr("Name");
0
324 case
never executed: case 1:
1:
never executed: case 1:
return
never executed: return tr("Size");
tr("Size");
never executed: return tr("Size");
0
325 case
never executed: case 2:
2:
never executed: case 2:
return
never executed: return tr("Type", "All other platforms");
0
3260
3270
3280
329 tr("Type", "All other platforms");
never executed: return tr("Type", "All other platforms");
0
330-
331-
332-
333-
334-
335 case
never executed: case 3:
3:
never executed: case 3:
return
never executed: return tr("Date Modified");
tr("Date Modified");
never executed: return tr("Date Modified");
0
336 default
never executed: default:
:
never executed: default:
return
never executed: return QVariant();
QVariant();
never executed: return QVariant();
0
337 }-
338 }-
339 return
never executed: return QAbstractItemModel::headerData(section, orientation, role);
QAbstractItemModel::headerData(section, orientation, role);
never executed: return QAbstractItemModel::headerData(section, orientation, role);
0
340}-
341-
342-
343-
344-
345-
346-
347bool QDirModel::hasChildren(const QModelIndex &parent) const-
348{-
349 const QDirModelPrivate * const d = d_func();-
350 if (parent.column() > 0
parent.column() > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
351 return
never executed: return false;
false;
never executed: return false;
0
352-
353 if (!parent.isValid()
!parent.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
354 return
never executed: return true;
true;
never executed: return true;
0
355 QDirModelPrivate::QDirNode *p = d->node(parent);-
356 ((!(p)) ? qt_assert("p",__FILE__,463) : qt_noop());-
357-
358 if (d->lazyChildCount
d->lazyChildCountDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
359 return
never executed: return p->info.isDir();
p->info.isDir();
never executed: return p->info.isDir();
0
360 return
never executed: return p->info.isDir() && rowCount(parent) > 0;
p->info.isDir()
p->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
&& rowCount(parent) > 0
rowCount(parent) > 0Description
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return p->info.isDir() && rowCount(parent) > 0;
0
361}-
362-
363-
364-
365-
366-
367-
368Qt::ItemFlags QDirModel::flags(const QModelIndex &index) const-
369{-
370 const QDirModelPrivate * const d = d_func();-
371 Qt::ItemFlags flags = QAbstractItemModel::flags(index);-
372 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
373 return
never executed: return flags;
flags;
never executed: return flags;
0
374 flags |= Qt::ItemIsDragEnabled;-
375 if (d->readOnly
d->readOnlyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
376 return
never executed: return flags;
flags;
never executed: return flags;
0
377 QDirModelPrivate::QDirNode *node = d->node(index);-
378 if ((
(index.column() == 0)Description
TRUEnever evaluated
FALSEnever evaluated
index.column() == 0)
(index.column() == 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& node->info.isWritable()
node->info.isWritable()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
379 flags |= Qt::ItemIsEditable;-
380 if (fileInfo(index).isDir()
fileInfo(index).isDir()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
381 flags |= Qt::ItemIsDropEnabled;
never executed: flags |= Qt::ItemIsDropEnabled;
0
382 }
never executed: end of block
0
383 return
never executed: return flags;
flags;
never executed: return flags;
0
384}-
385-
386-
387-
388-
389-
390-
391void QDirModel::sort(int column, Qt::SortOrder order)-
392{-
393 QDir::SortFlags sort = QDir::DirsFirst | QDir::IgnoreCase;-
394 if (order == Qt::DescendingOrder
order == Qt::DescendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
395 sort |= QDir::Reversed;
never executed: sort |= QDir::Reversed;
0
396-
397 switch (column) {-
398 case
never executed: case 0:
0:
never executed: case 0:
0
399 sort |= QDir::Name;-
400 break;
never executed: break;
0
401 case
never executed: case 1:
1:
never executed: case 1:
0
402 sort |= QDir::Size;-
403 break;
never executed: break;
0
404 case
never executed: case 2:
2:
never executed: case 2:
0
405 sort |= QDir::Type;-
406 break;
never executed: break;
0
407 case
never executed: case 3:
3:
never executed: case 3:
0
408 sort |= QDir::Time;-
409 break;
never executed: break;
0
410 default
never executed: default:
:
never executed: default:
0
411 break;
never executed: break;
0
412 }-
413-
414 setSorting(sort);-
415}
never executed: end of block
0
416-
417-
418-
419-
420-
421-
422QStringList QDirModel::mimeTypes() const-
423{-
424 return
never executed: return QStringList(QLatin1String("text/uri-list"));
QStringList(QLatin1String("text/uri-list"));
never executed: return QStringList(QLatin1String("text/uri-list"));
0
425}-
426QMimeData *QDirModel::mimeData(const QModelIndexList &indexes) const-
427{-
428 QList<QUrl> urls;-
429 QList<QModelIndex>::const_iterator it = indexes.begin();-
430 for (; it != indexes.end()
it != indexes.end()Description
TRUEnever evaluated
FALSEnever evaluated
; ++it)
0
431 if ((*
(*it).column() == 0Description
TRUEnever evaluated
FALSEnever evaluated
it).column() == 0
(*it).column() == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
432 urls << QUrl::fromLocalFile(filePath(*it));
never executed: urls << QUrl::fromLocalFile(filePath(*it));
0
433 QMimeData *data = new QMimeData();-
434 data->setUrls(urls);-
435 return
never executed: return data;
data;
never executed: return data;
0
436}-
437bool QDirModel::dropMimeData(const QMimeData *data, Qt::DropAction action,-
438 int , int , const QModelIndex &parent)-
439{-
440 QDirModelPrivate * const d = d_func();-
441 if (!d->indexValid(parent)
!d->indexValid(parent)Description
TRUEnever evaluated
FALSEnever evaluated
|| isReadOnly()
isReadOnly()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
442 return
never executed: return false;
false;
never executed: return false;
0
443-
444 bool success = true;-
445 QString to = filePath(parent) + QDir::separator();-
446 QModelIndex _parent = parent;-
447-
448 QList<QUrl> urls = data->urls();-
449 QList<QUrl>::const_iterator it = urls.constBegin();-
450-
451 switch (action) {-
452 case
never executed: case Qt::CopyAction:
Qt::CopyAction:
never executed: case Qt::CopyAction:
0
453 for (; it != urls.constEnd()
it != urls.constEnd()Description
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
454 QString path = (*it).toLocalFile();-
455 success = QFile::copy(path, to + QFileInfo(path).fileName())
QFile::copy(pa...h).fileName())Description
TRUEnever evaluated
FALSEnever evaluated
&& success
successDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
456 }
never executed: end of block
0
457 break;
never executed: break;
0
458 case
never executed: case Qt::LinkAction:
Qt::LinkAction:
never executed: case Qt::LinkAction:
0
459 for (; it != urls.constEnd()
it != urls.constEnd()Description
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
460 QString path = (*it).toLocalFile();-
461 success = QFile::link(path, to + QFileInfo(path).fileName())
QFile::link(pa...h).fileName())Description
TRUEnever evaluated
FALSEnever evaluated
&& success
successDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
462 }
never executed: end of block
0
463 break;
never executed: break;
0
464 case
never executed: case Qt::MoveAction:
Qt::MoveAction:
never executed: case Qt::MoveAction:
0
465 for (; it != urls.constEnd()
it != urls.constEnd()Description
TRUEnever evaluated
FALSEnever evaluated
; ++it) {
0
466 QString path = (*it).toLocalFile();-
467 if (QFile::copy(path, to + QFileInfo(path).fileName())
QFile::copy(pa...h).fileName())Description
TRUEnever evaluated
FALSEnever evaluated
0
468 && QFile::remove(path)
QFile::remove(path)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
469 QModelIndex idx=index(QFileInfo(path).path());-
470 if (idx.isValid()
idx.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
471 refresh(idx);-
472-
473 _parent = index(to);-
474 }
never executed: end of block
0
475 }
never executed: end of block
else {
0
476 success = false;-
477 }
never executed: end of block
0
478 }-
479 break;
never executed: break;
0
480 default
never executed: default:
:
never executed: default:
0
481 return
never executed: return false;
false;
never executed: return false;
0
482 }-
483-
484 if (success
successDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
485 refresh(_parent);
never executed: refresh(_parent);
0
486-
487 return
never executed: return success;
success;
never executed: return success;
0
488}-
489-
490-
491-
492-
493-
494-
495-
496Qt::DropActions QDirModel::supportedDropActions() const-
497{-
498 return
never executed: return Qt::CopyAction | Qt::MoveAction;
Qt::CopyAction | Qt::MoveAction;
never executed: return Qt::CopyAction | Qt::MoveAction;
0
499}-
500-
501-
502-
503-
504-
505-
506void QDirModel::setIconProvider(QFileIconProvider *provider)-
507{-
508 QDirModelPrivate * const d = d_func();-
509 d->iconProvider = provider;-
510}
never executed: end of block
0
511-
512-
513-
514-
515-
516QFileIconProvider *QDirModel::iconProvider() const-
517{-
518 const QDirModelPrivate * const d = d_func();-
519 return
never executed: return d->iconProvider;
d->iconProvider;
never executed: return d->iconProvider;
0
520}-
521-
522-
523-
524-
525-
526void QDirModel::setNameFilters(const QStringList &filters)-
527{-
528 QDirModelPrivate * const d = d_func();-
529 d->nameFilters = filters;-
530 layoutAboutToBeChanged();-
531 if (d->shouldStat
d->shouldStatDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
532 refresh(QModelIndex());
never executed: refresh(QModelIndex());
0
533 else-
534 d->invalidate();
never executed: d->invalidate();
0
535 layoutChanged();-
536}
never executed: end of block
0
537-
538-
539-
540-
541-
542QStringList QDirModel::nameFilters() const-
543{-
544 const QDirModelPrivate * const d = d_func();-
545 return
never executed: return d->nameFilters;
d->nameFilters;
never executed: return d->nameFilters;
0
546}-
547void QDirModel::setFilter(QDir::Filters filters)-
548{-
549 QDirModelPrivate * const d = d_func();-
550 d->filters = filters;-
551 layoutAboutToBeChanged();-
552 if (d->shouldStat
d->shouldStatDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
553 refresh(QModelIndex());
never executed: refresh(QModelIndex());
0
554 else-
555 d->invalidate();
never executed: d->invalidate();
0
556 layoutChanged();-
557}
never executed: end of block
0
558-
559-
560-
561-
562-
563-
564-
565QDir::Filters QDirModel::filter() const-
566{-
567 const QDirModelPrivate * const d = d_func();-
568 return
never executed: return d->filters;
d->filters;
never executed: return d->filters;
0
569}-
570-
571-
572-
573-
574-
575-
576-
577void QDirModel::setSorting(QDir::SortFlags sort)-
578{-
579 QDirModelPrivate * const d = d_func();-
580 d->sort = sort;-
581 layoutAboutToBeChanged();-
582 if (d->shouldStat
d->shouldStatDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
583 refresh(QModelIndex());
never executed: refresh(QModelIndex());
0
584 else-
585 d->invalidate();
never executed: d->invalidate();
0
586 layoutChanged();-
587}
never executed: end of block
0
588-
589-
590-
591-
592-
593-
594-
595QDir::SortFlags QDirModel::sorting() const-
596{-
597 const QDirModelPrivate * const d = d_func();-
598 return
never executed: return d->sort;
d->sort;
never executed: return d->sort;
0
599}-
600void QDirModel::setResolveSymlinks(bool enable)-
601{-
602 QDirModelPrivate * const d = d_func();-
603 d->resolveSymlinks = enable;-
604}
never executed: end of block
0
605-
606bool QDirModel::resolveSymlinks() const-
607{-
608 const QDirModelPrivate * const d = d_func();-
609 return
never executed: return d->resolveSymlinks;
d->resolveSymlinks;
never executed: return d->resolveSymlinks;
0
610}-
611void QDirModel::setReadOnly(bool enable)-
612{-
613 QDirModelPrivate * const d = d_func();-
614 d->readOnly = enable;-
615}
never executed: end of block
0
616-
617bool QDirModel::isReadOnly() const-
618{-
619 const QDirModelPrivate * const d = d_func();-
620 return
never executed: return d->readOnly;
d->readOnly;
never executed: return d->readOnly;
0
621}-
622void QDirModel::setLazyChildCount(bool enable)-
623{-
624 QDirModelPrivate * const d = d_func();-
625 d->lazyChildCount = enable;-
626}
never executed: end of block
0
627-
628bool QDirModel::lazyChildCount() const-
629{-
630 const QDirModelPrivate * const d = d_func();-
631 return
never executed: return d->lazyChildCount;
d->lazyChildCount;
never executed: return d->lazyChildCount;
0
632}-
633void QDirModel::refresh(const QModelIndex &parent)-
634{-
635 QDirModelPrivate * const d = d_func();-
636-
637 QDirModelPrivate::QDirNode *n = d->indexValid(parent)
d->indexValid(parent)Description
TRUEnever evaluated
FALSEnever evaluated
? d->node(parent) : &(d->root);
0
638-
639 int rows = n->children.count();-
640 if (rows == 0
rows == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
641 layoutAboutToBeChanged();-
642 n->stat = true;-
643 n->populated = false;-
644 layoutChanged();-
645 return;
never executed: return;
0
646 }-
647-
648 layoutAboutToBeChanged();-
649 d->savePersistentIndexes();-
650 d->rowsAboutToBeRemoved(parent, 0, rows - 1);-
651 n->stat = true;-
652 d->clear(n);-
653 d->rowsRemoved(parent, 0, rows - 1);-
654 d->restorePersistentIndexes();-
655 layoutChanged();-
656}
never executed: end of block
0
657-
658-
659-
660-
661-
662-
663-
664QModelIndex QDirModel::index(const QString &path, int column) const-
665{-
666 const QDirModelPrivate * const d = d_func();-
667-
668 if (path.isEmpty()
path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| path == QCoreApplication::translate("QFileDialog", "My Computer")
path == QCoreA..."My Computer")Description
TRUEnever evaluated
FALSEnever evaluated
)
0
669 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
670-
671 QString absolutePath = QDir(path).absolutePath();-
672 QStringList pathElements = absolutePath.split(QLatin1Char('/'), QString::SkipEmptyParts);-
673 if ((pathElements.isEmpty()
pathElements.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| !QFileInfo::exists(path)
!QFileInfo::exists(path)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
674-
675 && path != QLatin1String("/")
path != QLatin1String("/")Description
TRUEnever evaluated
FALSEnever evaluated
0
676-
677 )-
678 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
679-
680 QModelIndex idx;-
681 if (!d->root.populated
!d->root.populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
682 d->populate(&d->root);
never executed: d->populate(&d->root);
0
683 pathElements.prepend(QLatin1String("/"));-
684-
685-
686 for (int i = 0; i < pathElements.count()
i < pathElements.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
687 ((!(!pathElements.at(i).isEmpty())) ? qt_assert("!pathElements.at(i).isEmpty()",__FILE__,904) : qt_noop());-
688 QString element = pathElements.at(i);-
689 QDirModelPrivate::QDirNode *parent = (idx.isValid()
idx.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
? d->node(idx) : &d->root);
0
690-
691 ((!(parent)) ? qt_assert("parent",__FILE__,908) : qt_noop());-
692 if (!parent->populated
!parent->populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
693 d->populate(parent);
never executed: d->populate(parent);
0
694-
695-
696 int row = -1;-
697 for (int j = parent->children.count() - 1; j >= 0
j >= 0Description
TRUEnever evaluated
FALSEnever evaluated
; --j) {
0
698 const QFileInfo& fi = parent->children.at(j).info;-
699 QString childFileName;-
700 childFileName = idx.isValid()
idx.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
? fi.fileName() : fi.absoluteFilePath();
0
701-
702-
703-
704 if (childFileName == element
childFileName == elementDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
705 if (i == pathElements.count() - 1
i == pathElements.count() - 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
706 parent->children[j].stat = true;
never executed: parent->children[j].stat = true;
0
707 row = j;-
708 break;
never executed: break;
0
709 }-
710 }
never executed: end of block
0
711-
712-
713 if (row == -1
row == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
714-
715-
716-
717-
718-
719-
720-
721 QString newPath = parent->info.absoluteFilePath() + QLatin1Char('/') + element;-
722-
723 if (!d->allowAppendChild
!d->allowAppendChildDescription
TRUEnever evaluated
FALSEnever evaluated
|| !QFileInfo(newPath).isDir()
!QFileInfo(newPath).isDir()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
724 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
725 d->appendChild(parent, newPath);-
726 row = parent->children.count() - 1;-
727 if (i == pathElements.count() - 1
i == pathElements.count() - 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
728 parent->children[row].stat = true;
never executed: parent->children[row].stat = true;
0
729 const_cast<QDirModel*>(this)->layoutChanged();-
730 }
never executed: end of block
0
731-
732 ((!(row >= 0)) ? qt_assert("row >= 0",__FILE__,949) : qt_noop());-
733 idx = createIndex(row, 0, static_cast<void*>(&parent->children[row]));-
734 ((!(idx.isValid())) ? qt_assert("idx.isValid()",__FILE__,951) : qt_noop());-
735 }
never executed: end of block
0
736-
737 if (column != 0
column != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
738 return
never executed: return idx.sibling(idx.row(), column);
idx.sibling(idx.row(), column);
never executed: return idx.sibling(idx.row(), column);
0
739 return
never executed: return idx;
idx;
never executed: return idx;
0
740}-
741-
742-
743-
744-
745-
746-
747bool QDirModel::isDir(const QModelIndex &index) const-
748{-
749 const QDirModelPrivate * const d = d_func();-
750 ((!(d->indexValid(index))) ? qt_assert("d->indexValid(index)",__FILE__,967) : qt_noop());-
751 QDirModelPrivate::QDirNode *node = d->node(index);-
752 return
never executed: return node->info.isDir();
node->info.isDir();
never executed: return node->info.isDir();
0
753}-
754-
755-
756-
757-
758-
759QModelIndex QDirModel::mkdir(const QModelIndex &parent, const QString &name)-
760{-
761 QDirModelPrivate * const d = d_func();-
762 if (!d->indexValid(parent)
!d->indexValid(parent)Description
TRUEnever evaluated
FALSEnever evaluated
|| isReadOnly()
isReadOnly()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
763 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
764-
765 QDirModelPrivate::QDirNode *p = d->node(parent);-
766 QString path = p->info.absoluteFilePath();-
767-
768-
769-
770 QDir newDir(name);-
771 QDir dir(path);-
772 if (newDir.isRelative()
newDir.isRelative()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
773 newDir = QDir(path + QLatin1Char('/') + name);
never executed: newDir = QDir(path + QLatin1Char('/') + name);
0
774 QString childName = newDir.dirName();-
775 newDir.cdUp();-
776-
777 if (newDir.absolutePath() != dir.absolutePath()
newDir.absolut...absolutePath()Description
TRUEnever evaluated
FALSEnever evaluated
|| !dir.mkdir(name)
!dir.mkdir(name)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
778 return
never executed: return QModelIndex();
QModelIndex();
never executed: return QModelIndex();
0
779-
780 refresh(parent);-
781-
782 QStringList entryList = d->entryList(path);-
783 int r = entryList.indexOf(childName);-
784 QModelIndex i = index(r, 0, parent);-
785-
786 return
never executed: return i;
i;
never executed: return i;
0
787}-
788bool QDirModel::rmdir(const QModelIndex &index)-
789{-
790 QDirModelPrivate * const d = d_func();-
791 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
|| isReadOnly()
isReadOnly()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
792 return
never executed: return false;
false;
never executed: return false;
0
793-
794 QDirModelPrivate::QDirNode *n = d_func()->node(index);-
795 if (!n->info.isDir()
!n->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
796 QMessageLogger(__FILE__, 1026, __PRETTY_FUNCTION__).warning("rmdir: the node is not a directory");-
797 return
never executed: return false;
false;
never executed: return false;
0
798 }-
799-
800 QModelIndex par = parent(index);-
801 QDirModelPrivate::QDirNode *p = d_func()->node(par);-
802 QDir dir = p->info.dir();-
803 QString path = n->info.absoluteFilePath();-
804 if (!dir.rmdir(path)
!dir.rmdir(path)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
805 return
never executed: return false;
false;
never executed: return false;
0
806-
807 refresh(par);-
808-
809 return
never executed: return true;
true;
never executed: return true;
0
810}-
811bool QDirModel::remove(const QModelIndex &index)-
812{-
813 QDirModelPrivate * const d = d_func();-
814 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
|| isReadOnly()
isReadOnly()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
815 return
never executed: return false;
false;
never executed: return false;
0
816-
817 QDirModelPrivate::QDirNode *n = d_func()->node(index);-
818 if (n->info.isDir()
n->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
819 return
never executed: return false;
false;
never executed: return false;
0
820-
821 QModelIndex par = parent(index);-
822 QDirModelPrivate::QDirNode *p = d_func()->node(par);-
823 QDir dir = p->info.dir();-
824 QString path = n->info.absoluteFilePath();-
825 if (!dir.remove(path)
!dir.remove(path)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
826 return
never executed: return false;
false;
never executed: return false;
0
827-
828 refresh(par);-
829-
830 return
never executed: return true;
true;
never executed: return true;
0
831}-
832-
833-
834-
835-
836-
837-
838-
839QString QDirModel::filePath(const QModelIndex &index) const-
840{-
841 const QDirModelPrivate * const d = d_func();-
842 if (d->indexValid(index)
d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
843 QFileInfo fi = fileInfo(index);-
844 if (d->resolveSymlinks
d->resolveSymlinksDescription
TRUEnever evaluated
FALSEnever evaluated
&& fi.isSymLink()
fi.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
845 fi = d->resolvedInfo(fi);
never executed: fi = d->resolvedInfo(fi);
0
846 return
never executed: return QDir::cleanPath(fi.absoluteFilePath());
QDir::cleanPath(fi.absoluteFilePath());
never executed: return QDir::cleanPath(fi.absoluteFilePath());
0
847 }-
848 return
never executed: return QString();
QString();
never executed: return QString();
0
849}-
850-
851-
852-
853-
854-
855-
856-
857QString QDirModel::fileName(const QModelIndex &index) const-
858{-
859 const QDirModelPrivate * const d = d_func();-
860 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
861 return
never executed: return QString();
QString();
never executed: return QString();
0
862 QFileInfo info = fileInfo(index);-
863 if (info.isRoot()
info.isRoot()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
864 return
never executed: return info.absoluteFilePath();
info.absoluteFilePath();
never executed: return info.absoluteFilePath();
0
865 if (d->resolveSymlinks
d->resolveSymlinksDescription
TRUEnever evaluated
FALSEnever evaluated
&& info.isSymLink()
info.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
866 info = d->resolvedInfo(info);
never executed: info = d->resolvedInfo(info);
0
867 return
never executed: return info.fileName();
info.fileName();
never executed: return info.fileName();
0
868}-
869-
870-
871-
872-
873-
874-
875QIcon QDirModel::fileIcon(const QModelIndex &index) const-
876{-
877 const QDirModelPrivate * const d = d_func();-
878 if (!d->indexValid(index)
!d->indexValid(index)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
879 return
never executed: return d->iconProvider->icon(QFileIconProvider::Computer);
d->iconProvider->icon(QFileIconProvider::Computer);
never executed: return d->iconProvider->icon(QFileIconProvider::Computer);
0
880 QDirModelPrivate::QDirNode *node = d->node(index);-
881 if (node->icon.isNull()
node->icon.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
882 node->icon = d->iconProvider->icon(node->info);
never executed: node->icon = d->iconProvider->icon(node->info);
0
883 return
never executed: return node->icon;
node->icon;
never executed: return node->icon;
0
884}-
885QFileInfo QDirModel::fileInfo(const QModelIndex &index) const-
886{-
887 const QDirModelPrivate * const d = d_func();-
888 ((!(d->indexValid(index))) ? qt_assert("d->indexValid(index)",__FILE__,1142) : qt_noop());-
889-
890 QDirModelPrivate::QDirNode *node = d->node(index);-
891 return
never executed: return node->info;
node->info;
never executed: return node->info;
0
892}-
893-
894-
895-
896-
897-
898void QDirModelPrivate::init()-
899{-
900 filters = QDir::AllEntries | QDir::NoDotAndDotDot;-
901 sort = QDir::Name;-
902 nameFilters << QLatin1String("*");-
903 root.parent = 0;-
904 root.info = QFileInfo();-
905 clear(&root);-
906 roleNames.insertMulti(QDirModel::FileIconRole, ([]() -> QByteArray { enum { Size = sizeof("fileIcon") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "fileIcon" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return
never executed: return ba;
ba;
never executed: return ba;
}()));
0
907 roleNames.insert(QDirModel::FilePathRole, ([]() -> QByteArray { enum { Size = sizeof("filePath") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "filePath" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return
never executed: return ba;
ba;
never executed: return ba;
}()));
0
908 roleNames.insert(QDirModel::FileNameRole, ([]() -> QByteArray { enum { Size = sizeof("fileName") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "fileName" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return
never executed: return ba;
ba;
never executed: return ba;
}()));
0
909}
never executed: end of block
0
910-
911QDirModelPrivate::QDirNode *QDirModelPrivate::node(int row, QDirNode *parent) const-
912{-
913 if (row < 0
row < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
914 return
never executed: return 0;
0;
never executed: return 0;
0
915-
916 bool isDir = !parent
!parentDescription
TRUEnever evaluated
FALSEnever evaluated
|| parent->info.isDir()
parent->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
;
0
917 QDirNode *p = (parent
parentDescription
TRUEnever evaluated
FALSEnever evaluated
? parent : &root);
0
918 if (isDir
isDirDescription
TRUEnever evaluated
FALSEnever evaluated
&& !p->populated
!p->populatedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
919 populate(p);
never executed: populate(p);
0
920-
921 if (row >= p->children.count()
row >= p->children.count()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
922 QMessageLogger(__FILE__, 1176, __PRETTY_FUNCTION__).warning("node: the row does not exist");-
923 return
never executed: return 0;
0;
never executed: return 0;
0
924 }-
925-
926 return
never executed: return const_cast<QDirNode*>(&p->children.at(row));
const_cast<QDirNode*>(&p->children.at(row));
never executed: return const_cast<QDirNode*>(&p->children.at(row));
0
927}-
928-
929QVector<QDirModelPrivate::QDirNode> QDirModelPrivate::children(QDirNode *parent, bool stat) const-
930{-
931 ((!(parent)) ? qt_assert("parent",__FILE__,1185) : qt_noop());-
932 QFileInfoList infoList;-
933 if (parent == &root
parent == &rootDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
934 parent = 0;-
935 infoList = QDir::drives();-
936 }
never executed: end of block
else if (parent->info.isDir()
parent->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
937-
938 if (parent->info.isSymLink()
parent->info.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
&& resolveSymlinks
resolveSymlinksDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
939 QString link = parent->info.symLinkTarget();-
940 if (link.size() > 1
link.size() > 1Description
TRUEnever evaluated
FALSEnever evaluated
&& link.at(link.size() - 1) == QDir::separator()
link.at(link.s...r::separator()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
941 link.chop(1);
never executed: link.chop(1);
0
942 if (stat
statDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
943 infoList = entryInfoList(link);
never executed: infoList = entryInfoList(link);
0
944 else-
945 infoList = QDir(link).entryInfoList(nameFilters, QDir::AllEntries | QDir::System);
never executed: infoList = QDir(link).entryInfoList(nameFilters, QDir::AllEntries | QDir::System);
0
946 } else {-
947 if (stat
statDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
948 infoList = entryInfoList(parent->info.absoluteFilePath());
never executed: infoList = entryInfoList(parent->info.absoluteFilePath());
0
949 else-
950 infoList = QDir(parent->info.absoluteFilePath()).entryInfoList(nameFilters, QDir::AllEntries | QDir::System);
never executed: infoList = QDir(parent->info.absoluteFilePath()).entryInfoList(nameFilters, QDir::AllEntries | QDir::System);
0
951 }-
952 }-
953-
954 QVector<QDirNode> nodes(infoList.count());-
955 for (int i = 0; i < infoList.count()
i < infoList.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
956 QDirNode &node = nodes[i];-
957 node.parent = parent;-
958 node.info = infoList.at(i);-
959 node.populated = false;-
960 node.stat = shouldStat;-
961 }
never executed: end of block
0
962-
963 return
never executed: return nodes;
nodes;
never executed: return nodes;
0
964}-
965-
966void QDirModelPrivate::_q_refresh()-
967{-
968 QDirModel * const q = q_func();-
969 q->refresh(toBeRefreshed);-
970 toBeRefreshed = QModelIndex();-
971}
never executed: end of block
0
972-
973void QDirModelPrivate::savePersistentIndexes()-
974{-
975 QDirModel * const q = q_func();-
976 savedPersistent.clear();-
977 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(persistent.indexes)>::type> _container_((persistent.indexes)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QPersistentModelIndexData *data = *_container_.i; _container_.control; _container_.control = 0) {-
978 SavedPersistent saved;-
979 QModelIndex index = data->index;-
980 saved.path = q->filePath(index);-
981 saved.column = index.column();-
982 saved.data = data;-
983 saved.index = index;-
984 savedPersistent.append(saved);-
985 }
never executed: end of block
0
986}
never executed: end of block
0
987-
988void QDirModelPrivate::restorePersistentIndexes()-
989{-
990 QDirModel * const q = q_func();-
991 bool allow = allowAppendChild;-
992 allowAppendChild = false;-
993 for (int i = 0; i < savedPersistent.count()
i < savedPersistent.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
994 QPersistentModelIndexData *data = savedPersistent.at(i).data;-
995 QString path = savedPersistent.at(i).path;-
996 int column = savedPersistent.at(i).column;-
997 QModelIndex idx = q->index(path, column);-
998 if (idx != data->index
idx != data->indexDescription
TRUEnever evaluated
FALSEnever evaluated
|| data->model == 0
data->model == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
999-
1000 persistent.indexes.remove(data->index);-
1001 data->index = idx;-
1002 data->model = q;-
1003 if (idx.isValid()
idx.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1004 persistent.indexes.insert(idx, data);
never executed: persistent.indexes.insert(idx, data);
0
1005 }
never executed: end of block
0
1006 }
never executed: end of block
0
1007 savedPersistent.clear();-
1008 allowAppendChild = allow;-
1009}
never executed: end of block
0
1010-
1011QFileInfoList QDirModelPrivate::entryInfoList(const QString &path) const-
1012{-
1013 const QDir dir(path);-
1014 return
never executed: return dir.entryInfoList(nameFilters, filters, sort);
dir.entryInfoList(nameFilters, filters, sort);
never executed: return dir.entryInfoList(nameFilters, filters, sort);
0
1015}-
1016-
1017QStringList QDirModelPrivate::entryList(const QString &path) const-
1018{-
1019 const QDir dir(path);-
1020 return
never executed: return dir.entryList(nameFilters, filters, sort);
dir.entryList(nameFilters, filters, sort);
never executed: return dir.entryList(nameFilters, filters, sort);
0
1021}-
1022-
1023QString QDirModelPrivate::name(const QModelIndex &index) const-
1024{-
1025 const QDirNode *n = node(index);-
1026 const QFileInfo info = n->info;-
1027 if (info.isRoot()
info.isRoot()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1028 QString name = info.absoluteFilePath();-
1029-
1030-
1031-
1032-
1033-
1034-
1035 return
never executed: return name;
name;
never executed: return name;
0
1036 }-
1037 return
never executed: return info.fileName();
info.fileName();
never executed: return info.fileName();
0
1038}-
1039-
1040QString QDirModelPrivate::size(const QModelIndex &index) const-
1041{-
1042 const QDirNode *n = node(index);-
1043 if (n->info.isDir()
n->info.isDir()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
1044-
1045-
1046-
1047 return
never executed: return QLatin1String("");
QLatin1String("");
never executed: return QLatin1String("");
0
1048-
1049-
1050-
1051-
1052-
1053 }-
1054-
1055-
1056-
1057 const quint64 kb = 1024;-
1058 const quint64 mb = 1024 * kb;-
1059 const quint64 gb = 1024 * mb;-
1060 const quint64 tb = 1024 * gb;-
1061 quint64 bytes = n->info.size();-
1062 if (bytes >= tb
bytes >= tbDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1063 return
never executed: return QFileSystemModel::tr("%1 TB").arg(QLocale().toString(qreal(bytes) / tb, 'f', 3));
QFileSystemModel::tr("%1 TB").arg(QLocale().toString(qreal(bytes) / tb, 'f', 3));
never executed: return QFileSystemModel::tr("%1 TB").arg(QLocale().toString(qreal(bytes) / tb, 'f', 3));
0
1064 if (bytes >= gb
bytes >= gbDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1065 return
never executed: return QFileSystemModel::tr("%1 GB").arg(QLocale().toString(qreal(bytes) / gb, 'f', 2));
QFileSystemModel::tr("%1 GB").arg(QLocale().toString(qreal(bytes) / gb, 'f', 2));
never executed: return QFileSystemModel::tr("%1 GB").arg(QLocale().toString(qreal(bytes) / gb, 'f', 2));
0
1066 if (bytes >= mb
bytes >= mbDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1067 return
never executed: return QFileSystemModel::tr("%1 MB").arg(QLocale().toString(qreal(bytes) / mb, 'f', 1));
QFileSystemModel::tr("%1 MB").arg(QLocale().toString(qreal(bytes) / mb, 'f', 1));
never executed: return QFileSystemModel::tr("%1 MB").arg(QLocale().toString(qreal(bytes) / mb, 'f', 1));
0
1068 if (bytes >= kb
bytes >= kbDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1069 return
never executed: return QFileSystemModel::tr("%1 KB").arg(QLocale().toString(bytes / kb));
QFileSystemModel::tr("%1 KB").arg(QLocale().toString(bytes / kb));
never executed: return QFileSystemModel::tr("%1 KB").arg(QLocale().toString(bytes / kb));
0
1070 return
never executed: return QFileSystemModel::tr("%1 byte(s)").arg(QLocale().toString(bytes));
QFileSystemModel::tr("%1 byte(s)").arg(QLocale().toString(bytes));
never executed: return QFileSystemModel::tr("%1 byte(s)").arg(QLocale().toString(bytes));
0
1071}-
1072-
1073QString QDirModelPrivate::type(const QModelIndex &index) const-
1074{-
1075 return
never executed: return iconProvider->type(node(index)->info);
iconProvider->type(node(index)->info);
never executed: return iconProvider->type(node(index)->info);
0
1076}-
1077-
1078QString QDirModelPrivate::time(const QModelIndex &index) const-
1079{-
1080-
1081 return
never executed: return node(index)->info.lastModified().toString(Qt::LocalDate);
node(index)->info.lastModified().toString(Qt::LocalDate);
never executed: return node(index)->info.lastModified().toString(Qt::LocalDate);
0
1082-
1083-
1084-
1085-
1086}-
1087-
1088void QDirModelPrivate::appendChild(QDirModelPrivate::QDirNode *parent, const QString &path) const-
1089{-
1090 QDirModelPrivate::QDirNode node;-
1091 node.populated = false;-
1092 node.stat = shouldStat;-
1093 node.parent = (parent == &root
parent == &rootDescription
TRUEnever evaluated
FALSEnever evaluated
? 0 : parent);
0
1094 node.info = QFileInfo(path);-
1095 node.info.setCaching(true);-
1096-
1097-
1098-
1099 QDirModelPrivate *that = const_cast<QDirModelPrivate *>(this);-
1100 that->savePersistentIndexes();-
1101 parent->children.append(node);-
1102 for (int i = 0; i < parent->children.count()
i < parent->children.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
1103 QDirNode *childNode = &parent->children[i];-
1104 for (int j = 0; j < childNode->children.count()
j < childNode-...ildren.count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++j)
0
1105 childNode->children[j].parent = childNode;
never executed: childNode->children[j].parent = childNode;
0
1106 }
never executed: end of block
0
1107 that->restorePersistentIndexes();-
1108}
never executed: end of block
0
1109-
1110QFileInfo QDirModelPrivate::resolvedInfo(QFileInfo info)-
1111{-
1112-
1113-
1114-
1115-
1116 QStringList paths;-
1117 do {-
1118 QFileInfo link(info.symLinkTarget());-
1119 if (link.isRelative()
link.isRelative()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1120 info.setFile(info.absolutePath(), link.filePath());
never executed: info.setFile(info.absolutePath(), link.filePath());
0
1121 else-
1122 info = link;
never executed: info = link;
0
1123 if (paths.contains(info.absoluteFilePath())
paths.contains...uteFilePath())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1124 return
never executed: return QFileInfo();
QFileInfo();
never executed: return QFileInfo();
0
1125 paths.append(info.absoluteFilePath());-
1126 }
never executed: end of block
while (info.isSymLink()
info.isSymLink()Description
TRUEnever evaluated
FALSEnever evaluated
);
0
1127 return
never executed: return info;
info;
never executed: return info;
0
1128-
1129}-
1130-
1131-
1132-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9