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.
tdelibs/tdeio/tdeio/tdefilefilter.h

171 lines
5.3 KiB

/* This file is part of the KDE libraries
Copyright (c) 2001,2002 Carsten Pfeiffer <pfeiffer@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License (LGPL) as published by the Free Software Foundation; either
version 2 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
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.
*/
#ifndef TDEFILEFILTER_H
#define TDEFILEFILTER_H
#include <tqptrlist.h>
#include <tqstringlist.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <tdelibs_export.h>
class TQRegExp;
class KFileItem;
/**
* A KFileFilter is a simple base class for file filters. Just
* reimplement passesFilter().
* @short Base class for file filters.
*/
class TDEIO_EXPORT KFileFilter
{
public:
/**
* Checks the given @p item.
* @param item the item to filter
* @return true if the @p item passes the filter, false otherwise
*/
virtual bool passesFilter( const KFileItem *item ) const = 0;
protected:
virtual void virtual_hook( int id, void* data );
};
/**
* A simple file filter that can filter hidden dot files, by name,
* by mime type and by mode.
* @short A simple file filter.
*/
class TDEIO_EXPORT KSimpleFileFilter : public KFileFilter
{
public:
/**
* Creates a new filter. By default, it filters only hidden dot files
* and "." and "..".
*/
KSimpleFileFilter();
virtual ~KSimpleFileFilter();
/**
* Enable or disable filtering hidden dot files.
* This option is enabled by default.
* @param filter true to enable filtering dot files, false to
* disable
* @see filterDotFiles
*/
virtual void setFilterDotFiles( bool filter );
/**
* Checks whether filtering dot files is enabled.
* This option is enabled by default.
* @return true if filtering is enabled, false otherwise
* @see setFilterDotFiles
*/
bool filterDotFiles() const { return m_filterDotFiles; }
/**
* Filters "." and "..", default is true.
* @param filter true to enable, false otherwise
*/
virtual void setFilterSpecials( bool filter );
/**
* Checks whether it filters "." and "..", default is true.
* @return true if enabled, false otherwise
*/
bool filterSpecials() const { return m_filterSpecials; }
// ### KDE4 make virtual and bool caseSensitive = false
/**
* Sets a list of regular expressions to filter by name.
* The file will only pass if its name matches one of the regular
* expressions.
* @param nameFilters a list of regular expressions, separated by
* the character @p separator
* @param caseSensitive if true, matches case sensitive. False
* otherwise
* @param separator the separator in the @p nameFilter
* @since 3.1
*/
void setNameFilters( const TQString& nameFilters, bool caseSensitive,
const TQChar& separator = ' ' );
/**
* Sets a list of regular expressions to filter by name.
* The file will only pass if its name matches one of the regular
* expressions.
* @param nameFilters a list of regular expressions, separated by
* space (' ')
*/
virtual void setNameFilters( const TQString& nameFilters );
/**
* Sets a list of mime filters. A file can only pass if its
* mime type is contained in this list.
* @param mimeFilters the list of mime types
* @see setMimeFilter
*/
virtual void setMimeFilters( const TQStringList& mimeFilters );
/**
* Returns the list of mime types.
* @return the list of mime types
* @see mimeFilter
*/
TQStringList mimeFilters() const { return m_mimeFilters; }
/**
* Sets the mode filter. If the @p mode is 0, the filter is
* disabled.
* When enabled, a file will only pass if the files mode
* ANDed with @p mode is not zero.
* @param mode the new mode. 0 to disable
* @see modeFilter
*/
virtual void setModeFilter( mode_t mode );
/**
* Returns the mode filter, as set by setModeFilter().
* @return the mode filter, 0 if disabled
* @see setModeFilter
*/
mode_t modeFilter() const { return m_modeFilter; }
/**
* Checks the given @p item.
* @param item the item to filter
* @return true if the @p item passes the filter, false otherwise
*/
virtual bool passesFilter( const KFileItem *item ) const;
protected:
TQPtrList<TQRegExp> m_nameFilters;
private:
TQStringList m_mimeFilters;
bool m_filterDotFiles :1;
bool m_filterSpecials :1;
mode_t m_modeFilter;
protected:
virtual void virtual_hook( int id, void* data );
private:
class KSimpleFileFilterPrivate* d;
};
#endif // TDEFILEFILTER_H