summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/ChangeLog3
-rw-r--r--libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp1
-rw-r--r--libopie2/opiepim/backend/otodoaccessbackend.cpp2
-rw-r--r--libopie2/opiepim/backend/otodoaccessbackend.h2
-rw-r--r--libopie2/opiepim/core/ocontactaccess.cpp9
-rw-r--r--libopie2/opiepim/core/ocontactaccess.h15
-rw-r--r--libopie2/opiepim/core/opimaccesstemplate.h43
7 files changed, 40 insertions, 35 deletions
diff --git a/libopie2/opiepim/ChangeLog b/libopie2/opiepim/ChangeLog
index 2007744..320b189 100644
--- a/libopie2/opiepim/ChangeLog
+++ b/libopie2/opiepim/ChangeLog
@@ -1,23 +1,26 @@
+2005-01-03 Stefan Eilers <stefan@eilers-online.net>
+ * Fixing bug in API documentation
+ * Moving hasQuerySettings() and querySettings() to OPimAccessTemplate to be available for all frontends
2004-12-28 Stefan Eilers <stefan@eilers-online.net>
* Make improved query by example accessable via frontend
* Some API documentation improvement
* Cleanup of backend api..
* Fixing bug #1501
2004-11-23 Stefan Eilers <stefan@eilers-online.net>
* Implement fast and full featured version of sorted() for addressbook
* Implement generic queryByExample for all Addressboook backends. It allows incremental search.
* Update of API Documentation
2004-11-18 Holger Freyther <freyther@handhelds.org>
* Every Access can give a set of Occurrences for a period or a datetime
* QueryByExample, Find, Sort can be generically accessed by OPimBase
pointer interface
* OPimBackendOccurrence gets split up to OPimOccurrences by
OPimTemplateBase
* Add safeCast to various OPimRecords
* Kill memleak in OPimTodo
* Add SortVector implementations for OPimTodo and OPimContact
2004-??-?? The Opie Team <opie@handhelds.org>
* Implemented some important modifications to allow to use OPimRecords as it is, without
have to cast them. This makes it possible to write applications which handling pim
data in a generic manner (see opimconvertion tool) (eilers) \ No newline at end of file
diff --git a/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp b/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp
index 41b714e..629e4da 100644
--- a/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp
+++ b/libopie2/opiepim/backend/odatebookaccessbackend_sql.cpp
@@ -187,48 +187,49 @@ void ODateBookAccessBackend_SQL::update()
// m_uids.clear();
return;
}
m_uids = extractUids( res );
}
bool ODateBookAccessBackend_SQL::reload()
{
return load();
}
bool ODateBookAccessBackend_SQL::save()
{
return m_driver->close(); // Shouldn't m_driver->sync be better than close ? (eilers)
}
QArray<int> ODateBookAccessBackend_SQL::allRecords()const
{
return m_uids;
}
QArray<int> ODateBookAccessBackend_SQL::queryByExample(const OPimEvent&, int, const QDateTime& ) {
+ qDebug( "Accessing ODateBookAccessBackend_SQL::queryByExample() which is not implemented!" );
return QArray<int>();
}
void ODateBookAccessBackend_SQL::clear()
{
QString qu = "drop table datebook;";
qu += "drop table custom_data;";
OSQLRawQuery raw( qu );
OSQLResult res = m_driver->query( &raw );
reload();
}
OPimEvent ODateBookAccessBackend_SQL::find( int uid ) const{
odebug << "ODateBookAccessBackend_SQL::find( " << uid << " )" << oendl;
QString qu = "select *";
qu += "from datebook where uid = " + QString::number(uid);
odebug << "Query: " << qu << "" << oendl;
OSQLRawQuery raw( qu );
diff --git a/libopie2/opiepim/backend/otodoaccessbackend.cpp b/libopie2/opiepim/backend/otodoaccessbackend.cpp
index f979976..c7ce123 100644
--- a/libopie2/opiepim/backend/otodoaccessbackend.cpp
+++ b/libopie2/opiepim/backend/otodoaccessbackend.cpp
@@ -33,49 +33,49 @@
#include <qintdict.h>
namespace Opie {
OPimTodoAccessBackend::OPimTodoAccessBackend()
: OPimAccessBackend<OPimTodo>()
{
}
OPimTodoAccessBackend::~OPimTodoAccessBackend() {
}
const uint OPimTodoAccessBackend::querySettings() const
{
return 0;
}
bool OPimTodoAccessBackend::hasQuerySettings (uint querySettings) const
{
return false;
}
UIDArray OPimTodoAccessBackend::queryByExample( const UIDArray& uidlist, const OPimTodo& query, int settings,
- const QDateTime& endperiod )const
+ const QDateTime& startperiod )const
{
qDebug( "Accessing OPimTodoAccessBackend::queryByExample() which is not implemented!" );
return UIDArray();
// odebug << "Using Unaccelerated OPimContactAccessBackend implementation of queryByExample!" << oendl;
// UIDArray m_currentQuery( uid_array.count() );
// uint arraycounter = 0;
// for( uint it = 0; it < uid_array.count(); ++it ){
// /* Search all fields and compare them with query object. Store them into list
// * if all fields matches.
// */
// }
}
UIDArray OPimTodoAccessBackend::sorted( const UIDArray& events, bool asc,
int sortOrder, int sortFilter,
const QArray<int>& categories )const {
odebug << "Using Unaccelerated TodoList sorted Implementation" << oendl;
Internal::OPimTodoSortVector vector(events.count(), asc,sortOrder );
int item = 0;
diff --git a/libopie2/opiepim/backend/otodoaccessbackend.h b/libopie2/opiepim/backend/otodoaccessbackend.h
index 870ee57..06cece3 100644
--- a/libopie2/opiepim/backend/otodoaccessbackend.h
+++ b/libopie2/opiepim/backend/otodoaccessbackend.h
@@ -43,49 +43,49 @@ public:
const QDate& end,
bool includeNoDates )const = 0;
virtual UIDArray overDue()const = 0;
virtual void removeAllCompleted() = 0;
/**
* Common and probably inefficent implementation
* for queryByExample, matchRegexp, sorted
* and occurrences
*/
//@{
/**
* Return all possible settings.
* @return All settings provided by the current backend
* (i.e.: query_WildCards & query_IgnoreCase)
*/
const uint querySettings() const;
/**
* Check whether settings are correct.
* @return <i>true</i> if the given settings are correct and possible.
*/
bool hasQuerySettings (uint querySettings) const;
- UIDArray queryByExample( const UIDArray& uidlist, const OPimTodo& query, int settings, const QDateTime& endperiod = QDateTime() )const;
+ UIDArray queryByExample( const UIDArray& uidlist, const OPimTodo& query, int settings, const QDateTime& startperiod = QDateTime() )const;
UIDArray sorted( const UIDArray&, bool asc, int, int, const QArray<int>& )const;
OPimBackendOccurrence::List occurrences( const QDate&, const QDate& )const;
//@}
private:
class Private;
Private *d;
};
}
/**
* \fn Opie::OPimBackendOccurrence::List Opie::OPimTodoAccessBackend::occurrences(const QDate& start,const QDate& end)const
* \brief Return occurrences for a period of time
*
* This method will return the 'effective' Todos and also
* 'Overdue' Todos. Overdues will be shown on the 'current'
* day if it is in the range or on \par start. If the overdue
* is inside the 'Effective Todos' we will skip the
* special overdue handling.
*
*
*/
diff --git a/libopie2/opiepim/core/ocontactaccess.cpp b/libopie2/opiepim/core/ocontactaccess.cpp
index 9bbc820..9d18d47 100644
--- a/libopie2/opiepim/core/ocontactaccess.cpp
+++ b/libopie2/opiepim/core/ocontactaccess.cpp
@@ -97,57 +97,48 @@ OPimContactAccess::~OPimContactAccess ()
save();
// delete m_backEnd; is done by template..
}
bool OPimContactAccess::save ()
{
/* If the database was changed externally, we could not save the
* Data. This will remove added items which is unacceptable !
* Therefore: Reload database and merge the data...
*/
if ( OPimAccessTemplate<OPimContact>::wasChangedExternally() )
reload();
bool status = OPimAccessTemplate<OPimContact>::save();
if ( !status ) return false;
/* Now tell everyone that new data is available.
*/
QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" );
return true;
}
-const uint OPimContactAccess::querySettings()
-{
- return ( m_backEnd->querySettings() );
-}
-
-bool OPimContactAccess::hasQuerySettings ( int querySettings ) const
-{
- return ( m_backEnd->hasQuerySettings ( querySettings ) );
-}
#if 0
OPimRecordList<OPimContact> OPimContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const
{
QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat );
return ( OPimRecordList<OPimContact>(matchingContacts, this) );
}
#endif
bool OPimContactAccess::wasChangedExternally()const
{
return ( m_backEnd->wasChangedExternally() );
}
void OPimContactAccess::copMessage( const QCString &msg, const QByteArray & )
{
if ( msg == "addressbookUpdated()" ){
emit signalChanged ( this );
} else if ( msg == "flush()" ) {
save ();
} else if ( msg == "reload()" ) {
reload ();
diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h
index 5051321..9a2ecaf 100644
--- a/libopie2/opiepim/core/ocontactaccess.h
+++ b/libopie2/opiepim/core/ocontactaccess.h
@@ -95,63 +95,48 @@ class OPimContactAccess: public QObject, public OPimAccessTemplate<OPimContact>
SortAnniversary,
SortBirthday,
SortGender
};
/**
* Create Database with contacts (addressbook).
* @param appname Name of application which wants access to the database
* (i.e. "todolist")
* @param filename The name of the database file. If not set, the default one
* is used.
* @param backend Pointer to an alternative Backend. If not set, we will use
* the default backend.
* @param handlesync If <b>true</b> the database stores the current state
* automatically if it receives the signals <i>flush()</i> and <i>reload()</i>
* which are used before and after synchronisation. If the application wants
* to react itself, it should be disabled by setting it to <b>false</b>
* @see OPimContactAccessBackend
*/
OPimContactAccess (const QString appname, const QString filename = 0l,
OPimContactAccessBackend* backend = 0l, bool handlesync = true);
~OPimContactAccess ();
- /**
- * Return all possible settings for queryByExample().
- * @return All settings provided by the current backend
- * (i.e.: WildCards & IgnoreCase)
- * @see QuerySettings in OPimBase for details of the parameter, queryByExample()
- */
- const uint querySettings();
-
- /**
- * Check whether settings are correct for queryByExample().
- * @return <i>true</i> if the given settings are correct and possible.
- * @see QuerySettings in OPimBase for details of the parameter
- */
- bool hasQuerySettings ( int querySettings ) const;
-
/**
* if the resource was changed externally.
* You should use the signal instead of polling possible changes !
*/
bool wasChangedExternally()const;
/** Save contacts database.
* Save is more a "commit". After calling this function, all changes are public available.
* @return true if successful
*/
bool save();
/**
* Return identification of used records
*/
int rtti() const;
signals:
/* Signal is emitted if the database was changed. Therefore
* we may need to reload to stay consistent.
* @param which Pointer to the database who created this event. This pointer
* is useful if an application has to handle multiple databases at the same time.
* @see reload()
diff --git a/libopie2/opiepim/core/opimaccesstemplate.h b/libopie2/opiepim/core/opimaccesstemplate.h
index 3875f09..823f03d 100644
--- a/libopie2/opiepim/core/opimaccesstemplate.h
+++ b/libopie2/opiepim/core/opimaccesstemplate.h
@@ -66,87 +66,102 @@ public:
};
typedef OPimRecordList<T> List;
typedef OPimAccessBackend<T> BackEnd;
typedef OPimCache<T> Cache;
//@{
OPimAccessTemplate( BackEnd* end);
virtual ~OPimAccessTemplate();
//@}
//@{
bool load();
virtual bool reload();
bool save();
void clear() ;
//@}
bool wasChangedExternally()const;
//@{
virtual List allRecords()const;
virtual List matchRegexp( const QRegExp &r ) const;
+ /**
+ * Return all possible settings for queryByExample().
+ * @return All settings provided by the current backend
+ * (i.e.: WildCards & IgnoreCase)
+ * @see QuerySettings in OPimBase for details of the parameter, queryByExample()
+ */
+ const uint querySettings();
+
+ /**
+ * Check whether settings are correct for queryByExample().
+ * @return <i>true</i> if the given settings are correct and possible.
+ * @see QuerySettings in OPimBase for details of the parameter
+ */
+ bool hasQuerySettings ( int querySettings ) const;
+
/**
* Query by example search interface.
* "Query by Example" provides a very powerful search engine. Use the query object
* (this may be a contact, a todo or databook event)
* as a search mask which is converted into a query regarding the querySettings. If a time period is needed
- * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the endperiod (the last parameter).
+ * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the startperiod (the last parameter).
* @see QuerySettings in class OPimBase
* @param query The object which contains the query set
* @param querySettings This parameter defines what should be searched and how the query should be interpreted
- * @param endperiod Defines the end of a period for some special queries.
+ * @param startperiod Defines the start of a period for some special queries.
*/
- virtual List queryByExample( const T& query, int querySettings, const QDateTime& endperiod = QDateTime() );
+ virtual List queryByExample( const T& query, int querySettings, const QDateTime& startperiod = QDateTime() );
/**
* Generic query by example search interface. This is a special version which handles generic OPimRecord types. They are converted
* automatically into the right datatype.
* "Query by Example" provides a very powerful search engine. Use the query object (this may be a contact, a todo or databook event)
* as a search mask which is converted into a query regarding the querySettings. If a time period is needed
- * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the endperiod (the last parameter).
+ * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the startperiod (the last parameter).
* @see QuerySettings in class OPimBase
* @param query The object which contains the query set
* @param querySettings This parameter defines what should be searched and how the query should be interpreted
- * @param endperiod Defines the end of a period for some special queries.
+ * @param startperiod Defines the start of a period for some special queries.
*/
- virtual List queryByExample( const OPimRecord* query, int querySettings, const QDateTime& endperiod = QDateTime() );
+ virtual List queryByExample( const OPimRecord* query, int querySettings, const QDateTime& startperiod = QDateTime() );
/**
* Incremental query by example search interface. Providing incremental search, this one provides the feature
* to search in a list of records which may be returned by an other search.
* "Query by Example" provides a very powerful search engine. Use the query object (this may be a contact, a todo or databook event)
* as a search mask which is converted into a query regarding the querySettings. If a time period is needed
- * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the endperiod (the last parameter).
+ * (as for OpimBase::DateDiff), you have to use the date/time in the query object and the startperiod (the last parameter).
* @see QuerySettings in class OPimBase
* @param uidlist List of uid's which should be incorporated into the next search
* @param query The object which contains the query set
* @param querySettings This parameter defines what should be searched and how the query should be interpreted
- * @param endperiod Defines the end of a period for some special queries.
+ * @param startperiod Defines the start of a period for some special queries.
*/
virtual List queryByExample( const OPimAccessTemplate::List& uidlist, const T& query, int querySettings,
- const QDateTime& endperiod = QDateTime() );
+ const QDateTime& startperiod = QDateTime() );
virtual T find( UID uid )const;
virtual T find( UID uid, const QArray<int>&,
uint current, typename OTemplateBase<T>::CacheDirection dir = OTemplateBase<T>::Forward )const;
//@}
/**
* Get sorted lists..
* @see OPimContactAccess, OPimTodoAccess and ODateBookAccess regarding more info for the following params:
* @param list of UID's received by allRecords() or others...
* @param sortOrder Setting the sort order defined by enum SortOrder
* @param ascending Sort in ascending order if true, otherwise descending
* @param sortFilter Setting the sort filter defined by enum SortFilter
* @param cat number of category.
*/
virtual List sorted( const List& list, bool ascending, int sortOrder,
int sortFilter, int cat )const;
/**
* Get sorted lists..
* @see OPimContactAccess, OPimTodoAccess and ODateBookAccess regarding more info for the following params:
* @param list of UID's received by allRecords() or others...
* @param sortOrder Setting the sort order defined by enum SortOrder
* @param ascending Sort in ascending order if true, otherwise descending
@@ -287,48 +302,58 @@ typename OPimAccessTemplate<T>::List OPimAccessTemplate<T>::allRecords()const {
QArray<int> ints = m_backEnd->allRecords();
List lis(ints, this );
return lis;
}
/**
* return a List of records
* that match the regex
*/
template <class T>
typename OPimAccessTemplate<T>::List OPimAccessTemplate<T>::matchRegexp( const QRegExp &r )const {
QArray<int> ints = m_backEnd->matchRegexp( r );
List lis(ints, this );
return lis;
}
/**
* find the OPimRecord uid
*/
template <class T>
QArray<int> OPimAccessTemplate<T>::records()const {
return m_backEnd->allRecords();
}
+template <class T>
+const uint OPimAccessTemplate<T>::querySettings(){
+ return m_backEnd->querySettings();
+}
+
+template <class T>
+bool OPimAccessTemplate<T>::hasQuerySettings ( int querySettings ) const {
+ return m_backEnd->hasQuerySettings( querySettings );
+}
+
template <class T>
typename OPimAccessTemplate<T>::List
OPimAccessTemplate<T>::queryByExample( const T& t, int settings, const QDateTime& d ) {
QArray<int> ints = m_backEnd->queryByExample( t, settings, d );
List list(ints, this );
return list;
}
template <class T>
typename OPimAccessTemplate<T>::List
OPimAccessTemplate<T>::queryByExample( const OPimRecord* t, int settings, const QDateTime& d ) {
T tempInstance;
if ( t->rtti() == tempInstance.rtti() ) {
QArray<int> ints = m_backEnd->queryByExample( t, settings, d );
List list( ints, this );
return list;
} else {
owarn << "Query not possible: Objecttype mismatch" << oendl;
}
return List();