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