konsolekalendar.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <stdio.h>
00029 #include <stdlib.h>
00030 #include <iostream>
00031
00032 #include <qdatetime.h>
00033 #include <qfile.h>
00034 #include <qtextstream.h>
00035
00036 #include <kdebug.h>
00037 #include <klocale.h>
00038 #include <kstandarddirs.h>
00039
00040 #include <libkcal/calendarlocal.h>
00041 #include <libkcal/resourcecalendar.h>
00042 #include <libkcal/calendarresources.h>
00043 #include <libkcal/calendar.h>
00044 #include <libkcal/event.h>
00045 #include <libkcal/htmlexport.h>
00046
00047 #include "konsolekalendar.h"
00048 #include "konsolekalendaradd.h"
00049 #include "konsolekalendarchange.h"
00050 #include "konsolekalendardelete.h"
00051 #include "konsolekalendarexports.h"
00052
00053 using namespace KCal;
00054 using namespace std;
00055
00056 KonsoleKalendar::KonsoleKalendar(KonsoleKalendarVariables *variables)
00057 {
00058 m_variables = variables;
00059
00060 }
00061
00062 KonsoleKalendar::~KonsoleKalendar()
00063 {
00064 }
00065
00066 bool KonsoleKalendar::importCalendar()
00067 {
00068 KonsoleKalendarAdd add( m_variables );
00069
00070 kdDebug() << "konsolecalendar.cpp::importCalendar() | importing now!"
00071 << endl;
00072 return( add.addImportedCalendar() );
00073 }
00074
00075 bool KonsoleKalendar::createCalendar()
00076 {
00077 bool status = false;
00078 CalendarLocal newCalendar;
00079
00080 if ( m_variables->isDryRun() ) {
00081 cout << i18n("Create Calendar <Dry Run>: %1").
00082 arg( m_variables->getCalendarFile() ).local8Bit()
00083 << endl;
00084 } else {
00085 kdDebug() << "konsolekalendar.cpp::createCalendar() | "
00086 << "Creating calendar file: "
00087 << m_variables->getCalendarFile().local8Bit()
00088 << endl;
00089
00090 if ( m_variables->isVerbose() ) {
00091 cout << i18n("Create Calendar <Verbose>: %1").
00092 arg( m_variables->getCalendarFile() ).local8Bit()
00093 << endl;
00094 }
00095
00096 if ( newCalendar.save( m_variables->getCalendarFile() ) ) {
00097 newCalendar.close();
00098 status = true;
00099 }
00100 }
00101 return status;
00102 }
00103
00104 bool KonsoleKalendar::showInstance()
00105 {
00106 bool status = true;
00107 QFile f;
00108 QString title;
00109 Event::List *eventList;
00110 Event *event;
00111
00112 if ( m_variables->isDryRun() ) {
00113 cout << i18n("View Events <Dry Run>:").local8Bit()
00114 << endl;
00115 printSpecs();
00116 } else {
00117
00118 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00119 << "open export file"
00120 << endl;
00121
00122 if ( m_variables->isExportFile() ) {
00123 f.setName( m_variables->getExportFile() );
00124 if ( !f.open( IO_WriteOnly ) ) {
00125 status = false;
00126 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00127 << "unable to open export file "
00128 << m_variables->getExportFile()
00129 << endl;
00130 }
00131 } else {
00132 f.open( IO_WriteOnly, stdout );
00133 }
00134
00135 if ( status ) {
00136 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00137 << "opened successful"
00138 << endl;
00139
00140 if ( m_variables->isVerbose() ) {
00141 cout << i18n("View Event <Verbose>:").local8Bit()
00142 << endl;
00143 printSpecs();
00144 }
00145
00146 QTextStream ts( &f );
00147
00148 if ( m_variables->getExportType() != HTML ) {
00149
00150 if ( m_variables->getAll() ) {
00151 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00152 << "view all events sorted list"
00153 << endl;
00154
00155 Event::List sortedList = allEventsSorted();
00156
00157 QDate dt, firstdate, lastdate;
00158 firstdate = sortedList.first()->dtStart().date();
00159 lastdate = sortedList.last()->dtStart().date();
00160 for ( dt=firstdate;
00161 dt<=lastdate && status != false;
00162 dt=dt.addDays(1) ) {
00163 Event::List events = m_variables->getCalendar()->events( dt, true );
00164 status = printEventList( &ts, &events, dt );
00165 }
00166
00167 } else if ( m_variables->isUID() ) {
00168 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00169 << "view events by uid list"
00170 << endl;
00171
00172 event = m_variables->getCalendar()->event( m_variables->getUID() );
00173
00174
00175 status = printEvent ( &ts, event, event->dtStart().date() );
00176
00177 } else if ( m_variables->isNext() ) {
00178 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00179 << "Show next activity in calendar"
00180 << endl;
00181
00182 QDateTime datetime = m_variables->getStartDateTime();
00183 datetime = datetime.addDays( 720 );
00184
00185 QDate dt;
00186 for ( dt=m_variables->getStartDateTime().date();
00187 dt<=datetime.date() && status != false;
00188 dt=dt.addDays(1) ) {
00189 Event::List events = m_variables->getCalendar()->events( dt, true );
00190 status = printEventList( &ts, &events, dt );
00191
00192
00193 if ( events.count() ) {
00194 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00195 << "Next event"
00196 << endl;
00197 return true;
00198 }
00199 }
00200 } else {
00201 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00202 << "view raw events within date range list"
00203 << endl;
00204
00205 QDate dt;
00206 for ( dt=m_variables->getStartDateTime().date();
00207 dt<=m_variables->getEndDateTime().date() && status != false;
00208 dt=dt.addDays(1) ) {
00209 Event::List events = m_variables->getCalendar()->events( dt, true );
00210 status = printEventList( &ts, &events, dt );
00211 }
00212 }
00213 } else {
00214 QDate firstdate, lastdate;
00215 if ( m_variables->getAll() ) {
00216
00217
00218 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00219 << "HTML view all events sorted list"
00220 << endl;
00221 eventList =
00222 new Event::List ( m_variables->getCalendar()->rawEvents() );
00223 firstdate = eventList->first()->dtStart().date();
00224 lastdate = eventList->last()->dtStart().date();
00225 delete eventList;
00226 } else if ( m_variables->isUID() ) {
00227
00228 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00229 << "HTML view events by uid list" << endl;
00230 cout << i18n("Sorry, export to HTML by UID is not supported yet")
00231 .local8Bit() << endl;
00232 return( false );
00233 } else {
00234 kdDebug() << "konsolekalendar.cpp::showInstance() | "
00235 << "HTML view raw events within date range list"
00236 << endl;
00237 firstdate = m_variables->getStartDateTime().date();
00238 lastdate = m_variables->getEndDateTime().date();
00239 }
00240
00241 KCal::HtmlExport *Export;
00242 if ( !m_variables->isCalendarResources() ) {
00243 Export = new HtmlExport( m_variables->getCalendar() );
00244 } else {
00245 Export = new HtmlExport( m_variables->getCalendarResources() );
00246 }
00247
00248 title = "Appointments for " + firstdate.toString(Qt::TextDate);
00249 if ( firstdate != lastdate ) {
00250 title += " - " + lastdate.toString(Qt::TextDate);
00251 }
00252 Export->setTitle( title );
00253 Export->setEmail( "" );
00254 Export->setFullName( "" );
00255
00256 Export->setCredit( "KonsoleKalendar",
00257 "http://pim.kde.org/components/konsolekalendar.php");
00258
00259 Export->setMonthViewEnabled( false );
00260 Export->setEventsEnabled( true );
00261 Export->setCategoriesEventEnabled( true );
00262 Export->setAttendeesEventEnabled( true );
00263 Export->setExcludePrivateEventEnabled( true );
00264 Export->setExcludeConfidentialEventEnabled( true );
00265
00266 title = "To-Do List for " + firstdate.toString(Qt::TextDate);
00267 if ( firstdate != lastdate ) {
00268 title += " - " + lastdate.toString(Qt::TextDate);
00269 }
00270 Export->setTitleTodo( title );
00271 Export->setTodosEnabled( false );
00272 Export->setCategoriesTodoEnabled( false );
00273 Export->setAttendeesTodoEnabled( false );
00274 Export->setExcludePrivateTodoEnabled( false );
00275 Export->setExcludeConfidentialTodoEnabled( false );
00276 Export->setDueDateEnabled( false );
00277
00278 Export->setDateRange( firstdate, lastdate );
00279
00280 status = Export->save( &ts );
00281 }
00282 f.close();
00283 }
00284 }
00285 return status;
00286 }
00287
00288 bool KonsoleKalendar::printEventList( QTextStream *ts,
00289 Event::List *eventList, QDate date )
00290 {
00291 bool status = true;
00292
00293 if ( eventList->count() ) {
00294 Event *singleEvent;
00295 Event::List::ConstIterator it;
00296
00297 for ( it = eventList->begin();
00298 it != eventList->end() && status != false;
00299 ++it ) {
00300 singleEvent = *it;
00301
00302 status = printEvent( ts, singleEvent, date );
00303 }
00304 }
00305 return( status );
00306 }
00307
00308 bool KonsoleKalendar::printEvent( QTextStream *ts, Event *event, QDate dt )
00309 {
00310 bool status = false;
00311 bool sameDay = true;
00312 KonsoleKalendarExports exports;
00313
00314 if ( event )
00315 {
00316 switch ( m_variables->getExportType() ) {
00317
00318 case CSV:
00319 kdDebug() << "konsolekalendar.cpp::printEvent() | "
00320 << "CSV export"
00321 << endl;
00322 status = exports.exportAsCSV( ts, event, dt );
00323 break;
00324
00325 case TEXT_SHORT:
00326 kdDebug()
00327 << "konsolekalendar.cpp::printEvent() | "
00328 << "TEXT-SHORT export"
00329 << endl;
00330 if ( dt.daysTo( m_saveDate ) ) {
00331 sameDay = false;
00332 m_saveDate = dt;
00333 }
00334 status = exports.exportAsTxtShort( ts, event, dt, sameDay );
00335 break;
00336
00337 case HTML:
00338
00339 break;
00340
00341 default:
00342 kdDebug() << "konsolekalendar.cpp::printEvent() | "
00343 << "TEXT export"
00344 << endl;
00345 status = exports.exportAsTxt( ts, event, dt );
00346 break;
00347 }
00348 }
00349 return( status );
00350 }
00351
00352 bool KonsoleKalendar::addEvent()
00353 {
00354 kdDebug() << "konsolecalendar.cpp::addEvent() | "
00355 << "Create Adding"
00356 << endl;
00357 KonsoleKalendarAdd add( m_variables );
00358 kdDebug() << "konsolecalendar.cpp::addEvent() | "
00359 << "Adding Event now!"
00360 << endl;
00361 return( add.addEvent() );
00362 }
00363
00364 bool KonsoleKalendar::changeEvent()
00365 {
00366
00367 kdDebug() << "konsolecalendar.cpp::changeEvent() | "
00368 << "Create Changing"
00369 << endl;
00370 KonsoleKalendarChange change( m_variables );
00371 kdDebug() << "konsolecalendar.cpp::changeEvent() | "
00372 << "Changing Event now!"
00373 << endl;
00374 return( change.changeEvent() );
00375 }
00376
00377 bool KonsoleKalendar::deleteEvent()
00378 {
00379 kdDebug() << "konsolecalendar.cpp::deleteEvent() | "
00380 << "Create Deleting"
00381 << endl;
00382 KonsoleKalendarDelete del( m_variables );
00383 kdDebug() << "konsolecalendar.cpp::deleteEvent() | "
00384 << "Deleting Event now!"
00385 << endl;
00386 return( del.deleteEvent() );
00387 }
00388
00389 bool KonsoleKalendar::isEvent( QDateTime startdate,
00390 QDateTime enddate, QString summary )
00391 {
00392
00393
00394 Event *event;
00395 Event::List::ConstIterator it;
00396
00397 bool found = false;
00398
00399 Event::List eventList( m_variables->getCalendar()->
00400 rawEventsForDate( startdate.date(), true ));
00401 for ( it = eventList.begin(); it != eventList.end(); ++it ) {
00402 event = *it;
00403 if ( event->dtEnd()==enddate && event->summary()==summary ) {
00404 found = true;
00405 break;
00406 }
00407 }
00408 return found;
00409 }
00410
00411 Event::List KonsoleKalendar::allEventsSorted()
00412 {
00413 Event::List *eventList =
00414 new Event::List ( m_variables->getCalendar()->rawEvents( ) );
00415
00416
00417 Event::List::ConstIterator it;
00418 Event::List eventListSorted;
00419 Event::List::Iterator sortIt;
00420 for ( it = eventList->begin(); it != eventList->end(); ++it ) {
00421 sortIt = eventListSorted.begin();
00422 while ( sortIt != eventListSorted.end() &&
00423 (*it)->dtStart() >= (*sortIt)->dtStart() ) {
00424 ++sortIt;
00425 }
00426 eventListSorted.insert( sortIt, *it );
00427 }
00428 return ( eventListSorted );
00429 }
00430
00431 void KonsoleKalendar::printSpecs()
00432 {
00433 cout << i18n(" What: %1").
00434 arg( m_variables->getSummary() ).local8Bit()
00435 << endl;
00436
00437 cout << i18n(" Begin: %1").
00438 arg( m_variables->getStartDateTime().toString(Qt::TextDate) ).local8Bit()
00439 << endl;
00440
00441 cout << i18n(" End: %1").
00442 arg( m_variables->getEndDateTime().toString(Qt::TextDate) ).local8Bit()
00443 << endl;
00444
00445 if ( m_variables->getFloating() == true ) {
00446 cout << i18n(" No Time Associated with Event").local8Bit()
00447 << endl;
00448 }
00449
00450 cout << i18n(" Desc: %1").
00451 arg( m_variables->getDescription() ).local8Bit()
00452 << endl;
00453
00454 cout << i18n(" Location: %1").
00455 arg( m_variables->getLocation() ).local8Bit()
00456 << endl;
00457 }
This file is part of the documentation for konsolekalendar Library Version 3.3.2.