Changeset 561 for trunk/src/gui/dialogs/qfilesystemmodel_p.h
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/gui/dialogs/qfilesystemmodel_p.h
r173 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtGui module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 108 108 public: 109 109 QFileSystemNode(const QString &filename = QString(), QFileSystemNode *p = 0) 110 : fileName(filename), populatedChildren(false), isVisible(false), parent(p), info(0) {}110 : fileName(filename), populatedChildren(false), isVisible(false), dirtyChildrenIndex(-1), parent(p), info(0) {} 111 111 ~QFileSystemNode() { 112 112 QHash<FileNameKey, QFileSystemNode*>::const_iterator i = children.constBegin(); … … 187 187 QHash<FileNameKey, QFileSystemNode *>::const_iterator iterator; 188 188 for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) { 189 iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); 189 //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) 190 if (!path.isEmpty()) { 191 if (path.endsWith(QLatin1Char('/'))) 192 iterator.value()->updateIcon(iconProvider, path + iterator.value()->fileName); 193 else 194 iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); 195 } else 196 iterator.value()->updateIcon(iconProvider, iterator.value()->fileName); 190 197 } 191 198 } … … 196 203 QHash<FileNameKey, QFileSystemNode *>::const_iterator iterator; 197 204 for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) { 198 iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); 205 //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) 206 if (!path.isEmpty()) { 207 if (path.endsWith(QLatin1Char('/'))) 208 iterator.value()->retranslateStrings(iconProvider, path + iterator.value()->fileName); 209 else 210 iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); 211 } else 212 iterator.value()->retranslateStrings(iconProvider, iterator.value()->fileName); 199 213 } 200 214 } … … 204 218 QHash<FileNameKey, QFileSystemNode *> children; 205 219 QList<QString> visibleChildren; 220 int dirtyChildrenIndex; 206 221 QFileSystemNode *parent; 207 222 … … 218 233 setRootPath(false), 219 234 filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs), 220 nameFilterDisables(true) // false on windows, true on mac and unix 235 nameFilterDisables(true), // false on windows, true on mac and unix 236 disableRecursiveSort(false) 221 237 { 222 238 delayedSortTimer.setSingleShot(true); … … 246 262 247 263 inline int translateVisibleLocation(QFileSystemNode *parent, int row) const { 248 return (sortOrder == Qt::AscendingOrder) ? row : parent->visibleChildren.count() - row - 1; 264 if (sortOrder == Qt::AscendingOrder) 265 return row; 266 if (parent->dirtyChildrenIndex == -1 || row < parent->dirtyChildrenIndex) 267 if (parent->dirtyChildrenIndex != -1) 268 return parent->dirtyChildrenIndex - row - 1; 269 else 270 return parent->visibleChildren.count() - row - 1; 271 else 272 return row; 249 273 } 250 274 … … 304 328 QHash<const QFileSystemNode*, bool> bypassFilters; 305 329 bool nameFilterDisables; 330 //This flag is an optimization for the QFileDialog 331 //It enable a sort which is not recursive, it means 332 //we sort only what we see. 333 bool disableRecursiveSort; 306 334 #ifndef QT_NO_REGEXP 307 335 QList<QRegExp> nameFilters;
Note:
See TracChangeset
for help on using the changeset viewer.