author | zecke <zecke> | 2004-03-14 17:00:05 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-03-14 17:00:05 (UTC) |
commit | 59106c8ffcf25181925281c519a2b49d6835ef9e (patch) (side-by-side diff) | |
tree | 810ff3af82ffb109ad662bf86e2d669b27ef9a32 /libopie2/opiepim/backend | |
parent | 5bf53ecde573239a07faaa713f2a6f8392fa364a (diff) | |
download | opie-59106c8ffcf25181925281c519a2b49d6835ef9e.zip opie-59106c8ffcf25181925281c519a2b49d6835ef9e.tar.gz opie-59106c8ffcf25181925281c519a2b49d6835ef9e.tar.bz2 |
but XML Parser back to OPie Core as libtinykate uses it as well
-rw-r--r-- | libopie2/opiepim/backend/backends.pro | 6 | ||||
-rw-r--r-- | libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp | 5 |
2 files changed, 4 insertions, 7 deletions
diff --git a/libopie2/opiepim/backend/backends.pro b/libopie2/opiepim/backend/backends.pro index d4867ba..953d928 100644 --- a/libopie2/opiepim/backend/backends.pro +++ b/libopie2/opiepim/backend/backends.pro @@ -1,33 +1,31 @@ SOURCES += core/backends/ocontactaccessbackend_sql.cpp \ core/backends/ocontactaccessbackend_vcard.cpp \ core/backends/ocontactaccessbackend_xml.cpp \ core/backends/ocontactaccess.cpp \ core/backends/odatebookaccessbackend.cpp \ core/backends/odatebookaccessbackend_xml.cpp \ core/backends/otodoaccessbackend.cpp \ core/backends/otodoaccess.cpp \ core/backends/otodoaccesssql.cpp \ core/backends/otodoaccessvcal.cpp \ core/backends/otodoaccessxml.cpp \ core/backends/odatebookaccess.cpp \ - core/backends/odatebookaccessbackend_sql.cpp \ - core/backends/private/xmltree.cc + core/backends/odatebookaccessbackend_sql.cpp HEADERS += core/backends/obackendfactory.h \ core/backends/ocontactaccessbackend.h \ core/backends/ocontactaccessbackend_sql.h \ core/backends/ocontactaccessbackend_vcard.h \ core/backends/ocontactaccessbackend_xml.h \ core/backends/ocontactaccess.h \ core/backends/odatebookaccessbackend.h \ core/backends/odatebookaccessbackend_sql.h \ core/backends/odatebookaccessbackend_xml.h \ core/backends/opimaccessbackend.h \ core/backends/opimaccesstemplate.h \ core/backends/otodoaccessbackend.h \ core/backends/otodoaccess.h \ core/backends/otodoaccesssql.h \ core/backends/otodoaccessvcal.h \ core/backends/otodoaccessxml.h \ - core/backends/odatebookaccess.h \ - core/backends/private/xmltree.h + core/backends/odatebookaccess.h diff --git a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp index f5e76d5..2b467c3 100644 --- a/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp +++ b/libopie2/opiepim/backend/ocontactaccessbackend_xml.cpp @@ -1,180 +1,179 @@ /* This file is part of the Opie Project Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) =. Copyright (C) The Opie Team <opie-devel@handhelds.org> .=l. .>+-= _;:, .> :=|. This program is free software; you can .> <`_, > . <= redistribute it and/or modify it under :`=1 )Y*s>-.-- : the terms of the GNU Library General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; either version 2 of the License, ._= =} : or (at your option) any later version. .%`+i> _;_. .i_,=:_. -<s. This program is distributed in the hope that + . -:. = it will be useful, but WITHOUT ANY WARRANTY; : .. .:, . . . without even the implied warranty of =_ + =;=|` MERCHANTABILITY or FITNESS FOR A _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU ..}^=.= = ; Library General Public License for more ++= -. .` .: details. : = ...= . :.=- -. .:....=;==+<; You should have received a copy of the GNU -_. . . )=. = Library General Public License along with -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * XML Backend for the OPIE-Contact Database. */ #include <opie2/ocontactaccessbackend_xml.h> #include <qasciidict.h> #include <qfile.h> #include <qfileinfo.h> #include <qregexp.h> #include <qarray.h> #include <qmap.h> #include <qpe/global.h> -#include "private/xmltree.h" +#include <opie2/xmltree.h> #include <opie2/ocontactaccessbackend.h> #include <opie2/ocontactaccess.h> #include <stdlib.h> #include <errno.h> -using namespace Opie; -using namespace Opie::Pim::Private; +using namespace Opie::Core; namespace Opie { OPimContactAccessBackend_XML::OPimContactAccessBackend_XML ( const QString& appname, const QString& filename ): m_changed( false ) { // Just m_contactlist should call delete if an entry // is removed. m_contactList.setAutoDelete( true ); m_uidToContact.setAutoDelete( false ); m_appName = appname; /* Set journalfile name ... */ m_journalName = getenv("HOME"); m_journalName +="/.abjournal" + appname; /* Expecting to access the default filename if nothing else is set */ if ( filename.isEmpty() ){ m_fileName = Global::applicationFileName( "addressbook","addressbook.xml" ); } else m_fileName = filename; /* Load Database now */ load (); } bool OPimContactAccessBackend_XML::save() { if ( !m_changed ) return true; QString strNewFile = m_fileName + ".new"; QFile f( strNewFile ); if ( !f.open( IO_WriteOnly|IO_Raw ) ) return false; int total_written; int idx_offset = 0; QString out; // Write Header out = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE Addressbook ><AddressBook>\n" " <Groups>\n" " </Groups>\n" " <Contacts>\n"; QCString cstr = out.utf8(); f.writeBlock( cstr.data(), cstr.length() ); idx_offset += cstr.length(); out = ""; // Write all contacts QListIterator<OPimContact> it( m_contactList ); for ( ; it.current(); ++it ) { // qWarning(" Uid %d at Offset: %x", (*it)->uid(), idx_offset ); out += "<Contact "; (*it)->save( out ); out += "/>\n"; cstr = out.utf8(); total_written = f.writeBlock( cstr.data(), cstr.length() ); idx_offset += cstr.length(); if ( total_written != int(cstr.length()) ) { f.close(); QFile::remove( strNewFile ); return false; } out = ""; } out += " </Contacts>\n</AddressBook>\n"; // Write Footer cstr = out.utf8(); total_written = f.writeBlock( cstr.data(), cstr.length() ); if ( total_written != int( cstr.length() ) ) { f.close(); QFile::remove( strNewFile ); return false; } f.close(); // move the file over, I'm just going to use the system call // because, I don't feel like using QDir. if ( ::rename( strNewFile.latin1(), m_fileName.latin1() ) < 0 ) { qWarning( "problem renaming file %s to %s, errno: %d", strNewFile.latin1(), m_journalName.latin1(), errno ); // remove the tmp file... QFile::remove( strNewFile ); } /* The journalfile should be removed now... */ removeJournal(); m_changed = false; return true; } bool OPimContactAccessBackend_XML::load () { m_contactList.clear(); m_uidToContact.clear(); /* Load XML-File and journal if it exists */ if ( !load ( m_fileName, false ) ) return false; /* The returncode of the journalfile is ignored due to the * fact that it does not exist when this class is instantiated ! * But there may such a file exist, if the application crashed. * Therefore we try to load it to get the changes before the # * crash happened... */ load (m_journalName, true); return true; } void OPimContactAccessBackend_XML::clear () { m_contactList.clear(); m_uidToContact.clear(); m_changed = false; } bool OPimContactAccessBackend_XML::wasChangedExternally() { QFileInfo fi( m_fileName ); |