-rw-r--r-- | libopie2/opiepim/backend/otodoaccesssql.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libopie2/opiepim/backend/otodoaccesssql.cpp b/libopie2/opiepim/backend/otodoaccesssql.cpp index 6f65c48..12a8bea 100644 --- a/libopie2/opiepim/backend/otodoaccesssql.cpp +++ b/libopie2/opiepim/backend/otodoaccesssql.cpp @@ -452,50 +452,55 @@ QArray<int> OPimTodoAccessBackendSQL::queryByExample( const OPimTodo& , int, con QArray<int> ints(0); return ints; } OPimTodo OPimTodoAccessBackendSQL::find(int uid ) const{ FindQuery query( uid ); return todo( m_driver->query(&query) ); } + +// Remember: uid is already in the list of uids, called ints ! OPimTodo OPimTodoAccessBackendSQL::find( int uid, const QArray<int>& ints, uint cur, Frontend::CacheDirection dir ) const{ uint CACHE = readAhead(); odebug << "searching for " << uid << "" << oendl; QArray<int> search( CACHE ); uint size =0; OPimTodo to; // we try to cache CACHE items switch( dir ) { /* forward */ - case 0: // FIXME: Not a good style to use magic numbers here (eilers) + case Frontend::Forward: for (uint i = cur; i < ints.count() && size < CACHE; i++ ) { odebug << "size " << size << " " << ints[i] << "" << oendl; search[size] = ints[i]; size++; } break; /* reverse */ - case 1: // FIXME: Not a good style to use magic numbers here (eilers) + case Frontend::Reverse: for (uint i = cur; i != 0 && size < CACHE; i-- ) { search[size] = ints[i]; size++; } break; } + search.resize( size ); FindQuery query( search ); OSQLResult res = m_driver->query( &query ); if ( res.state() != OSQLResult::Success ) return to; - return todo( res ); + todo( res ); //FIXME: Don't like polymorphism here. It makes the code hard to read here..(eilers) + return cacheFind( uid ); } + void OPimTodoAccessBackendSQL::clear() { ClearQuery cle; OSQLResult res = m_driver->query( &cle ); CreateQuery qu; res = m_driver->query(&qu); } bool OPimTodoAccessBackendSQL::add( const OPimTodo& t) { InsertQuery ins( t ); |