summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.cpp56
-rw-r--r--korganizer/kotodoview.h18
-rw-r--r--korganizer/kotodoviewitem.cpp2
-rw-r--r--libkcal/todo.cpp10
-rw-r--r--libkcal/todo.h1
5 files changed, 81 insertions, 6 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index b2ff33b..99e6a3a 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -26,4 +26,7 @@
#include <qcursor.h>
#include <qwhatsthis.h>
+#include <qdialog.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
#include <qinputdialog.h>
@@ -59,4 +62,44 @@ using namespace KOrg;
+KOStopTodoPrefs::KOStopTodoPrefs( Todo* todo, QWidget *parent, const char *name ) :
+ QDialog( parent, name, true )
+{
+ mTodo = todo;
+ setCaption( i18n("Stop todo") );
+ QVBoxLayout* lay = new QVBoxLayout( this );
+ lay->setSpacing( 3 );
+ lay->setMargin( 3 );
+ QLabel * lab = new QLabel( i18n("%1\nis running!").arg( todo->summary() ), this );
+ lay->addWidget( lab );
+ lab->setAlignment( AlignHCenter );
+
+ QPushButton * ok = new QPushButton( i18n("Stop and save"), this );
+ lay->addWidget( ok );
+ QPushButton * cancel = new QPushButton( i18n("Continue running"), this );
+ lay->addWidget( cancel );
+ connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
+ connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
+ ok = new QPushButton( i18n("Stop - do not save"), this );
+ connect ( ok,SIGNAL(clicked() ),this , SLOT ( doNotSave() ) );
+ lay->addWidget( ok );
+ resize( 200, 200 );
+}
+
+void KOStopTodoPrefs::accept()
+{
+ qDebug("KOStopTodoPrefs::accept() ");
+ QDialog::accept();
+}
+void KOStopTodoPrefs::doNotSave()
+{
+
+ int result = KMessageBox::warningContinueCancel(this,
+ i18n("Do you really want to set\nthe state to stopped\nwithout saving the data?"),mTodo->summary() );
+ if (result != KMessageBox::Continue) return;
+ mTodo->stopRunning();
+ QDialog::accept();
+}
+
+
class KOTodoViewWhatsThis :public QWhatsThis
{
@@ -1128,9 +1171,11 @@ void KOTodoView::toggleRunningItem()
Todo * t = mActiveItem->todo();
if ( t->isRunning() ) {
-#if 0
- int result = KMessageBox::warningContinueCancel(this,
- 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 todo"),i18n("Cancel"), true);
-#endif
+
+ KOStopTodoPrefs tp ( t, this );
+ tp.exec();
+
+
+#if 0
int result = KMessageBox::warningYesNoCancel(this,
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"));
@@ -1143,4 +1188,7 @@ void KOTodoView::toggleRunningItem()
}
mActiveItem->construct();
+
+
+#endif
} else {
int result = KMessageBox::warningContinueCancel(this,
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index 1ffc34a..ceabdba 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -33,4 +33,6 @@
#include <qlabel.h>
#include <qmap.h>
+#include <qdialog.h>
+#include <qlabel.h>
#include <qlistview.h>
#include <klistview.h>
@@ -54,4 +56,20 @@ class KOTodoViewWhatsThis;
class DocPrefs;
+
+class KOStopTodoPrefs : public QDialog
+{
+ Q_OBJECT
+ public:
+ KOStopTodoPrefs( Todo* todo, QWidget *parent=0, const char *name=0 ) ;
+
+
+private slots:
+ void doNotSave();
+ void accept();
+private:
+ Todo* mTodo;
+
+};
+
class KOTodoListView : public KListView
{
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index f62aab8..0cf6e4c 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -361,5 +361,5 @@ void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, i
QColorGroup _cg = cg;
QColorGroup::ColorRole role;
- if ( KOPrefs::instance()->mTodoViewUsesForegroundColor )
+ if ( KOPrefs::instance()->mTodoViewUsesForegroundColor && !mTodo->isRunning())
role = QColorGroup::Text;
else
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index e98af3c..d062492 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -70,4 +70,12 @@ void Todo::setRunningFalse( QString s )
saveRunningInfoToFile( s );
}
+void Todo::stopRunning()
+{
+ if ( !mRunning )
+ return;
+ if ( mRunSaveTimer )
+ mRunSaveTimer->stop();
+ mRunning = false;
+}
void Todo::setRunning( bool run )
{
@@ -96,5 +104,5 @@ void Todo::saveRunningInfoToFile( QString comment )
{
//qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
- if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 30 ) {
+ if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 10 ) {
qDebug("Running time < 30 seconds. Skipped. ");
return;
diff --git a/libkcal/todo.h b/libkcal/todo.h
index 6fc4d4b..42db025 100644
--- a/libkcal/todo.h
+++ b/libkcal/todo.h
@@ -123,4 +123,5 @@ namespace KCal {
void setRunning( bool );
void setRunningFalse( QString );
+ void stopRunning();
int runTime();
QDateTime runStart () const { return mRunStart;}