+/// \brief FolderModel::pixmap\r
+/// \param index アイテムのインデックス\r
+/// \param size 要求サイズ\r
+/// \return 画像またはアイコンを返します。\r
+///\r
+QPixmap FolderModel::pixmap(const QModelIndex &index, const QSize &size) const\r
+{\r
+ QPixmap pixmap;\r
+ const_cast<FolderModel*>(this)->m_pixmapCacheMutex.lock();\r
+ if (m_pixmapCache.find(filePath(index)) != m_pixmapCache.end()) {\r
+ pixmap = m_pixmapCache[filePath(index)];\r
+ }\r
+ const_cast<FolderModel*>(this)->m_pixmapCacheMutex.unlock();\r
+\r
+ if (!pixmap.isNull()) {\r
+ return pixmap;\r
+ }\r
+\r
+ // 別スレッドでサムネイルを生成する\r
+ QThread *thread = new QThread();\r
+ ThumbnailWorker *worker = new ThumbnailWorker();\r
+ worker->setPath(filePath(index));\r
+ worker->setSize(size);\r
+ worker->moveToThread(thread);\r
+ connect(worker, SIGNAL(resultReady(QString,QPixmap)), this, SLOT(thumbnail_Ready(QString,QPixmap)));\r
+ connect(worker, SIGNAL(finished()), thread, SLOT(quit()));\r
+ connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));\r
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));\r
+ connect(thread, SIGNAL(started()), worker, SLOT(doWork()));\r
+ thread->start();\r
+\r
+ // とりあえずアイコンを返す。\r
+ return fileIcon(index).pixmap(32, 32);\r
+}\r
+\r
+///////////////////////////////////////////////////////////////////////////////\r