summaryrefslogtreecommitdiffabout
path: root/libkcal/calendar.cpp
Unidiff
Diffstat (limited to 'libkcal/calendar.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/calendar.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/libkcal/calendar.cpp b/libkcal/calendar.cpp
index 52daaaa..88351eb 100644
--- a/libkcal/calendar.cpp
+++ b/libkcal/calendar.cpp
@@ -7,160 +7,169 @@
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 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 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <stdlib.h> 22#include <stdlib.h>
23#include <time.h> 23#include <time.h>
24 24
25#include <kdebug.h> 25#include <kdebug.h>
26#include <kglobal.h> 26#include <kglobal.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29#include "exceptions.h" 29#include "exceptions.h"
30#include "calfilter.h" 30#include "calfilter.h"
31 31
32#include "calendar.h" 32#include "calendar.h"
33#include "syncdefines.h" 33#include "syncdefines.h"
34 34
35using namespace KCal; 35using namespace KCal;
36 36
37Calendar::Calendar() 37Calendar::Calendar()
38{ 38{
39 39
40 init(); 40 init();
41 setTimeZoneId( i18n (" 00:00 Europe/London(UTC)") ); 41 setTimeZoneId( i18n (" 00:00 Europe/London(UTC)") );
42} 42}
43 43
44Calendar::Calendar( const QString &timeZoneId ) 44Calendar::Calendar( const QString &timeZoneId )
45{ 45{
46 46
47 init(); 47 init();
48 setTimeZoneId(timeZoneId); 48 setTimeZoneId(timeZoneId);
49} 49}
50 50
51void Calendar::init() 51void Calendar::init()
52{ 52{
53 mObserver = 0; 53 mObserver = 0;
54 mNewObserver = false; 54 mNewObserver = false;
55 55 mUndoIncidence = 0;
56 mModified = false; 56 mModified = false;
57 57
58 // Setup default filter, which does nothing 58 // Setup default filter, which does nothing
59 mDefaultFilter = new CalFilter; 59 mDefaultFilter = new CalFilter;
60 mFilter = mDefaultFilter; 60 mFilter = mDefaultFilter;
61 mFilter->setEnabled(false); 61 mFilter->setEnabled(false);
62 62
63 // initialize random numbers. This is a hack, and not 63 // initialize random numbers. This is a hack, and not
64 // even that good of one at that. 64 // even that good of one at that.
65// srandom(time(0)); 65// srandom(time(0));
66 66
67 // user information... 67 // user information...
68 setOwner(i18n("Unknown Name")); 68 setOwner(i18n("Unknown Name"));
69 setEmail(i18n("unknown@nowhere")); 69 setEmail(i18n("unknown@nowhere"));
70 70
71#if 0 71#if 0
72 tmpStr = KOPrefs::instance()->mTimeZone; 72 tmpStr = KOPrefs::instance()->mTimeZone;
73// kdDebug(5800) << "Calendar::Calendar(): TimeZone: " << tmpStr << endl; 73// kdDebug(5800) << "Calendar::Calendar(): TimeZone: " << tmpStr << endl;
74 int dstSetting = KOPrefs::instance()->mDaylightSavings; 74 int dstSetting = KOPrefs::instance()->mDaylightSavings;
75 extern long int timezone; 75 extern long int timezone;
76 struct tm *now; 76 struct tm *now;
77 time_t curtime; 77 time_t curtime;
78 curtime = time(0); 78 curtime = time(0);
79 now = localtime(&curtime); 79 now = localtime(&curtime);
80 int hourOff = - ((timezone / 60) / 60); 80 int hourOff = - ((timezone / 60) / 60);
81 if (now->tm_isdst) 81 if (now->tm_isdst)
82 hourOff += 1; 82 hourOff += 1;
83 QString tzStr; 83 QString tzStr;
84 tzStr.sprintf("%.2d%.2d", 84 tzStr.sprintf("%.2d%.2d",
85 hourOff, 85 hourOff,
86 abs((timezone / 60) % 60)); 86 abs((timezone / 60) % 60));
87 87
88 // if no time zone was in the config file, write what we just discovered. 88 // if no time zone was in the config file, write what we just discovered.
89 if (tmpStr.isEmpty()) { 89 if (tmpStr.isEmpty()) {
90// KOPrefs::instance()->mTimeZone = tzStr; 90// KOPrefs::instance()->mTimeZone = tzStr;
91 } else { 91 } else {
92 tzStr = tmpStr; 92 tzStr = tmpStr;
93 } 93 }
94 94
95 // if daylight savings has changed since last load time, we need 95 // if daylight savings has changed since last load time, we need
96 // to rewrite these settings to the config file. 96 // to rewrite these settings to the config file.
97 if ((now->tm_isdst && !dstSetting) || 97 if ((now->tm_isdst && !dstSetting) ||
98 (!now->tm_isdst && dstSetting)) { 98 (!now->tm_isdst && dstSetting)) {
99 KOPrefs::instance()->mTimeZone = tzStr; 99 KOPrefs::instance()->mTimeZone = tzStr;
100 KOPrefs::instance()->mDaylightSavings = now->tm_isdst; 100 KOPrefs::instance()->mDaylightSavings = now->tm_isdst;
101 } 101 }
102 102
103 setTimeZone(tzStr); 103 setTimeZone(tzStr);
104#endif 104#endif
105 105
106// KOPrefs::instance()->writeConfig(); 106// KOPrefs::instance()->writeConfig();
107} 107}
108 108
109Calendar::~Calendar() 109Calendar::~Calendar()
110{ 110{
111 delete mDefaultFilter; 111 delete mDefaultFilter;
112 if ( mUndoIncidence )
113 delete mUndoIncidence;
112} 114}
113 115
114const QString &Calendar::getOwner() const 116const QString &Calendar::getOwner() const
115{ 117{
116 return mOwner; 118 return mOwner;
117} 119}
118 120
121bool Calendar::undoDeleteIncidence()
122{
123 if (!mUndoIncidence)
124 return false;
125 addIncidence(mUndoIncidence);
126 mUndoIncidence = 0;
127}
119void Calendar::setOwner(const QString &os) 128void Calendar::setOwner(const QString &os)
120{ 129{
121 int i; 130 int i;
122 mOwner = os; 131 mOwner = os;
123 i = mOwner.find(','); 132 i = mOwner.find(',');
124 if (i != -1) 133 if (i != -1)
125 mOwner = mOwner.left(i); 134 mOwner = mOwner.left(i);
126 135
127 setModified( true ); 136 setModified( true );
128} 137}
129 138
130void Calendar::setTimeZone(const QString & tz) 139void Calendar::setTimeZone(const QString & tz)
131{ 140{
132 bool neg = FALSE; 141 bool neg = FALSE;
133 int hours, minutes; 142 int hours, minutes;
134 QString tmpStr(tz); 143 QString tmpStr(tz);
135 144
136 if (tmpStr.left(1) == "-") 145 if (tmpStr.left(1) == "-")
137 neg = TRUE; 146 neg = TRUE;
138 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+") 147 if (tmpStr.left(1) == "-" || tmpStr.left(1) == "+")
139 tmpStr.remove(0, 1); 148 tmpStr.remove(0, 1);
140 hours = tmpStr.left(2).toInt(); 149 hours = tmpStr.left(2).toInt();
141 if (tmpStr.length() > 2) 150 if (tmpStr.length() > 2)
142 minutes = tmpStr.right(2).toInt(); 151 minutes = tmpStr.right(2).toInt();
143 else 152 else
144 minutes = 0; 153 minutes = 0;
145 mTimeZone = (60*hours+minutes); 154 mTimeZone = (60*hours+minutes);
146 if (neg) 155 if (neg)
147 mTimeZone = -mTimeZone; 156 mTimeZone = -mTimeZone;
148 mLocalTime = false; 157 mLocalTime = false;
149 158
150 setModified( true ); 159 setModified( true );
151} 160}
152 161
153QString Calendar::getTimeZoneStr() const 162QString Calendar::getTimeZoneStr() const
154{ 163{
155 if (mLocalTime) 164 if (mLocalTime)
156 return ""; 165 return "";
157 QString tmpStr; 166 QString tmpStr;
158 int hours = abs(mTimeZone / 60); 167 int hours = abs(mTimeZone / 60);
159 int minutes = abs(mTimeZone % 60); 168 int minutes = abs(mTimeZone % 60);
160 bool neg = mTimeZone < 0; 169 bool neg = mTimeZone < 0;
161 170
162 tmpStr.sprintf("%c%.2d%.2d", 171 tmpStr.sprintf("%c%.2d%.2d",
163 (neg ? '-' : '+'), 172 (neg ? '-' : '+'),
164 hours, minutes); 173 hours, minutes);
165 return tmpStr; 174 return tmpStr;
166} 175}