#include "config.h"
#include "Icon.h"
#include "GraphicsContext.h"
#include "IntRect.h"
#include "NotImplemented.h"
#include <QMimeDatabase>
#include <wtf/text/WTFString.h>
namespace WebCore {
Icon::Icon()
{
}
Icon::~Icon()
{
}
PassRefPtr<Icon> Icon::createIconForFiles(const Vector<String>& filenames)
{
if (filenames.isEmpty())
return 0;
QMimeType mimeType = QMimeDatabase().mimeTypeForFile(filenames[0], QMimeDatabase::MatchExtension);
QString iconName = mimeType.iconName();
QString genericIconName = mimeType.genericIconName();
const int count = filenames.size();
for (int i = 1; i < count; ++i) {
mimeType = QMimeDatabase().mimeTypeForFile(filenames[i], QMimeDatabase::MatchExtension);
if (iconName != mimeType.iconName())
iconName.clear();
if (genericIconName != mimeType.genericIconName()) {
genericIconName.clear();
break;
}
}
RefPtr<Icon> icon = adoptRef(new Icon);
if (!iconName.isEmpty())
icon->m_icon = QIcon::fromTheme(iconName, QIcon::fromTheme(genericIconName));
else if (!genericIconName.isEmpty())
icon->m_icon = QIcon::fromTheme(genericIconName);
if (icon->m_icon.isNull())
return 0;
return icon.release();
}
void Icon::paint(GraphicsContext* context, const IntRect& rect)
{
if (m_icon.isNull())
return;
m_icon.paint(context->platformContext(), rect);
}
}