libkcal

calhelper.cpp
Go to the documentation of this file.
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 */
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  TQString subRes = (*it)->subresourceIdentifier( incidence );
48  if ( !subRes.isEmpty() && !subRes.contains( "/.INBOX.directory/" ) ) {
49  return false;
50  }
51  }
52  return true;
53 }
54 
56 {
57  return isMyKolabIncidence( calendar, incidence );
58 }
59 
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 
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  TQString res = (*it)->type();
93  if ( res == "imap" ) {
94  return true;
95  }
96  }
97  return false;
98 }
99 
100 bool CalHelper::hasMyWritableEventsFolders( const TQString &family )
101 {
102  TQString myfamily = family;
103  if ( family.isEmpty() ) {
104  myfamily = "calendar";
105  }
106 
107  CalendarResourceManager manager( myfamily );
108  manager.readConfig();
109 
110  CalendarResourceManager::ActiveIterator it;
111  for ( it=manager.activeBegin(); it != manager.activeEnd(); ++it ) {
112  if ( (*it)->readOnly() ) {
113  continue;
114  }
115 
116  const TQStringList subResources = (*it)->subresources();
117  if ( subResources.isEmpty() ) {
118  return true;
119  }
120 
121  TQStringList::ConstIterator subIt;
122  for ( subIt=subResources.begin(); subIt != subResources.end(); ++subIt ) {
123  if ( !(*it)->subresourceActive( (*subIt) ) ) {
124  continue;
125  }
126  if ( (*it)->type() == "imap" || (*it)->type() == "kolab" ) {
127  if ( (*it)->subresourceType( ( *subIt ) ) == "todo" ||
128  (*it)->subresourceType( ( *subIt ) ) == "journal" ||
129  !(*subIt).contains( "/.INBOX.directory/" ) ) {
130  continue;
131  }
132  }
133  return true;
134  }
135  }
136  return false;
137 }
138 
140 {
141  CalendarResources *cal = dynamic_cast<CalendarResources*>( calendar );
142  if ( !cal || !incidence ) {
143  return 0;
144  }
145 
146  return cal->resource( incidence );
147 }
148 
149 TQPair<ResourceCalendar *, TQString> CalHelper::incSubResourceCalendar( Calendar *calendar,
150  Incidence *incidence )
151 {
152  TQPair<ResourceCalendar *, TQString> p( 0, TQString() );
153 
154  CalendarResources *cal = dynamic_cast<CalendarResources*>( calendar );
155  if ( !cal || !incidence ) {
156  return p;
157  }
158 
159  ResourceCalendar *res = cal->resource( incidence );
160 
161  TQString subRes;
162  if ( res && res->canHaveSubresources() ) {
163  subRes = res->subresourceIdentifier( incidence );
164  }
165  p = tqMakePair( res, subRes );
166  return p;
167 }
bool isMyCalendarIncidence(Calendar *calendar, Incidence *incidence)
Determine if the specified incidence is likely owned by the the user, independent of the Resource typ...
Definition: calhelper.cpp:55
This is the main "calendar" object class.
Definition: calendar.h:169
ResourceCalendar * incResourceCalendar(Calendar *calendar, Incidence *incidence)
Returns the ResourceCalendar where the Incidence is stored, if any.
Definition: calhelper.cpp:139
This class provides a Calendar which is composed of other Calendars known as "Resources".
TQPair< ResourceCalendar *, TQString > incSubResourceCalendar(Calendar *calendar, Incidence *incidence)
Returns the (ResourceCalendar, SubResourceCalendar) pair where the Incidence is stored, if any.
Definition: calhelper.cpp:149
This class provides the interfaces for a calendar resource.
Provides a Calendar composed of several Calendar Resources.
This file is part of the API for handling calendar data and provides static convenience functions for...
This class provides the base class common to all calendar components.
Definition: incidence.h:47
Incidence * incidence(const TQString &uid)
Returns the Incidence associated with the given unique identifier.
Definition: calendar.cpp:576
ResourceCalendar * resource(Incidence *incidence)
Get the Resource associated with a specified Incidence.
virtual TQString subresourceIdentifier(Incidence *incidence)
Get the identifier of the subresource associated with a specified incidence.
bool hasMyWritableEventsFolders(const TQString &family)
Determines if the Calendar has any writable folders with Events content that are owned by me...
Definition: calhelper.cpp:100
bool usingGroupware(Calendar *calendar)
Determines if the Calendar is using a Groupware resource type.
Definition: calhelper.cpp:82
Namespace KCal is for global classes, objects and/or functions in libkcal.
Definition: alarm.h:38
bool isMyKolabIncidence(Calendar *calendar, Incidence *incidence)
Determine if the specified incidence is likely a Kolab incidence owned by the the user...
Definition: calhelper.cpp:37
virtual bool canHaveSubresources() const
Is this subresource capable of having subresources or not?
virtual Incidence::List incidences()
Return a filtered list of all Incidences for this Calendar.
Definition: calendar.cpp:178
Incidence * findMyCalendarIncidenceByUid(Calendar *calendar, const TQString &uid)
Searches for the specified Incidence by UID, returning an Incidence pointer if and only if the found ...
Definition: calhelper.cpp:60
CalendarResourceManager * resourceManager() const
Get the CalendarResourceManager used by this calendar.