summaryrefslogtreecommitdiff
authoreilers <eilers>2004-05-16 16:03:30 (UTC)
committer eilers <eilers>2004-05-16 16:03:30 (UTC)
commit52691aca593d6b321597d26467b9e9af9ec0b6fe (patch) (unidiff)
treede3091da50aed7ed265f3f50f884dc7bbfa84f2b
parent680c8c7a6db8f5b79a6541629f54465709b79b02 (diff)
downloadopie-52691aca593d6b321597d26467b9e9af9ec0b6fe.zip
opie-52691aca593d6b321597d26467b9e9af9ec0b6fe.tar.gz
opie-52691aca593d6b321597d26467b9e9af9ec0b6fe.tar.bz2
Backendfactory allows to request the default database style which is defined
by Settings/pimaccess.conf. This will be used by the OPimAccessFactory .. see next commit..
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/backend/obackendfactory.h61
-rw-r--r--libopie2/opiepim/core/opimglobal.h2
2 files changed, 46 insertions, 17 deletions
diff --git a/libopie2/opiepim/backend/obackendfactory.h b/libopie2/opiepim/backend/obackendfactory.h
index d101373..d8caa80 100644
--- a/libopie2/opiepim/backend/obackendfactory.h
+++ b/libopie2/opiepim/backend/obackendfactory.h
@@ -69,25 +69,25 @@ class OBackendPrivate;
69 * </pre> 69 * </pre>
70 * 70 *
71 * @author Stefan Eilers 71 * @author Stefan Eilers
72 * @version 0.1 72 * @version 0.1
73 */ 73 */
74template<class T> 74template<class T>
75class OBackendFactory 75class OBackendFactory
76{ 76{
77 public: 77 public:
78 OBackendFactory() {}; 78 OBackendFactory() {};
79 79
80 /** 80 /**
81 * Returns a backend implementation 81 * Returns a selected backend implementation
82 * @param type the type of the backend 82 * @param type the type of the backend
83 * @param database the type of the used database 83 * @param database the type of the used database
84 * @param appName The name of your application. It will be passed on to the backend. 84 * @param appName The name of your application. It will be passed on to the backend.
85 */ 85 */
86 static T* create( OPimGlobal::PimType type, OPimGlobal::DatabaseStyle database, 86 static T* create( OPimGlobal::PimType type, OPimGlobal::DatabaseStyle database,
87 const QString& appName ){ 87 const QString& appName ){
88 qWarning("Selected backend for %d is: %d", type, database ); 88 qWarning("Selected backend for %d is: %d", type, database );
89 89
90 switch ( type ){ 90 switch ( type ){
91 case OPimGlobal::TODOLIST: 91 case OPimGlobal::TODOLIST:
92#ifdef __USE_SQL 92#ifdef __USE_SQL
93 if ( database == OPimGlobal::SQL ) 93 if ( database == OPimGlobal::SQL )
@@ -116,56 +116,83 @@ class OBackendFactory
116 if ( database == OPimGlobal::SQL ) 116 if ( database == OPimGlobal::SQL )
117 qWarning("OBackendFactory:: sql Backend for DATEBOOK not implemented! Using XML instead!"); 117 qWarning("OBackendFactory:: sql Backend for DATEBOOK not implemented! Using XML instead!");
118#endif 118#endif
119 119
120 return (T*) new ODateBookAccessBackend_XML( appName ); 120 return (T*) new ODateBookAccessBackend_XML( appName );
121 default: 121 default:
122 return (T*) NULL; 122 return (T*) NULL;
123 } 123 }
124 124
125 125
126 } 126 }
127 127
128
129 static OPimGlobal::DatabaseStyle defaultDB( OPimGlobal::PimType backend ){
130 QString group_name;
131 switch ( backend ){
132 case OPimGlobal::TODOLIST:
133 group_name = "todo";
134 break;
135 case OPimGlobal::CONTACTLIST:
136 group_name = "contact";
137 break;
138 case OPimGlobal::DATEBOOK:
139 group_name = "datebook";
140 break;
141 default:
142 group_name = "unknown";
143 }
144
145 Config config( "pimaccess" );
146 config.setGroup ( group_name );
147 QString db_String = config.readEntry( "usebackend" );
148
149 QAsciiDict<int> dictDbTypes( OPimGlobal::_END_DatabaseStyle );
150 dictDbTypes.setAutoDelete( TRUE );
151
152 dictDbTypes.insert( "xml", new int (OPimGlobal::XML) );
153 dictDbTypes.insert( "sql", new int (OPimGlobal::SQL) );
154 dictDbTypes.insert( "vcard", new int (OPimGlobal::VCARD) );
155
156 int* db_find = dictDbTypes[ db_String ];
157
158 if ( !db_find )
159 return OPimGlobal::UNKNOWN;
160
161 return (OPimGlobal::DatabaseStyle) *db_find;
162 }
163
164
128 /** 165 /**
129 * Returns the default backend implementation for backendName. Which one is used, is defined 166 * Returns the default backend implementation for backendName. Which one is used, is defined
130 * by the configfile "pimaccess.conf". 167 * by the configfile "pimaccess.conf".
131 * @param backendName the type of the backend (use "todo", "contact" or "datebook" ) 168 * @param backendName the type of the backend (use "todo", "contact" or "datebook" )
132 * @param appName The name of your application. It will be passed on to the backend 169 * @param appName The name of your application. It will be passed on to the backend
133 */ 170 */
134 static T* Default( const QString backendName, const QString& appName ){ 171 static T* Default( const QString backendName, const QString& appName ){
135 172
136 QAsciiDict<int> dictBackends( OPimGlobal::_END_PimType ); 173 QAsciiDict<int> dictBackends( OPimGlobal::_END_PimType );
137 dictBackends.setAutoDelete ( TRUE ); 174 dictBackends.setAutoDelete ( TRUE );
138 175
139 dictBackends.insert( "todo", new int (OPimGlobal::TODOLIST) ); 176 dictBackends.insert( "todo", new int (OPimGlobal::TODOLIST) );
140 dictBackends.insert( "contact", new int (OPimGlobal::CONTACTLIST) ); 177 dictBackends.insert( "contact", new int (OPimGlobal::CONTACTLIST) );
141 dictBackends.insert( "datebook", new int(OPimGlobal::DATEBOOK) ); 178 dictBackends.insert( "datebook", new int(OPimGlobal::DATEBOOK) );
142 179
143 QAsciiDict<int> dictDbTypes( OPimGlobal::_END_DatabaseStyle );
144 dictDbTypes.setAutoDelete( TRUE );
145
146 dictDbTypes.insert( "xml", new int (OPimGlobal::XML) );
147 dictDbTypes.insert( "sql", new int (OPimGlobal::SQL) );
148 dictDbTypes.insert( "vcard", new int (OPimGlobal::VCARD) );
149
150 Config config( "pimaccess" );
151 config.setGroup ( backendName );
152 QString db_String = config.readEntry( "usebackend" );
153
154 int* db_find = dictDbTypes[ db_String ];
155 int* backend_find = dictBackends[ backendName ]; 180 int* backend_find = dictBackends[ backendName ];
156 if ( !backend_find || !db_find ) return NULL; 181 if ( !backend_find ) return NULL;
182
183 OPimGlobal::DatabaseStyle style = defaultDB( static_cast<OPimGlobal::PimType>( *backend_find ) );
157 184
158 qDebug( "OBackendFactory::Default -> Backend is %s, Database is %s", backendName.latin1(), 185 qDebug( "OBackendFactory::Default -> Backend is %s, Database is %d", backendName.latin1(),
159 db_String.latin1() ); 186 style );
160 187
161 return create( (OPimGlobal::PimType) *backend_find, (OPimGlobal::DatabaseStyle) *db_find, appName ); 188 return create( (OPimGlobal::PimType) *backend_find, style, appName );
162 189
163 } 190 }
164 private: 191 private:
165 OBackendPrivate* d; 192 OBackendPrivate* d;
166 193
167}; 194};
168 195
169} 196}
170 197
171#endif 198#endif
diff --git a/libopie2/opiepim/core/opimglobal.h b/libopie2/opiepim/core/opimglobal.h
index 2d336b4..d56c9be 100644
--- a/libopie2/opiepim/core/opimglobal.h
+++ b/libopie2/opiepim/core/opimglobal.h
@@ -37,24 +37,26 @@ namespace Pim{
37 * Contains global types and enums for the PIM-API 37 * Contains global types and enums for the PIM-API
38 */ 38 */
39class OPimGlobal{ 39class OPimGlobal{
40 public: 40 public:
41 enum PimType { 41 enum PimType {
42 TODOLIST, 42 TODOLIST,
43 CONTACTLIST, 43 CONTACTLIST,
44 DATEBOOK, 44 DATEBOOK,
45 _END_PimType 45 _END_PimType
46 }; 46 };
47 47
48 enum DatabaseStyle { 48 enum DatabaseStyle {
49 DEFAULT, // Use default Database
50 UNKNOWN, // Unknown database style
49 XML, 51 XML,
50 SQL, 52 SQL,
51 VCARD, 53 VCARD,
52 _END_DatabaseStyle 54 _END_DatabaseStyle
53 }; 55 };
54 56
55 57
56}; 58};
57 59
58} 60}
59} 61}
60 62