-rw-r--r-- | libopie/pim/ocontactaccess.cpp | 57 | ||||
-rw-r--r-- | libopie/pim/ocontactaccess.h | 43 | ||||
-rw-r--r-- | libopie/pim/ocontactaccessbackend_xml.h | 21 | ||||
-rw-r--r-- | libopie/pim/opimaccesstemplate.h | 27 |
4 files changed, 55 insertions, 93 deletions
diff --git a/libopie/pim/ocontactaccess.cpp b/libopie/pim/ocontactaccess.cpp index e8c0a45..2ca0283 100644 --- a/libopie/pim/ocontactaccess.cpp +++ b/libopie/pim/ocontactaccess.cpp | |||
@@ -22,4 +22,7 @@ | |||
22 | * History: | 22 | * History: |
23 | * $Log$ | 23 | * $Log$ |
24 | * Revision 1.5 2002/10/16 10:52:40 eilers | ||
25 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) | ||
26 | * | ||
24 | * Revision 1.4 2002/10/14 16:21:54 eilers | 27 | * Revision 1.4 2002/10/14 16:21:54 eilers |
25 | * Some minor interface updates | 28 | * Some minor interface updates |
@@ -63,6 +66,5 @@ | |||
63 | OContactAccess::OContactAccess ( const QString appname, const QString , | 66 | OContactAccess::OContactAccess ( const QString appname, const QString , |
64 | OContactAccessBackend* end, bool autosync ): | 67 | OContactAccessBackend* end, bool autosync ): |
65 | OPimAccessTemplate<OContact>( end ), | 68 | OPimAccessTemplate<OContact>( end ) |
66 | m_changed ( false ) | ||
67 | { | 69 | { |
68 | /* take care of the backend. If there is no one defined, we | 70 | /* take care of the backend. If there is no one defined, we |
@@ -95,13 +97,8 @@ OContactAccess::~OContactAccess () | |||
95 | * do it for him.. | 97 | * do it for him.. |
96 | */ | 98 | */ |
97 | if ( m_changed ) | 99 | save(); |
98 | save(); | ||
99 | // delete m_backEnd; is done by template.. | 100 | // delete m_backEnd; is done by template.. |
100 | } | 101 | } |
101 | 102 | ||
102 | bool OContactAccess::load() | ||
103 | { | ||
104 | return ( m_backEnd->load() ); | ||
105 | } | ||
106 | 103 | ||
107 | bool OContactAccess::save () | 104 | bool OContactAccess::save () |
@@ -111,17 +108,13 @@ bool OContactAccess::save () | |||
111 | * Therefore: Reload database and merge the data... | 108 | * Therefore: Reload database and merge the data... |
112 | */ | 109 | */ |
113 | if ( m_backEnd->wasChangedExternally() ) | 110 | if ( OPimAccessTemplate<OContact>::wasChangedExternally() ) |
114 | reload(); | 111 | reload(); |
115 | 112 | ||
116 | if ( m_changed ){ | 113 | bool status = OPimAccessTemplate<OContact>::save(); |
117 | bool status = m_backEnd->save(); | 114 | if ( !status ) return false; |
118 | if ( !status ) return false; | ||
119 | 115 | ||
120 | m_changed = false; | 116 | /* Now tell everyone that new data is available. |
121 | /* Now tell everyone that new data is available. | 117 | */ |
122 | */ | 118 | QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); |
123 | QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); | ||
124 | |||
125 | } | ||
126 | 119 | ||
127 | return true; | 120 | return true; |
@@ -138,27 +131,4 @@ bool OContactAccess::hasQuerySettings ( int querySettings ) const | |||
138 | } | 131 | } |
139 | 132 | ||
140 | bool OContactAccess::add ( const OContact& newcontact ) | ||
141 | { | ||
142 | m_changed = true; | ||
143 | return ( m_backEnd->add ( newcontact ) ); | ||
144 | } | ||
145 | |||
146 | bool OContactAccess::replace ( const OContact& contact ) | ||
147 | { | ||
148 | m_changed = true; | ||
149 | return ( m_backEnd->replace ( contact ) ); | ||
150 | } | ||
151 | |||
152 | bool OContactAccess::remove ( const OContact& t ) | ||
153 | { | ||
154 | m_changed = true; | ||
155 | return ( m_backEnd->remove ( t.uid() ) ); | ||
156 | } | ||
157 | |||
158 | bool OContactAccess::remove ( int uid ) | ||
159 | { | ||
160 | m_changed = true; | ||
161 | return ( m_backEnd->remove ( uid ) ); | ||
162 | } | ||
163 | 133 | ||
164 | bool OContactAccess::wasChangedExternally()const | 134 | bool OContactAccess::wasChangedExternally()const |
@@ -168,9 +138,4 @@ bool OContactAccess::wasChangedExternally()const | |||
168 | 138 | ||
169 | 139 | ||
170 | bool OContactAccess::reload() | ||
171 | { | ||
172 | return ( m_backEnd->reload() ); | ||
173 | } | ||
174 | |||
175 | void OContactAccess::copMessage( const QCString &msg, const QByteArray & ) | 140 | void OContactAccess::copMessage( const QCString &msg, const QByteArray & ) |
176 | { | 141 | { |
diff --git a/libopie/pim/ocontactaccess.h b/libopie/pim/ocontactaccess.h index adc66cf..da9c942 100644 --- a/libopie/pim/ocontactaccess.h +++ b/libopie/pim/ocontactaccess.h | |||
@@ -18,4 +18,7 @@ | |||
18 | * History: | 18 | * History: |
19 | * $Log$ | 19 | * $Log$ |
20 | * Revision 1.3 2002/10/16 10:52:40 eilers | ||
21 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) | ||
22 | * | ||
20 | * Revision 1.2 2002/10/14 16:21:54 eilers | 23 | * Revision 1.2 2002/10/14 16:21:54 eilers |
21 | * Some minor interface updates | 24 | * Some minor interface updates |
@@ -92,36 +95,4 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact> | |||
92 | bool hasQuerySettings ( int querySettings ) const; | 95 | bool hasQuerySettings ( int querySettings ) const; |
93 | 96 | ||
94 | /** Add Contact to database. | ||
95 | * @param newcontact The contact to add. | ||
96 | * @return <i>true</i> if added successfully. | ||
97 | */ | ||
98 | bool add (const OContact& newcontact); | ||
99 | |||
100 | /** Replace contact. | ||
101 | * Replaces given contact with contact with the user id <i>uid</i>. | ||
102 | * @param uid The user ID | ||
103 | * @param contact The new contact | ||
104 | * @return <i>true</i> if successful. | ||
105 | */ | ||
106 | bool replace ( const OContact& contact ); | ||
107 | |||
108 | /** Remove contact. | ||
109 | * Removes contact with the user id <i>uid</i>. | ||
110 | * @param The contact to remove | ||
111 | * @return <i>true</i> if successful. | ||
112 | */ | ||
113 | bool remove ( const OContact& t ); | ||
114 | |||
115 | /** Remove contact. | ||
116 | * Removes contact with the user id <i>uid</i>. | ||
117 | * @param The user id of the contact to remove | ||
118 | * @return <i>true</i> if successful. | ||
119 | */ | ||
120 | bool remove ( int uid ); | ||
121 | |||
122 | /** Load Database * | ||
123 | */ | ||
124 | bool load(); | ||
125 | |||
126 | /** | 97 | /** |
127 | * if the resource was changed externally. | 98 | * if the resource was changed externally. |
@@ -130,11 +101,4 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact> | |||
130 | bool wasChangedExternally()const; | 101 | bool wasChangedExternally()const; |
131 | 102 | ||
132 | /** Reload database. | ||
133 | * You should execute this function if the external database | ||
134 | * was changed. | ||
135 | * This function will load the external database and afterwards | ||
136 | * rejoin the local changes. Therefore the local database will be set consistent. | ||
137 | */ | ||
138 | bool reload(); | ||
139 | 103 | ||
140 | /** Save contacts database. | 104 | /** Save contacts database. |
@@ -159,5 +123,4 @@ class OContactAccess: public QObject, public OPimAccessTemplate<OContact> | |||
159 | OContactAccessBackend *m_backEnd; | 123 | OContactAccessBackend *m_backEnd; |
160 | bool m_loading:1; | 124 | bool m_loading:1; |
161 | bool m_changed; | ||
162 | 125 | ||
163 | private slots: | 126 | private slots: |
diff --git a/libopie/pim/ocontactaccessbackend_xml.h b/libopie/pim/ocontactaccessbackend_xml.h index 50ea329..12a75ba 100644 --- a/libopie/pim/ocontactaccessbackend_xml.h +++ b/libopie/pim/ocontactaccessbackend_xml.h | |||
@@ -18,4 +18,7 @@ | |||
18 | * History: | 18 | * History: |
19 | * $Log$ | 19 | * $Log$ |
20 | * Revision 1.4 2002/10/16 10:52:40 eilers | ||
21 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) | ||
22 | * | ||
20 | * Revision 1.3 2002/10/14 16:21:54 eilers | 23 | * Revision 1.3 2002/10/14 16:21:54 eilers |
21 | * Some minor interface updates | 24 | * Some minor interface updates |
@@ -57,5 +60,6 @@ using namespace Opie; | |||
57 | class OContactAccessBackend_XML : public OContactAccessBackend { | 60 | class OContactAccessBackend_XML : public OContactAccessBackend { |
58 | public: | 61 | public: |
59 | OContactAccessBackend_XML ( QString appname, QString filename = 0l ) | 62 | OContactAccessBackend_XML ( QString appname, QString filename = 0l ): |
63 | m_changed( false ) | ||
60 | { | 64 | { |
61 | m_appName = appname; | 65 | m_appName = appname; |
@@ -76,4 +80,8 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
76 | 80 | ||
77 | bool save() { | 81 | bool save() { |
82 | |||
83 | if ( !m_changed ) | ||
84 | return true; | ||
85 | |||
78 | QString strNewFile = m_fileName + ".new"; | 86 | QString strNewFile = m_fileName + ".new"; |
79 | QFile f( strNewFile ); | 87 | QFile f( strNewFile ); |
@@ -124,4 +132,6 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
124 | /* The journalfile should be removed now... */ | 132 | /* The journalfile should be removed now... */ |
125 | removeJournal(); | 133 | removeJournal(); |
134 | |||
135 | m_changed = false; | ||
126 | return true; | 136 | return true; |
127 | } | 137 | } |
@@ -146,4 +156,5 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
146 | void clear () { | 156 | void clear () { |
147 | m_contactList.clear(); | 157 | m_contactList.clear(); |
158 | m_changed = false; | ||
148 | 159 | ||
149 | } | 160 | } |
@@ -276,4 +287,7 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
276 | updateJournal (newcontact, OContact::ACTION_ADD); | 287 | updateJournal (newcontact, OContact::ACTION_ADD); |
277 | addContact_p( newcontact ); | 288 | addContact_p( newcontact ); |
289 | |||
290 | m_changed = true; | ||
291 | |||
278 | return true; | 292 | return true; |
279 | } | 293 | } |
@@ -281,4 +295,6 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
281 | bool replace ( const OContact &contact ) | 295 | bool replace ( const OContact &contact ) |
282 | { | 296 | { |
297 | m_changed = true; | ||
298 | |||
283 | bool found = false; | 299 | bool found = false; |
284 | 300 | ||
@@ -301,4 +317,6 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
301 | bool remove ( int uid ) | 317 | bool remove ( int uid ) |
302 | { | 318 | { |
319 | m_changed = true; | ||
320 | |||
303 | bool found = false; | 321 | bool found = false; |
304 | QValueListIterator<OContact> it; | 322 | QValueListIterator<OContact> it; |
@@ -554,4 +572,5 @@ class OContactAccessBackend_XML : public OContactAccessBackend { | |||
554 | 572 | ||
555 | protected: | 573 | protected: |
574 | bool m_changed; | ||
556 | QString m_journalName; | 575 | QString m_journalName; |
557 | QString m_fileName; | 576 | QString m_fileName; |
diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h index 3e1f393..50cb1e4 100644 --- a/libopie/pim/opimaccesstemplate.h +++ b/libopie/pim/opimaccesstemplate.h | |||
@@ -38,11 +38,15 @@ public: | |||
38 | virtual bool load(); | 38 | virtual bool load(); |
39 | 39 | ||
40 | /** | 40 | /** Reload database. |
41 | * reload from the backend | 41 | * You should execute this function if the external database |
42 | * was changed. | ||
43 | * This function will load the external database and afterwards | ||
44 | * rejoin the local changes. Therefore the local database will be set consistent. | ||
42 | */ | 45 | */ |
43 | virtual bool reload(); | 46 | virtual bool reload(); |
44 | 47 | ||
45 | /** | 48 | /** Save contacts database. |
46 | * save to the backend | 49 | * Save is more a "commit". After calling this function, all changes are public available. |
50 | * @return true if successful | ||
47 | */ | 51 | */ |
48 | virtual bool save(); | 52 | virtual bool save(); |
@@ -50,4 +54,6 @@ public: | |||
50 | /** | 54 | /** |
51 | * if the resource was changed externally | 55 | * if the resource was changed externally |
56 | * You should use the signal handling instead of polling possible changes ! | ||
57 | * zecke: Do you implement a signal for otodoaccess ? | ||
52 | */ | 58 | */ |
53 | bool wasChangedExternally()const; | 59 | bool wasChangedExternally()const; |
@@ -60,5 +66,5 @@ public: | |||
60 | 66 | ||
61 | /** | 67 | /** |
62 | * queryByExample) | 68 | * queryByExample. |
63 | * @see otodoaccess, ocontactaccess | 69 | * @see otodoaccess, ocontactaccess |
64 | */ | 70 | */ |
@@ -84,4 +90,6 @@ public: | |||
84 | /** | 90 | /** |
85 | * add T to the backend | 91 | * add T to the backend |
92 | * @param t The item to add. | ||
93 | * @return <i>true</i> if added successfully. | ||
86 | */ | 94 | */ |
87 | virtual bool add( const T& t ) ; | 95 | virtual bool add( const T& t ) ; |
@@ -90,4 +98,6 @@ public: | |||
90 | /** | 98 | /** |
91 | * remove T from the backend | 99 | * remove T from the backend |
100 | * @param t The item to remove | ||
101 | * @return <i>true</i> if successful. | ||
92 | */ | 102 | */ |
93 | virtual bool remove( const T& t ); | 103 | virtual bool remove( const T& t ); |
@@ -95,4 +105,6 @@ public: | |||
95 | /** | 105 | /** |
96 | * remove the OPimRecord with uid | 106 | * remove the OPimRecord with uid |
107 | * @param uid The ID of the item to remove | ||
108 | * @return <i>true</i> if successful. | ||
97 | */ | 109 | */ |
98 | virtual bool remove( int uid ); | 110 | virtual bool remove( int uid ); |
@@ -100,4 +112,6 @@ public: | |||
100 | /** | 112 | /** |
101 | * replace T from backend | 113 | * replace T from backend |
114 | * @param t The item to replace | ||
115 | * @return <i>true</i> if successful. | ||
102 | */ | 116 | */ |
103 | virtual bool replace( const T& t) ; | 117 | virtual bool replace( const T& t) ; |
@@ -143,5 +157,6 @@ bool OPimAccessTemplate<T>::load() { | |||
143 | template <class T> | 157 | template <class T> |
144 | bool OPimAccessTemplate<T>::reload() { | 158 | bool OPimAccessTemplate<T>::reload() { |
145 | return m_backEnd->reload(); | 159 | invalidateCache(); // zecke: I think this should be added (se) |
160 | return m_backEnd->reload(); | ||
146 | } | 161 | } |
147 | template <class T> | 162 | template <class T> |