summaryrefslogtreecommitdiff
authoreilers <eilers>2004-04-28 09:22:02 (UTC)
committer eilers <eilers>2004-04-28 09:22:02 (UTC)
commit134b7accd6bdc8fbc160a42f7c52c585e73f4add (patch) (side-by-side diff)
tree5e221e990d0c94e38d816e147762f205733b0e72
parent8ce67859c54234dabd88e17a0bc72369ea8301a3 (diff)
downloadopie-134b7accd6bdc8fbc160a42f7c52c585e73f4add.zip
opie-134b7accd6bdc8fbc160a42f7c52c585e73f4add.tar.gz
opie-134b7accd6bdc8fbc160a42f7c52c585e73f4add.tar.bz2
Some modifications to alow use of generic OPimRecords without need to
cast them manually to the right type
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp1
-rw-r--r--libopie2/opiepim/core/ocontactaccess.cpp6
-rw-r--r--libopie2/opiepim/core/ocontactaccess.h5
-rw-r--r--libopie2/opiepim/core/odatebookaccess.cpp5
-rw-r--r--libopie2/opiepim/core/odatebookaccess.h6
-rw-r--r--libopie2/opiepim/core/opimaccesstemplate.h28
-rw-r--r--libopie2/opiepim/core/opimtemplatebase.h16
-rw-r--r--libopie2/opiepim/core/otodoaccess.cpp7
-rw-r--r--libopie2/opiepim/core/otodoaccess.h6
9 files changed, 65 insertions, 15 deletions
diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
index 401a3c1..14207be 100644
--- a/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
+++ b/libopie2/opiepim/backend/ocontactaccessbackend_sql.cpp
@@ -431,4 +431,5 @@ QArray<int> OPimContactAccessBackend_SQL::allRecords() const
bool OPimContactAccessBackend_SQL::add ( const OPimContact &newcontact )
{
+ qDebug("add in contact SQL-Backend");
InsertQuery ins( newcontact );
OSQLResult res = m_driver->query( &ins );
diff --git a/libopie2/opiepim/core/ocontactaccess.cpp b/libopie2/opiepim/core/ocontactaccess.cpp
index 4f9b504..67f267f 100644
--- a/libopie2/opiepim/core/ocontactaccess.cpp
+++ b/libopie2/opiepim/core/ocontactaccess.cpp
@@ -53,4 +53,5 @@
#include <opie2/ocontactaccessbackend_xml.h>
+#include <opie2/opimresolver.h>
namespace Opie {
@@ -150,3 +151,8 @@ void OPimContactAccess::copMessage( const QCString &msg, const QByteArray & )
}
+int OPimContactAccess::rtti() const
+{
+ return OPimResolver::AddressBook;
+}
+
}
diff --git a/libopie2/opiepim/core/ocontactaccess.h b/libopie2/opiepim/core/ocontactaccess.h
index cf5333a..4429b6f 100644
--- a/libopie2/opiepim/core/ocontactaccess.h
+++ b/libopie2/opiepim/core/ocontactaccess.h
@@ -128,4 +128,9 @@ class OPimContactAccess: public QObject, public OPimAccessTemplate<OPimContact>
*/
bool save();
+
+ /**
+ * Return identification of used records
+ */
+ int rtti() const;
signals:
diff --git a/libopie2/opiepim/core/odatebookaccess.cpp b/libopie2/opiepim/core/odatebookaccess.cpp
index ac310c1..29298ea 100644
--- a/libopie2/opiepim/core/odatebookaccess.cpp
+++ b/libopie2/opiepim/core/odatebookaccess.cpp
@@ -29,4 +29,5 @@
#include <opie2/obackendfactory.h>
#include <opie2/odatebookaccess.h>
+#include <opie2/opimresolver.h>
namespace Opie {
@@ -109,4 +110,8 @@ OEffectiveEvent::ValueList ODateBookAccess::effectiveNonRepeatingEvents( const Q
return m_backEnd->effectiveNonRepeatingEvents( start );
}
+int ODateBookAccess::rtti() const
+{
+ return OPimResolver::DateBook;
+}
}
diff --git a/libopie2/opiepim/core/odatebookaccess.h b/libopie2/opiepim/core/odatebookaccess.h
index 6c9290f..c6c3598 100644
--- a/libopie2/opiepim/core/odatebookaccess.h
+++ b/libopie2/opiepim/core/odatebookaccess.h
@@ -65,4 +65,10 @@ public:
OEffectiveEvent::ValueList effectiveNonRepeatingEvents( const QDateTime& start ) const;
+ /**
+ * Return identification of used records
+ */
+ int rtti() const;
+
+
private:
ODateBookAccessBackend* m_backEnd;
diff --git a/libopie2/opiepim/core/opimaccesstemplate.h b/libopie2/opiepim/core/opimaccesstemplate.h
index f1bcc44..d4c5fbb 100644
--- a/libopie2/opiepim/core/opimaccesstemplate.h
+++ b/libopie2/opiepim/core/opimaccesstemplate.h
@@ -1,5 +1,6 @@
/*
This file is part of the Opie Project
- Copyright (C) The Main Author <main-author@whereever.org>
+ Copyright (C) Holger Freyther <zecke@handhelds.org>
+ Copyright (C) Stefan Eilers <eilers.stefan@epost.de>
=. Copyright (C) The Opie Team <opie-devel@handhelds.org>
.=l.
@@ -138,4 +139,11 @@ public:
virtual bool add( const T& t ) ;
bool add( const OPimRecord& );
+ // Needed for real generic access (eilers)
+ // Info: Take this if you are working with OPimRecord, which is a generic base class, and
+ // you need to add it into any database, you cannot generate a reference to
+ // it and casting may be not approriate, too.
+ // But take care that the accessing database is compatible to the real type of OPimRecord !!
+ bool add( const OPimRecord* );
+
/* only the uid matters */
@@ -272,13 +280,27 @@ bool OPimAccessTemplate<T>::add( const T& t ) {
return m_backEnd->add( t );
}
+
template <class T>
bool OPimAccessTemplate<T>::add( const OPimRecord& rec) {
/* same type */
- if ( rec.rtti() == T::rtti() ) {
- const T &t = static_cast<const T&>(rec);
+ T tempInstance;
+ if ( rec.rtti() == tempInstance.rtti() ) {
+ const T& t = static_cast<const T&>(rec);
return add(t);
}
return false;
}
+
+template <class T>
+bool OPimAccessTemplate<T>::add( const OPimRecord* rec) {
+ /* same type, but pointer */
+ T tempInstance;
+ if ( rec -> rtti() == tempInstance.rtti() ) {
+ const T* t = static_cast<const T*>(rec);
+ return add( *t );
+ }
+ return false;
+}
+
template <class T>
bool OPimAccessTemplate<T>::remove( const T& t ) {
diff --git a/libopie2/opiepim/core/opimtemplatebase.h b/libopie2/opiepim/core/opimtemplatebase.h
index 58cbfeb..b48dfed 100644
--- a/libopie2/opiepim/core/opimtemplatebase.h
+++ b/libopie2/opiepim/core/opimtemplatebase.h
@@ -1,5 +1,5 @@
/*
This file is part of the Opie Project
- Copyright (C) The Main Author <main-author@whereever.org>
+ Copyright (C) Holger Freyther <zecke@handhelds.org>
=. Copyright (C) The Opie Team <opie-devel@handhelds.org>
.=l.
@@ -50,8 +50,9 @@ struct OPimBase {
* return the rtti
*/
- virtual int rtti()= 0;
+ virtual int rtti() const = 0;
virtual OPimRecord* record()const = 0;
virtual OPimRecord* record(int uid)const = 0;
virtual bool add( const OPimRecord& ) = 0;
+ virtual bool add( const OPimRecord* ) = 0;
virtual bool remove( int uid ) = 0;
virtual bool remove( const OPimRecord& ) = 0;
@@ -91,6 +92,4 @@ public:
virtual void setSaneCacheSize( int ) = 0;
- /* reimplement of OPimBase */
- int rtti();
OPimRecord* record()const;
OPimRecord* record(int uid )const;
@@ -101,12 +100,5 @@ private:
};
-/*
- * implementation
- */
-template <class T>
-int
-OTemplateBase<T>::rtti() {
- return T::rtti();
-}
+
template <class T>
OPimRecord* OTemplateBase<T>::record()const {
diff --git a/libopie2/opiepim/core/otodoaccess.cpp b/libopie2/opiepim/core/otodoaccess.cpp
index 83750d5..6fa0089 100644
--- a/libopie2/opiepim/core/otodoaccess.cpp
+++ b/libopie2/opiepim/core/otodoaccess.cpp
@@ -34,4 +34,5 @@
#include <opie2/otodoaccess.h>
#include <opie2/obackendfactory.h>
+#include <opie2/opimresolver.h>
namespace Opie {
@@ -91,3 +92,9 @@ bool OPimTodoAccess::backendSupports( int attr, const QString& ar) const{
}
+
+int OPimTodoAccess::rtti() const
+{
+ return OPimResolver::TodoList;
+}
+
}
diff --git a/libopie2/opiepim/core/otodoaccess.h b/libopie2/opiepim/core/otodoaccess.h
index 51f3793..3f5af30 100644
--- a/libopie2/opiepim/core/otodoaccess.h
+++ b/libopie2/opiepim/core/otodoaccess.h
@@ -117,4 +117,10 @@ public:
*/
bool backendSupports( int attr, const QString& backend = QString::null )const;
+
+
+ /**
+ * Return identification of used records
+ */
+ int rtti() const;
signals:
/**