/*********************************************************************** projectlist.h - List of ProjectURL's ------------------- begin : June 19 2004 copyright : (C) 2004 by Jens Herden ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef PROJECTLIST_H #define PROJECTLIST_H #include "projecturl.h" #include "qextfileinfo.h" class TQDomDocument; /** @short Container for the project files. For fast lookup this container is based on TQDict. The key is generated without a trailing '/' so it doesn't matter if you search for a folder in this container with or without trailing '/' */ class ProjectList : public ProjectUrlList { public: /** 1009 is a guess for maximum files in an average project, this number should be prime (@ref TQDict) */ ProjectList( int size = 1009 ); ~ProjectList() {}; typedef TQDictIterator Iterator; /** resets @ref m_baseURL */ void clear(); /** reads entries from the dom tree invalid entries gets removed! @return true if an old structure was found */ bool readFromXML(TQDomDocument &dom, const KURL &baseURL, const KURL &templateURL, const TQRegExp &excludeRx); /** @return the relative URL */ KURL toRelative(const KURL &url) const { return QExtFileInfo::toRelative(url, m_baseURL, false); } /** removes an url from the list and deletes the corresponding node @return true if url was in list */ bool removeFromListAndXML(const KURL &url); /** @return true if url is in container */ bool contains(const KURL &url) const; /** @return pointer to the entry or 0 if not found */ ProjectURL * find(const KURL &url) const; /** Attention: never delete the object you have given here because the container takes ownership and deletes it later! @param the ProjectURL to add to the container */ void insert(ProjectURL *url); /** @return true if url is in container and a folder */ bool isFolder(const KURL &url) const; private: KURL m_baseURL; /** private because I want to control the key. use insert(ProjectURL *url) instead. */ void insert(const TQString & key, const ProjectURL * item); /** private because I want to control the key. use find(const KURL &url) instead. */ ProjectURL *find ( const TQString & key ) const; /** private because I want to control the key. */ bool remove ( const TQString & key ); /** private because I want to control the key. */ void replace(const TQString & key, const ProjectURL * item); }; #endif // PROJECTFILES_H