6
0
Fork 0
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
kdirstat/kdirstat/kcleanupcollection.h

227 linhas
5.5 KiB

/*
* File name: kcleanupcollection.h
* Summary: Support classes for KDirStat
* License: LGPL - See file COPYING.LIB for details.
* Author: Stefan Hundhammer <sh@suse.de>
*
* Updated: 2003-01-07
*/
#ifndef KCleanupCollection_h
#define KCleanupCollection_h
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "kcleanup.h"
// Forward declarations
class KActionCollection;
namespace KDirStat
{
typedef TQDict<KCleanup> KCleanupDict;
typedef TQDictIterator<KCleanup> KCleanupDictIterator;
typedef TQPtrList<KCleanup> KCleanupList;
typedef TQPtrListIterator<KCleanup> KCleanupListIterator;
/**
* Set of @ref KCleanup actions to be performed for @ref KDirTree items,
* consisting of a number of predefined and a number of user-defined
* cleanups. The prime purpose of this is to make save/restore operations
* with a number of cleanups easier. Thus, it provides a copy constructor,
* an assignment operator and various methods to directly access individual
* cleanups.
*
* @short KDirStat cleanup action collection
**/
class KCleanupCollection: public TQObject
{
Q_OBJECT
TQ_OBJECT
public:
/**
* Constructor.
*
* Most applications will want to pass KMainWindow::actionCollection()
* for 'actionCollection' so the menus and toolbars can be created
* using the XML UI description ('kdirstatui.rc' for KDirStat).
*
* All @ref KCleanup actions ever added to this collection will get
* this as their parent.
**/
KCleanupCollection( KActionCollection * actionCollection = 0 );
/**
* Copy Constructor.
*
* Makes a deep copy of this collection with 'actionCollection' set to
* 0 for all copied cleanups. Please note that since there is no
* complete copy constructor for @ref KCleanup, all restrictions to the
* @ref KCleanup copy constructor apply to the KCleanupCollection, too:
* This copy constructor is intended for save/restore operations only,
* not for general use. In particular, DO NOT connect an object thus
* constructed with signals. The results will be undefined (at best).
**/
KCleanupCollection( const KCleanupCollection &src );
/**
* Assignment operator.
*
* This operator has the same restrictions as the copy constructor:
* Just like the copy constructor, this is intended for save/restore
* operations, not for general use.
*
* For details, see the extensive comments in the source file.
**/
KCleanupCollection & operator= ( const KCleanupCollection &src );
/**
* Destructor
**/
virtual ~KCleanupCollection();
/**
* Add the standard cleanups to this collection.
**/
void addStdCleanups();
/**
* Add 'number' user-defined cleanups to this collection.
**/
void addUserCleanups( int number );
/**
* Add one single cleanup to this collection. The collection assumes
* ownerwhip of this cleanup - don't delete it!
**/
void add( KCleanup *cleanup );
/**
* Retrieve a cleanup by its ID (internal name).
* Returns 0 if there is no such cleanup.
**/
KCleanup * cleanup( const TQString & id );
/**
* An alias to @ref cleanup() for convenience: Thus, you can use
* collection[ "cleanup_id" ] to access any particular cleanup.
**/
KCleanup * operator[] ( const TQString & id )
{ return cleanup( id ); }
/**
* Remove all cleanups from this collection.
**/
void clear();
/**
* Return (a shallow copy of) the internal cleanup list.
*
* Use this and a KCleanupListIterator to iterate over all cleanups in
* this collection. Remember to keep the list until you no longer need
* the iterator!
*
* KCleanupCollection *coll = ...
* KCleanupList cleanup_list = coll->cleanupList();
* KCleanupListIterator it( cleanup_list );
*
* while ( *it )
* {
* kdDebug() << "Found cleanup " << *it << endl;
* ++it;
* }
**/
KCleanupList cleanupList() const { return _cleanupList; }
/**
* Return the number of cleanup actions in this collection.
**/
int size() const { return _cleanupList.count(); }
/**
* For internal use only: Returns the number to be assigned to the next
* user cleanup that may be added.
**/
int nextUserCleanupNo() const { return _nextUserCleanupNo; }
public slots:
/**
* Emit the readConfig() signal for all cleanups.
**/
void slotReadConfig();
signals:
/**
* Emitted when the currently selected item changes.
* 'item' may be 0 when the selection is cleared.
*
* Connect a view's selectionChanged() signal to this
* selectionChanged() signal to have the cleanup collection pass this
* signal to its cleanups.
**/
void selectionChanged( KFileInfo *item );
/**
* Read collection for all cleanups.
**/
void readConfig();
/**
* Save configuration for all cleanups.
**/
void saveConfig();
/**
* Emitted at user activity, i.e. when the user executes a cleanup.
* This is intended for use together with a @ref KActivityTracker.
**/
void userActivity( int points );
protected slots:
/**
* Connected to each cleanup's @ref executed() signal to track user
* activity.
**/
void cleanupExecuted();
protected:
/**
* Internal implementation of copy constructor and assignment operator:
* Make a deep copy of the collection.
**/
void deepCopy( const KCleanupCollection &src );
// Data members
KActionCollection * _actionCollection;
int _nextUserCleanupNo;
KCleanupList _cleanupList;
KCleanupDict _cleanupDict;
};
} // namespace KDirStat
#endif // ifndef KCleanupCollection_h
// EOF