qtmeetings sources to Maemo garage
[qtmeetings] / src / Domain / Meeting.cpp
1 #include "Meeting.h"
2 #include "Room.h"
3
4 Meeting::Meeting( const QString &aPrimaryId,
5                                   const Room &aRoom,
6                                   const QDateTime &aStartsAt,
7                                   const QDateTime &aEndsAt,
8                                   const QString &aSubject,
9                                   const QString &aOrganizerName,
10                                   const QString &aOrganizerEMail,
11                                   const QString &aDescription ) :
12                 iPrimaryId( aPrimaryId ),
13                 iSecondaryId( QString::null ),
14                 iRoom( aRoom ),
15                 iStartsAt( aStartsAt ),
16                 iEndsAt( aEndsAt ),
17                 iSubject( aSubject ),
18                 iOrganizerName( aOrganizerName ),
19                 iOrganizerEMail( aOrganizerEMail ),
20                 iDescription( aDescription ),
21                 iDetailsAvailable( false )
22 {
23 }
24
25 Meeting::~Meeting()
26 {
27 }
28
29 Room Meeting::room() const
30 {
31         return iRoom;
32 }
33
34 QString Meeting::primaryId() const
35 {
36         return iPrimaryId;
37 }
38
39 QString Meeting::secondaryId() const
40 {
41         return iSecondaryId;
42 }
43
44 QString Meeting::organizer() const
45 {
46         if ( iOrganizerName == "" && iOrganizerEMail != "" )
47         {
48                 return iOrganizerEMail;
49         }
50         if ( iOrganizerName != "" && iOrganizerEMail == "" )
51         {
52                 return iOrganizerName;
53         }
54         if ( iOrganizerEMail == "" && iOrganizerName == "" )
55         {
56                 return "";
57         }
58         return QString( "%1 <%2>" ).arg( iOrganizerName ).arg( iOrganizerEMail );
59
60 }
61
62 QDateTime Meeting::startsAt() const
63 {
64         return iStartsAt;
65 }
66
67 QDateTime Meeting::endsAt() const
68 {
69         return iEndsAt;
70 }
71
72 QString Meeting::subject() const
73 {
74         return iSubject;
75 }
76
77 QString Meeting::description() const
78 {
79         return iDescription;
80 }
81
82 bool Meeting::detailsAvailable() const
83 {
84         return iDetailsAvailable;
85 }
86
87 void Meeting::setSecondaryId( const QString& aSecondaryId )
88 {
89         iSecondaryId = aSecondaryId;
90         iDetailsAvailable = true;
91 }
92
93 void Meeting::setOrganizer( const QString &aOrganizerName, const QString &aOrganizerEMail )
94 {
95         iOrganizerName = aOrganizerName;
96         iOrganizerEMail = aOrganizerEMail;
97 }
98
99 void Meeting::setStartsAt( QDateTime aNewStart )
100 {
101         iStartsAt = aNewStart;
102 }
103
104 void Meeting::setEndsAt( QDateTime aNewEnd )
105 {
106         iEndsAt = aNewEnd;
107 }
108
109 void Meeting::setSubject( const QString &aSubject )
110 {
111         iSubject = aSubject;
112 }
113
114 void Meeting::setDescription( const QString &aDescription )
115 {
116         iDescription = aDescription;
117 }
118
119 bool Meeting::equals( const Meeting &aOther ) const
120 {
121         if ( iRoom.equals( aOther.room() )
122                   && iStartsAt == aOther.iStartsAt
123                   && iEndsAt == aOther.iEndsAt
124                   && iPrimaryId == aOther.iPrimaryId )
125         {
126                 return true;
127         }
128         return false;
129 }
130
131 bool Meeting::overlaps( const Meeting &aOther ) const
132 {
133         return (( iStartsAt >= aOther.iStartsAt && iStartsAt < aOther.iEndsAt ) ||
134                   ( iStartsAt <= aOther.iStartsAt && iEndsAt > aOther.iStartsAt ) );
135 }
136
137 QString Meeting::toString() const
138 {
139         QString meetingToString = QString( "[MEETING: id1:%1 id2:%2 in:%3 from:%4 until:%5 by:%6 subject:%7 description:%8]" )
140                                           .arg( iPrimaryId )
141                                           .arg( iSecondaryId )
142                                           .arg( iRoom.toString() )
143                                           .arg( iStartsAt.toString() )
144                                           .arg( iEndsAt.toString() )
145                                           .arg( organizer() )
146                                           .arg( iSubject )
147                                           .arg( iDescription );
148
149         return meetingToString;
150 }