• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdepim
  • Sitemap
  • Contact Us
 

kmobiletools

calendar_jobs.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002    Copyright (C) 2007
00003    by Marco Gulino <marco@kmobiletools.org>
00004 
00005    This program is free software; you can redistribute it and/or modify
00006    it under the terms of the GNU General Public License as published by
00007    the Free Software Foundation; either version 2 of the License, or
00008    (at your option) any later version.
00009 
00010    This program is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013    GNU General Public License for more details.
00014 
00015    You should have received a copy of the GNU General Public License
00016    along with this program; if not, write to the
00017    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018    Boston, MA 02110-1301, USA.
00019  ***************************************************************************/
00020 #include "calendar_jobs.h"
00021 #include "engine.h"
00022 #include "kmobiletoolsat_engine.h"
00023 
00024 #include <qregexp.h>
00025 #include <qstring.h>
00026 #include <qdatetime.h>
00027 #include <libkcal/alarm.h>
00028 #include <kdeversion.h>
00029 
00030 FetchCalendar::FetchCalendar(KMobileTools::Job *pjob, KMobileTools::SerialManager *device, kmobiletoolsAT_engine* parent)
00031     : kmobiletoolsATJob(pjob, device, parent)
00032 {
00033     p_calendar=engine->engineData()->calendar();
00034     p_calendar->clear();
00035 }
00036 
00037 void FetchCalendar::run()
00038 {
00039     engine->suspendStatusJobs(true );
00040     if(engine->getATAbilities().isMotorola())
00041     {
00042         fetchMotorolaCalendar();
00043         return;
00044     }
00045 }
00046 
00047 void FetchCalendar::fetchMotorolaCalendar()
00048 {
00049     kDebug() <<"void FetchCalendar::fetchMotorolaCalendar()";
00050     QString buffer;
00051     QRegExp regexp;
00052     buffer=p_device->sendATCommand(this,  "AT+MDBL=1\r" );
00053     if(KMobileTools::SerialManager::ATError(buffer)) return;
00054     buffer=p_device->sendATCommand(this, "AT+MDBR=?\r" );
00055     if(KMobileTools::SerialManager::ATError(buffer)) { p_device->sendATCommand(this,  "AT+MDBL=0\r" ); return; }
00056     buffer=formatBuffer(buffer).grep("MDBR").first();
00057     regexp.setPattern( "^[+]MDBR:[\\s]*([\\d]*),.*");
00058     regexp.search(buffer);
00059     int maxcal=regexp.cap(1).toInt();
00060     kDebug() <<"Max number of calendar entries:" << maxcal;
00061     QStringList entries;
00062     for(int i=0; i<maxcal; i+=10)
00063     {
00064         buffer=p_device->sendATCommand(this,  QString("AT+MDBR=%1,%2\r")
00065                 .arg(i).arg( (i+10 < maxcal) ? (i+10) : (maxcal ) )
00066                 , 200 );
00067         entries+= formatBuffer(buffer).grep("MDBR");
00068     }
00069     QStringList::Iterator it;
00070     int index; QString text; bool timed; bool enabled;
00071     KDateTime startDT, alDT; int duration, repeat;
00072     QDate tempDate; int tempyear, tempmonth, tempday;
00073     for(it=entries.begin(); it!=entries.end(); ++it)
00074     {
00075         regexp.setPattern("^[+]MDBR:[\\s]*([\\d]),(\"[^\"]*[^,]*|[\\dA-F]*),([\\d]*),([\\d]*)");
00076         regexp.search(*it);
00077         index=regexp.cap(1).toInt();
00078         text=decodeString(regexp.cap(2));
00079         timed=(bool) regexp.cap(3).toInt();
00080         enabled=(bool) regexp.cap(4).toInt();
00081         kDebug() <<"Index=" << index <<"|| Text=" << text <<"|| Timed=" << timed <<"|| Enabled=" << enabled <<"||end";
00082         buffer=(*it).replace(regexp.cap(0), "");
00083         regexp.setPattern(",\"([\\d:]*)\",\"([\\d-]*)\",([\\d]*),\"([\\d:]*)\",\"([\\d-]*)\",([\\d]*)");
00084         regexp.search(buffer);
00085         startDT.setTime( QTime::fromString(regexp.cap(1) ) );
00086         alDT.setTime( QTime::fromString(regexp.cap(4) ) );
00087         repeat=regexp.cap(6).toInt();
00088         duration=regexp.cap(3).toInt();
00089 
00090         buffer=regexp.cap(2);
00091         tempyear=buffer.section('-',2,2).toInt();
00092         tempyear= (tempyear < 100) ? (tempyear+2000) : tempyear;
00093         tempmonth=buffer.section('-',0,0).toInt();
00094         tempday=buffer.section('-',1,1).toInt();
00095         tempDate.setYMD( tempyear, tempmonth, tempday );
00096         startDT.setDate(tempDate);
00097         kDebug() <<"Setdate args for" << buffer <<":" << tempyear <<"," << tempmonth <<"," << tempday;
00098 
00099         buffer=regexp.cap(5);
00100         tempyear=buffer.section('-',2,2).toInt();
00101         tempyear= (tempyear < 100) ? (tempyear+2000) : tempyear;
00102         tempmonth=buffer.section('-',0,0).toInt();
00103         tempday=buffer.section('-',1,1).toInt();
00104         tempDate.setYMD( tempyear, tempmonth, tempday );
00105         alDT.setDate(tempDate);
00106         kDebug() <<"Setdate args for" << buffer <<":" << tempyear <<"," << tempmonth <<"," << tempday;
00107 
00108         kDebug() <<"Start time=" << startDT.time() <<"|| Start Date="
00109                 << startDT.date() << "|| Duration="
00110                 << duration << "|| Alarm time="
00111                 << alDT.time() << "|| Alarm date="
00112                 << alDT.date() << "|| Repeat="
00113                 << repeat << "|| End\n";
00114         KCal::Event *event=new KCal::Event();
00115         if( startDT.isValid () &&  duration!=1440 ) event->setFloats(false); else event->setFloats(true);
00116         event->setDtStart(startDT);
00117         event->setDuration( duration*60);
00118 #if KDE_IS_VERSION( 3, 5, 0 )
00119         switch( repeat ){
00120             case 1:
00121                 event->recurrence ()->setDaily(1);
00122                 break;
00123             case 2:
00124                 event->recurrence()->setWeekly(1);
00125                 break;
00126             case 3:
00127                 event->recurrence()->setMonthly(1);
00128                 break;
00129             case 4:
00130                 event->recurrence()->setWeekly(4);
00131                 break;
00132             case 5:
00133                 event->recurrence()->setYearly(1);
00134                 break;
00135             default:
00136                 event->recurrence()->clear();
00137         }
00138 #else
00139         switch( repeat ){
00140             case 1:
00141                 event->recurrence ()->setDaily(1,0);
00142                 break;
00143             case 2:
00144                 event->recurrence()->setWeekly(1,0,0,0);
00145                 break;
00146             case 3:
00147                 event->recurrence()->setMonthly(1,0,0);
00148                 break;
00149             case 4:
00150                 event->recurrence()->setWeekly(4,0,0,0);
00151                 break;
00152             case 5:
00153                 event->recurrence()->setYearly(1,0,0);
00154                 break;
00155         //default:
00156         // event->recurrence()->clear();
00157         }
00158 #endif
00159         event->setDescription(text);
00160         if(enabled)
00161         {
00162             KCal::Alarm *alarm=event->newAlarm();
00163 //             if( alDT.isValid () ) alarm->setFloats(false); else alarm->setFloats(true);
00164             alarm->setText(text);
00165             alarm->setDisplayAlarm(text);
00166             alarm->setTime(alDT);
00167             alarm->setStartOffset(KCal::Duration(startDT, alDT) );
00168             alarm->setType(KCal::Alarm::Display);
00169             alarm->setEnabled(true);
00170 //             event->addAlarm(alarm);
00171         }
00172         p_calendar->append(event);
00173     }
00174     p_calendar->dump();
00175     p_device->sendATCommand(this,  "AT+MDBL=0\r", 100 );
00176 }
00177 
00178 #include "calendar_jobs.moc"

kmobiletools

Skip menu "kmobiletools"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdepim

Skip menu "kdepim"
  • akonadi
  •   clients
  •   kabc
  •   kcal
  •   kcm
  • akregator
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt
  • kdgantt1
  • kjots
  • kleopatra
  • kmail
  • kmobiletools
  • knode
  • knotes
  • kontact
  • kontactinterfaces
  • korganizer
  •   korgac
  • kpilot
  • ktimetracker
  • libkdepim
  • libkholidays
  • libkleo
  • libkpgp
  • maildir
Generated for kdepim by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal