summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-07-03 16:49:55 (UTC)
committer zautrix <zautrix>2004-07-03 16:49:55 (UTC)
commit1da48d95d970233f0d1ea9a7fba5c98cfcf24798 (patch) (unidiff)
treeae690b33cbe50291a610842e24de33f9d766f2f2
parente3b89230f065c48c84b48c88edb6eb088374c487 (diff)
downloadkdepimpi-1da48d95d970233f0d1ea9a7fba5c98cfcf24798.zip
kdepimpi-1da48d95d970233f0d1ea9a7fba5c98cfcf24798.tar.gz
kdepimpi-1da48d95d970233f0d1ea9a7fba5c98cfcf24798.tar.bz2
Alarm Bugfix. Added connection to KM. Cleaned up main.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp31
-rw-r--r--korganizer/calendarview.h4
-rw-r--r--korganizer/koeventviewer.cpp34
-rw-r--r--korganizer/koeventviewer.h1
-rw-r--r--korganizer/main.cpp26
5 files changed, 67 insertions, 29 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index bf98ad4..c3c3d47 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -446,24 +446,26 @@ void CalendarView::init()
446 mDateFrame->setCaption( i18n( "Pick a date to display")); 446 mDateFrame->setCaption( i18n( "Pick a date to display"));
447 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 447 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
448 448
449 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 449 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
450 450
451 mEventEditor = mDialogManager->getEventEditor(); 451 mEventEditor = mDialogManager->getEventEditor();
452 mTodoEditor = mDialogManager->getTodoEditor(); 452 mTodoEditor = mDialogManager->getTodoEditor();
453 453
454 mFlagEditDescription = false; 454 mFlagEditDescription = false;
455 455
456 mSuspendTimer = new QTimer( this ); 456 mSuspendTimer = new QTimer( this );
457 mAlarmTimer = new QTimer( this ); 457 mAlarmTimer = new QTimer( this );
458 mRecheckAlarmTimer = new QTimer( this );
459 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
458 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 460 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
459 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 461 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
460 mAlarmDialog = new AlarmDialog( this ); 462 mAlarmDialog = new AlarmDialog( this );
461 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 463 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
462 mAlarmDialog->setServerNotification( false ); 464 mAlarmDialog->setServerNotification( false );
463 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 465 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
464} 466}
465 467
466 468
467CalendarView::~CalendarView() 469CalendarView::~CalendarView()
468{ 470{
469 // kdDebug() << "~CalendarView()" << endl; 471 // kdDebug() << "~CalendarView()" << endl;
@@ -482,27 +484,32 @@ void CalendarView::timerAlarm()
482} 484}
483 485
484void CalendarView::suspendAlarm() 486void CalendarView::suspendAlarm()
485{ 487{
486 //qDebug(" CalendarView::suspendAlarm() "); 488 //qDebug(" CalendarView::suspendAlarm() ");
487 computeAlarm(mSuspendAlarmNotification ); 489 computeAlarm(mSuspendAlarmNotification );
488 490
489} 491}
490 492
491void CalendarView::startAlarm( QString mess , QString filename) 493void CalendarView::startAlarm( QString mess , QString filename)
492{ 494{
493 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 495 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
496 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
494 497
495} 498}
496 499
500void CalendarView::checkNextTimerAlarm()
501{
502 mCalendar->checkAlarmForIncidence( 0, true );
503}
497 504
498void CalendarView::computeAlarm( QString msg ) 505void CalendarView::computeAlarm( QString msg )
499{ 506{
500 507
501 QString mess = msg; 508 QString mess = msg;
502 QString mAlarmMessage = mess.mid( 9 ); 509 QString mAlarmMessage = mess.mid( 9 );
503 QString filename = MainWindow::resourcePath(); 510 QString filename = MainWindow::resourcePath();
504 filename += "koalarm.wav"; 511 filename += "koalarm.wav";
505 QString tempfilename; 512 QString tempfilename;
506 if ( mess.left( 13 ) == "suspend_alarm") { 513 if ( mess.left( 13 ) == "suspend_alarm") {
507 bool error = false; 514 bool error = false;
508 int len = mess.mid( 13 ).find("+++"); 515 int len = mess.mid( 13 ).find("+++");
@@ -595,30 +602,48 @@ void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
595 602
596} 603}
597 604
598void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 605void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
599{ 606{
600 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 607 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
601 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 608 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
602#ifndef DESKTOP_VERSION 609#ifndef DESKTOP_VERSION
603 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 610 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
604#endif 611#endif
605 return; 612 return;
606 } 613 }
614 int maxSec;
615 //maxSec = 5; //testing only
616 maxSec = 86400+3600; // one day+1hour
607 mAlarmNotification = noti; 617 mAlarmNotification = noti;
608 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 618 int sec = QDateTime::currentDateTime().secsTo( qdt );
609 //qDebug("Alarm timer started with secs: %d ", ms/1000); 619 if ( sec > maxSec ) {
610 mAlarmTimer->start( ms , true ); 620 mRecheckAlarmTimer->start( maxSec * 1000 );
621 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
622 return;
623 } else {
624 mRecheckAlarmTimer->stop();
625 }
626 //qDebug("Alarm timer started with secs: %d ", sec);
627 mAlarmTimer->start( sec *1000 , true );
611 628
612} 629}
630// called by mRecheckAlarmTimer to get next alarm
631// we need this, because a QTimer has only a max range of 25 days
632void CalendarView::recheckTimerAlarm()
633{
634 mAlarmTimer->stop();
635 mRecheckAlarmTimer->stop();
636 mCalendar->checkAlarmForIncidence( 0, true );
637}
613void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 638void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
614{ 639{
615 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 640 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
616 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 641 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
617#ifndef DESKTOP_VERSION 642#ifndef DESKTOP_VERSION
618 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 643 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
619#endif 644#endif
620 return; 645 return;
621 } 646 }
622 mAlarmTimer->stop(); 647 mAlarmTimer->stop();
623} 648}
624void CalendarView::selectWeekNum ( int num ) 649void CalendarView::selectWeekNum ( int num )
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index e7aa351..fda02f7 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -162,25 +162,26 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
162 162
163 /** Emitted, when the number of outgoing messages has changed. */ 163 /** Emitted, when the number of outgoing messages has changed. */
164 void numOutgoingChanged(int); 164 void numOutgoingChanged(int);
165 165
166 /** Send status message, which can e.g. be displayed in the status bar. */ 166 /** Send status message, which can e.g. be displayed in the status bar. */
167 void statusMessage(const QString &); 167 void statusMessage(const QString &);
168 168
169 void calendarViewExpanded( bool ); 169 void calendarViewExpanded( bool );
170 void updateSearchDialog(); 170 void updateSearchDialog();
171 171
172 172
173 public slots: 173 public slots:
174 174 void recheckTimerAlarm();
175 void checkNextTimerAlarm();
175 void addAlarm(const QDateTime &qdt, const QString &noti ); 176 void addAlarm(const QDateTime &qdt, const QString &noti );
176 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 177 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
177 void removeAlarm(const QDateTime &qdt, const QString &noti ); 178 void removeAlarm(const QDateTime &qdt, const QString &noti );
178 179
179 /** options dialog made a changed to the configuration. we catch this 180 /** options dialog made a changed to the configuration. we catch this
180 * and notify all widgets which need to update their configuration. */ 181 * and notify all widgets which need to update their configuration. */
181 void updateConfig(); 182 void updateConfig();
182 183
183 /** 184 /**
184 Load calendar from file \a filename. If \a merge is true, load 185 Load calendar from file \a filename. If \a merge is true, load
185 calendar into existing one, if it is false, clear calendar, before 186 calendar into existing one, if it is false, clear calendar, before
186 loading. Return true, if calendar could be successfully loaded. 187 loading. Return true, if calendar could be successfully loaded.
@@ -465,24 +466,25 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
465 int msgItemDelete(); 466 int msgItemDelete();
466 void showEventEditor(); 467 void showEventEditor();
467 void showTodoEditor(); 468 void showTodoEditor();
468 void writeLocale(); 469 void writeLocale();
469 Todo *selectedTodo(); 470 Todo *selectedTodo();
470 471
471 private: 472 private:
472 AlarmDialog * mAlarmDialog; 473 AlarmDialog * mAlarmDialog;
473 QString mAlarmNotification; 474 QString mAlarmNotification;
474 QString mSuspendAlarmNotification; 475 QString mSuspendAlarmNotification;
475 QTimer* mSuspendTimer; 476 QTimer* mSuspendTimer;
476 QTimer* mAlarmTimer; 477 QTimer* mAlarmTimer;
478 QTimer* mRecheckAlarmTimer;
477 void computeAlarm( QString ); 479 void computeAlarm( QString );
478 void startAlarm( QString, QString ); 480 void startAlarm( QString, QString );
479 void setSyncEventsReadOnly(); 481 void setSyncEventsReadOnly();
480 482
481 QDateTime loadedFileVersion; 483 QDateTime loadedFileVersion;
482 void checkSharpEvent( Event* lastSync, Incidence* toDelete ); 484 void checkSharpEvent( Event* lastSync, Incidence* toDelete );
483 QPtrList<KSyncProfile> mSyncProfiles; 485 QPtrList<KSyncProfile> mSyncProfiles;
484 QStringList mSyncProfileNames; 486 QStringList mSyncProfileNames;
485 void checkZaurusId( int id, bool todo = false ); 487 void checkZaurusId( int id, bool todo = false );
486 int mGlobalSyncMode; 488 int mGlobalSyncMode;
487 QString mCurrentSyncDevice; 489 QString mCurrentSyncDevice;
488 QString mCurrentSyncName; 490 QString mCurrentSyncName;
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index bac66d3..1f69700 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -41,37 +41,43 @@
41#ifndef KORG_NODCOP 41#ifndef KORG_NODCOP
42#include <dcopclient.h> 42#include <dcopclient.h>
43#include "korganizer.h" 43#include "korganizer.h"
44#include "koprefs.h" 44#include "koprefs.h"
45#include "actionmanager.h" 45#include "actionmanager.h"
46#endif 46#endif
47 47
48#include "koeventviewer.h" 48#include "koeventviewer.h"
49#ifndef KORG_NOKABC 49#ifndef KORG_NOKABC
50#include <kabc/stdaddressbook.h> 50#include <kabc/stdaddressbook.h>
51#define size count 51#define size count
52#endif 52#endif
53#ifndef DESKTOP_VERSION
54#include <qtopia/qcopenvelope_qws.h>
55#endif
56
53KOEventViewer::KOEventViewer(QWidget *parent,const char *name) 57KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
54 : QTextBrowser(parent,name) 58 : QTextBrowser(parent,name)
55{ 59{
56 mSyncMode = false; 60 mSyncMode = false;
57 mColorMode = 0; 61 mColorMode = 0;
58} 62}
59 63
60KOEventViewer::~KOEventViewer() 64KOEventViewer::~KOEventViewer()
61{ 65{
62} 66}
63 67
64void KOEventViewer::setSource(const QString& n) 68void KOEventViewer::setSource(const QString& n)
65{ 69{
70
71 if ( n.left(3) == "uid" ) {
66 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 72 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
67 KABC::AddressBook::Iterator it; 73 KABC::AddressBook::Iterator it;
68 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 74 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
69 // LR I do not understand, why the uid string is different on zaurus and desktop 75 // LR I do not understand, why the uid string is different on zaurus and desktop
70#ifdef DESKTOP_VERSION 76#ifdef DESKTOP_VERSION
71 QString uid = "uid://"+(*it).uid(); 77 QString uid = "uid://"+(*it).uid();
72#else 78#else
73 QString uid = "uid:"+(*it).uid(); 79 QString uid = "uid:"+(*it).uid();
74#endif 80#endif
75 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 81 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
76 if (n == uid ) { 82 if (n == uid ) {
77 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 83 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
@@ -82,24 +88,34 @@ void KOEventViewer::setSource(const QString& n)
82 av.setAddressee( (*it) ); 88 av.setAddressee( (*it) );
83 lay.addWidget( &av ); 89 lay.addWidget( &av );
84 if ( QApplication::desktop()->width() < 480 ) 90 if ( QApplication::desktop()->width() < 480 )
85 dia.resize( 220, 240); 91 dia.resize( 220, 240);
86 else { 92 else {
87 dia.resize( 400,400); 93 dia.resize( 400,400);
88 94
89 } 95 }
90 dia.exec(); 96 dia.exec();
91 break; 97 break;
92 } 98 }
93 } 99 }
100 return;
101 }
102 if ( n.left(6) == "mailto" ) {
103 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
104#ifndef DESKTOP_VERSION
105 QCopEnvelope e("QPE/Application/kmpi", "newMail(QString)" );
106 e << n.mid(7);
107#endif
108
109 }
94 110
95 111
96#ifndef KORG_NODCOP 112#ifndef KORG_NODCOP
97 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 113 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
98 QString tmpStr; 114 QString tmpStr;
99 if (n.startsWith("mailto:")) { 115 if (n.startsWith("mailto:")) {
100 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 116 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
101 //emit showIncidence(n); 117 //emit showIncidence(n);
102 return; 118 return;
103 } else if (n.startsWith("uid:")) { 119 } else if (n.startsWith("uid:")) {
104 DCOPClient *client = KApplication::kApplication()->dcopClient(); 120 DCOPClient *client = KApplication::kApplication()->dcopClient();
105 const QByteArray noParamData; 121 const QByteArray noParamData;
@@ -161,56 +177,60 @@ void KOEventViewer::addTag(const QString & tag,const QString & text)
161 { 177 {
162 str += text + "</" + tag + ">"; 178 str += text + "</" + tag + ">";
163 mText.append(str); 179 mText.append(str);
164 } 180 }
165} 181}
166 182
167void KOEventViewer::setColorMode( int m ) 183void KOEventViewer::setColorMode( int m )
168{ 184{
169 mColorMode = m; 185 mColorMode = m;
170} 186}
171void KOEventViewer::appendEvent(Event *event, int mode ) 187void KOEventViewer::appendEvent(Event *event, int mode )
172{ 188{
189 mMailSubject = "";
173 mCurrentIncidence = event; 190 mCurrentIncidence = event;
174 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 191 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
175 topLevelWidget()->setCaption(i18n("Event Viewer")); 192 topLevelWidget()->setCaption(i18n("Event Viewer"));
176 if ( mode == 0 ) { 193 if ( mode == 0 ) {
177 addTag("h2",event->summary()); 194 addTag("h2",event->summary());
178 } 195 }
179 else { 196 else {
180 if ( mColorMode == 1 ) { 197 if ( mColorMode == 1 ) {
181 mText +="<font color=\"#00A000\">"; 198 mText +="<font color=\"#00A000\">";
182 } 199 }
183 if ( mColorMode == 2 ) { 200 if ( mColorMode == 2 ) {
184 mText +="<font color=\"#C00000\">"; 201 mText +="<font color=\"#C00000\">";
185 } 202 }
186 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 203 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
187 if ( mode == 1 ) { 204 if ( mode == 1 ) {
188 addTag("h2",i18n( "Local: " ) +event->summary()); 205 addTag("h2",i18n( "Local: " ) +event->summary());
189 } else { 206 } else {
190 addTag("h2",i18n( "Remote: " ) +event->summary()); 207 addTag("h2",i18n( "Remote: " ) +event->summary());
191 } 208 }
192 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 209 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
193 if ( mColorMode ) 210 if ( mColorMode )
194 mText += "</font>"; 211 mText += "</font>";
195 } 212 }
213 mMailSubject += i18n( "Meeting " )+ event->summary();
196 if (event->cancelled ()) { 214 if (event->cancelled ()) {
197 mText +="<font color=\"#B00000\">"; 215 mText +="<font color=\"#B00000\">";
198 addTag("i",i18n("This event has been cancelled!")); 216 addTag("i",i18n("This event has been cancelled!"));
199 mText.append("<br>"); 217 mText.append("<br>");
200 mText += "</font>"; 218 mText += "</font>";
219 mMailSubject += i18n("(cancelled)");
201 } 220 }
202 if (!event->location().isEmpty()) { 221 if (!event->location().isEmpty()) {
203 addTag("b",i18n("Location: ")); 222 addTag("b",i18n("Location: "));
204 mText.append(event->location()+"<br>"); 223 mText.append(event->location()+"<br>");
224 mMailSubject += i18n(" at ") + event->location();
205 } 225 }
206 if (event->doesFloat()) { 226 if (event->doesFloat()) {
207 if (event->isMultiDay()) { 227 if (event->isMultiDay()) {
208 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 228 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
209 .arg(event->dtStartDateStr(shortDate)) 229 .arg(event->dtStartDateStr(shortDate))
210 .arg(event->dtEndDateStr(shortDate))); 230 .arg(event->dtEndDateStr(shortDate)));
211 } else { 231 } else {
212 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 232 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
213 } 233 }
214 } else { 234 } else {
215 if (event->isMultiDay()) { 235 if (event->isMultiDay()) {
216 mText.append(i18n("<p><b>From:</b> %1</p> ") 236 mText.append(i18n("<p><b>From:</b> %1</p> ")
@@ -229,28 +249,34 @@ void KOEventViewer::appendEvent(Event *event, int mode )
229 if (event->recurrence()->doesRecur()) { 249 if (event->recurrence()->doesRecur()) {
230 250
231 QString recurText = event->recurrence()->recurrenceText(); 251 QString recurText = event->recurrence()->recurrenceText();
232 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 252 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
233 bool last; 253 bool last;
234 QDate start = QDate::currentDate(); 254 QDate start = QDate::currentDate();
235 QDate next; 255 QDate next;
236 next = event->recurrence()->getPreviousDate( start , &last ); 256 next = event->recurrence()->getPreviousDate( start , &last );
237 if ( !last ) { 257 if ( !last ) {
238 next = event->recurrence()->getNextDate( start.addDays( - 1 ) ); 258 next = event->recurrence()->getNextDate( start.addDays( - 1 ) );
239 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 259 addTag("p",i18n("<b>Next recurrence is on:</b>") );
240 addTag("p", KGlobal::locale()->formatDate( next, shortDate )); 260 addTag("p", KGlobal::locale()->formatDate( next, shortDate ));
261 QDateTime nextdt = QDateTime( next, event->dtStart().time());
262 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( nextdt, true );
263
241 } else { 264 } else {
242 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 265 addTag("p",i18n("<b>Last recurrence was on:</b>") );
243 addTag("p", KGlobal::locale()->formatDate( next, shortDate )); 266 addTag("p", KGlobal::locale()->formatDate( next, shortDate ));
244 } 267 }
268 } else {
269 mMailSubject += i18n(" - " )+event->dtStartStr( true );
270
245 } 271 }
246 272
247 273
248 if (event->isAlarmEnabled()) { 274 if (event->isAlarmEnabled()) {
249 Alarm *alarm =event->alarms().first() ; 275 Alarm *alarm =event->alarms().first() ;
250 QDateTime t = alarm->time(); 276 QDateTime t = alarm->time();
251 int min = t.secsTo( event->dtStart() )/60; 277 int min = t.secsTo( event->dtStart() )/60;
252 QString s =i18n("( %1 min before )").arg( min ); 278 QString s =i18n("( %1 min before )").arg( min );
253 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 279 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
254 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 280 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
255 //addTag("p",s); 281 //addTag("p",s);
256 } 282 }
@@ -265,58 +291,63 @@ void KOEventViewer::appendEvent(Event *event, int mode )
265 formatCategories(event); 291 formatCategories(event);
266 292
267 formatReadOnly(event); 293 formatReadOnly(event);
268 formatAttendees(event); 294 formatAttendees(event);
269 295
270 setText(mText); 296 setText(mText);
271 //QWhatsThis::add(this,mText); 297 //QWhatsThis::add(this,mText);
272 298
273} 299}
274 300
275void KOEventViewer::appendTodo(Todo *event, int mode ) 301void KOEventViewer::appendTodo(Todo *event, int mode )
276{ 302{
303 mMailSubject = "";
277 mCurrentIncidence = event; 304 mCurrentIncidence = event;
278 topLevelWidget()->setCaption(i18n("Todo Viewer")); 305 topLevelWidget()->setCaption(i18n("Todo Viewer"));
279 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 306 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
280 if (mode == 0 ) 307 if (mode == 0 )
281 addTag("h2",event->summary()); 308 addTag("h2",event->summary());
282 else { 309 else {
283 if ( mColorMode == 1 ) { 310 if ( mColorMode == 1 ) {
284 mText +="<font color=\"#00A000\">"; 311 mText +="<font color=\"#00A000\">";
285 } 312 }
286 if ( mColorMode == 2 ) { 313 if ( mColorMode == 2 ) {
287 mText +="<font color=\"#B00000\">"; 314 mText +="<font color=\"#B00000\">";
288 } 315 }
289 if ( mode == 1 ) { 316 if ( mode == 1 ) {
290 addTag("h2",i18n( "Local: " ) +event->summary()); 317 addTag("h2",i18n( "Local: " ) +event->summary());
291 } else { 318 } else {
292 addTag("h2",i18n( "Remote: " ) +event->summary()); 319 addTag("h2",i18n( "Remote: " ) +event->summary());
293 } 320 }
294 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 321 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
295 if ( mColorMode ) 322 if ( mColorMode )
296 mText += "</font>"; 323 mText += "</font>";
297 } 324 }
325 mMailSubject += i18n( "Todo " )+ event->summary();
298 if (event->cancelled ()) { 326 if (event->cancelled ()) {
299 mText +="<font color=\"#B00000\">"; 327 mText +="<font color=\"#B00000\">";
300 addTag("i",i18n("This todo has been cancelled!")); 328 addTag("i",i18n("This todo has been cancelled!"));
301 mText.append("<br>"); 329 mText.append("<br>");
302 mText += "</font>"; 330 mText += "</font>";
331 mMailSubject += i18n("(cancelled)");
303 } 332 }
304 333
305 if (!event->location().isEmpty()) { 334 if (!event->location().isEmpty()) {
306 addTag("b",i18n("Location: ")); 335 addTag("b",i18n("Location: "));
307 mText.append(event->location()+"<br>"); 336 mText.append(event->location()+"<br>");
337 mMailSubject += i18n(" at ") + event->location();
308 } 338 }
309 if (event->hasDueDate()) { 339 if (event->hasDueDate()) {
310 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 340 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
341 mMailSubject += i18n(" - " )+event->dtDueStr( true );
311 } 342 }
312 addTag("b",i18n("Access: ")); 343 addTag("b",i18n("Access: "));
313 mText.append(event->secrecyStr()+"<br>"); 344 mText.append(event->secrecyStr()+"<br>");
314 if (!event->description().isEmpty()) { 345 if (!event->description().isEmpty()) {
315 addTag("p",i18n("<b>Details: </b>")); 346 addTag("p",i18n("<b>Details: </b>"));
316 addTag("p",event->description()); 347 addTag("p",event->description());
317 } 348 }
318 349
319 formatCategories(event); 350 formatCategories(event);
320 351
321 mText.append(i18n("<p><b>Priority:</b> %2</p>") 352 mText.append(i18n("<p><b>Priority:</b> %2</p>")
322 .arg(QString::number(event->priority()))); 353 .arg(QString::number(event->priority())));
@@ -396,27 +427,28 @@ void KOEventViewer::formatAttendees(Incidence *event)
396 if (!a->name().isEmpty()) mText += a->name(); 427 if (!a->name().isEmpty()) mText += a->name();
397 else mText += a->email(); 428 else mText += a->email();
398 mText += "</a>\n"; 429 mText += "</a>\n";
399 } 430 }
400#else 431#else
401 //qDebug("nokabc "); 432 //qDebug("nokabc ");
402 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 433 mText += "<li><a href=\"uid:" + a->uid() + "\">";
403 if (!a->name().isEmpty()) mText += a->name(); 434 if (!a->name().isEmpty()) mText += a->name();
404 else mText += a->email(); 435 else mText += a->email();
405 mText += "</a>\n"; 436 mText += "</a>\n";
406#endif 437#endif
407 438
439
408 if (!a->email().isEmpty()) { 440 if (!a->email().isEmpty()) {
409 if (iconPath) { 441 if (iconPath) {
410 mText += "<a href=\"mailto:" + a->name() +" "+ "<" + a->email() + ">" + "\">"; 442 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
411 mText += "<IMG src=\"" + iconPath + "\">"; 443 mText += "<IMG src=\"" + iconPath + "\">";
412 mText += "</a>\n"; 444 mText += "</a>\n";
413 } 445 }
414 } 446 }
415 if (a->status() != Attendee::NeedsAction ) 447 if (a->status() != Attendee::NeedsAction )
416 mText +="[" + a->statusStr() + "] "; 448 mText +="[" + a->statusStr() + "] ";
417 if (a->role() == Attendee::Chair ) 449 if (a->role() == Attendee::Chair )
418 mText +="(" + a->roleStr().left(1) + ".)"; 450 mText +="(" + a->roleStr().left(1) + ".)";
419 } 451 }
420 mText.append("</li></ul>"); 452 mText.append("</li></ul>");
421 } 453 }
422 454
diff --git a/korganizer/koeventviewer.h b/korganizer/koeventviewer.h
index 74f1135..0cd3f33 100644
--- a/korganizer/koeventviewer.h
+++ b/korganizer/koeventviewer.h
@@ -56,18 +56,19 @@ class KOEventViewer : public QTextBrowser {
56 int mColorMode; 56 int mColorMode;
57 void addTag(const QString & tag,const QString & text); 57 void addTag(const QString & tag,const QString & text);
58 58
59 void formatCategories(Incidence *event); 59 void formatCategories(Incidence *event);
60 void formatAttendees(Incidence *event); 60 void formatAttendees(Incidence *event);
61 void formatReadOnly(Incidence *event); 61 void formatReadOnly(Incidence *event);
62 62
63 private: 63 private:
64 QTextBrowser *mEventTextView; 64 QTextBrowser *mEventTextView;
65 bool mSyncMode; 65 bool mSyncMode;
66 66
67 QString mText; 67 QString mText;
68 QString mMailSubject;
68 Incidence* mCurrentIncidence; 69 Incidence* mCurrentIncidence;
69 signals: 70 signals:
70 void launchaddressbook(QString uid); 71 void launchaddressbook(QString uid);
71}; 72};
72 73
73#endif 74#endif
diff --git a/korganizer/main.cpp b/korganizer/main.cpp
index a357988..69ef294 100644
--- a/korganizer/main.cpp
+++ b/korganizer/main.cpp
@@ -44,55 +44,33 @@ int main( int argc, char **argv )
44 printf(" -showTodo: Todo view\n"); 44 printf(" -showTodo: Todo view\n");
45 printf(" -showJournal: Journal view\n"); 45 printf(" -showJournal: Journal view\n");
46 printf(" -showKO: Next Days view\n"); 46 printf(" -showKO: Next Days view\n");
47 printf(" -showWNext: What's Next view\n"); 47 printf(" -showWNext: What's Next view\n");
48 printf(" -showNextXView: Next X View\n"); 48 printf(" -showNextXView: Next X View\n");
49 printf(" -new[Y] and -show[X] may be used togehther\n"); 49 printf(" -new[Y] and -show[X] may be used togehther\n");
50 printf(" KO/Pi is exiting now. Bye!\n"); 50 printf(" KO/Pi is exiting now. Bye!\n");
51 exitHelp = true; 51 exitHelp = true;
52 } 52 }
53 } 53 }
54 if ( ! exitHelp ) { 54 if ( ! exitHelp ) {
55 KGlobal::setAppName( "korganizer" ); 55 KGlobal::setAppName( "korganizer" );
56
57
58 QString fileName ; 56 QString fileName ;
59#ifndef DESKTOP_VERSION 57#ifndef DESKTOP_VERSION
60 QString appdir = QDir::homeDirPath() + "/kdepim/apps/" + KGlobal::getAppName();
61 KStandardDirs::setAppDir( appdir );
62
63 fileName = getenv("QPEDIR"); 58 fileName = getenv("QPEDIR");
64 KGlobal::iconLoader()->setIconPath( fileName +"/pics/kdepim/korganizer/"); 59 KGlobal::iconLoader()->setIconPath( fileName +"/pics/kdepim/korganizer/");
65#else 60#else
66
67#ifndef _WIN32_
68 fileName = qApp->applicationDirPath () + "/kdepim/korganizer/"; 61 fileName = qApp->applicationDirPath () + "/kdepim/korganizer/";
69#else 62 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
70 fileName = qApp->applicationDirPath () + "\\kdepim\\korganizer\\";
71#endif
72
73 KGlobal::iconLoader()->setIconPath(fileName);
74
75 QString appdir = QDir::homeDirPath();
76 //appdir = "C:\\";
77 if ( appdir.right(1) == "\\" || appdir.right(1) == "/" )
78 appdir += "korganizer";
79 else
80 appdir += "/korganizer";
81 KStandardDirs::setAppDir( QDir::convertSeparators( appdir ));
82 // qDebug(" %s ",KStandardDirs::appDir().latin1() );
83#endif 63#endif
84 QDir app_dir; 64 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "korganizer")));
85 if ( !app_dir.exists(KStandardDirs::appDir()) )
86 app_dir.mkdir (KStandardDirs::appDir());
87 MainWindow m; 65 MainWindow m;
88#ifndef DESKTOP_VERSION 66#ifndef DESKTOP_VERSION
89 QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& ))); 67 QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& )));
90 a.showMainWidget(&m ); 68 a.showMainWidget(&m );
91#else 69#else
92 a.setMainWidget(&m ); 70 a.setMainWidget(&m );
93 m.show(); 71 m.show();
94 //m.resize( 800, 600 ); 72 //m.resize( 800, 600 );
95 QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); 73 QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
96#endif 74#endif
97 if ( argc > 1 ) { 75 if ( argc > 1 ) {
98 QCString command = argv[1]; 76 QCString command = argv[1];