/* This file is part of the KDE libraries * Copyright (C) 2000 Waldo Bastian * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License version 2 as published by the Free Software Foundation. * * 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. **/ #include "tdesycoca.h" #include "tdesycocadict.h" #include "kresourcelist.h" #include #include #include #include #include #include #include KBuildImageIOFactory::KBuildImageIOFactory() : KImageIOFactory() { m_resourceList = new KSycocaResourceList(); m_resourceList->add( "services", "*.kimgio" ); } // return all service types for this factory // i.e. first arguments to m_resourceList->add() above TQStringList KBuildImageIOFactory::resourceTypes() { return TQStringList() << "services"; } KBuildImageIOFactory::~KBuildImageIOFactory() { delete m_resourceList; } KSycocaEntry * KBuildImageIOFactory::createEntry( const TQString& file, const char *resource ) { TQString fullPath = locate( resource, file); KImageIOFormat *format = new KImageIOFormat(fullPath); return format; } void KBuildImageIOFactory::addEntry(KSycocaEntry *newEntry, const char *resource) { KSycocaFactory::addEntry(newEntry, resource); KImageIOFormat *format = (KImageIOFormat *) newEntry; rPath += format->rPaths; // Since Qt doesn't allow us to unregister image formats // we have to make sure not to add them a second time. // This typically happens when the sycoca database is updated // incremenatally for( KImageIOFormatList::ConstIterator it = formatList->begin(); it != formatList->end(); ++it ) { KImageIOFormat *_format = (*it); if (format->mType == _format->mType) { // Already in list format = 0; break; } } if (format) formatList->append( format ); } void KBuildImageIOFactory::saveHeader(TQDataStream &str) { KSycocaFactory::saveHeader(str); str << mReadPattern << mWritePattern << rPath; } void KBuildImageIOFactory::save(TQDataStream &str) { rPath.sort(); // Remove duplicates from rPath: TQString last; for(TQStringList::Iterator it = rPath.begin(); it != rPath.end(); ) { TQStringList::Iterator it2 = it++; if (*it2 == last) { // remove duplicate rPath.remove(it2); } else { last = *it2; } } mReadPattern = createPattern( KImageIO::Reading ); mWritePattern = createPattern( KImageIO::Writing ); KSycocaFactory::save(str); }