| Qt API | Qtopia API | Qtopia Documentation |  | 
This is the verbatim text of the event.h include file. It is provided only for illustration; the copyright remains with Trolltech.
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS.  All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef __PIMEVENT_H__
#define __PIMEVENT_H__
#include <qdatetime.h>
#include <qvaluelist.h>
#include <qcolor.h>
#include <qtopia/pim/pimrecord.h>
#include <qtopia/timeconversion.h>
#include <qtopia/timezone.h>
//#define EVENT_USE_CACHING
#if defined (QTOPIA_TEMPLATEDLL)
//MOC_SKIP_BEGIN
template class QTOPIAPIM_EXPORT QValueList<QDate>;
template class QTOPIAPIM_EXPORT QValueList<QUuid>;
//MOC_SKIP_END
#endif
class QDataStream;
class PimEventPrivate;
class QTOPIAPIM_EXPORT PimEvent : public PimRecord
{
public:
    enum EventFields {
	Description = CommonFieldsEnd,
	Location,
	StartTimeZone,
	Notes,
	StartDateTime,
	EndDateTime,
	DatebookType,
	HasAlarm,
	AlarmDelay,
	SoundType,
	
	RepeatPattern,
	RepeatFrequency,
	RepeatWeekdays,
	RepeatHasEndDate,
	RepeatEndDate,
	RecordParent,
	RecordChildren,
	Exceptions,
	
	EventFieldsEnd = 100
    };
    
    enum RepeatType 
    {
	NoRepeat, 
	Daily,
	Weekly,
	MonthlyDate, // 26th of each month
	MonthlyDay, // third thursday of each month
	Yearly, // 26 of Feb.
	MonthlyEndDay, // third last thursday of each month
    };
    //enum Type { Normal, AllDay };
    //
    enum SoundTypeChoice { Silent, Loud };
    PimEvent();
    PimEvent(const QDateTime &start, const QDateTime &end);
    void fromMap( const QMap<int,QString> &);
    virtual ~PimEvent();
    QString description() const { return mDescription; }
    QString location() const { return mLocation; }
    QDateTime start() const { return mStart; }
    QDateTime startInCurrentTZ() const;
    QDateTime end() const { return mEnd; }
    QDateTime endInCurrentTZ( ) const;
    QString notes() const { return mNotes; }
    TimeZone timeZone() const;
    TimeZone endTimeZone() const;
    bool hasAlarm() const { return mHasAlarm; }
    int alarmDelay() const { return mAlarmDelay; } // in minutes.
    SoundTypeChoice alarmSound() const { return mAlarmSound; }
    RepeatType repeatType() const { return mType; }
    bool hasRepeat() const { return mType != NoRepeat; }
    int frequency() const { return mFrequency; }
    int weekOffset() const;
    QDate repeatTill() const;
    QDate repeatTillInCurrentTZ( ) const;
    bool repeatForever() const;
    bool showOnNearest() const { return mShowOnNearest; }
    bool repeatOnWeekDay(int day) const;
    // convinence functions..
    bool isException() const;
    QUuid seriesUid() const { return isException() ? mParent : uid(); }
    bool hasExceptions() const;
    // Use these functions carefully.
    void setSeriesUid( const QUuid &u );
    void addException( const QDate &d, const QUuid &u );
    bool isValid() const;
    void clearExceptions();
    void removeException( const QDate &d ); // and the appropriate child.
    void removeException( const QUuid &u ); // and the appropriate date.
    // probably need some way of iterating over the exceptions...
    // helper functions
    bool isAllDay() const { return mAllDay; }
    void setAllDay(bool enable = TRUE);
    bool isTravel() const
    {
	return mEndTimeZone.isValid() && mTimeZone.isValid();
    }
    void setDescription( const QString &s );
    void setLocation( const QString &s );
    void setStart( const QDateTime &d );
    void setEnd( const QDateTime &e );
    void setNotes( const QString &n );
    void setTimeZone( const TimeZone & );
    void setEndTimeZone( const TimeZone & );
    void setAlarm( int minutes, SoundTypeChoice );
    void clearAlarm();
    void setRepeatType( RepeatType t );
    void setFrequency( int );
    void setRepeatTill( const QDate & );
    void setRepeatForever(bool);
    void setShowOnNearest( bool );
    void setRepeatOnWeekDay(int day, bool enable);
    QDate nextOccurrence(const QDate &from, bool * = 0) const;
    static void writeVCalendar( const QString &, const QValueList<PimEvent> & );
    static void writeVCalendar( const QString &, const PimEvent & );
    static QValueList<PimEvent> readVCalendar( const QString & );
    QColor color() const;
    virtual void setFields(const QMap<int,QString> &);
    virtual void setField(int,const QString &);
    virtual QString field(int) const;
    virtual QMap<int,QString> fields() const;
    
