-rw-r--r-- | libkcal/alarm.cpp | 2 | ||||
-rw-r--r-- | libkcal/event.cpp | 8 | ||||
-rw-r--r-- | libkcal/event.h | 1 | ||||
-rw-r--r-- | libkcal/incidence.cpp | 29 | ||||
-rw-r--r-- | libkcal/incidence.h | 3 | ||||
-rw-r--r-- | libkcal/todo.cpp | 10 | ||||
-rw-r--r-- | libkcal/todo.h | 1 |
7 files changed, 52 insertions, 2 deletions
diff --git a/libkcal/alarm.cpp b/libkcal/alarm.cpp index 79e0464..3157214 100644 --- a/libkcal/alarm.cpp +++ b/libkcal/alarm.cpp @@ -349,9 +349,9 @@ int Alarm::offset() return mOffset.asSeconds(); } } -QString Alarm::offsetText() +QString Alarm::offsetText() { int min = -offset()/60; int hours = min /60; min = min % 60; diff --git a/libkcal/event.cpp b/libkcal/event.cpp index 0766fd9..fdf5657 100644 --- a/libkcal/event.cpp +++ b/libkcal/event.cpp @@ -413,4 +413,12 @@ QDateTime Event::getNextAlarmDateTime( bool * ok, int * offset, QDateTime start_ *ok = false; return QDateTime (); } + +QString Event::durationText() +{ + int sec = mDtStart.secsTo( mDtEnd ); + if ( doesFloat() ) + sec += 86400; + return durationText4Time( sec ); +} diff --git a/libkcal/event.h b/libkcal/event.h index 2da9770..6a58618 100644 --- a/libkcal/event.h +++ b/libkcal/event.h @@ -75,8 +75,9 @@ class Event : public Incidence bool contains ( Event*); bool isOverlapping ( Event*, QDateTime*, QDateTime* ); + QString durationText(); private: bool accept(Visitor &v) { return v.visit(this); } diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 4643a3a..201f593 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp @@ -99,9 +99,38 @@ Incidence::~Incidence() if ( mRecurrence ) delete mRecurrence; } +QString Incidence::durationText() +{ + return "---"; +} +QString Incidence::durationText4Time( int offset ) +{ + int min = offset/60; + int hours = min /60; + min = min % 60; + int days = hours /24; + hours = hours % 24; + + if ( doesFloat() || ( min == 0 && hours == 0 ) ) { + if ( days == 1 ) + return "1" + i18n(" day"); + else + return QString::number( days )+ i18n(" days"); + } + QString message = QString::number ( hours ) +":"; + if ( min < 10 ) message += "0"; + message += QString::number ( min ); + if ( days > 0 ) { + if ( days == 1 ) + message = "1" + i18n(" day") + " "+message; + else + message = QString::number( days )+ i18n(" days") + " "+message; + } + return message; +} bool Incidence::isHoliday() const { return mHoliday; } diff --git a/libkcal/incidence.h b/libkcal/incidence.h index 8519f01..88df217 100644 --- a/libkcal/incidence.h +++ b/libkcal/incidence.h @@ -280,9 +280,10 @@ class Incidence : public IncidenceBase QDateTime lastModifiedSub(); QString recurrenceText() const; void setLastModifiedSubInvalid(); - + virtual QString durationText(); + QString durationText4Time( int secs ); Recurrence *mRecurrence; protected: QPtrList<Alarm> mAlarms; QPtrList<Incidence> mRelations; diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 7bf756a..e4508a0 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp @@ -613,4 +613,14 @@ void Todo::checkSetCompletedFalse() qDebug("Todo::checkSetCompletedFalse "); } } } +QString Todo::durationText() +{ + if ( mHasDueDate && hasStartDate() ) { + int sec = dtStart().secsTo( dtDue() ); + if ( doesFloat() ) + sec += 86400; + return durationText4Time( sec ); + } + return "---"; +} diff --git a/libkcal/todo.h b/libkcal/todo.h index 425dfad..7feb32e 100644 --- a/libkcal/todo.h +++ b/libkcal/todo.h @@ -129,8 +129,9 @@ namespace KCal { public slots: void saveRunningInfoToFile( QString st ); void saveRunningInfoToFile( ); void saveParents(); + QString durationText(); private: bool mRunning; QTimer * mRunSaveTimer; QDateTime mRunStart; |