00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __OPIE_OPIMACCESSFACTORY_H_
00031 #define __OPIE_OPIMACCESSFACTORY_H_
00032
00033 #include <opie2/opimglobal.h>
00034 #include <opie2/obackendfactory.h>
00035 #include <opie2/ocontactaccess.h>
00036 #include <opie2/otodoaccess.h>
00037 #include <opie2/odatebookaccess.h>
00038
00039 using namespace Opie::Pim;
00040
00041 namespace Opie {
00042
00043
00061 template<class T>
00062 class OPimAccessFactory
00063 {
00064 public:
00065 OPimAccessFactory() {};
00066
00077 static T* create( OPimGlobal::PimType type, OPimGlobal::DatabaseStyle dbStyle, const QString& appName,
00078 const QString& fileName = QString::null ){
00079 OPimBase *base;
00080 switch ( type ){
00081 case OPimGlobal::TODOLIST:
00082 base = new OPimTodoAccess( OBackendFactory<OPimTodoAccessBackend>::create( type, dbStyle,
00083 appName, fileName ) );
00084 break;
00085 case OPimGlobal::CONTACTLIST:
00086 base = new OPimContactAccess( QString::null, QString::null,
00087 OBackendFactory<OPimContactAccessBackend>::create( type, dbStyle,
00088 appName, fileName ) );
00089 break;
00090 case OPimGlobal::DATEBOOK:
00091 base = new ODateBookAccess( OBackendFactory<ODateBookAccessBackend>::create( type, dbStyle,
00092 appName, fileName ) );
00093 break;
00094 default:
00095 return 0l;
00096 }
00097 return static_cast<T*>( base );
00098 }
00099
00100
00112 static T* defaultAccess( typename OPimGlobal::PimType type, const QString& appName ){
00113
00114 return create( type, OPimGlobal::DEFAULT, appName );
00115
00116 }
00117 };
00118
00119 }
00120
00121
00122 #endif