-rw-r--r-- | korganizer/kotodoview.cpp | 49 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 5 | ||||
-rw-r--r-- | libkcal/todo.cpp | 2 | ||||
-rw-r--r-- | libkcal/todo.h | 2 |
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 | |||
@@ -27,24 +27,26 @@ | |||
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 |
@@ -63,48 +65,71 @@ using namespace KOrg; | |||
63 | 65 | ||
64 | KOStopTodoPrefs::KOStopTodoPrefs( Todo* todo, QWidget *parent, const char *name ) : | 66 | KOStopTodoPrefs::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 | ||
88 | void KOStopTodoPrefs::accept() | 113 | void 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 | } |
101 | void KOStopTodoPrefs::doNotSave() | 126 | void 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 | ||
@@ -1190,25 +1215,25 @@ void KOTodoView::toggleRunningItem() | |||
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 | ||
1209 | void KOTodoView::itemClicked(QListViewItem *item) | 1234 | void 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!")); |
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index ceabdba..8f0c99e 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h | |||
@@ -43,40 +43,45 @@ | |||
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 | ||
50 | class QDragEnterEvent; | 50 | class QDragEnterEvent; |
51 | class QDragMoveEvent; | 51 | class QDragMoveEvent; |
52 | class QDragLeaveEvent; | 52 | class QDragLeaveEvent; |
53 | class QDropEvent; | 53 | class QDropEvent; |
54 | class KOTodoViewWhatsThis; | 54 | class KOTodoViewWhatsThis; |
55 | class KDateEdit; | ||
56 | class KOTimeEdit; | ||
55 | 57 | ||
56 | class DocPrefs; | 58 | class DocPrefs; |
57 | 59 | ||
58 | 60 | ||
59 | class KOStopTodoPrefs : public QDialog | 61 | class 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 | ||
66 | private slots: | 68 | private slots: |
67 | void doNotSave(); | 69 | void doNotSave(); |
68 | void accept(); | 70 | void accept(); |
69 | private: | 71 | private: |
70 | Todo* mTodo; | 72 | Todo* mTodo; |
73 | QLineEdit* mComment; | ||
74 | KDateEdit *sde, *ede; | ||
75 | KOTimeEdit *ste, *ete; | ||
71 | 76 | ||
72 | }; | 77 | }; |
73 | 78 | ||
74 | class KOTodoListView : public KListView | 79 | class 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(); |
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 62b74f1..9a8b6e4 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp | |||
@@ -88,24 +88,26 @@ void Todo::setRunning( bool run ) | |||
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 | } |
98 | void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) | 98 | void 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 | } |
104 | void Todo::saveRunningInfoToFile() | 106 | void Todo::saveRunningInfoToFile() |
105 | { | 107 | { |
106 | mRunEnd = QDateTime::currentDateTime(); | 108 | mRunEnd = QDateTime::currentDateTime(); |
107 | saveRunningInfoToFile( QString::null ); | 109 | saveRunningInfoToFile( QString::null ); |
108 | } | 110 | } |
109 | void Todo::saveRunningInfoToFile( QString comment ) | 111 | void Todo::saveRunningInfoToFile( QString comment ) |
110 | { | 112 | { |
111 | //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); | 113 | //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); |
diff --git a/libkcal/todo.h b/libkcal/todo.h index 11f848e..425dfad 100644 --- a/libkcal/todo.h +++ b/libkcal/todo.h | |||
@@ -33,25 +33,24 @@ namespace KCal { | |||
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; |
@@ -117,24 +116,25 @@ namespace KCal { | |||
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 |