src/gui/itemviews/qfileiconprovider.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
equal deleted inserted replaced
30:5dc02b23752f 33:3e2da88830cd
    98     QIcon getWinIcon(const QFileInfo &fi) const;
    98     QIcon getWinIcon(const QFileInfo &fi) const;
    99 #elif defined(Q_WS_MAC)
    99 #elif defined(Q_WS_MAC)
   100     QIcon getMacIcon(const QFileInfo &fi) const;
   100     QIcon getMacIcon(const QFileInfo &fi) const;
   101 #endif
   101 #endif
   102     QFileIconProvider *q_ptr;
   102     QFileIconProvider *q_ptr;
   103     QString homePath;
   103     const QString homePath;
   104 
   104 
   105 private:
   105 private:
   106     QIcon file;
   106     mutable QIcon file;
   107     QIcon fileLink;
   107     mutable QIcon fileLink;
   108     QIcon directory;
   108     mutable QIcon directory;
   109     QIcon directoryLink;
   109     mutable QIcon directoryLink;
   110     QIcon harddisk;
   110     mutable QIcon harddisk;
   111     QIcon floppy;
   111     mutable QIcon floppy;
   112     QIcon cdrom;
   112     mutable QIcon cdrom;
   113     QIcon ram;
   113     mutable QIcon ram;
   114     QIcon network;
   114     mutable QIcon network;
   115     QIcon computer;
   115     mutable QIcon computer;
   116     QIcon desktop;
   116     mutable QIcon desktop;
   117     QIcon trashcan;
   117     mutable QIcon trashcan;
   118     QIcon generic;
   118     mutable QIcon generic;
   119     QIcon home;
   119     mutable QIcon home;
   120 };
   120 };
   121 
   121 
   122 QFileIconProviderPrivate::QFileIconProviderPrivate()
   122 QFileIconProviderPrivate::QFileIconProviderPrivate() :
   123 {
   123     homePath(QDir::home().absolutePath())
   124     QStyle *style = QApplication::style();
   124 {
   125     file = style->standardIcon(QStyle::SP_FileIcon);
       
   126     directory = style->standardIcon(QStyle::SP_DirIcon);
       
   127     fileLink = style->standardIcon(QStyle::SP_FileLinkIcon);
       
   128     directoryLink = style->standardIcon(QStyle::SP_DirLinkIcon);
       
   129     harddisk = style->standardIcon(QStyle::SP_DriveHDIcon);
       
   130     floppy = style->standardIcon(QStyle::SP_DriveFDIcon);
       
   131     cdrom = style->standardIcon(QStyle::SP_DriveCDIcon);
       
   132     network = style->standardIcon(QStyle::SP_DriveNetIcon);
       
   133     computer = style->standardIcon(QStyle::SP_ComputerIcon);
       
   134     desktop = style->standardIcon(QStyle::SP_DesktopIcon);
       
   135     trashcan = style->standardIcon(QStyle::SP_TrashIcon);
       
   136     home = style->standardIcon(QStyle::SP_DirHomeIcon);
       
   137     homePath = QDir::home().absolutePath();
       
   138 }
   125 }
   139 
   126 
   140 QIcon QFileIconProviderPrivate::getIcon(QStyle::StandardPixmap name) const
   127 QIcon QFileIconProviderPrivate::getIcon(QStyle::StandardPixmap name) const
   141 {
   128 {
   142     switch (name) {
   129     switch (name) {
   143     case QStyle::SP_FileIcon:
   130     case QStyle::SP_FileIcon:
       
   131         if (file.isNull())
       
   132             file = QApplication::style()->standardIcon(name);
   144         return file;
   133         return file;
   145     case QStyle::SP_FileLinkIcon:
   134     case QStyle::SP_FileLinkIcon:
       
   135         if (fileLink.isNull())
       
   136             fileLink = QApplication::style()->standardIcon(name);
   146         return fileLink;
   137         return fileLink;
   147     case QStyle::SP_DirIcon:
   138     case QStyle::SP_DirIcon:
       
   139         if (directory.isNull())
       
   140             directory = QApplication::style()->standardIcon(name);
   148         return directory;
   141         return directory;
   149     case QStyle::SP_DirLinkIcon:
   142     case QStyle::SP_DirLinkIcon:
       
   143         if (directoryLink.isNull())
       
   144             directoryLink = QApplication::style()->standardIcon(name);
   150         return directoryLink;
   145         return directoryLink;
   151     case QStyle::SP_DriveHDIcon:
   146     case QStyle::SP_DriveHDIcon:
       
   147         if (harddisk.isNull())
       
   148             harddisk = QApplication::style()->standardIcon(name);
   152         return harddisk;
   149         return harddisk;
   153     case QStyle::SP_DriveFDIcon:
   150     case QStyle::SP_DriveFDIcon:
       
   151         if (floppy.isNull())
       
   152             floppy = QApplication::style()->standardIcon(name);
   154         return floppy;
   153         return floppy;
   155     case QStyle::SP_DriveCDIcon:
   154     case QStyle::SP_DriveCDIcon:
       
   155         if (cdrom.isNull())
       
   156             cdrom = QApplication::style()->standardIcon(name);
   156         return cdrom;
   157         return cdrom;
   157     case QStyle::SP_DriveNetIcon:
   158     case QStyle::SP_DriveNetIcon:
       
   159         if (network.isNull())
       
   160             network = QApplication::style()->standardIcon(name);
   158         return network;
   161         return network;
   159     case QStyle::SP_ComputerIcon:
   162     case QStyle::SP_ComputerIcon:
       
   163         if (computer.isNull())
       
   164             computer = QApplication::style()->standardIcon(name);
   160         return computer;
   165         return computer;
   161     case QStyle::SP_DesktopIcon:
   166     case QStyle::SP_DesktopIcon:
       
   167         if (desktop.isNull())
       
   168             desktop = QApplication::style()->standardIcon(name);
   162         return desktop;
   169         return desktop;
   163     case QStyle::SP_TrashIcon:
   170     case QStyle::SP_TrashIcon:
       
   171         if (trashcan.isNull())
       
   172             trashcan = QApplication::style()->standardIcon(name);
   164         return trashcan;
   173         return trashcan;
   165     case QStyle::SP_DirHomeIcon:
   174     case QStyle::SP_DirHomeIcon:
       
   175         if (home.isNull())
       
   176             home = QApplication::style()->standardIcon(name);
   166         return home;
   177         return home;
   167     default:
   178     default:
   168         return QIcon();
   179         return QIcon();
   169     }
   180     }
   170     return QIcon();
   181     return QIcon();