summaryrefslogtreecommitdiff
path: root/libopie/pim/ocontactaccessbackend_sql.h
Side-by-side diff
Diffstat (limited to 'libopie/pim/ocontactaccessbackend_sql.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/ocontactaccessbackend_sql.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/libopie/pim/ocontactaccessbackend_sql.h b/libopie/pim/ocontactaccessbackend_sql.h
new file mode 100644
index 0000000..bb22551
--- a/dev/null
+++ b/libopie/pim/ocontactaccessbackend_sql.h
@@ -0,0 +1,96 @@
+/*
+ * SQL Backend for the OPIE-Contact Database.
+ *
+ * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de)
+ *
+ * =====================================================================
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ * =====================================================================
+ *
+ *
+ * =====================================================================
+ * Version: $Id$
+ * =====================================================================
+ * History:
+ * $Log$
+ * Revision 1.1 2003/09/22 14:31:16 eilers
+ * Added first experimental incarnation of sql-backend for addressbook.
+ * Some modifications to be able to compile the todo sql-backend.
+ * A lot of changes fill follow...
+ *
+ *
+ */
+
+#ifndef _OContactAccessBackend_SQL_
+#define _OContactAccessBackend_SQL_
+
+#include "ocontactaccessbackend.h"
+#include "ocontactaccess.h"
+
+#include <qlist.h>
+#include <qdict.h>
+
+class OSQLDriver;
+class OSQLResult;
+class OSQLResultItem;
+
+/* the default xml implementation */
+/**
+ * This class is the SQL implementation of a Contact backend
+ * it does implement everything available for OContact.
+ * @see OPimAccessBackend for more information of available methods
+ */
+class OContactAccessBackend_SQL : public OContactAccessBackend {
+ public:
+ OContactAccessBackend_SQL ( const QString& appname, const QString& filename = QString::null );
+
+ bool save();
+
+ bool load ();
+
+ void clear ();
+
+ bool wasChangedExternally();
+
+ QArray<int> allRecords() const;
+
+ OContact find ( int uid ) const;
+ // FIXME: Add lookahead-cache support !
+ //OContact find(int uid, const QArray<int>&, uint cur, Frontend::CacheDirection )const;
+
+ QArray<int> queryByExample ( const OContact &query, int settings,
+ const QDateTime& d );
+
+ QArray<int> matchRegexp( const QRegExp &r ) const;
+
+ const uint querySettings();
+
+ bool hasQuerySettings (uint querySettings) const;
+
+ // Currently only asc implemented..
+ QArray<int> sorted( bool asc, int , int , int );
+ bool add ( const OContact &newcontact );
+
+ bool replace ( const OContact &contact );
+
+ bool remove ( int uid );
+ bool reload();
+
+ private:
+ QArray<int> extractUids( OSQLResult& res ) const;
+ QMap<int, QString> requestNonCustom( int uid ) const;
+ QMap<QString, QString> requestCustom( int uid ) const;
+ void update();
+
+ protected:
+ bool m_changed;
+ QString m_fileName;
+ QArray<int> m_uids;
+
+ OSQLDriver* m_driver;
+};
+
+#endif