1 | /* |
2 | This file is part of the kcal library. |
3 | |
4 | Copyright (c) 2009-2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.net> |
5 | |
6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public |
8 | License as published by the Free Software Foundation; either |
9 | version 2 of the License, or (at your option) any later version. |
10 | |
11 | This library is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | Library General Public License for more details. |
15 | |
16 | You should have received a copy of the GNU Library General Public License |
17 | along with this library; see the file COPYING.LIB. If not, write to |
18 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
19 | Boston, MA 02110-1301, USA. |
20 | */ |
21 | /** |
22 | @file |
23 | This file is part of the API for handling calendar data and provides |
24 | static convenience functions for making decisions about calendar data. |
25 | |
26 | @brief |
27 | Provides methods for making decisions about calendar data. |
28 | |
29 | @author Allen Winter \<allen@kdab.net\> |
30 | */ |
31 | |
32 | #include "calhelper.h" |
33 | #include "calendarresources.h" |
34 | |
35 | using namespace KCal; |
36 | |
37 | bool CalHelper::isMyKolabIncidence( Calendar *calendar, Incidence *incidence ) |
38 | { |
39 | CalendarResources *cal = dynamic_cast<CalendarResources*>( calendar ); |
40 | if ( !cal || !incidence ) { |
41 | return true; |
42 | } |
43 | |
44 | CalendarResourceManager *manager = cal->resourceManager(); |
45 | CalendarResourceManager::Iterator it; |
46 | for ( it = manager->begin(); it != manager->end(); ++it ) { |
47 | QString subRes = (*it)->subresourceIdentifier( incidence ); |
48 | if ( !subRes.isEmpty() && !subRes.contains( "/.INBOX.directory/" ) ) { |
49 | return false; |
50 | } |
51 | } |
52 | return true; |
53 | } |
54 | |
55 | bool CalHelper::isMyCalendarIncidence( Calendar *calendar, Incidence *incidence ) |
56 | { |
57 | return isMyKolabIncidence( calendar, incidence ); |
58 | } |
59 | |
60 | Incidence *CalHelper::findMyCalendarIncidenceByUid( Calendar *calendar, const QString &uid ) |
61 | { |
62 | // Determine if this incidence is in my calendar (and owned by me) |
63 | Incidence *existingIncidence = 0; |
64 | if ( calendar ) { |
65 | existingIncidence = calendar->incidence( uid ); |
66 | if ( !isMyCalendarIncidence( calendar, existingIncidence ) ) { |
67 | existingIncidence = 0; |
68 | } |
69 | if ( !existingIncidence ) { |
70 | const Incidence::List list = calendar->incidences(); |
71 | for ( Incidence::List::ConstIterator it = list.begin(), end = list.end(); it != end; ++it ) { |
72 | if ( (*it)->schedulingID() == uid && isMyCalendarIncidence( calendar, *it ) ) { |
73 | existingIncidence = *it; |
74 | break; |
75 | } |
76 | } |
77 | } |
78 | } |
79 | return existingIncidence; |
80 | } |
81 | |
82 | bool CalHelper::usingGroupware( Calendar *calendar ) |
83 | { |
84 | CalendarResources *cal = dynamic_cast<CalendarResources*>( calendar ); |
85 | if ( !cal ) { |
86 | return true; |
87 | } |
88 | |
89 | CalendarResourceManager *manager = cal->resourceManager(); |
90 | CalendarResourceManager::Iterator it; |
91 | for ( it = manager->begin(); it != manager->end(); ++it ) { |
92 | QString res = (*it)->type(); |
93 | if ( res == QLatin1String( "imap" ) ) { |
94 | return true; |
95 | } |
96 | } |
97 | return false; |
98 | } |
99 | |
100 | |