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(); |