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 qDeleteAll( *this );
00071 }
00072 }
00073
00078 ListBase &operator=( const ListBase &l )
00079 {
00080 if ( this == &l ) {
00081 return *this;
00082 }
00083 QList<T *>::operator=( l );
00084 return *this;
00085 }
00086
00093 void setAutoDelete( bool autoDelete )
00094 {
00095 mAutoDelete = autoDelete;
00096 }
00097
00102 void clearAll()
00103 {
00104 if ( mAutoDelete ) {
00105 qDeleteAll( *this );
00106 }
00107 QList<T*>::clear();
00108 }
00109
00116 bool removeRef( T *t )
00117 {
00118 if ( !contains( t ) ) {
00119 return false;
00120 } else {
00121 if ( mAutoDelete ) {
00122 delete t;
00123 }
00124 this->removeAll( t );
00125 return true;
00126 }
00127 }
00128
00134 void removeRef( typename QList<T*>::iterator it )
00135 {
00136 if ( mAutoDelete ) {
00137 delete *it;
00138 }
00139 QList<T*>::erase( it );
00140 }
00141
00142 private:
00143
00144 bool mAutoDelete;
00145
00146 };
00147
00148 }
00149
00150 #endif