You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/quanta/project/projectlist.h

116 lines
3.3 KiB

/***********************************************************************
projectlist.h - List of ProjectURL's
-------------------
begin : June 19 2004
copyright : (C) 2004 by Jens Herden <jens@tdewebdev.org>
***************************************************************************/
/***************************************************************************
* *
* 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<ProjectURL> 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