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 bool operator==( const ListBase &l2 )
00143 {
00144 int sz = QList<T*>::size();
00145
00146 if ( sz != l2.size() ) {
00147 return false;
00148 } else {
00149 for ( int i=0; i<sz; ++i ) {
00150 if ( !( *QList<T*>::value( i ) == *l2.value( i ) ) ) {
00151 return false;
00152 }
00153 }
00154 }
00155 return true;
00156 }
00157
00158 private:
00159
00160 bool mAutoDelete;
00161
00162 };
00163
00164 }
00165
00166 #endif