-rw-r--r-- | libkcal/phoneformat.cpp | 79 | ||||
-rw-r--r-- | libkcal/phoneformat.h | 14 |
2 files changed, 49 insertions, 44 deletions
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index f78730d..fa18683 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp @@ -50,57 +50,57 @@ using namespace KCal; //ARSD silentalarm = 0 // 11 RTYP 225 no /0 dialy/ 1 weekly/ 3 month by date/ 2 month by day(pos)/ yearly // 12 RFRQ // 13 RPOS pos = 4. monday in month // 14 RDYS days: 1 mon/ 2 tue .. 64 sun // 15 REND 0 = no end/ 1 = end // 16 REDT rec end dt //ALSD //ALED //MDAY -class SharpParser : public QObject +class PhoneParser : public QObject { public: - SharpParser( Calendar *calendar ) : mCalendar( calendar ) { + PhoneParser( Calendar *calendar ) : mCalendar( calendar ) { oldCategories = 0; } bool startElement( Calendar *existingCalendar, const QStringList & attList, QString qName ) { int i = 1; bool skip = true; int max = attList.count() -2; while ( i < max ) { if ( !attList[i].isEmpty() ) { skip = false; break; } ++i ; } if ( skip ) return false; - ulong cSum = SharpFormat::getCsum(attList ); + ulong cSum = PhoneFormat::getCsum(attList ); if ( qName == "Event" ) { Event *event; - event = existingCalendar->event( attList[0].toInt() ); + event = existingCalendar->event( attList[0] ); if ( event ) event = (Event*)event->clone(); else event = new Event; - event->setZaurusId( attList[0].toInt() ); - event->setZaurusUid( cSum ); - event->setZaurusStat( -2 ); + // event->setZaurusId( attList[0].toInt() ); + //event->setZaurusUid( cSum ); + //event->setZaurusStat( -2 ); event->setSummary( attList[2] ); event->setLocation( attList[3] ); event->setDescription( attList[4] ); if ( attList[7] == "1" ) { event->setDtStart( QDateTime(fromString( attList[17]+"T000000", false ).date(),QTime(0,0,0 ) )); event->setDtEnd( QDateTime(fromString( attList[18]+"T000000", false ).date(),QTime(0,0,0 ))); event->setFloats( true ); } else { event->setFloats( false ); event->setDtStart( fromString( attList[5] ) ); event->setDtEnd( fromString( attList[6] )); @@ -179,39 +179,39 @@ class SharpParser : public QObject event->addAlarm( alarm ); } alarm->setType( Alarm::Audio ); alarm->setEnabled( true ); int alarmOffset = attList[9].toInt(); alarm->setStartOffset( alarmOffset * -60 ); } mCalendar->addEvent( event); } else if ( qName == "Todo" ) { Todo *todo; - todo = existingCalendar->todo( attList[0].toInt() ); + todo = existingCalendar->todo( attList[0] ); if (todo ) todo = (Todo*)todo->clone(); else todo = new Todo; //CARDID,CATEGORY,ETDY,LTDY,FNDY,MARK,PRTY,TITL,MEM1 // 0 1 2 3 4 5 6 7 8 //1,,,,,1,4,Loch zumachen,"" //3,Privat,20040317T000000,20040318T000000,20040319T000000,0,5,Call bbb,"notes123 bbb gggg ""bb "" " //2,"Familie,Freunde,Holiday",20040318T000000,20040324T000000,20040317T000000,1,2,tod2,notes - todo->setZaurusId( attList[0].toInt() ); - todo->setZaurusUid( cSum ); - todo->setZaurusStat( -2 ); + //todo->setZaurusId( attList[0] ); + //todo->setZaurusUid( cSum ); + //todo->setZaurusStat( -2 ); todo->setSummary( attList[7] ); todo->setDescription( attList[8]); int priority = attList[6].toInt(); if ( priority == 0 ) priority = 3; todo->setPriority( priority ); QString categoryList = attList[1]; todo->setCategories( lookupCategories( categoryList ) ); @@ -314,35 +314,35 @@ class SharpParser : public QObject if ( it == mCategoriesMap.end() ) return id; else return *it; } static void setCategory( const QString &id, const QString &name ) { mCategoriesMap.insert( id, name ); } static QMap<QString,QString> mCategoriesMap; }; -QMap<QString,QString> SharpParser::mCategoriesMap; +QMap<QString,QString> PhoneParser::mCategoriesMap; -SharpFormat::SharpFormat() +PhoneFormat::PhoneFormat() { mCategories = 0; } -SharpFormat::~SharpFormat() +PhoneFormat::~PhoneFormat() { } -ulong SharpFormat::getCsum( const QStringList & attList) +ulong PhoneFormat::getCsum( const QStringList & attList) { int max = attList.count() -1; ulong cSum = 0; int j,k,i; int add; for ( i = 1; i < max ; ++i ) { QString s = attList[i]; if ( ! s.isEmpty() ){ j = s.length(); for ( k = 0; k < j; ++k ) { int mul = k +1; add = s[k].unicode (); @@ -350,25 +350,25 @@ ulong SharpFormat::getCsum( const QStringList & attList) mul = mul * mul; add = add * mul *i*i*i; cSum += add; } } } return cSum; } //extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); #include <stdlib.h> #define DEBUGMODE false -bool SharpFormat::load( Calendar *calendar, Calendar *existngCal ) +bool PhoneFormat::load( Calendar *calendar, Calendar *existngCal ) { GSM_StateMachine s; qDebug(" load "); s.opened = false; s.msg = NULL; s.ConfigNum = 0; static char *cp; static INI_Section *cfg = NULL; cfg=GSM_FindGammuRC(); int i; for (i = 0; i <= MAX_CONFIG_NUM; i++) { @@ -479,25 +479,25 @@ static char *cp; } ts.setDevice( &file ); text = ts.read(); file.close(); status.setText( i18n("Processing todos ...") ); status.raise(); qApp->processEvents(); fromString2Cal( calendar, existngCal, text, "Todo" ); #endif return true; } -int SharpFormat::getNumFromRecord( QString answer, Incidence* inc ) +int PhoneFormat::getNumFromRecord( QString answer, Incidence* inc ) { int retval = -1; QStringList templist; QString tempString; int start = 0; int len = answer.length(); int end = answer.find ("\n",start)+1; bool ok = true; start = end; int ccc = 0; while ( start > 0 ) { templist.clear(); @@ -520,34 +520,34 @@ int SharpFormat::getNumFromRecord( QString answer, Incidence* inc ) if ( tempString.right(1) =="\n" ) tempString = tempString.left( tempString.length()-1); templist.append( tempString ); } ++ccc; if ( ccc == 2 && loopCount < 25 ) { start = 0; bool ok; int newnum = templist[0].toInt( &ok ); if ( ok && newnum > 0) { retval = newnum; - inc->setZaurusId( newnum ); - inc->setZaurusUid( getCsum( templist ) ); - inc->setZaurusStat( -4 ); + //inc->setZaurusId( newnum ); + //inc->setZaurusUid( getCsum( templist ) ); + //inc->setZaurusStat( -4 ); } } } //qDebug("getNumFromRecord returning : %d ", retval); return retval; } -bool SharpFormat::save( Calendar *calendar) +bool PhoneFormat::save( Calendar *calendar) { QLabel status ( i18n("Processing/adding events ..."), 0 ); int w = status.sizeHint().width()+20 ; if ( w < 200 ) w = 200; int h = status.sizeHint().height()+20 ; int dw = QApplication::desktop()->width(); int dh = QApplication::desktop()->height(); status.setCaption(i18n("Writing DTM Data") ); status.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); status.show(); status.raise(); @@ -561,38 +561,38 @@ bool SharpFormat::save( Calendar *calendar) QPtrList<Event> er = calendar->rawEvents(); Event* ev = er.first(); QString fileName = "/tmp/kopitempout"; int i = 0; QString changeString = ePrefix; QString deleteString = ePrefix; bool deleteEnt = false; bool changeEnt = false; QString message = i18n("Processing event # "); int procCount = 0; while ( ev ) { //qDebug("i %d ", ++i); - if ( ev->zaurusStat() != -2 ) { + if ( true /*ev->zaurusStat() != -2*/ ) { status.setText ( message + QString::number ( ++procCount ) ); qApp->processEvents(); QString eString = getEventString( ev ); - if ( ev->zaurusStat() == -3 ) { // delete + if (/* ev->zaurusStat() == -3 */ true) { // delete // deleting empty strings does not work. // we write first and x and then delete the record with the x eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); changeString += eString + "\n"; deleteString += eString + "\n"; deleteEnt = true; changeEnt = true; } - else if ( ev->zaurusId() == -1 ) { // add new + else if ( /*ev->zaurusId() == -1*/true ) { // add new command = "(echo \"" + ePrefix + eString + "\" ) | db2file datebook -w -g -c " + codec+ " > "+ fileName; system ( command.utf8() ); QFile file( fileName ); if (!file.open( IO_ReadOnly ) ) { return false; } QTextStream ts( &file ); ts.setCodec( QTextCodec::codecForName("utf8") ); answer = ts.read(); file.close(); //qDebug("answer \n%s ", answer.latin1()); @@ -647,38 +647,38 @@ bool SharpFormat::save( Calendar *calendar) changeString = tPrefix; deleteString = tPrefix; status.setText ( i18n("Processing todos ...") ); qApp->processEvents(); QPtrList<Todo> tl = calendar->rawTodos(); Todo* to = tl.first(); i = 0; message = i18n("Processing todo # "); procCount = 0; while ( to ) { - if ( to->zaurusStat() != -2 ) { + if ( true /*to->zaurusStat() != -2 */) { status.setText ( message + QString::number ( ++procCount ) ); qApp->processEvents(); QString eString = getTodoString( to ); - if ( to->zaurusStat() == -3 ) { // delete + if ( /*to->zaurusStat() == -3*/true ) { // delete // deleting empty strings does not work. // we write first and x and then delete the record with the x eString = eString.replace( QRegExp(",\"\""),",\"x\"" ); changeString += eString + "\n"; deleteString += eString + "\n"; deleteEnt = true; changeEnt = true; } - else if ( to->zaurusId() == -1 ) { // add new + else if ( true /*to->zaurusId() == -1*/ ) { // add new command = "(echo \"" + tPrefix + eString + "\" ) | db2file todo -w -g -c " + codec+ " > "+ fileName; system ( command.utf8() ); QFile file( fileName ); if (!file.open( IO_ReadOnly ) ) { return false; } QTextStream ts( &file ); ts.setCodec( QTextCodec::codecForName("utf8") ); answer = ts.read(); file.close(); //qDebug("answer \n%s ", answer.latin1()); @@ -725,48 +725,49 @@ bool SharpFormat::save( Calendar *calendar) } QTextStream ts( &file ); ts.setCodec( QTextCodec::codecForName("utf8") ); ts << deleteString; file.close(); command = "db2file todo -d -c " + codec+ " < "+ fileName; system ( command.latin1() ); // qDebug("command %s file :\n%s ", command.latin1(), deleteString.latin1()); } return true; } -QString SharpFormat::dtToString( const QDateTime& dti, bool useTZ ) +QString PhoneFormat::dtToString( const QDateTime& dti, bool useTZ ) { QString datestr; QString timestr; int offset = KGlobal::locale()->localTimeOffset( dti ); QDateTime dt; if (useTZ) dt = dti.addSecs ( -(offset*60)); else dt = dti; if(dt.date().isValid()){ const QDate& date = dt.date(); datestr.sprintf("%04d%02d%02d", date.year(), date.month(), date.day()); } if(dt.time().isValid()){ const QTime& time = dt.time(); timestr.sprintf("T%02d%02d%02d", time.hour(), time.minute(), time.second()); } return datestr + timestr; } -QString SharpFormat::getEventString( Event* event ) +QString PhoneFormat::getEventString( Event* event ) { +#if 0 QStringList list; list.append( QString::number(event->zaurusId() ) ); list.append( event->categories().join(",") ); if ( !event->summary().isEmpty() ) list.append( event->summary() ); else list.append("" ); if ( !event->location().isEmpty() ) list.append( event->location() ); else list.append("" ); if ( !event->description().isEmpty() ) @@ -908,29 +909,31 @@ QString SharpFormat::getEventString( Event* event ) for(QStringList::Iterator it=list.begin(); it!=list.end(); ++it){ QString& s = (*it); s.replace(QRegExp("\""), "\"\""); if(s.contains(QRegExp("[,\"\r\n]")) || s.stripWhiteSpace() != s){ s.prepend('\"'); s.append('\"'); } else if(s.isEmpty() && !s.isNull()){ s = "\"\""; } } return list.join(","); - +#endif + return QString(); } -QString SharpFormat::getTodoString( Todo* todo ) +QString PhoneFormat::getTodoString( Todo* todo ) { +#if 0 QStringList list; list.append( QString::number( todo->zaurusId() ) ); list.append( todo->categories().join(",") ); if ( todo->hasStartDate() ) { list.append( dtToString( todo->dtStart()) ); } else list.append( QString() ); if ( todo->hasDueDate() ) { QTime tim; if ( todo->doesFloat()) { @@ -960,26 +963,28 @@ QString SharpFormat::getTodoString( Todo* todo ) for(QStringList::Iterator it=list.begin(); it!=list.end(); ++it){ QString& s = (*it); s.replace(QRegExp("\""), "\"\""); if(s.contains(QRegExp("[,\"\r\n]")) || s.stripWhiteSpace() != s){ s.prepend('\"'); s.append('\"'); } else if(s.isEmpty() && !s.isNull()){ s = "\"\""; } } return list.join(","); +#endif + return QString(); } -QString SharpFormat::getPart( const QString & text, bool &ok, int &start ) +QString PhoneFormat::getPart( const QString & text, bool &ok, int &start ) { //qDebug("start %d ", start); QString retval =""; if ( text.at(start) == '"' ) { if ( text.mid( start,2) == "\"\"" && !( text.mid( start+2,1) == "\"")) { start = start +2; if ( text.mid( start,1) == "," ) { start += 1; } retval = ""; if ( text.mid( start,1) == "\n" ) { @@ -1019,39 +1024,39 @@ QString SharpFormat::getPart( const QString & text, bool &ok, int &start ) start = 0; ok = false; return "0"; } // qDebug(" nl < kom ", nl); retval = text.mid( start, nl-start); ok = false; start = nl+1; return retval; } } } -bool SharpFormat::fromString( Calendar *calendar, const QString & text) +bool PhoneFormat::fromString( Calendar *calendar, const QString & text) { return false; } -bool SharpFormat::fromString2Cal( Calendar *calendar,Calendar *existingCalendar, GSM_StateMachine* s, const QString & type) +bool PhoneFormat::fromString2Cal( Calendar *calendar,Calendar *existingCalendar, GSM_StateMachine* s, const QString & type) { GSM_Phone_Functions *Phone; GSM_CalendarEntry note; GSM_CalendarEntry* Note; bool refresh = true; Phone=s->Phone.Functions; bool gshutdown = false; - SharpParser handler( calendar ); + PhoneParser handler( calendar ); //handler.setCategoriesList( mCategories ); QStringList templist; QString tempString; int start = 0; int error; int ccc = 0; while (!gshutdown && ccc++ < 10 ) { QString CARDID,CATEGORY,DSRP,PLCE,MEM1,TIM1,TIM2,ADAY,ARON,ARMN,ARSD,RTYP,RFRQ,RPOS,RDYS,REND,REDT,ALSD,ALED,MDAY; templist.clear(); qDebug("count %d ", ccc); error=Phone->GetNextCalendar(s,¬e,refresh); if (error == ERR_EMPTY) break; @@ -1321,39 +1326,39 @@ typedef struct { #if 0 // qDebug("test %s ", text.latin1()); QStringList templist; QString tempString; int start = 0; int len = text.length(); int end = text.find ("\n",start)+1; bool ok = true; start = end; - SharpParser handler( calendar ); + PhoneParser handler( calendar ); handler.setCategoriesList( mCategories ); while ( start > 0 ) { templist.clear(); ok = true; while ( ok ) { tempString = getPart( text, ok, start ); if ( start >= len || start == 0 ) { start = 0; ok = false; } if ( tempString.right(1) =="\n" ) tempString = tempString.left( tempString.length()-1); //if ( ok ) templist.append( tempString ); //qDebug("%d ---%s---", templist.count(),tempString.latin1() ); } handler.startElement( existingCalendar, templist, type ); } #endif return false; } -QString SharpFormat::toString( Calendar * ) +QString PhoneFormat::toString( Calendar * ) { return QString::null; } diff --git a/libkcal/phoneformat.h b/libkcal/phoneformat.h index f4cb52c..4ddf6f0 100644 --- a/libkcal/phoneformat.h +++ b/libkcal/phoneformat.h @@ -9,47 +9,47 @@ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef SHARPFORMAT_H -#define SHARPAFORMAT_H +#ifndef PHONEFORMAT_H +#define PHONEFORMAT_H #include <qstring.h> #include "scheduler.h" #include "calformat.h" extern "C" { -#include "gammu.h" +#include "../gammu/emb/common/gammu.h" } namespace KCal { /** - This class implements the calendar format used by Sharp. + This class implements the calendar format used by Phone. */ -class SharpFormat : public QObject { +class PhoneFormat : public QObject { public: /** Create new iCalendar format. */ - SharpFormat(); - virtual ~SharpFormat(); + PhoneFormat(); + virtual ~PhoneFormat(); bool load( Calendar * ,Calendar *); bool save( Calendar * ); void setCategoriesList ( QStringList * cat ){ mCategories = cat; } bool fromString2Cal( Calendar *, Calendar *, GSM_StateMachine* s , const QString & ); bool fromString( Calendar *, const QString & ); QString toString( Calendar * ); static ulong getCsum( const QStringList & ); private: QString getEventString( Event* ); QString getTodoString( Todo* ); |