summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.cpp49
-rw-r--r--korganizer/kotodoview.h5
-rw-r--r--libkcal/todo.cpp2
-rw-r--r--libkcal/todo.h2
4 files changed, 45 insertions, 13 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index c5fae17..13e88ef 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -23,32 +23,34 @@
23 23
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qheader.h> 25#include <qheader.h>
26#include <qcursor.h> 26#include <qcursor.h>
27#include <qwhatsthis.h> 27#include <qwhatsthis.h>
28#include <qdialog.h> 28#include <qdialog.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31 31
32#include <qinputdialog.h> 32#include <qinputdialog.h>
33 33
34#include <qvbox.h> 34#include <qvbox.h>
35#include <kdebug.h> 35#include <kdebug.h>
36#include "koprefs.h" 36#include "koprefs.h"
37#include <klocale.h> 37#include <klocale.h>
38#include <kglobal.h> 38#include <kglobal.h>
39#include <kdateedit.h>
40#include "ktimeedit.h"
39#include <kiconloader.h> 41#include <kiconloader.h>
40#include <kmessagebox.h> 42#include <kmessagebox.h>
41 43
42#include <libkcal/icaldrag.h> 44#include <libkcal/icaldrag.h>
43#include <libkcal/vcaldrag.h> 45#include <libkcal/vcaldrag.h>
44#include <libkcal/calfilter.h> 46#include <libkcal/calfilter.h>
45#include <libkcal/dndfactory.h> 47#include <libkcal/dndfactory.h>
46#include <libkcal/calendarresources.h> 48#include <libkcal/calendarresources.h>
47#include <libkcal/resourcecalendar.h> 49#include <libkcal/resourcecalendar.h>
48#include <kresources/resourceselectdialog.h> 50#include <kresources/resourceselectdialog.h>
49#include <libkcal/kincidenceformatter.h> 51#include <libkcal/kincidenceformatter.h>
50#ifndef DESKTOP_VERSION 52#ifndef DESKTOP_VERSION
51#include <qpe/qpeapplication.h> 53#include <qpe/qpeapplication.h>
52#else 54#else
53#include <qapplication.h> 55#include <qapplication.h>
54#endif 56#endif
@@ -59,56 +61,79 @@
59 61
60#include "kotodoview.h" 62#include "kotodoview.h"
61using namespace KOrg; 63using namespace KOrg;
62 64
63 65
64KOStopTodoPrefs::KOStopTodoPrefs( Todo* todo, QWidget *parent, const char *name ) : 66KOStopTodoPrefs::KOStopTodoPrefs( Todo* todo, QWidget *parent, const char *name ) :
65 QDialog( parent, name, true ) 67 QDialog( parent, name, true )
66{ 68{
67 mTodo = todo; 69 mTodo = todo;
68 setCaption( i18n("Stop todo") ); 70 setCaption( i18n("Stop todo") );
69 QVBoxLayout* lay = new QVBoxLayout( this ); 71 QVBoxLayout* lay = new QVBoxLayout( this );
70 lay->setSpacing( 3 ); 72 lay->setSpacing( 3 );
71 lay->setMargin( 3 ); 73 lay->setMargin( 3 );
72 QLabel * lab = new QLabel( i18n("%1\nis running!").arg( todo->summary() ), this ); 74 QLabel * lab = new QLabel( i18n("%1\nis running!").arg( todo->summary() ), this );
73 lay->addWidget( lab ); 75 lay->addWidget( lab );
74 lab->setAlignment( AlignHCenter ); 76 lab->setAlignment( AlignHCenter );
75 77 lab = new QLabel( i18n("Additional Comment:"), this );
78 lay->addWidget( lab );
79 mComment = new QLineEdit( this );
80 lay->addWidget( mComment );
81 QHBox * start = new QHBox ( this );
82 lay->addWidget( start );
83 lab = new QLabel( i18n("Start:"), start );
84 QHBox * end = new QHBox ( this );
85 lay->addWidget( end );
86 lab = new QLabel( i18n("End:"), end );
87 sde = new KDateEdit( start );
88 ste = new KOTimeEdit( start );
89 connect ( sde,SIGNAL(setTimeTo( QTime ) ),ste , SLOT ( setTime(QTime ) ) );
90 ede = new KDateEdit( end );
91 ete = new KOTimeEdit(end );
92 connect ( ede,SIGNAL(setTimeTo( QTime ) ),ete , SLOT ( setTime(QTime ) ) );
93 sde->setDate( mTodo->runStart().date() );
94 ste->setTime( mTodo->runStart().time() );
95 ede->setDate( QDate::currentDate());
96 ete->setTime( QTime::currentTime() );
76 QPushButton * ok = new QPushButton( i18n("Stop and save"), this ); 97 QPushButton * ok = new QPushButton( i18n("Stop and save"), this );
77 lay->addWidget( ok ); 98 lay->addWidget( ok );
78 QPushButton * cancel = new QPushButton( i18n("Continue running"), this ); 99 QPushButton * cancel = new QPushButton( i18n("Continue running"), this );
79 lay->addWidget( cancel ); 100 lay->addWidget( cancel );
80 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 101 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
81 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 102 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
82 ok = new QPushButton( i18n("Stop - do not save"), this ); 103 ok = new QPushButton( i18n("Stop - do not save"), this );
83 connect ( ok,SIGNAL(clicked() ),this , SLOT ( doNotSave() ) ); 104 connect ( ok,SIGNAL(clicked() ),this , SLOT ( doNotSave() ) );
84 lay->addWidget( ok ); 105 lay->addWidget( ok );
85 resize( 200, 200 ); 106 if (QApplication::desktop()->width() < 320 )
107 resize( 240, 200 );
108 else
109 resize( 320, 200 );
110
86} 111}
87 112
88void KOStopTodoPrefs::accept() 113void KOStopTodoPrefs::accept()
89{ 114{
90 qDebug("KOStopTodoPrefs::accept() "); 115 QDateTime start = QDateTime( sde->date(), ste->getTime() );
91 116 QDateTime stop = QDateTime( ede->date(), ete->getTime() );
92 117 if ( start > stop ) {
93#if 0 118 KMessageBox::sorry(this,
94 t->setRunningFalse( comment ); 119 i18n("The start time is\nafter the end time!"),
95 120 i18n("Time mismatch!"));
96 t->setRunning( false ); 121 return;
97#endif 122 }
98 123 mTodo->saveRunningInfo( mComment->text(), start, stop );
99 QDialog::accept(); 124 QDialog::accept();
100} 125}
101void KOStopTodoPrefs::doNotSave() 126void KOStopTodoPrefs::doNotSave()
102{ 127{
103 int result = KMessageBox::warningContinueCancel(this, 128 int result = KMessageBox::warningContinueCancel(this,
104 i18n("Do you really want to set\nthe state to stopped\nwithout saving the data?"),mTodo->summary() ); 129 i18n("Do you really want to set\nthe state to stopped\nwithout saving the data?"),mTodo->summary() );
105 if (result != KMessageBox::Continue) return; 130 if (result != KMessageBox::Continue) return;
106 mTodo->stopRunning(); 131 mTodo->stopRunning();
107 QDialog::accept(); 132 QDialog::accept();
108} 133}
109 134
110 135
111class KOTodoViewWhatsThis :public QWhatsThis 136class KOTodoViewWhatsThis :public QWhatsThis
112{ 137{
113public: 138public:
114 KOTodoViewWhatsThis( QWidget *wid, KOTodoView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 139 KOTodoViewWhatsThis( QWidget *wid, KOTodoView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
@@ -1186,33 +1211,33 @@ void KOTodoView::toggleRunningItem()
1186#if 0 1211#if 0
1187 int result = KMessageBox::warningYesNoCancel(this, 1212 int result = KMessageBox::warningYesNoCancel(this,
1188 i18n("The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?").arg(mActiveItem->text(0).left( 25 ) ),i18n("Todo is started"),i18n("Stop"),i18n("Stop+note")); 1213 i18n("The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?").arg(mActiveItem->text(0).left( 25 ) ),i18n("Todo is started"),i18n("Stop"),i18n("Stop+note"));
1189 if (result == KMessageBox::Cancel) return; 1214 if (result == KMessageBox::Cancel) return;
1190 if ( result == KMessageBox::No ) { 1215 if ( result == KMessageBox::No ) {
1191 QString comment = QInputDialog::getText(mActiveItem->text(0).left( 25 ),i18n("Comment for todo:") ); 1216 QString comment = QInputDialog::getText(mActiveItem->text(0).left( 25 ),i18n("Comment for todo:") );
1192 t->setRunningFalse( comment ); 1217 t->setRunningFalse( comment );
1193 } else { 1218 } else {
1194 t->setRunning( false ); 1219 t->setRunning( false );
1195 } 1220 }
1196 mActiveItem->construct(); 1221 mActiveItem->construct();
1197 1222
1198 1223
1199#endif 1224#endif
1200 } else { 1225 } else {
1201 int result = KMessageBox::warningContinueCancel(this, 1226 int result = KMessageBox::warningContinueCancel(this,
1202 i18n("The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?").arg(mActiveItem->text(0).left( 25 ) ),i18n("Todo is stopped"),i18n("Start todo"),i18n("Cancel"), true); 1227 i18n("<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>").arg(mActiveItem->text(0).left( 25 ) ),i18n("Start todo"),i18n("Start todo"),i18n("Cancel"), true);
1203 if (result != KMessageBox::Continue) return; 1228 if (result != KMessageBox::Continue) return;
1204 t->setRunning( true ); 1229 t->setRunning( true );
1205 mActiveItem->construct(); 1230 mActiveItem->construct();
1206 } 1231 }
1207} 1232}
1208 1233
1209void KOTodoView::itemClicked(QListViewItem *item) 1234void KOTodoView::itemClicked(QListViewItem *item)
1210{ 1235{
1211 //qDebug("KOTodoView::itemClicked %d", item); 1236 //qDebug("KOTodoView::itemClicked %d", item);
1212 if (!item) { 1237 if (!item) {
1213 if ( pendingSubtodo != 0 ) { 1238 if ( pendingSubtodo != 0 ) {
1214 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 1239 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
1215 } 1240 }
1216 pendingSubtodo = 0; 1241 pendingSubtodo = 0;
1217 return; 1242 return;
1218 } 1243 }
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index ceabdba..8f0c99e 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -39,48 +39,53 @@
39 39
40#include <libkcal/calendar.h> 40#include <libkcal/calendar.h>
41#include <libkcal/todo.h> 41#include <libkcal/todo.h>
42 42
43#include <korganizer/baseview.h> 43#include <korganizer/baseview.h>
44 44
45#include "kotodoviewitem.h" 45#include "kotodoviewitem.h"
46#include "koprefs.h" 46#include "koprefs.h"
47#include "koglobals.h" 47#include "koglobals.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49 49
50class QDragEnterEvent; 50class QDragEnterEvent;
51class QDragMoveEvent; 51class QDragMoveEvent;
52class QDragLeaveEvent; 52class QDragLeaveEvent;
53class QDropEvent; 53class QDropEvent;
54class KOTodoViewWhatsThis; 54class KOTodoViewWhatsThis;
55class KDateEdit;
56class KOTimeEdit;
55 57
56class DocPrefs; 58class DocPrefs;
57 59
58 60
59class KOStopTodoPrefs : public QDialog 61class KOStopTodoPrefs : public QDialog
60{ 62{
61 Q_OBJECT 63 Q_OBJECT
62 public: 64 public:
63 KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ; 65 KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ;
64 66
65 67
66private slots: 68private slots:
67 void doNotSave(); 69 void doNotSave();
68 void accept(); 70 void accept();
69private: 71private:
70 Todo* mTodo; 72 Todo* mTodo;
73 QLineEdit* mComment;
74 KDateEdit *sde, *ede;
75 KOTimeEdit *ste, *ete;
71 76
72}; 77};
73 78
74class KOTodoListView : public KListView 79class KOTodoListView : public KListView
75{ 80{
76 Q_OBJECT 81 Q_OBJECT
77 public: 82 public:
78 KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); 83 KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0);
79 virtual ~KOTodoListView() {} 84 virtual ~KOTodoListView() {}
80 85
81 signals: 86 signals:
82 void paintNeeded(); 87 void paintNeeded();
83 void todoDropped(Todo *, int); 88 void todoDropped(Todo *, int);
84 void double_Clicked(QListViewItem *item); 89 void double_Clicked(QListViewItem *item);
85 void reparentTodoSignal( Todo *,Todo * ); 90 void reparentTodoSignal( Todo *,Todo * );
86 void unparentTodoSignal(Todo *); 91 void unparentTodoSignal(Todo *);
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index 62b74f1..9a8b6e4 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -84,32 +84,34 @@ void Todo::setRunning( bool run )
84 //qDebug("Todo::setRunning %d ", run); 84 //qDebug("Todo::setRunning %d ", run);
85 if ( !mRunSaveTimer ) { 85 if ( !mRunSaveTimer ) {
86 mRunSaveTimer = new QTimer ( this ); 86 mRunSaveTimer = new QTimer ( this );
87 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) ); 87 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( saveRunningInfoToFile() ) );
88 } 88 }
89 mRunning = run; 89 mRunning = run;
90 if ( mRunning ) { 90 if ( mRunning ) {
91 mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min 91 mRunSaveTimer->start( 1000 * 60 * 5 ); // 5 min
92 mRunStart = QDateTime::currentDateTime(); 92 mRunStart = QDateTime::currentDateTime();
93 } else { 93 } else {
94 mRunSaveTimer->stop(); 94 mRunSaveTimer->stop();
95 saveRunningInfoToFile(); 95 saveRunningInfoToFile();
96 } 96 }
97} 97}
98void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) 98void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
99{ 99{
100 if ( !mRunning) return;
101 mRunning = false;
100 mRunStart = start; 102 mRunStart = start;
101 mRunEnd = end; 103 mRunEnd = end;
102 saveRunningInfoToFile( comment ); 104 saveRunningInfoToFile( comment );
103} 105}
104void Todo::saveRunningInfoToFile() 106void Todo::saveRunningInfoToFile()
105{ 107{
106 mRunEnd = QDateTime::currentDateTime(); 108 mRunEnd = QDateTime::currentDateTime();
107 saveRunningInfoToFile( QString::null ); 109 saveRunningInfoToFile( QString::null );
108} 110}
109void Todo::saveRunningInfoToFile( QString comment ) 111void Todo::saveRunningInfoToFile( QString comment )
110{ 112{
111 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); 113 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
112 if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 10 ) { 114 if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 10 ) {
113 qDebug("Running time < 30 seconds. Skipped. "); 115 qDebug("Running time < 30 seconds. Skipped. ");
114 return; 116 return;
115 } 117 }
diff --git a/libkcal/todo.h b/libkcal/todo.h
index 11f848e..425dfad 100644
--- a/libkcal/todo.h
+++ b/libkcal/todo.h
@@ -29,33 +29,32 @@
29 29
30namespace KCal { 30namespace KCal {
31 31
32/** 32/**
33 This class provides a Todo in the sense of RFC2445. 33 This class provides a Todo in the sense of RFC2445.
34*/ 34*/
35 class Todo : public QObject,public Incidence 35 class Todo : public QObject,public Incidence
36{ 36{
37 Q_OBJECT 37 Q_OBJECT
38 public: 38 public:
39 Todo(); 39 Todo();
40 Todo(const Todo &); 40 Todo(const Todo &);
41 ~Todo(); 41 ~Todo();
42 typedef ListBase<Todo> List; 42 typedef ListBase<Todo> List;
43 QCString type() const { return "Todo"; } 43 QCString type() const { return "Todo"; }
44 IncTypeID typeID() const { return todoID; } 44 IncTypeID typeID() const { return todoID; }
45 void saveRunningInfo( QString comment, QDateTime start, QDateTime end );
46 45
47 /** Return an exact copy of this todo. */ 46 /** Return an exact copy of this todo. */
48 Incidence *clone(); 47 Incidence *clone();
49 QDateTime getNextAlarmDateTime( bool * ok, int * offset, QDateTime start_dt ) const; 48 QDateTime getNextAlarmDateTime( bool * ok, int * offset, QDateTime start_dt ) const;
50 49
51 /** for setting the todo's due date/time with a QDateTime. */ 50 /** for setting the todo's due date/time with a QDateTime. */
52 void setDtDue(const QDateTime &dtDue); 51 void setDtDue(const QDateTime &dtDue);
53 /** returns an event's Due date/time as a QDateTime. */ 52 /** returns an event's Due date/time as a QDateTime. */
54 QDateTime dtDue() const; 53 QDateTime dtDue() const;
55 /** returns an event's due time as a string formatted according to the 54 /** returns an event's due time as a string formatted according to the
56 users locale settings */ 55 users locale settings */
57 QString dtDueTimeStr() const; 56 QString dtDueTimeStr() const;
58 /** returns an event's due date as a string formatted according to the 57 /** returns an event's due date as a string formatted according to the
59 users locale settings */ 58 users locale settings */
60 QString dtDueDateStr(bool shortfmt=true) const; 59 QString dtDueDateStr(bool shortfmt=true) const;
61 /** returns an event's due date and time as a string formatted according 60 /** returns an event's due date and time as a string formatted according
@@ -113,32 +112,33 @@ namespace KCal {
113 QString completedStr(bool shortF = true) const; 112 QString completedStr(bool shortF = true) const;
114 /** set date and time of completion */ 113 /** set date and time of completion */
115 void setCompleted(const QDateTime &completed); 114 void setCompleted(const QDateTime &completed);
116 115
117 /** Return true, if todo has a date associated with completion */ 116 /** Return true, if todo has a date associated with completion */
118 bool hasCompletedDate() const; 117 bool hasCompletedDate() const;
119 bool contains ( Todo*); 118 bool contains ( Todo*);
120 void checkSetCompletedFalse(); 119 void checkSetCompletedFalse();
121 bool setRecurDates(); 120 bool setRecurDates();
122 bool isRunning() {return mRunning;} 121 bool isRunning() {return mRunning;}
123 bool hasRunningSub(); 122 bool hasRunningSub();
124 void setRunning( bool ); 123 void setRunning( bool );
125 void setRunningFalse( QString ); 124 void setRunningFalse( QString );
126 void stopRunning(); 125 void stopRunning();
127 int runTime(); 126 int runTime();
128 QDateTime runStart () const { return mRunStart;} 127 QDateTime runStart () const { return mRunStart;}
128 void saveRunningInfo( QString comment, QDateTime start, QDateTime end );
129 public slots: 129 public slots:
130 void saveRunningInfoToFile( QString st ); 130 void saveRunningInfoToFile( QString st );
131 void saveRunningInfoToFile( ); 131 void saveRunningInfoToFile( );
132 void saveParents(); 132 void saveParents();
133 private: 133 private:
134 bool mRunning; 134 bool mRunning;
135 QTimer * mRunSaveTimer; 135 QTimer * mRunSaveTimer;
136 QDateTime mRunStart; 136 QDateTime mRunStart;
137 QDateTime mRunEnd; 137 QDateTime mRunEnd;
138 bool accept(Visitor &v) { return v.visit(this); } 138 bool accept(Visitor &v) { return v.visit(this); }
139 139
140 QDateTime mDtDue; // due date of todo 140 QDateTime mDtDue; // due date of todo
141 141
142 bool mHasDueDate; // if todo has associated due date 142 bool mHasDueDate; // if todo has associated due date
143 143
144// int mStatus; // confirmed/delegated/tentative/etc 144// int mStatus; // confirmed/delegated/tentative/etc