diff options
Diffstat (limited to 'tderesources/groupwise/soap/gwconverter.cpp')
-rw-r--r-- | tderesources/groupwise/soap/gwconverter.cpp | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/tderesources/groupwise/soap/gwconverter.cpp b/tderesources/groupwise/soap/gwconverter.cpp new file mode 100644 index 000000000..bda455f78 --- /dev/null +++ b/tderesources/groupwise/soap/gwconverter.cpp @@ -0,0 +1,171 @@ +/* + This file is part of tdepim. + Copyright (c) 2004 Tobias Koenig <tokoe@kde.org> + + This library 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. + + This library 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "gwconverter.h" + +#include <libtdepim/kpimprefs.h> + +#include <kdebug.h> + +GWConverter::GWConverter( struct soap* soap ) + : mSoap( soap ) +{ + Q_ASSERT( mSoap ); +} + +struct soap* GWConverter::soap() const +{ + return mSoap; +} + +std::string* GWConverter::qStringToString( const TQString &string ) +{ + std::string *str = soap_new_std__string( mSoap, -1 ); + str->append( string.utf8() ); + + return str; +} + +TQString GWConverter::stringToTQString( const std::string &str ) +{ + return TQString::fromUtf8( str.c_str() ); +} + +TQString GWConverter::stringToTQString( std::string *str ) +{ + if ( !str ) return TQString(); + return TQString::fromUtf8( str->c_str() ); +} + +char* GWConverter::qStringToChar( const TQString &string ) +{ + TQCString str = string.utf8(); + + char* charStr = (char*)soap_malloc( mSoap, str.length() + 1 ); + memcpy( charStr, str, str.length() ); + charStr[ str.length() ] = 0; + + return charStr; +} + +TQDate GWConverter::charToTQDate( const char *str ) +{ + if ( !str ) return TQDate(); // FIXME: Qt::ISODate is probably no good here because it expects yyyy-MM-dd not yyyyMMdd + return TQDate::fromString( TQString::fromUtf8( str ), Qt::ISODate ); +} + +char *GWConverter::qDateTimeToChar( const TQDateTime &dt, + const TQString &timezone ) +{ + return qDateTimeToChar( KPimPrefs::localTimeToUtc( dt, timezone ) ); +} + +char *GWConverter::qDateTimeToChar( const TQDateTime &dt ) +{ + return qStringToChar( dt.toString( "yyyyMMddThhmmZ" ) ); +} + +std::string* GWConverter::qDateTimeToString( const TQDateTime &dt, const TQString &timezone ) +{ + return qDateTimeToString( KPimPrefs::localTimeToUtc( dt, timezone ) ); +} + +std::string* GWConverter::qDateTimeToString( const TQDateTime &dt ) +{ + return qStringToString( dt.toString( "yyyyMMddThhmmZ" ) ); +} + +TQDateTime GWConverter::stringToTQDateTime( const std::string* str ) +{ + TQDateTime dt = TQDateTime::fromString( TQString::fromUtf8( str->c_str() ), Qt::ISODate ); + return dt; +} + +char* GWConverter::qDateToChar( const TQDate &date ) +{ + return qStringToChar( date.toString( "yyyyMMdd" ) ); +} + +std::string* GWConverter::qDateToString( const TQDate &date ) +{ + return qStringToString( date.toString( "yyyyMMdd" ) ); +} + +TQDate GWConverter::stringToTQDate( std::string* str ) +{ + //NB this ISODate may become unnecessary, if GW stops sending in yyyy-mm-dd format again + return TQDate::fromString( TQString::fromLatin1( str->c_str() ), Qt::ISODate ); +} + +TQDateTime GWConverter::charToTQDateTime( const char *str ) +{ + if ( !str ) return TQDateTime(); +// kdDebug() << "charToTQDateTime(): " << str << endl; + // as above re Qt::ISODate + TQDateTime dt = TQDateTime::fromString( TQString::fromUtf8( str ), Qt::ISODate ); +// kdDebug() << " " << dt.toString() << endl; + return dt; +} + +TQDateTime GWConverter::charToTQDateTime( const char *str, + const TQString &timezone ) +{ + if ( !str ) return TQDateTime(); + TQDateTime utc = charToTQDateTime( str ); + return KPimPrefs::utcToLocalTime( utc, timezone ); +} + +bool GWConverter::emailsMatch( const TQString & email1, const TQString & email2 ) +{ + // eg demo3.po1.dom1@dmz1.provo.novell.com == demo3@dmz1.provo.novell.com + if ( email1 == email2 ) + return true; + + TQString shorter, longer; + if ( email1.length() < email2.length() ) + { + shorter = email1; + longer = email2; + } + else + { + shorter = email2; + longer = email1; + } + + TQString shortStem = shorter.section( '@', 0, 0 ); + TQString longStem = longer.section( '@', 0, 0 ); + TQString shortHost = shorter.section( '@', 1, 1 ); + TQString longHost = longer.section( '@', 1, 1 ); + + TQString extension = longStem.right( longStem.length() - shortStem.length() ); + + kdDebug() << "gwconverter::emailsMatch(): " << shorter << " = " << longer << endl; + kdDebug() << "shortStem: " << shortStem << ", longStem: " << longStem << ", extension: " << extension << endl; + + if ( longStem.startsWith( shortStem ) && extension.startsWith( "." ) && ( + shortHost == longHost ) ) + { + kdDebug() << "Looks like a match!" << endl; + return true; + } + return false; +} + |