00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "sorting.h"
00023 #include "event.h"
00024 #include "journal.h"
00025 #include "todo.h"
00026
00027 #include <KDateTime>
00028
00029
00030
00031
00032
00033
00034 using namespace KCalCore;
00035
00036 bool KCalCore::Events::startDateLessThan( const Event::Ptr &e1, const Event::Ptr &e2 )
00037 {
00038 const KDateTime d1= e1->dtStart();
00039 KDateTime::Comparison res = d1.compare( e2->dtStart() );
00040 if ( res == KDateTime::Equal ) {
00041 return Events::summaryLessThan( e1, e2 );
00042 } else {
00043 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00044 }
00045 }
00046
00047 bool KCalCore::Events::startDateMoreThan( const Event::Ptr &e1, const Event::Ptr &e2 )
00048 {
00049 const KDateTime d1= e1->dtStart();
00050 KDateTime::Comparison res = d1.compare( e2->dtStart() );
00051 if ( res == KDateTime::Equal ) {
00052 return Events::summaryMoreThan( e1, e2 );
00053 } else {
00054 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00055 }
00056 }
00057
00058 bool KCalCore::Events::summaryLessThan( const Event::Ptr &e1, const Event::Ptr &e2 )
00059 {
00060 return QString::compare( e1->summary(), e2->summary(), Qt::CaseInsensitive ) < 0;
00061 }
00062
00063 bool KCalCore::Events::summaryMoreThan( const Event::Ptr &e1, const Event::Ptr &e2 )
00064 {
00065 return QString::compare( e1->summary(), e2->summary(), Qt::CaseInsensitive ) > 0;
00066 }
00067
00068 bool KCalCore::Events::endDateLessThan( const Event::Ptr &e1, const Event::Ptr &e2 )
00069 {
00070 const KDateTime d1= e1->dtEnd();
00071 KDateTime::Comparison res = d1.compare( e2->dtEnd() );
00072 if ( res == KDateTime::Equal ) {
00073 return Events::summaryLessThan( e1, e2 );
00074 } else {
00075 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00076 }
00077 }
00078
00079 bool KCalCore::Events::endDateMoreThan( const Event::Ptr &e1, const Event::Ptr &e2 )
00080 {
00081 const KDateTime d1= e1->dtEnd();
00082 KDateTime::Comparison res = d1.compare( e2->dtEnd() );
00083 if ( res == KDateTime::Equal ) {
00084 return Events::summaryMoreThan( e1, e2 );
00085 } else {
00086 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00087 }
00088 }
00089
00090 bool KCalCore::Journals::dateLessThan( const Journal::Ptr &j1, const Journal::Ptr &j2 )
00091 {
00092 const KDateTime d1 = j1->dtStart();
00093 KDateTime::Comparison res = d1.compare( j2->dtStart() );
00094 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00095 }
00096
00097 bool KCalCore::Journals::dateMoreThan( const Journal::Ptr &j1, const Journal::Ptr &j2 )
00098 {
00099 const KDateTime d1= j1->dtStart();
00100 KDateTime::Comparison res = d1.compare( j2->dtStart() );
00101 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00102 }
00103
00104 bool KCalCore::Journals::summaryLessThan( const Journal::Ptr &j1, const Journal::Ptr &j2 )
00105 {
00106
00107 return QString::compare( j1->summary(), j2->summary(), Qt::CaseInsensitive ) < 0;
00108 }
00109
00110 bool KCalCore::Journals::summaryMoreThan( const Journal::Ptr &j1, const Journal::Ptr &j2 )
00111 {
00112 return QString::compare( j1->summary(), j2->summary(), Qt::CaseInsensitive ) > 0;
00113 }
00114
00115 bool KCalCore::Todos::startDateLessThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00116 {
00117 const KDateTime d1= t1->dtStart();
00118 KDateTime::Comparison res = d1.compare( t2->dtStart() );
00119 if ( res == KDateTime::Equal ) {
00120 return Todos::summaryLessThan( t1, t2 );
00121 } else {
00122 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00123 }
00124 }
00125
00126 bool KCalCore::Todos::startDateMoreThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00127 {
00128 const KDateTime d1= t1->dtStart();
00129 KDateTime::Comparison res = d1.compare( t2->dtStart() );
00130 if ( res == KDateTime::Equal ) {
00131 return Todos::summaryMoreThan( t1, t2 );
00132 } else {
00133 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00134 }
00135 }
00136
00137 bool KCalCore::Todos::dueDateLessThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00138 {
00139 const KDateTime d1= t1->dtDue();
00140 KDateTime::Comparison res = d1.compare( t2->dtDue() );
00141 if ( res == KDateTime::Equal ) {
00142 return Todos::summaryLessThan( t1, t2 );
00143 } else {
00144 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00145 }
00146 }
00147
00148 bool KCalCore::Todos::dueDateMoreThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00149 {
00150 const KDateTime d1= t1->dtDue();
00151 KDateTime::Comparison res = d1.compare( t2->dtDue() );
00152 if ( res == KDateTime::Equal ) {
00153 return Todos::summaryMoreThan( t1, t2 );
00154 } else {
00155 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00156 }
00157 }
00158
00159 bool KCalCore::Todos::priorityLessThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00160 {
00161 if ( t1->priority() < t2->priority() ) {
00162 return true;
00163 } else if ( t1->priority() == t2->priority() ) {
00164 return Todos::summaryLessThan( t1, t2 );
00165 } else {
00166 return false;
00167 }
00168 }
00169
00170 bool KCalCore::Todos::priorityMoreThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00171 {
00172 if ( t1->priority() > t2->priority() ) {
00173 return true;
00174 } else if ( t1->priority() == t2->priority() ) {
00175 return Todos::summaryMoreThan( t1, t2 );
00176 } else {
00177 return false;
00178 }
00179 }
00180
00181 bool KCalCore::Todos::percentLessThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00182 {
00183 if ( t1->percentComplete() < t2->percentComplete() ) {
00184 return true;
00185 } else if ( t1->percentComplete() == t2->percentComplete() ) {
00186 return Todos::summaryLessThan( t1, t2 );
00187 } else {
00188 return false;
00189 }
00190 }
00191
00192 bool KCalCore::Todos::percentMoreThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00193 {
00194 if ( t1->percentComplete() > t2->percentComplete() ) {
00195 return true;
00196 } else if ( t1->percentComplete() == t2->percentComplete() ) {
00197 return Todos::summaryMoreThan( t1, t2 );
00198 } else {
00199 return false;
00200 }
00201 }
00202
00203 bool KCalCore::Todos::summaryLessThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00204 {
00205 return QString::compare( t1->summary(), t2->summary(), Qt::CaseInsensitive ) < 0;
00206 }
00207
00208 bool KCalCore::Todos::summaryMoreThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00209 {
00210 return QString::compare( t1->summary(), t2->summary(), Qt::CaseInsensitive ) > 0;
00211 }
00212
00213 bool KCalCore::Todos::createdLessThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00214 {
00215 const KDateTime d1= t1->created();
00216 KDateTime::Comparison res = d1.compare( t2->created() );
00217 if ( res == KDateTime::Equal ) {
00218 return Todos::summaryLessThan( t1, t2 );
00219 } else {
00220 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00221 }
00222 }
00223
00224 bool KCalCore::Todos::createdMoreThan( const Todo::Ptr &t1, const Todo::Ptr &t2 )
00225 {
00226 const KDateTime d1= t1->created();
00227 KDateTime::Comparison res = d1.compare( t2->created() );
00228 if ( res == KDateTime::Equal ) {
00229 return Todos::summaryMoreThan( t1, t2 );
00230 } else {
00231 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00232 }
00233 }
00234
00235 bool KCalCore::Incidences::dateLessThan( const Incidence::Ptr &i1,
00236 const Incidence::Ptr &i2 )
00237 {
00238 const KDateTime d1 = i1->dateTime( Incidence::RoleSort );
00239 const KDateTime d2 = i2->dateTime( Incidence::RoleSort );
00240
00241 KDateTime::Comparison res = d1.compare( d2 );
00242 if ( res == KDateTime::Equal ) {
00243 return Incidences::summaryLessThan( i1, i2 );
00244 } else {
00245 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00246 }
00247 }
00248
00249 bool KCalCore::Incidences::dateMoreThan( const Incidence::Ptr &i1,
00250 const Incidence::Ptr &i2 )
00251 {
00252 const KDateTime d1 = i1->dateTime( Incidence::RoleSort );
00253 const KDateTime d2 = i2->dateTime( Incidence::RoleSort );
00254
00255 KDateTime::Comparison res = d1.compare( d2 );
00256 if ( res == KDateTime::Equal ) {
00257 return Incidences::summaryMoreThan( i1, i2 );
00258 } else {
00259 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00260 }
00261 }
00262
00263 bool KCalCore::Incidences::createdLessThan( const Incidence::Ptr &i1,
00264 const Incidence::Ptr &i2 )
00265 {
00266 const KDateTime d1= i1->created();
00267 KDateTime::Comparison res = d1.compare( i2->created() );
00268 if ( res == KDateTime::Equal ) {
00269 return Incidences::summaryLessThan( i1, i2 );
00270 } else {
00271 return ( res & KDateTime::Before || res & KDateTime::AtStart );
00272 }
00273 }
00274
00275 bool KCalCore::Incidences::createdMoreThan( const Incidence::Ptr &i1,
00276 const Incidence::Ptr &i2 )
00277 {
00278 const KDateTime d1= i1->created();
00279 KDateTime::Comparison res = d1.compare( i2->created() );
00280 if ( res == KDateTime::Equal ) {
00281 return Incidences::summaryMoreThan( i1, i2 );
00282 } else {
00283 return ( res & KDateTime::After || res & KDateTime::AtEnd );
00284 }
00285 }
00286
00287 bool KCalCore::Incidences::summaryLessThan( const Incidence::Ptr &i1,
00288 const Incidence::Ptr &i2 )
00289 {
00290 return QString::compare( i1->summary(), i2->summary(), Qt::CaseInsensitive ) < 0;
00291 }
00292
00293 bool KCalCore::Incidences::summaryMoreThan( const Incidence::Ptr &i1,
00294 const Incidence::Ptr &i2 )
00295 {
00296 return QString::compare( i1->summary(), i2->summary(), Qt::CaseInsensitive ) > 0;
00297 }
00298
00299 bool KCalCore::Persons::countMoreThan( const Person::Ptr &p1, const Person::Ptr &p2 )
00300 {
00301 return p1->count() > p2->count();
00302 }