Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/dialogs/qfilesystemmodel_p.h

    r173 r561  
    22**
    33** 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)
    56**
    67** This file is part of the QtGui module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    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.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** 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.
    3838** $QT_END_LICENSE$
    3939**
     
    108108    public:
    109109        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) {}
    111111        ~QFileSystemNode() {
    112112            QHash<FileNameKey, QFileSystemNode*>::const_iterator i = children.constBegin();
     
    187187            QHash<FileNameKey, QFileSystemNode *>::const_iterator iterator;
    188188            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);
    190197            }
    191198        }
     
    196203            QHash<FileNameKey, QFileSystemNode *>::const_iterator iterator;
    197204            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);
    199213            }
    200214        }
     
    204218        QHash<FileNameKey, QFileSystemNode *> children;
    205219        QList<QString> visibleChildren;
     220        int dirtyChildrenIndex;
    206221        QFileSystemNode *parent;
    207222
     
    218233            setRootPath(false),
    219234            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)
    221237    {
    222238        delayedSortTimer.setSingleShot(true);
     
    246262
    247263    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;
    249273    }
    250274
     
    304328    QHash<const QFileSystemNode*, bool> bypassFilters;
    305329    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;
    306334#ifndef QT_NO_REGEXP
    307335    QList<QRegExp> nameFilters;
Note: See TracChangeset for help on using the changeset viewer.