summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/core/opimevent.cpp263
-rw-r--r--libopie2/opiepim/core/opimevent.h65
2 files changed, 0 insertions, 328 deletions
diff --git a/libopie2/opiepim/core/opimevent.cpp b/libopie2/opiepim/core/opimevent.cpp
index 1b553d8..cc84426 100644
--- a/libopie2/opiepim/core/opimevent.cpp
+++ b/libopie2/opiepim/core/opimevent.cpp
@@ -688,360 +688,97 @@ void OPimEvent::fromMap( const QMap<int, QString>& map )
setParent( map[ OPimEvent::FRecParent ].toInt() );
if ( !map[ OPimEvent::FRecChildren ].isEmpty() )
{
QStringList list = QStringList::split( ' ', map[ OPimEvent::FRecChildren ] );
for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
{
addChild( ( *it ).toInt() );
}
}
// Fill recurrence stuff and put it directly into the OPimRecurrence-Object using fromMap..
if ( !map[ OPimEvent::FRType ].isEmpty() )
{
QMap<int, QString> recFields;
recFields.insert( OPimRecurrence::RType, map[ OPimEvent::FRType ] );
recFields.insert( OPimRecurrence::RWeekdays, map[ OPimEvent::FRWeekdays ] );
recFields.insert( OPimRecurrence::RPosition, map[ OPimEvent::FRPosition ] );
recFields.insert( OPimRecurrence::RFreq, map[ OPimEvent::FRFreq ] );
recFields.insert( OPimRecurrence::RHasEndDate, map[ OPimEvent::FRHasEndDate ] );
recFields.insert( OPimRecurrence::EndDate, map[ OPimEvent::FREndDate ] );
recFields.insert( OPimRecurrence::Created, map[ OPimEvent::FRCreated ] );
recFields.insert( OPimRecurrence::Exceptions, map[ OPimEvent::FRExceptions ] );
OPimRecurrence recur( recFields );
setRecurrence( recur );
}
}
int OPimEvent::parent() const
{
return data->parent;
}
void OPimEvent::setParent( int uid )
{
changeOrModify();
data->parent = uid;
}
QArray<int> OPimEvent::children() const
{
if ( !data->child ) return QArray<int>();
else
return data->child->copy();
}
void OPimEvent::setChildren( const QArray<int>& arr )
{
changeOrModify();
if ( data->child ) delete data->child;
data->child = new QArray<int>( arr );
data->child->detach();
}
void OPimEvent::addChild( int uid )
{
changeOrModify();
if ( !data->child )
{
data->child = new QArray<int>( 1 );
( *data->child ) [ 0 ] = uid;
}
else
{
int count = data->child->count();
data->child->resize( count + 1 );
( *data->child ) [ count ] = uid;
}
}
void OPimEvent::removeChild( int uid )
{
if ( !data->child || !data->child->contains( uid ) ) return ;
changeOrModify();
QArray<int> newAr( data->child->count() - 1 );
int j = 0;
uint count = data->child->count();
for ( uint i = 0; i < count; i++ )
{
if ( ( *data->child ) [ i ] != uid )
{
newAr[ j ] = ( *data->child ) [ i ];
j++;
}
}
( *data->child ) = newAr;
}
-
-struct OEffectiveEvent::Data : public QShared
-{
- Data() : QShared()
- {}
- OPimEvent event;
- QDate date;
- QTime start, end;
- QDate startDate, endDate;
-bool dates : 1;
-};
-
-
-OEffectiveEvent::OEffectiveEvent()
-{
- data = new Data;
- data->date = QDate::currentDate();
- data->start = data->end = QTime::currentTime();
- data->dates = false;
-}
-
-
-OEffectiveEvent::OEffectiveEvent( const OPimEvent& ev, const QDate& startDate,
- Position pos )
-{
- data = new Data;
- data->event = ev;
- data->date = startDate;
- if ( pos & Start )
- data->start = ev.startDateTime().time();
- else
- data->start = QTime( 0, 0, 0 );
-
- if ( pos & End )
- data->end = ev.endDateTime().time();
- else
- data->end = QTime( 23, 59, 59 );
-
- data->dates = false;
-}
-
-
-OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev )
-{
- data = ev.data;
- data->ref();
-}
-
-
-OEffectiveEvent::~OEffectiveEvent()
-{
- if ( data->deref() )
- {
- delete data;
- data = 0;
- }
-}
-
-
-OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev )
-{
- if ( *this == ev ) return * this;
-
- ev.data->ref();
- deref();
- data = ev.data;
-
- return *this;
-}
-
-
-void OEffectiveEvent::setStartTime( const QTime& ti )
-{
- changeOrModify();
- data->start = ti;
-}
-
-
-void OEffectiveEvent::setEndTime( const QTime& en )
-{
- changeOrModify();
- data->end = en;
-}
-
-
-void OEffectiveEvent::setEvent( const OPimEvent& ev )
-{
- changeOrModify();
- data->event = ev;
-}
-
-
-void OEffectiveEvent::setDate( const QDate& da )
-{
- changeOrModify();
- data->date = da;
-}
-
-
-void OEffectiveEvent::setEffectiveDates( const QDate& from,
- const QDate& to )
-{
- if ( !from.isValid() )
- {
- data->dates = false;
- return ;
- }
-
- data->startDate = from;
- data->endDate = to;
-}
-
-
-QString OEffectiveEvent::description() const
-{
- return data->event.description();
-}
-
-
-QString OEffectiveEvent::location() const
-{
- return data->event.location();
-}
-
-
-QString OEffectiveEvent::note() const
-{
- return data->event.note();
-}
-
-
-OPimEvent OEffectiveEvent::event() const
-{
- return data->event;
-}
-
-
-QTime OEffectiveEvent::startTime() const
-{
- return data->start;
-}
-
-
-QTime OEffectiveEvent::endTime() const
-{
- return data->end;
-}
-
-
-QDate OEffectiveEvent::date() const
-{
- return data->date;
-}
-
-
-int OEffectiveEvent::length() const
-{
- return ( data->end.hour() * 60 - data->start.hour() * 60 )
- + QABS( data->start.minute() - data->end.minute() );
-}
-
-
-int OEffectiveEvent::size() const
-{
- return ( data->end.hour() - data->start.hour() ) * 3600
- + ( data->end.minute() - data->start.minute() * 60
- + data->end.second() - data->start.second() );
-}
-
-
-QDate OEffectiveEvent::startDate() const
-{
- if ( data->dates )
- return data->startDate;
- else if ( data->event.hasRecurrence() ) // single day, since multi-day should have a d pointer
- return data->date;
- else
- return data->event.startDateTime().date();
-}
-
-
-QDate OEffectiveEvent::endDate() const
-{
- if ( data->dates )
- return data->endDate;
- else if ( data->event.hasRecurrence() )
- return data->date;
- else
- return data->event.endDateTime().date();
-}
-
-
-void OEffectiveEvent::deref()
-{
- if ( data->deref() )
- {
- delete data;
- data = 0;
- }
-}
-
-
-void OEffectiveEvent::changeOrModify()
-{
- if ( data->count != 1 )
- {
- data->deref();
- Data* d2 = new Data;
- d2->event = data->event;
- d2->date = data->date;
- d2->start = data->start;
- d2->end = data->end;
- d2->startDate = data->startDate;
- d2->endDate = data->endDate;
- d2->dates = data->dates;
- data = d2;
- }
-}
-
-
-bool OEffectiveEvent::operator<( const OEffectiveEvent &e ) const
-{
- if ( data->date < e.date() )
- return TRUE;
- if ( data->date == e.date() )
- return ( startTime() < e.startTime() );
- else
- return FALSE;
-}
-
-
-bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const
-{
- return ( data->date <= e.date() );
-}
-
-
-bool OEffectiveEvent::operator==( const OEffectiveEvent &e ) const
-{
- return ( date() == e.date()
- && startTime() == e.startTime()
- && endTime() == e.endTime()
- && event() == e.event() );
-}
-
-
-bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const
-{
- return !( *this == e );
-}
-
-
-bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const
-{
- return !( *this <= e );
-}
-
-
-bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const
-{
- return !( *this < e );
-}
-
}
diff --git a/libopie2/opiepim/core/opimevent.h b/libopie2/opiepim/core/opimevent.h
index 32f648f..1d12530 100644
--- a/libopie2/opiepim/core/opimevent.h
+++ b/libopie2/opiepim/core/opimevent.h
@@ -126,164 +126,99 @@ class OPimEvent : public OPimRecord
void setLocation( const QString& loc );
//@}
//@{
bool hasNotifiers() const;
OPimNotifyManager &notifiers() const;
//@}
//@{
OPimRecurrence recurrence() const;
void setRecurrence( const OPimRecurrence& );
bool hasRecurrence() const;
//@}
//@{
QString note() const;
void setNote( const QString& note );
//@}
QDateTime createdDateTime() const;
void setCreatedDateTime( const QDateTime& dt );
/** set the date to dt. dt is the QDateTime in localtime */
void setStartDateTime( const QDateTime& );
/** returns the datetime in the local timeZone */
QDateTime startDateTime() const;
/** returns the start datetime in the current zone */
QDateTime startDateTimeInZone() const;
/** in current timezone */
void setEndDateTime( const QDateTime& );
/** in current timezone */
QDateTime endDateTime() const;
QDateTime endDateTimeInZone() const;
bool isMultipleDay() const;
bool isAllDay() const;
void setAllDay( bool isAllDay );
/* pin this event to a timezone! FIXME */
void setTimeZone( const QString& timeZone );
QString timeZone() const;
//@{
/** For exception to recurrence here is a list of children... */
QArray<int> children() const;
void setChildren( const QArray<int>& );
void addChild( int uid );
void removeChild( int uid );
//@}
/** return the parent OPimEvent */
int parent() const;
void setParent( int uid );
/* needed reimp */
//@{ Reimplementations
virtual bool match( const QRegExp& ) const;
QString toRichText() const;
QString toShortText() const;
QString type() const;
QMap<int, QString> toMap() const;
void fromMap( const QMap<int, QString>& map );
QString recordField( int ) const;
bool loadFromStream( QDataStream& );
bool saveToStream( QDataStream& ) const;
//@}
//@{
int rtti() const;
static OPimEvent* safeCast( const OPimRecord* );
//@}
/* bool operator==( const OPimEvent& );
bool operator!=( const OPimEvent& );
bool operator<( const OPimEvent& );
bool operator<=( const OPimEvent& );
bool operator>( const OPimEvent& );
bool operator>=(const OPimEvent& );
*/
private:
inline void changeOrModify();
void deref();
struct Data;
Data* data;
class Private;
Private* priv;
};
-
-/**
- * AN Event can span through multiple days. We split up a multiday eve
- */
-class OEffectiveEvent
-{
-
- public:
- typedef QValueList<OEffectiveEvent> ValueList;
- enum Position { MidWay, Start, End, StartEnd };
- // If we calculate the effective event of a multi-day event
- // we have to figure out whether we are at the first day,
- // at the end, or anywhere else ("middle"). This is important
- // for the start/end times (00:00/23:59)
- // MidWay: 00:00 -> 23:59, as we are "in the middle" of a multi-
- // day event
- // Start: start time -> 23:59
- // End: 00:00 -> end time
- // Start | End == StartEnd: for single-day events (default)
- // here we draw start time -> end time
- OEffectiveEvent();
- OEffectiveEvent( const OPimEvent& event, const QDate& startDate, Position pos = StartEnd );
- OEffectiveEvent( const OEffectiveEvent& );
- OEffectiveEvent &operator=( const OEffectiveEvent& );
- ~OEffectiveEvent();
-
- void setStartTime( const QTime& );
- void setEndTime( const QTime& );
- void setEvent( const OPimEvent& );
- void setDate( const QDate& );
-
- void setEffectiveDates( const QDate& from, const QDate& to );
-
- QString description() const;
- QString location() const;
- QString note() const;
- OPimEvent event() const;
- QTime startTime() const;
- QTime endTime() const;
- QDate date() const;
-
- /* return the length in hours */
- int length() const;
- int size() const;
-
- QDate startDate() const;
- QDate endDate() const;
-
- bool operator<( const OEffectiveEvent &e ) const;
- bool operator<=( const OEffectiveEvent &e ) const;
- bool operator==( const OEffectiveEvent &e ) const;
- bool operator!=( const OEffectiveEvent &e ) const;
- bool operator>( const OEffectiveEvent &e ) const;
- bool operator>= ( const OEffectiveEvent &e ) const;
-
- private:
- void deref();
- inline void changeOrModify();
- class Private;
- Private* priv;
- struct Data;
- Data* data;
-
-};
-
}
#endif