KCal Library
listbase.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00029 #ifndef KCAL_LISTBASE_H
00030 #define KCAL_LISTBASE_H
00031
00032 #include "kcal_export.h"
00033 #include <QtCore/QList>
00034
00035 namespace KCal {
00036
00043 template<class T>
00044 class ListBase : public QList<T *>
00045 {
00046 public:
00050 ListBase()
00051 : QList<T *>(), mAutoDelete( false )
00052 {
00053 }
00054
00059 ListBase( const ListBase &other )
00060 : QList<T *>( other ), mAutoDelete( false )
00061 {
00062 }
00063
00067 ~ListBase()
00068 {
00069 if ( mAutoDelete ) {
00070 typename QList<T *>::Iterator it;
00071 for ( it = QList<T*>::begin(); it != QList<T*>::end(); ++it ) {
00072 delete *it;
00073 }
00074 }
00075 }
00076
00081 ListBase &operator=( const ListBase &l )
00082 {
00083 if ( this == &l ) {
00084 return *this;
00085 }
00086 QList<T *>::operator=( l );
00087 return *this;
00088 }
00089
00096 void setAutoDelete( bool autoDelete )
00097 {
00098 mAutoDelete = autoDelete;
00099 }
00100
00107 bool removeRef( T *t )
00108 {
00109 if ( !contains( t ) ) {
00110 return false;
00111 } else {
00112 if ( mAutoDelete ) {
00113 delete t;
00114 }
00115 this->removeAll( t );
00116 return true;
00117 }
00118 }
00119
00120 private:
00121
00122 bool mAutoDelete;
00123
00124 };
00125
00126 }
00127
00128 #endif