summaryrefslogtreecommitdiff
path: root/libopie/pim/otodoaccesssql.cpp
Unidiff
Diffstat (limited to 'libopie/pim/otodoaccesssql.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie/pim/otodoaccesssql.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/libopie/pim/otodoaccesssql.cpp b/libopie/pim/otodoaccesssql.cpp
index ea8b3c9..9ef6b7c 100644
--- a/libopie/pim/otodoaccesssql.cpp
+++ b/libopie/pim/otodoaccesssql.cpp
@@ -277,44 +277,45 @@ QArray<int> OTodoAccessBackendSQL::allRecords()const {
277 277
278 return m_uids; 278 return m_uids;
279} 279}
280QArray<int> OTodoAccessBackendSQL::queryByExample( const OTodo& , int ){ 280QArray<int> OTodoAccessBackendSQL::queryByExample( const OTodo& , int ){
281 QArray<int> ints(0); 281 QArray<int> ints(0);
282 return ints; 282 return ints;
283} 283}
284OTodo OTodoAccessBackendSQL::find(int uid ) const{ 284OTodo OTodoAccessBackendSQL::find(int uid ) const{
285 FindQuery query( uid ); 285 FindQuery query( uid );
286 return todo( m_driver->query(&query) ); 286 return todo( m_driver->query(&query) );
287 287
288} 288}
289#define CACHE 32
289OTodo OTodoAccessBackendSQL::find( int uid, const QArray<int>& ints, 290OTodo OTodoAccessBackendSQL::find( int uid, const QArray<int>& ints,
290 uint cur, Frontend::CacheDirection dir ) const{ 291 uint cur, Frontend::CacheDirection dir ) const{
291 qWarning("searching for %d", uid ); 292 qWarning("searching for %d", uid );
292 QArray<int> search( 8 ); 293 QArray<int> search( CACHE );
293 uint size =0; 294 uint size =0;
294 OTodo to; 295 OTodo to;
295 296
296 // we try to cache 8 items 297 // we try to cache CACHE items
297 switch( dir ) { 298 switch( dir ) {
298 /* forward */ 299 /* forward */
299 case 0: 300 case 0:
300 for (uint i = cur; i < ints.count() && size < 8; i++ ) { 301 for (uint i = cur; i < ints.count() && size < CACHE; i++ ) {
301 qWarning("size %d %d", size, ints[i] ); 302 qWarning("size %d %d", size, ints[i] );
302 search[size] = ints[i]; 303 search[size] = ints[i];
303 size++; 304 size++;
304 } 305 }
305 break; 306 break;
306 /* reverse */ 307 /* reverse */
307 case 1: 308 case 1:
308 for (uint i = cur; i != 0 && size < 8; i-- ) { 309 for (uint i = cur; i != 0 && size < CACHE; i-- ) {
309 search[size] = ints[i]; 310 search[size] = ints[i];
310 size++; 311 size++;
311 } 312 }
312 break; 313 break;
313 } 314 }
314 search.resize( size ); 315 search.resize( size );
315 FindQuery query( search ); 316 FindQuery query( search );
316 OSQLResult res = m_driver->query( &query ); 317 OSQLResult res = m_driver->query( &query );
317 if ( res.state() != OSQLResult::Success ) 318 if ( res.state() != OSQLResult::Success )
318 return to; 319 return to;
319 320
320 return todo( res ); 321 return todo( res );