    static const QMap<int, QCString> &keyToIdentifierMap();
    static const QMap<QCString,int> &identifierToKeyMap();
    static const QMap<int, QString> & trFieldsMap();
    // needed for Qtopia Desktop synchronization
    static const QMap<int,int> &uniquenessMap();
#ifndef QT_NO_DATASTREAM
friend QTOPIAPIM_EXPORT QDataStream &operator>>( QDataStream &, PimEvent & );
friend QTOPIAPIM_EXPORT QDataStream &operator<<( QDataStream &, const PimEvent & );
#endif
    // protected so that we have a way for PimLib to access the guts of this.
protected:
    //virtual int endFieldMarker() const {return EventFieldCount; }
    time_t startAsUTC() const;
    time_t endAsUTC() const;
    time_t repeatTillAsUTC() const;
    // set the timezone first before calling this, if timezone is to be set.
    void setStartAsUTC(time_t);
    void setEndAsUTC(time_t);
    void setRepeatTillAsUTC(time_t);
    QString mDescription;
    QString mLocation;
    QDateTime mStart;
    QDateTime mEnd;
    QString mNotes;
    TimeZone mTimeZone;
    TimeZone mEndTimeZone;
    bool mHasAlarm;
    int mAlarmDelay;
    SoundTypeChoice mAlarmSound;
    RepeatType mType;
    int mFrequency;
    bool mHasEndDate;
    QDate mRepeatTill;
    bool mShowOnNearest;
    uchar weekMask;
    bool mAllDay;
    // exceptions, Does this match the Outlook model?
    QValueList<QDate> mExceptions; // I don't show on these dates
    QUuid mParent; // if I edit series, its this event.
    QValueList<QUuid> mChildren; // if I change recurrence (start or pattern), check the children.
private:
    static void initMaps();
    void finalizeRecord();
    void init(const QDateTime &, const QDateTime &);
    QDate p_nextOccurrence(const QDate &from, bool * = 0) const;
    int p_duration() const;
    static QColor color(bool repeats);
    PimEventPrivate *d;
};
class QTOPIAPIM_EXPORT Occurrence
{
    public:
	Occurrence() {}
	Occurrence(const Occurrence &other)
	{
	    eventCache = other.eventCache;
	    mStart = other.mStart;
	}
	Occurrence(const QDate &start, const PimEvent &);
	Occurrence& operator=(const Occurrence &other)
	{
	    eventCache = other.eventCache;
	    mStart = other.mStart;
	    return *this;
	}
	~Occurrence() {}
	QDate date() const { return mStart; }
	QDate endDate() const;
	QDateTime start() const;
	QDateTime end() const;
	QDateTime startInCurrentTZ( ) const;
	QDateTime endInCurrentTZ( ) const;
	PimEvent event() const;
    private:
	PimEvent eventCache;
	QDate mStart;
};
#ifndef QT_NO_DATASTREAM
QTOPIAPIM_EXPORT QDataStream &operator>>( QDataStream &, PimEvent & );
QTOPIAPIM_EXPORT QDataStream &operator<<( QDataStream &, const PimEvent & );
#endif
#endif
| Copyright © 2001-2002 Trolltech | Trademarks | Qtopia version 1.7.1 |