qfilesystemmodel.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:7k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QFILESYSTEMMODEL_H
  38. #define QFILESYSTEMMODEL_H
  39. #include <QtCore/qabstractitemmodel.h>
  40. #include <QtCore/qpair.h>
  41. #include <QtCore/qdir.h>
  42. #include <QtGui/qicon.h>
  43. QT_BEGIN_HEADER
  44. QT_BEGIN_NAMESPACE
  45. QT_MODULE(Gui)
  46. #ifndef QT_NO_FILESYSTEMMODEL
  47. class ExtendedInformation;
  48. class QFileSystemModelPrivate;
  49. class QFileIconProvider;
  50. class Q_GUI_EXPORT QFileSystemModel : public QAbstractItemModel
  51. {
  52.     Q_OBJECT
  53.     Q_PROPERTY(bool resolveSymlinks READ resolveSymlinks WRITE setResolveSymlinks)
  54.     Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
  55.     Q_PROPERTY(bool nameFilterDisables READ nameFilterDisables WRITE setNameFilterDisables)
  56. Q_SIGNALS:
  57.     void rootPathChanged(const QString &newPath);
  58.     void fileRenamed(const QString &path, const QString &oldName, const QString &newName);
  59. public:
  60.     enum Roles {
  61.         FileIconRole = Qt::DecorationRole,
  62.         FilePathRole = Qt::UserRole + 1,
  63.         FileNameRole = Qt::UserRole + 2,
  64.         FilePermissions = Qt::UserRole + 3
  65.     };
  66.     explicit QFileSystemModel(QObject *parent = 0);
  67.     ~QFileSystemModel();
  68.     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
  69.     QModelIndex index(const QString &path, int column = 0) const;
  70.     QModelIndex parent(const QModelIndex &child) const;
  71.     bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
  72.     bool canFetchMore(const QModelIndex &parent) const;
  73.     void fetchMore(const QModelIndex &parent);
  74.     int rowCount(const QModelIndex &parent = QModelIndex()) const;
  75.     int columnCount(const QModelIndex &parent = QModelIndex()) const;
  76.     QVariant myComputer(int role = Qt::DisplayRole) const;
  77.     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
  78.     bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
  79.     QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
  80.     Qt::ItemFlags flags(const QModelIndex &index) const;
  81.     void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
  82.     QStringList mimeTypes() const;
  83.     QMimeData *mimeData(const QModelIndexList &indexes) const;
  84.     bool dropMimeData(const QMimeData *data, Qt::DropAction action,
  85.                       int row, int column, const QModelIndex &parent);
  86.     Qt::DropActions supportedDropActions() const;
  87.     // QFileSystemModel specific API
  88.     QModelIndex setRootPath(const QString &path);
  89.     QString rootPath() const;
  90.     QDir rootDirectory() const;
  91.     void setIconProvider(QFileIconProvider *provider);
  92.     QFileIconProvider *iconProvider() const;
  93.     void setFilter(QDir::Filters filters);
  94.     QDir::Filters filter() const;
  95.     void setResolveSymlinks(bool enable);
  96.     bool resolveSymlinks() const;
  97.     void setReadOnly(bool enable);
  98.     bool isReadOnly() const;
  99.     void setNameFilterDisables(bool enable);
  100.     bool nameFilterDisables() const;
  101.     void setNameFilters(const QStringList &filters);
  102.     QStringList nameFilters() const;
  103.     QString filePath(const QModelIndex &index) const;
  104.     bool isDir(const QModelIndex &index) const;
  105.     qint64 size(const QModelIndex &index) const;
  106.     QString type(const QModelIndex &index) const;
  107.     QDateTime lastModified(const QModelIndex &index) const;
  108.     QModelIndex mkdir(const QModelIndex &parent, const QString &name);
  109.     inline bool rmdir(const QModelIndex &index) const;
  110.     inline QString fileName(const QModelIndex &index) const;
  111.     inline QIcon fileIcon(const QModelIndex &index) const;
  112.     QFile::Permissions permissions(const QModelIndex &index) const;
  113.     inline QFileInfo fileInfo(const QModelIndex &index) const;
  114.     inline bool remove(const QModelIndex &index) const;
  115. protected:
  116.     QFileSystemModel(QFileSystemModelPrivate &, QObject *parent = 0);
  117.     void timerEvent(QTimerEvent *event);
  118.     bool event(QEvent *event);
  119. private:
  120.     Q_DECLARE_PRIVATE(QFileSystemModel)
  121.     Q_DISABLE_COPY(QFileSystemModel)
  122.     Q_PRIVATE_SLOT(d_func(), void _q_directoryChanged(const QString &directory, const QStringList &list))
  123.     Q_PRIVATE_SLOT(d_func(), void _q_performDelayedSort())
  124.     Q_PRIVATE_SLOT(d_func(), void _q_fileSystemChanged(const QString &path, const QList<QPair<QString, QFileInfo> > &))
  125.     Q_PRIVATE_SLOT(d_func(), void _q_resolvedName(const QString &fileName, const QString &resolvedName))
  126. };
  127. inline bool QFileSystemModel::rmdir(const QModelIndex &aindex) const
  128. { QDir dir; return dir.rmdir(filePath(aindex)); }
  129. inline QString QFileSystemModel::fileName(const QModelIndex &aindex) const
  130. { return aindex.data(Qt::DisplayRole).toString(); }
  131. inline QIcon QFileSystemModel::fileIcon(const QModelIndex &aindex) const
  132. { return qvariant_cast<QIcon>(aindex.data(Qt::DecorationRole)); }
  133. inline QFileInfo QFileSystemModel::fileInfo(const QModelIndex &aindex) const
  134. { return QFileInfo(filePath(aindex)); }
  135. inline bool QFileSystemModel::remove(const QModelIndex &aindex) const
  136. { if (isDir(aindex)) return rmdir(aindex); else return QFile::remove(filePath(aindex)); }
  137. #endif // QT_NO_FILESYSTEMMODEL
  138. QT_END_NAMESPACE
  139. QT_END_HEADER
  140. #endif // QFILESYSTEMMODEL_H