promoe/dir_iterator/diriteratorbase.cpp
Thomas Frauendorfer 2aabed9491 OTHER: read support for zipped skins
For now, zipped skins don't show up in the selection dialog yet
But they are loaded when set in the config file
2010-03-12 19:59:19 +01:00

67 lines
1.3 KiB
C++

/**
* This file is a part of Promoe, an XMMS2 Client.
*
* Copyright (C) 2010 XMMS2 Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
#include "diriteratorbase.h"
#include "diriterator.h"
#include "archiveiterator.h"
#include <QDataStream>
#include "QFileInfo"
#include <QDebug>
QPixmap
DirIteratorBase::pixmapEntry ()
{
QPointer<QIODevice> d = entry ();
if (d == 0) {
return QPixmap ();
}
QByteArray a = d->readAll ();
QPixmap p;
p.loadFromData(a);
if (p.isNull ()) {
qDebug () << "Size:" << a.size ();
}
return p;
}
DirIteratorBase *
DirIteratorBase::open(const QString &path)
{
QFileInfo info(path);
if (!info.exists ()) {
return 0;
}
if (info.isDir ()) {
return new DirIterator (path);
}
if (info.isFile ()) {
ArchiveIterator *iter = new ArchiveIterator (path);
if (iter && !iter->hasNext ()) {
delete iter;
return 0;
}
return iter;
}
}