kitchensync
helper.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <config.h>
00023
00024 #include <kstandarddirs.h>
00025
00026 #include "helper.h"
00027
00028 using namespace OpieHelper;
00029
00030 Base::Base( CategoryEdit* edit,
00031 KSync::KonnectorUIDHelper* helper,
00032 const QString &tz,
00033 Device* dev )
00034 {
00035 m_edit = edit;
00036 m_helper = helper;
00037 m_tz = tz;
00038 m_device = dev;
00039 }
00040 Base::~Base()
00041 {
00042
00043 }
00044 QDateTime Base::fromUTC( time_t time )
00045 {
00046 struct tm *lt;
00047
00048
00049 char* ptrTz = getenv( "TZ");
00050 QString real_TZ = ptrTz ? QString::fromLocal8Bit( ptrTz ) : QString::null;
00051
00052 if (!m_tz.isEmpty() )
00053 setenv( "TZ", m_tz.local8Bit(), true );
00054
00055 #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64)
00056 _tzset();
00057 #else
00058 tzset();
00059 #endif
00060 lt = localtime( &time );
00061 QDateTime dt;
00062 dt.setDate( QDate( lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday ) );
00063 dt.setTime( QTime( lt->tm_hour, lt->tm_min, lt->tm_sec ) );
00064
00065 if (!m_tz.isEmpty() ) {
00066 unsetenv("TZ");
00067 if (!real_TZ.isEmpty() )
00068 setenv("TZ", real_TZ.local8Bit(), true );
00069 }
00070
00071 return dt;
00072 }
00073 time_t Base::toUTC( const QDateTime& dt )
00074 {
00075 time_t tmp;
00076 struct tm *lt;
00077
00078
00079 char* ptrTz = getenv( "TZ");
00080 QString real_TZ = ptrTz ? QString::fromLocal8Bit( getenv("TZ") ) : QString::null;
00081
00082 if ( !m_tz.isEmpty() )
00083 setenv( "TZ", m_tz.local8Bit(), true );
00084
00085 #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64)
00086 _tzset();
00087 #else
00088 tzset();
00089 #endif
00090
00091
00092 tmp = time( 0 );
00093 lt = localtime( &tmp );
00094
00095 lt->tm_sec = dt.time().second();
00096 lt->tm_min = dt.time().minute();
00097 lt->tm_hour = dt.time().hour();
00098 lt->tm_mday = dt.date().day();
00099 lt->tm_mon = dt.date().month() - 1;
00100 lt->tm_year = dt.date().year() - 1900;
00101
00102
00103 lt->tm_wday = -1;
00104 lt->tm_yday = -1;
00105
00106 lt->tm_isdst = -1;
00107
00108 tmp = mktime( lt );
00109
00110 if (!m_tz.isEmpty() ) {
00111 unsetenv("TZ");
00112 if (!real_TZ.isEmpty() )
00113 setenv("TZ", real_TZ.local8Bit(), true );
00114 }
00115 return tmp;
00116 }
00117
00118
00119 KTempFile* Base::file() {
00120 KTempFile* fi = new KTempFile( locateLocal("tmp", "opie-konnector"), "new");
00121 return fi;
00122 }
00123 QString Base::categoriesToNumber( const QStringList &list, const QString &app )
00124 {
00125 startover:
00126 QStringList dummy;
00127 QValueList<OpieCategories>::ConstIterator catIt;
00128 QValueList<OpieCategories> categories = m_edit->categories();
00129 bool found = false;
00130 for ( QStringList::ConstIterator listIt = list.begin(); listIt != list.end(); ++listIt ) {
00131
00132 if ( (*listIt).isEmpty() ) continue;
00133
00134 found = false;
00135 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
00136
00137
00138
00139
00140 if ( (*catIt).name() == (*listIt) && !dummy.contains(( *catIt).id() ) ) {
00141 found= true;
00142 dummy << (*catIt).id();
00143 }
00144 }
00145
00146
00147
00148
00149
00150
00151 if ( !found && !(*listIt).isEmpty() ){
00152 m_edit->addCategory( app, (*listIt) );
00153 goto startover;
00154 }
00155 }
00156
00157 return dummy.join(";");
00158 }
00159 QString Base::konnectorId( const QString &appName, const QString &uid )
00160 {
00161 QString id;
00162 QString id2;
00163
00164 if ( uid.startsWith( "Konnector-" ) ) {
00165 id2 = uid.mid( 10 );
00166 }else if ( m_helper) {
00167 id = m_helper->konnectorId( appName, uid );
00168
00169 if (id.isEmpty() ) {
00170 id2 = QString::number( newId() );
00171 id = QString::fromLatin1("Konnector-") + id2;
00172 }else if ( id.startsWith( "Konnector-" ) ) {
00173 id2 = id.mid( 10 );
00174 }
00175 m_kde2opie.append( Kontainer( id, uid ) );
00176 }
00177 return id2;
00178 }
00179
00180
00181
00182
00183
00184
00185 QString Base::kdeId( const QString &appName, const QString &_uid )
00186 {
00187 QString uid = _uid;
00188 if (_uid.stripWhiteSpace() == QString::fromLatin1("0") ) {
00189 uid = QString::number( newId() );
00190 }
00191
00192 QString ret;
00193 if ( !m_helper )
00194 ret = QString::fromLatin1("Konnector-") + uid;
00195
00196 else
00197 ret = m_helper->kdeId( appName, "Konnector-"+uid, "Konnector-"+uid);
00198
00199 return ret;
00200 }
00201
00202
00203 int Base::newId()
00204 {
00205 static QMap<int, bool> ids;
00206 int id = -1 * (int) ::time(NULL );
00207 while ( ids.contains( id ) ){
00208 id += -1;
00209 if ( id > 0 )
00210 id = -1;
00211 }
00212 ids.insert( id, true );
00213 return id;
00214 }
00215 const Device* Base::device() {
00216 return m_device;
00217 }
00218
00224 QString Base::appendText( const QString& append, const QString& def )
00225 {
00226 if ( append != def )
00227 return append;
00228
00229 return QString::null;
00230 }
00231
00232
00233
00234
00235 QString OpieHelper::escape( const QString& plain )
00236 {
00237 QString rich;
00238
00239 for ( int i = 0; i < int(plain.length()); ++i ) {
00240 if ( plain[i] == '<' )
00241 rich +="<";
00242 else if ( plain[i] == '>' )
00243 rich +=">";
00244 else if ( plain[i] == '&' )
00245 rich +="&";
00246 else if ( plain[i] == '\"' )
00247 rich += """;
00248 else
00249 rich += plain[i];
00250 }
00251
00252 return rich;
00253 }
|