libkcal
event.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <kglobal.h>
00023 #include <klocale.h>
00024 #include <kdebug.h>
00025
00026 #include "event.h"
00027
00028 using namespace KCal;
00029
00030 Event::Event() :
00031 mHasEndDate( false ), mTransparency( Opaque )
00032 {
00033 }
00034
00035 Event::Event(const Event &e) : Incidence(e)
00036 {
00037 mDtEnd = e.mDtEnd;
00038 mHasEndDate = e.mHasEndDate;
00039 mTransparency = e.mTransparency;
00040 }
00041
00042 Event::~Event()
00043 {
00044
00045 }
00046
00047 Event *Event::clone()
00048 {
00049
00050 return new Event(*this);
00051 }
00052
00053 bool Event::operator==( const Event& e2 ) const
00054 {
00055 return
00056 static_cast<const Incidence&>(*this) == static_cast<const Incidence&>(e2) &&
00057 dtEnd() == e2.dtEnd() &&
00058 hasEndDate() == e2.hasEndDate() &&
00059 transparency() == e2.transparency();
00060 }
00061
00062
00063
00064 void Event::setDtEnd(const QDateTime &dtEnd)
00065 {
00066 if (mReadOnly) return;
00067
00068 mDtEnd = dtEnd;
00069
00070 setHasEndDate(true);
00071 setHasDuration(false);
00072
00073 updated();
00074 }
00075
00076 QDateTime Event::dtEnd() const
00077 {
00078 if (hasEndDate()) return mDtEnd;
00079 if (hasDuration()) return dtStart().addSecs(duration());
00080
00081 kdDebug(5800) << "Warning! Event '" << summary()
00082 << "' has neither end date nor duration." << endl;
00083 return dtStart();
00084 }
00085
00086 QDate Event::dateEnd() const
00087 {
00088 if ( doesFloat() ) return dtEnd().date();
00089 else return dtEnd().addSecs(-1).date();
00090 }
00091
00092 QString Event::dtEndTimeStr() const
00093 {
00094 return KGlobal::locale()->formatTime(dtEnd().time());
00095 }
00096
00097 QString Event::dtEndDateStr(bool shortfmt) const
00098 {
00099 return KGlobal::locale()->formatDate(dtEnd().date(),shortfmt);
00100 }
00101
00102 QString Event::dtEndStr() const
00103 {
00104 return KGlobal::locale()->formatDateTime(dtEnd());
00105 }
00106
00107 void Event::setHasEndDate(bool b)
00108 {
00109 mHasEndDate = b;
00110 }
00111
00112 bool Event::hasEndDate() const
00113 {
00114 return mHasEndDate;
00115 }
00116
00117 bool Event::isMultiDay() const
00118 {
00119
00120 QDateTime start( dtStart() );
00121 QDateTime end( dtEnd() );
00122 if ( ! doesFloat() ) {
00123 end = end.addSecs(-1);
00124 }
00125 bool multi = ( start.date() != end.date() && start <= end );
00126 return multi;
00127 }
00128
00129 void Event::setTransparency(Event::Transparency transparency)
00130 {
00131 if (mReadOnly) return;
00132 mTransparency = transparency;
00133 updated();
00134 }
00135
00136 Event::Transparency Event::transparency() const
00137 {
00138 return mTransparency;
00139 }
00140
00141 void Event::setDuration(int seconds)
00142 {
00143 setHasEndDate(false);
00144 Incidence::setDuration(seconds);
00145 }
|