summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp9
-rw-r--r--korganizer/koagendaview.cpp2
-rw-r--r--korganizer/kolistview.cpp68
-rw-r--r--korganizer/kolistview.h5
-rw-r--r--korganizer/koprefs.cpp4
-rw-r--r--korganizer/koprefs.h1
-rw-r--r--libkcal/calendar.h1
-rw-r--r--libkcal/calendarlocal.cpp10
-rw-r--r--libkcal/calendarlocal.h1
-rw-r--r--libkcal/incidencebase.cpp2
10 files changed, 87 insertions, 16 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 377a66f..2012e92 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1812,56 +1812,49 @@ bool CalendarView::importQtopia( const QString &categories,
1812 if ( syncOK ) { 1812 if ( syncOK ) {
1813 if ( mSyncManager->mWriteBackFile ) 1813 if ( mSyncManager->mWriteBackFile )
1814 { 1814 {
1815 // write back XML file 1815 // write back XML file
1816 1816
1817 } 1817 }
1818 setModified( true ); 1818 setModified( true );
1819 } 1819 }
1820 } else { 1820 } else {
1821 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1821 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1822 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1822 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1823 question, i18n("Ok")) ; 1823 question, i18n("Ok")) ;
1824 } 1824 }
1825 delete calendar; 1825 delete calendar;
1826 updateView(); 1826 updateView();
1827 return syncOK; 1827 return syncOK;
1828 1828
1829 1829
1830#endif 1830#endif
1831 1831
1832} 1832}
1833 1833
1834void CalendarView::setSyncEventsReadOnly() 1834void CalendarView::setSyncEventsReadOnly()
1835{ 1835{
1836 Event * ev; 1836 mCalendar->setSyncEventsReadOnly();
1837 QPtrList<Event> eL = mCalendar->rawEvents();
1838 ev = eL.first();
1839 while ( ev ) {
1840 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1841 ev->setReadOnly( true );
1842 ev = eL.next();
1843 }
1844} 1837}
1845 1838
1846bool CalendarView::loadCalendars() 1839bool CalendarView::loadCalendars()
1847{ 1840{
1848 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1841 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1849 KopiCalendarFile * cal = calendars.first(); 1842 KopiCalendarFile * cal = calendars.first();
1850 mCalendar->setDefaultCalendar( 1 ); 1843 mCalendar->setDefaultCalendar( 1 );
1851 openCalendar( MainWindow::defaultFileName(), false ); 1844 openCalendar( MainWindow::defaultFileName(), false );
1852 cal = calendars.next(); 1845 cal = calendars.next();
1853 while ( cal ) { 1846 while ( cal ) {
1854 addCalendar( cal ); 1847 addCalendar( cal );
1855 cal = calendars.next(); 1848 cal = calendars.next();
1856 } 1849 }
1857 restoreCalendarSettings(); 1850 restoreCalendarSettings();
1858 return true; 1851 return true;
1859} 1852}
1860bool CalendarView::restoreCalendarSettings() 1853bool CalendarView::restoreCalendarSettings()
1861{ 1854{
1862 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1855 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1863 KopiCalendarFile * cal = calendars.first(); 1856 KopiCalendarFile * cal = calendars.first();
1864 while ( cal ) { 1857 while ( cal ) {
1865 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 1858 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
1866 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 1859 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
1867 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 1860 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index b2b136a..93ff55e 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -641,49 +641,49 @@ KOAgendaButton* KOAgendaView::getNewDaylabel()
641{ 641{
642 642
643 KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels); 643 KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels);
644 connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) ); 644 connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) );
645 mDayLabelsList.append( dayLabel ); 645 mDayLabelsList.append( dayLabel );
646 mLayoutDayLabels->addWidget(dayLabel); 646 mLayoutDayLabels->addWidget(dayLabel);
647 return dayLabel ; 647 return dayLabel ;
648} 648}
649 649
650void KOAgendaView::createDayLabels() 650void KOAgendaView::createDayLabels()
651{ 651{
652 652
653 if ( mBlockUpdating || globalFlagBlockLabel == 1) { 653 if ( mBlockUpdating || globalFlagBlockLabel == 1) {
654 // qDebug(" KOAgendaView::createDayLabels() blocked "); 654 // qDebug(" KOAgendaView::createDayLabels() blocked ");
655 return; 655 return;
656 656
657 } 657 }
658 int newHight; 658 int newHight;
659 if ( !mSelectedDates.count()) 659 if ( !mSelectedDates.count())
660 return; 660 return;
661 661
662 // ### Before deleting and recreating we could check if mSelectedDates changed... 662 // ### Before deleting and recreating we could check if mSelectedDates changed...
663 // It would remove some flickering and gain speed (since this is called by 663 // It would remove some flickering and gain speed (since this is called by
664 // each updateView() call) 664 // each updateView() call)
665 665
666 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2; 666 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2;
667 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); 667 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth );
668 if ( maxWid < 20 ) 668 if ( maxWid < 20 )
669 maxWid = 20; 669 maxWid = 20;
670 670
671 QFont dlf = KOPrefs::instance()->mTimeLabelsFont; 671 QFont dlf = KOPrefs::instance()->mTimeLabelsFont;
672 QFontMetrics fm ( dlf ); 672 QFontMetrics fm ( dlf );
673 int selCount = mSelectedDates.count(); 673 int selCount = mSelectedDates.count();
674 int widModulo = maxWid - (mAgenda->gridSpacingX() * selCount)+1; 674 int widModulo = maxWid - (mAgenda->gridSpacingX() * selCount)+1;
675 QString dayTest = "Mon 20"; 675 QString dayTest = "Mon 20";
676 //QString dayTest = "Mon 20"; 676 //QString dayTest = "Mon 20";
677 int wid = fm.width( dayTest ); 677 int wid = fm.width( dayTest );
678 //maxWid -= ( selCount * 3 ); //working for QLabels 678 //maxWid -= ( selCount * 3 ); //working for QLabels
679 if ( QApplication::desktop()->width() <= 320 ) 679 if ( QApplication::desktop()->width() <= 320 )
680 maxWid -= ( selCount * 3 ); //working for QPushButton 680 maxWid -= ( selCount * 3 ); //working for QPushButton
681 else 681 else
682 maxWid -= ( selCount * 3 ); //working for QPushButton 682 maxWid -= ( selCount * 3 ); //working for QPushButton
683 if ( maxWid < 0 ) 683 if ( maxWid < 0 )
684 maxWid = 20; 684 maxWid = 20;
685 int needWid = wid * selCount; 685 int needWid = wid * selCount;
686 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid ); 686 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid );
687 //if ( needWid > maxWid ) 687 //if ( needWid > maxWid )
688 // qDebug("DAYLABELS TOOOOOOO BIG "); 688 // qDebug("DAYLABELS TOOOOOOO BIG ");
689 while ( needWid > maxWid ) { 689 while ( needWid > maxWid ) {
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 1f3b4c6..c705c73 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -46,51 +46,48 @@
46#include <libkcal/calendar.h> 46#include <libkcal/calendar.h>
47#include <libkcal/calendarlocal.h> 47#include <libkcal/calendarlocal.h>
48#include <libkcal/icalformat.h> 48#include <libkcal/icalformat.h>
49#include <libkcal/vcalformat.h> 49#include <libkcal/vcalformat.h>
50#include <libkcal/recurrence.h> 50#include <libkcal/recurrence.h>
51#include <libkcal/filestorage.h> 51#include <libkcal/filestorage.h>
52#include <libkdepim/categoryselectdialog.h> 52#include <libkdepim/categoryselectdialog.h>
53#include <libkcal/kincidenceformatter.h> 53#include <libkcal/kincidenceformatter.h>
54#ifndef DESKTOP_VERSION 54#ifndef DESKTOP_VERSION
55#include <qpe/qpeapplication.h> 55#include <qpe/qpeapplication.h>
56#else 56#else
57#include <qapplication.h> 57#include <qapplication.h>
58#endif 58#endif
59 59
60#ifndef KORG_NOPRINTER 60#ifndef KORG_NOPRINTER
61#include "calprinter.h" 61#include "calprinter.h"
62#endif 62#endif
63#include "koglobals.h" 63#include "koglobals.h"
64#include "koprefs.h" 64#include "koprefs.h"
65#include "kfiledialog.h" 65#include "kfiledialog.h"
66 66
67#include "kolistview.h" 67#include "kolistview.h"
68#include "koeventviewer.h" 68#include "koeventviewer.h"
69 69
70
71
72
73class KOListViewWhatsThis :public QWhatsThis 70class KOListViewWhatsThis :public QWhatsThis
74{ 71{
75public: 72public:
76 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 73 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
77 74
78protected: 75protected:
79 virtual QString text( const QPoint& p) 76 virtual QString text( const QPoint& p)
80 { 77 {
81 return _view->getWhatsThisText(p) ; 78 return _view->getWhatsThisText(p) ;
82 } 79 }
83private: 80private:
84 QWidget* _wid; 81 QWidget* _wid;
85 KOListView * _view; 82 KOListView * _view;
86}; 83};
87 84
88 85
89ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 86ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
90{ 87{
91 mItem = item; 88 mItem = item;
92 mDate = date; 89 mDate = date;
93} 90}
94 91
95ListItemVisitor::~ListItemVisitor() 92ListItemVisitor::~ListItemVisitor()
96{ 93{
@@ -119,48 +116,49 @@ bool ListItemVisitor::visit(Event *e)
119 } 116 }
120 mItem->setText(0,e->summary()); 117 mItem->setText(0,e->summary());
121 mItem->setText(1,start); 118 mItem->setText(1,start);
122 if ( e->doesFloat() ) 119 if ( e->doesFloat() )
123 mItem->setText(2,"---"); 120 mItem->setText(2,"---");
124 else 121 else
125 mItem->setText(2,e->dtStartTimeStr()); 122 mItem->setText(2,e->dtStartTimeStr());
126 mItem->setText(3,end); 123 mItem->setText(3,end);
127 if ( e->doesFloat() ) 124 if ( e->doesFloat() )
128 mItem->setText(4,"---"); 125 mItem->setText(4,"---");
129 else 126 else
130 mItem->setText(4,e->dtEndTimeStr()); 127 mItem->setText(4,e->dtEndTimeStr());
131 if ( e->isAlarmEnabled() ) { 128 if ( e->isAlarmEnabled() ) {
132 mItem->setText(5,e->alarms().first()->offsetText() ); 129 mItem->setText(5,e->alarms().first()->offsetText() );
133 } else { 130 } else {
134 mItem->setText(5, i18n("No")); 131 mItem->setText(5, i18n("No"));
135 } 132 }
136 mItem->setText(6, e->recurrence()->recurrenceText()); 133 mItem->setText(6, e->recurrence()->recurrenceText());
137 if( ! e->doesRecur() ) 134 if( ! e->doesRecur() )
138 mItem->setSortKey( 6, "-" ); 135 mItem->setSortKey( 6, "-" );
139 mItem->setText(7,"---"); 136 mItem->setText(7,"---");
140 mItem->setText(8,"---"); 137 mItem->setText(8,"---");
141 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); 138 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No"));
142 mItem->setText(10,e->categoriesStr()); 139 mItem->setText(10,e->categoriesStr());
140 mItem->setText(11, KOPrefs::instance()->calName( e->calID() ));
143 141
144 QString key; 142 QString key;
145 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); 143 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time();
146 key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); 144 key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute());
147 mItem->setSortKey(1,key); 145 mItem->setSortKey(1,key);
148 146
149 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); 147 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time();
150 key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); 148 key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute());
151 mItem->setSortKey(3,key); 149 mItem->setSortKey(3,key);
152 return true; 150 return true;
153} 151}
154 152
155bool ListItemVisitor::visit(Todo *t) 153bool ListItemVisitor::visit(Todo *t)
156{ 154{
157 mItem->setText(0,i18n("Todo: %1").arg(t->summary())); 155 mItem->setText(0,i18n("Todo: %1").arg(t->summary()));
158 if (t->hasStartDate()) { 156 if (t->hasStartDate()) {
159 mItem->setText(1,t->dtStartDateStr()); 157 mItem->setText(1,t->dtStartDateStr());
160 if (t->doesFloat()) { 158 if (t->doesFloat()) {
161 mItem->setText(2,"---"); 159 mItem->setText(2,"---");
162 } else { 160 } else {
163 mItem->setText(2,t->dtStartTimeStr()); 161 mItem->setText(2,t->dtStartTimeStr());
164 } 162 }
165 } else { 163 } else {
166 mItem->setText(1,"---"); 164 mItem->setText(1,"---");
@@ -168,175 +166,186 @@ bool ListItemVisitor::visit(Todo *t)
168 } 166 }
169 mItem->setText(3,"---"); 167 mItem->setText(3,"---");
170 mItem->setText(4,"---"); 168 mItem->setText(4,"---");
171 if ( t->isAlarmEnabled() ) { 169 if ( t->isAlarmEnabled() ) {
172 mItem->setText(5,t->alarms().first()->offsetText() ); 170 mItem->setText(5,t->alarms().first()->offsetText() );
173 } else { 171 } else {
174 mItem->setText(5, i18n("No")); 172 mItem->setText(5, i18n("No"));
175 } 173 }
176 mItem->setText(6, t->recurrence()->recurrenceText()); 174 mItem->setText(6, t->recurrence()->recurrenceText());
177 if( ! t->doesRecur() ) 175 if( ! t->doesRecur() )
178 mItem->setSortKey( 6, "-" ); 176 mItem->setSortKey( 6, "-" );
179 if (t->hasDueDate()) { 177 if (t->hasDueDate()) {
180 mItem->setText(7,t->dtDueDateStr()); 178 mItem->setText(7,t->dtDueDateStr());
181 if (t->doesFloat()) { 179 if (t->doesFloat()) {
182 mItem->setText(8,"---"); 180 mItem->setText(8,"---");
183 } else { 181 } else {
184 mItem->setText(8,t->dtDueTimeStr()); 182 mItem->setText(8,t->dtDueTimeStr());
185 } 183 }
186 } else { 184 } else {
187 mItem->setText(7,"---"); 185 mItem->setText(7,"---");
188 mItem->setText(8,"---"); 186 mItem->setText(8,"---");
189 } 187 }
190 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); 188 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No"));
191 mItem->setText(10,t->categoriesStr()); 189 mItem->setText(10,t->categoriesStr());
190 mItem->setText(11, KOPrefs::instance()->calName( t->calID() ));
192 191
193 QString key; 192 QString key;
194 QDate d; 193 QDate d;
195 if (t->hasDueDate()) { 194 if (t->hasDueDate()) {
196 d = t->dtDue().date(); 195 d = t->dtDue().date();
197 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); 196 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time();
198 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 197 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
199 mItem->setSortKey(7,key); 198 mItem->setSortKey(7,key);
200 } 199 }
201 if ( t->hasStartDate() ) { 200 if ( t->hasStartDate() ) {
202 d = t->dtStart().date(); 201 d = t->dtStart().date();
203 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); 202 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time();
204 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 203 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
205 mItem->setSortKey(1,key); 204 mItem->setSortKey(1,key);
206 } 205 }
207 return true; 206 return true;
208} 207}
209 208
210bool ListItemVisitor::visit(Journal * j) 209bool ListItemVisitor::visit(Journal * j)
211{ 210{
212 QString des = j->description().left(30); 211 QString des = j->description().left(30);
213 des = des.simplifyWhiteSpace (); 212 des = des.simplifyWhiteSpace ();
214 des.replace (QRegExp ("\\n"),"" ); 213 des.replace (QRegExp ("\\n"),"" );
215 des.replace (QRegExp ("\\r"),"" ); 214 des.replace (QRegExp ("\\r"),"" );
216 mItem->setText(0,i18n("Journal: ")+des.left(25)); 215 mItem->setText(0,i18n("Journal: ")+des.left(25));
217 mItem->setText(1,j->dtStartDateStr()); 216 mItem->setText(1,j->dtStartDateStr());
218 mItem->setText(2,"---"); 217 mItem->setText(2,"---");
219 mItem->setText(3,"---"); 218 mItem->setText(3,"---");
220 mItem->setText(4,"---"); 219 mItem->setText(4,"---");
221 mItem->setText(5,"---"); 220 mItem->setText(5,"---");
222 mItem->setText(6,"---"); 221 mItem->setText(6,"---");
223 mItem->setText(7,j->dtStartDateStr()); 222 mItem->setText(7,j->dtStartDateStr());
224 mItem->setText(8,"---"); 223 mItem->setText(8,"---");
225 mItem->setText(9,"---"); 224 mItem->setText(9,"---");
226 mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) ); 225 mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) );
226 mItem->setText(11, KOPrefs::instance()->calName( j->calID() ));
227 227
228 QString key; 228 QString key;
229 QDate d = j->dtStart().date(); 229 QDate d = j->dtStart().date();
230 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 230 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
231 mItem->setSortKey(1,key); 231 mItem->setSortKey(1,key);
232 mItem->setSortKey(7,key); 232 mItem->setSortKey(7,key);
233 233
234 return true; 234 return true;
235} 235}
236 236
237KOListView::KOListView(Calendar *calendar, QWidget *parent, 237KOListView::KOListView(Calendar *calendar, QWidget *parent,
238 const char *name) 238 const char *name)
239 : KOEventView(calendar, parent, name) 239 : KOEventView(calendar, parent, name)
240{ 240{
241 mActiveItem = 0; 241 mActiveItem = 0;
242 mListView = new KOListViewListView(this); 242 mListView = new KOListViewListView(this);
243 mListView->addColumn(i18n("Summary")); 243 mListView->addColumn(i18n("Summary"));
244 mListView->addColumn(i18n("Start Date")); 244 mListView->addColumn(i18n("Start Date"));
245 mListView->addColumn(i18n("Start Time")); 245 mListView->addColumn(i18n("Start Time"));
246 mListView->addColumn(i18n("End Date")); 246 mListView->addColumn(i18n("End Date"));
247 mListView->addColumn(i18n("End Time")); 247 mListView->addColumn(i18n("End Time"));
248 mListView->addColumn(i18n("Alarm")); // alarm set? 248 mListView->addColumn(i18n("Alarm")); // alarm set?
249 mListView->addColumn(i18n("Recurs")); // recurs? 249 mListView->addColumn(i18n("Recurs")); // recurs?
250 mListView->addColumn(i18n("Due Date")); 250 mListView->addColumn(i18n("Due Date"));
251 mListView->addColumn(i18n("Due Time")); 251 mListView->addColumn(i18n("Due Time"));
252 mListView->addColumn(i18n("Cancelled")); 252 mListView->addColumn(i18n("Cancelled"));
253 mListView->addColumn(i18n("Categories")); 253 mListView->addColumn(i18n("Categories"));
254 mListView->addColumn(i18n("Calendar"));
254 255
255 mListView->setColumnAlignment(0,AlignLeft); 256 mListView->setColumnAlignment(0,AlignLeft);
256 mListView->setColumnAlignment(1,AlignLeft); 257 mListView->setColumnAlignment(1,AlignLeft);
257 mListView->setColumnAlignment(2,AlignHCenter); 258 mListView->setColumnAlignment(2,AlignHCenter);
258 mListView->setColumnAlignment(3,AlignLeft); 259 mListView->setColumnAlignment(3,AlignLeft);
259 mListView->setColumnAlignment(4,AlignHCenter); 260 mListView->setColumnAlignment(4,AlignHCenter);
260 mListView->setColumnAlignment(5,AlignLeft); 261 mListView->setColumnAlignment(5,AlignLeft);
261 mListView->setColumnAlignment(6,AlignLeft); 262 mListView->setColumnAlignment(6,AlignLeft);
262 mListView->setColumnAlignment(7,AlignLeft); 263 mListView->setColumnAlignment(7,AlignLeft);
263 mListView->setColumnAlignment(8,AlignLeft); 264 mListView->setColumnAlignment(8,AlignLeft);
264 mListView->setColumnAlignment(9,AlignLeft); 265 mListView->setColumnAlignment(9,AlignLeft);
265 mListView->setColumnAlignment(10,AlignLeft); 266 mListView->setColumnAlignment(10,AlignLeft);
266 mListView->setColumnWidthMode(10, QListView::Manual); 267 mListView->setColumnAlignment(11,AlignLeft);
267 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); 268 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this);
268 269
269 int iii = 0; 270 int iii = 0;
270 for ( iii = 0; iii< 10 ; ++iii ) 271 for ( iii = 0; iii< 12 ; ++iii )
271 mListView->setColumnWidthMode( iii, QListView::Manual ); 272 mListView->setColumnWidthMode( iii, QListView::Manual );
272 273
273 QBoxLayout *layoutTop = new QVBoxLayout(this); 274 QBoxLayout *layoutTop = new QVBoxLayout(this);
274 layoutTop->addWidget(mListView); 275 layoutTop->addWidget(mListView);
275 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 276 mListView->setFont ( KOPrefs::instance()->mListViewFont );
276 mPopupMenu = eventPopup(); 277 mPopupMenu = eventPopup();
277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 278 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
278 i18n("Select all"),this, 279 i18n("Select all"),this,
279 SLOT(allSelection()),true); 280 SLOT(allSelection()),true);
280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 281 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
281 i18n("Deselect all"),this, 282 i18n("Deselect all"),this,
282 SLOT(clearSelection()),true); 283 SLOT(clearSelection()),true);
283 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 284 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
284 i18n("Delete all selected"),this, 285 i18n("Delete all selected"),this,
285 SLOT(deleteAll()),true); 286 SLOT(deleteAll()),true);
286 287
287 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 288 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
288 i18n("Hide all selected"),this, 289 i18n("Hide all selected"),this,
289 SLOT(hideAll()),true); 290 SLOT(hideAll()),true);
290 291
291 mPopupMenu->insertSeparator(); 292 mPopupMenu->insertSeparator();
292#ifdef DESKTOP_VERSION 293#ifdef DESKTOP_VERSION
293 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 294 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
294 i18n("Print complete list"),this, 295 i18n("Print complete list"),this,
295 SLOT(printList()),true); 296 SLOT(printList()),true);
296 mPopupMenu->insertSeparator(); 297 mPopupMenu->insertSeparator();
297#endif 298#endif
299 mCalPopup = new QPopupMenu ( this );
300 mPopupMenu->insertItem( i18n("Set Calendar"), mCalPopup );
301
302 QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this,
303 SLOT( populateCalPopup() ));
304 QObject::connect(mCalPopup,SIGNAL(activated( int )),this,
305 SLOT( setCalendar( int ) ));
298 QPopupMenu * exportPO = new QPopupMenu ( this ); 306 QPopupMenu * exportPO = new QPopupMenu ( this );
299 mPopupMenu->insertItem( i18n("Export selected"), exportPO ); 307 mPopupMenu->insertItem( i18n("Export selected"), exportPO );
300 exportPO->insertItem( i18n("As iCal (ics) file..."),this, 308 exportPO->insertItem( i18n("As iCal (ics) file..."),this,
301 SLOT(saveToFile())); 309 SLOT(saveToFile()));
302 exportPO->insertItem( i18n("As vCal (vcs) file..."),this, 310 exportPO->insertItem( i18n("As vCal (vcs) file..."),this,
303 SLOT(saveToFileVCS())); 311 SLOT(saveToFileVCS()));
304 exportPO->insertItem( i18n("Journal/Details..."),this, 312 exportPO->insertItem( i18n("Journal/Details..."),this,
305 SLOT(saveDescriptionToFile())); 313 SLOT(saveDescriptionToFile()));
306 // mPopupMenu->insertSeparator(); 314 // mPopupMenu->insertSeparator();
307 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 315 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
308 i18n("Add Categ. to selected..."),this, 316 i18n("Add Categ. to selected..."),this,
309 SLOT(addCat()),true); 317 SLOT(addCat()),true);
310 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 318 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
311 i18n("Set Categ. for selected..."),this, 319 i18n("Set Categ. for selected..."),this,
312 SLOT(setCat()),true); 320 SLOT(setCat()),true);
313 //mPopupMenu->insertSeparator(); 321 //mPopupMenu->insertSeparator();
314 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 322 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
315 i18n("Set alarm for selected..."),this, 323 i18n("Set alarm for selected..."),this,
316 SLOT(setAlarm()),true); 324 SLOT(setAlarm()),true);
317 325
318 326
327
319#ifndef DESKTOP_VERSION 328#ifndef DESKTOP_VERSION
320 mPopupMenu->insertSeparator(); 329 mPopupMenu->insertSeparator();
321 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 330 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
322 i18n("Beam selected via IR"),this, 331 i18n("Beam selected via IR"),this,
323 SLOT(beamSelected()),true); 332 SLOT(beamSelected()),true);
324#endif 333#endif
325 /* 334 /*
326 mPopupMenu = new QPopupMenu; 335 mPopupMenu = new QPopupMenu;
327 mPopupMenu->insertItem(i18n("Edit Event"), this, 336 mPopupMenu->insertItem(i18n("Edit Event"), this,
328 SLOT (editEvent())); 337 SLOT (editEvent()));
329 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 338 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
330 SLOT (deleteEvent())); 339 SLOT (deleteEvent()));
331 mPopupMenu->insertSeparator(); 340 mPopupMenu->insertSeparator();
332 mPopupMenu->insertItem(i18n("Show Dates"), this, 341 mPopupMenu->insertItem(i18n("Show Dates"), this,
333 SLOT(showDates())); 342 SLOT(showDates()));
334 mPopupMenu->insertItem(i18n("Hide Dates"), this, 343 mPopupMenu->insertItem(i18n("Hide Dates"), this,
335 SLOT(hideDates())); 344 SLOT(hideDates()));
336 */ 345 */
337 QObject::connect(mListView,SIGNAL( newEvent()), 346 QObject::connect(mListView,SIGNAL( newEvent()),
338 this,SIGNAL(signalNewEvent())); 347 this,SIGNAL(signalNewEvent()));
339 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 348 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
340 this,SLOT(defaultItemAction(QListViewItem *))); 349 this,SLOT(defaultItemAction(QListViewItem *)));
341 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, 350 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *,
342 const QPoint &, int )), 351 const QPoint &, int )),
@@ -350,48 +359,95 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
350} 359}
351 360
352KOListView::~KOListView() 361KOListView::~KOListView()
353{ 362{
354 delete mPopupMenu; 363 delete mPopupMenu;
355#if QT_VERSION >= 0x030000 364#if QT_VERSION >= 0x030000
356 365
357#else 366#else
358 delete mKOListViewWhatsThis; 367 delete mKOListViewWhatsThis;
359#endif 368#endif
360} 369}
361 370
362QString KOListView::getWhatsThisText(QPoint p) 371QString KOListView::getWhatsThisText(QPoint p)
363{ 372{
364 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 373 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
365 if ( item ) 374 if ( item )
366 return KIncidenceFormatter::instance()->getFormattedText( item->data(), 375 return KIncidenceFormatter::instance()->getFormattedText( item->data(),
367 KOPrefs::instance()->mWTshowDetails, 376 KOPrefs::instance()->mWTshowDetails,
368 KOPrefs::instance()->mWTshowCreated, 377 KOPrefs::instance()->mWTshowCreated,
369 KOPrefs::instance()->mWTshowChanged); 378 KOPrefs::instance()->mWTshowChanged);
370 return i18n("That is the list view" ); 379 return i18n("That is the list view" );
371 380
372} 381}
373 382
383void KOListView::setCalendar( int c )
384{
385 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
386 i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ),
387 i18n("Continue"), i18n("Cancel"), 0,
388 0, 1 );
389 if ( result != 0 ) {
390 return;
391 }
392
393 QPtrList<Incidence> delSel = getSelectedIncidences() ;
394 int icount = delSel.count();
395 if ( icount ) {
396 Incidence *incidence = delSel.first();
397 while ( incidence ) {
398 incidence->setCalID( c );
399 KOListViewItem * item = getItemForEvent( incidence );
400 if ( item ) {
401 ListItemVisitor v(item, mStartDate );
402 incidence->accept(v);
403 }
404 incidence = delSel.next();
405 }
406 }
407 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
408 KopiCalendarFile * cal = calendars.first();
409 while ( cal ) {
410 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
411 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
412 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
413 if ( cal->isStandard )
414 mCalendar->setDefaultCalendar( cal->mCalNumber );
415 cal = calendars.next();
416 }
417 mCalendar->setSyncEventsReadOnly();
418 mCalendar->reInitAlarmSettings();
419
420}
421void KOListView::populateCalPopup()
422{
423 mCalPopup->clear();
424 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
425 while ( kkf ) {
426 mCalPopup->insertItem( kkf->mName, kkf->mCalNumber);
427 kkf = KOPrefs::instance()->mCalendars.next();
428 }
429}
374void KOListView::updateList() 430void KOListView::updateList()
375{ 431{
376 // qDebug(" KOListView::updateList() "); 432 // qDebug(" KOListView::updateList() ");
377 433
378} 434}
379 435
380void KOListView::clearList() 436void KOListView::clearList()
381{ 437{
382 clear (); 438 clear ();
383} 439}
384void KOListView::addCat( ) 440void KOListView::addCat( )
385{ 441{
386 setCategories( false ); 442 setCategories( false );
387} 443}
388void KOListView::setCat() 444void KOListView::setCat()
389{ 445{
390 setCategories( true ); 446 setCategories( true );
391} 447}
392 448
393void KOListView::setAlarm() 449void KOListView::setAlarm()
394{ 450{
395 KOAlarmPrefs kap( this); 451 KOAlarmPrefs kap( this);
396 if ( !kap.exec() ) 452 if ( !kap.exec() )
397 return; 453 return;
@@ -1018,49 +1074,49 @@ void KOListView::changeEventDisplay(Event *event, int action)
1018 switch(action) { 1074 switch(action) {
1019 case KOGlobals::EVENTADDED: 1075 case KOGlobals::EVENTADDED:
1020 addIncidence( event ); 1076 addIncidence( event );
1021 break; 1077 break;
1022 case KOGlobals::EVENTEDITED: 1078 case KOGlobals::EVENTEDITED:
1023 item = getItemForEvent(event); 1079 item = getItemForEvent(event);
1024 if (item) { 1080 if (item) {
1025 mUidDict.remove( event->uid() ); 1081 mUidDict.remove( event->uid() );
1026 delete item; 1082 delete item;
1027 addIncidence( event ); 1083 addIncidence( event );
1028 } 1084 }
1029 break; 1085 break;
1030 case KOGlobals::EVENTDELETED: 1086 case KOGlobals::EVENTDELETED:
1031 item = getItemForEvent(event); 1087 item = getItemForEvent(event);
1032 if (item) { 1088 if (item) {
1033 mUidDict.remove( event->uid() ); 1089 mUidDict.remove( event->uid() );
1034 delete item; 1090 delete item;
1035 } 1091 }
1036 break; 1092 break;
1037 default: 1093 default:
1038 ; 1094 ;
1039 } 1095 }
1040} 1096}
1041 1097
1042KOListViewItem *KOListView::getItemForEvent(Event *event) 1098KOListViewItem *KOListView::getItemForEvent(Incidence *event)
1043{ 1099{
1044 KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); 1100 KOListViewItem *item = (KOListViewItem *)mListView->firstChild();
1045 while (item) { 1101 while (item) {
1046 if (item->data() == event) return item; 1102 if (item->data() == event) return item;
1047 item = (KOListViewItem *)item->nextSibling(); 1103 item = (KOListViewItem *)item->nextSibling();
1048 } 1104 }
1049 return 0; 1105 return 0;
1050} 1106}
1051 1107
1052void KOListView::defaultItemAction(QListViewItem *i) 1108void KOListView::defaultItemAction(QListViewItem *i)
1053{ 1109{
1054 KOListViewItem *item = static_cast<KOListViewItem *>( i ); 1110 KOListViewItem *item = static_cast<KOListViewItem *>( i );
1055 if ( item ) defaultAction( item->data() ); 1111 if ( item ) defaultAction( item->data() );
1056 1112
1057} 1113}
1058 1114
1059void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 1115void KOListView::popupMenu(QListViewItem *item,const QPoint &,int)
1060{ 1116{
1061 mActiveItem = (KOListViewItem *)item; 1117 mActiveItem = (KOListViewItem *)item;
1062 if (mActiveItem) { 1118 if (mActiveItem) {
1063 Incidence *incidence = mActiveItem->data(); 1119 Incidence *incidence = mActiveItem->data();
1064 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) ); 1120 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) );
1065 mPopupMenu->showIncidencePopup(incidence); 1121 mPopupMenu->showIncidencePopup(incidence);
1066 1122
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index 9da5497..d384af0 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -274,45 +274,48 @@ class KOListView : public KOEventView
274 virtual void updateView(); 274 virtual void updateView();
275 virtual void showDates(const QDate &start, const QDate &end); 275 virtual void showDates(const QDate &start, const QDate &end);
276 virtual void showEvents(QPtrList<Event> eventList); 276 virtual void showEvents(QPtrList<Event> eventList);
277 void clearSelection(); 277 void clearSelection();
278 void allSelection(); 278 void allSelection();
279 279
280 void clear(); 280 void clear();
281 void beamDone( Ir *ir ); 281 void beamDone( Ir *ir );
282 void showDates(); 282 void showDates();
283 void hideDates(); 283 void hideDates();
284 void deleteAll(); 284 void deleteAll();
285 void saveToFile(); 285 void saveToFile();
286 void saveToFileVCS(); 286 void saveToFileVCS();
287 void saveDescriptionToFile(); 287 void saveDescriptionToFile();
288 void beamSelected(); 288 void beamSelected();
289 void updateConfig(); 289 void updateConfig();
290 void addCat(); 290 void addCat();
291 void setCat(); 291 void setCat();
292 void setAlarm(); 292 void setAlarm();
293 void setCategories( bool removeOld ); 293 void setCategories( bool removeOld );
294 void changeEventDisplay(Event *, int); 294 void changeEventDisplay(Event *, int);
295 295
296 void defaultItemAction(QListViewItem *item); 296 void defaultItemAction(QListViewItem *item);
297 void popupMenu(QListViewItem *item,const QPoint &,int); 297 void popupMenu(QListViewItem *item,const QPoint &,int);
298 void setCalendar( int c );
299 void populateCalPopup();
298 300
299 protected slots: 301 protected slots:
300 void processSelectionChange(QListViewItem *); 302 void processSelectionChange(QListViewItem *);
301 303
302 protected: 304 protected:
303 void writeToFile( bool iCal ); 305 void writeToFile( bool iCal );
304 void addEvents(QPtrList<Event> eventList); 306 void addEvents(QPtrList<Event> eventList);
305 void addIncidence(Incidence *); 307 void addIncidence(Incidence *);
306 KOListViewItem *getItemForEvent(Event *event); 308 KOListViewItem *getItemForEvent(Incidence *event);
307 309
308 private: 310 private:
311 QPopupMenu* mCalPopup;
309 KOListViewWhatsThis *mKOListViewWhatsThis; 312 KOListViewWhatsThis *mKOListViewWhatsThis;
310 KOListViewListView *mListView; 313 KOListViewListView *mListView;
311 KOEventPopupMenu *mPopupMenu; 314 KOEventPopupMenu *mPopupMenu;
312 KOListViewItem *mActiveItem; 315 KOListViewItem *mActiveItem;
313 QDict<Incidence> mUidDict; 316 QDict<Incidence> mUidDict;
314 QDate mStartDate; 317 QDate mStartDate;
315 void keyPressEvent ( QKeyEvent * ) ; 318 void keyPressEvent ( QKeyEvent * ) ;
316}; 319};
317 320
318#endif 321#endif
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index 65f0342..a4ea3d3 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -474,48 +474,52 @@ KopiCalendarFile * KOPrefs::getNewCalendar()
474{ 474{
475 KopiCalendarFile * kkf = new KopiCalendarFile(); 475 KopiCalendarFile * kkf = new KopiCalendarFile();
476 kkf->mCalNumber = mNextAvailableCalendar; 476 kkf->mCalNumber = mNextAvailableCalendar;
477 mDefCalColors.resize( mNextAvailableCalendar ); 477 mDefCalColors.resize( mNextAvailableCalendar );
478 mDefCalColors[mNextAvailableCalendar-1] = kkf; 478 mDefCalColors[mNextAvailableCalendar-1] = kkf;
479 ++mNextAvailableCalendar; 479 ++mNextAvailableCalendar;
480 kkf->mDefaultColor = mEventColor; 480 kkf->mDefaultColor = mEventColor;
481 kkf->mName = i18n("New Calendar"); 481 kkf->mName = i18n("New Calendar");
482 mCalendars.append( kkf ); 482 mCalendars.append( kkf );
483 return kkf; 483 return kkf;
484} 484}
485void KOPrefs::deleteCalendar( int num ) 485void KOPrefs::deleteCalendar( int num )
486{ 486{
487 KopiCalendarFile * kkf = mCalendars.first(); 487 KopiCalendarFile * kkf = mCalendars.first();
488 while ( kkf ) { 488 while ( kkf ) {
489 if ( kkf->mCalNumber == num ) { 489 if ( kkf->mCalNumber == num ) {
490 qDebug("KOPrefs::deleteCalendar %d ", num ); 490 qDebug("KOPrefs::deleteCalendar %d ", num );
491 mCalendars.remove( kkf ); 491 mCalendars.remove( kkf );
492 delete kkf; 492 delete kkf;
493 return; 493 return;
494 } 494 }
495 kkf = mCalendars.next(); 495 kkf = mCalendars.next();
496 } 496 }
497} 497}
498QString KOPrefs::calName( int calNum) const
499{
500 return (mDefCalColors[calNum-1])->mName;
501}
498QColor KOPrefs::defaultColor( int calNum ) const 502QColor KOPrefs::defaultColor( int calNum ) const
499{ 503{
500 if ( calNum == 1 ) return mEventColor; 504 if ( calNum == 1 ) return mEventColor;
501 return (mDefCalColors[calNum-1])->mDefaultColor; 505 return (mDefCalColors[calNum-1])->mDefaultColor;
502} 506}
503void KOPrefs::usrWriteConfig() 507void KOPrefs::usrWriteConfig()
504{ 508{
505 config()->setGroup("General"); 509 config()->setGroup("General");
506 config()->writeEntry("Custom Categories",mCustomCategories); 510 config()->writeEntry("Custom Categories",mCustomCategories);
507 511
508 config()->setGroup("Personal Settings"); 512 config()->setGroup("Personal Settings");
509 config()->writeEntry("user_name",mName); 513 config()->writeEntry("user_name",mName);
510 config()->writeEntry("user_email",mEmail); 514 config()->writeEntry("user_email",mEmail);
511 515
512 config()->setGroup("Category Colors"); 516 config()->setGroup("Category Colors");
513 QDictIterator<QColor> it(mCategoryColors); 517 QDictIterator<QColor> it(mCategoryColors);
514 while (it.current()) { 518 while (it.current()) {
515 config()->writeEntry(it.currentKey(),*(it.current())); 519 config()->writeEntry(it.currentKey(),*(it.current()));
516 ++it; 520 ++it;
517 } 521 }
518 KConfig fc (locateLocal("config","kopicalendarrc")); 522 KConfig fc (locateLocal("config","kopicalendarrc"));
519 fc.setGroup("CC"); 523 fc.setGroup("CC");
520 fc.writeEntry("NumberCalendars",mCalendars.count()); 524 fc.writeEntry("NumberCalendars",mCalendars.count());
521 int numCal = 1; 525 int numCal = 1;
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index 463fc33..5cc9bfa 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -78,48 +78,49 @@ class KOPrefs : public KPimPrefs
78 enum { IMIPOutbox, IMIPdirectsend }; 78 enum { IMIPOutbox, IMIPdirectsend };
79 enum { neverAuto, addressbookAuto, selectedAuto }; 79 enum { neverAuto, addressbookAuto, selectedAuto };
80 enum { standardDestination, askDestination }; 80 enum { standardDestination, askDestination };
81 81
82 virtual ~KOPrefs(); 82 virtual ~KOPrefs();
83 83
84 /** Get instance of KOPrefs. It is made sure that there is only one 84 /** Get instance of KOPrefs. It is made sure that there is only one
85 instance. */ 85 instance. */
86 static KOPrefs *instance(); 86 static KOPrefs *instance();
87 87
88 /** Set preferences to default values */ 88 /** Set preferences to default values */
89 void usrSetDefaults(); 89 void usrSetDefaults();
90 90
91 /** Read preferences from config file */ 91 /** Read preferences from config file */
92 void usrReadConfig(); 92 void usrReadConfig();
93 93
94 /** Write preferences to config file */ 94 /** Write preferences to config file */
95 void usrWriteConfig(); 95 void usrWriteConfig();
96 void setCategoryDefaults(); 96 void setCategoryDefaults();
97 void setAllDefaults(); 97 void setAllDefaults();
98 KopiCalendarFile * getNewCalendar(); 98 KopiCalendarFile * getNewCalendar();
99 KopiCalendarFile * getCalendar( int ); 99 KopiCalendarFile * getCalendar( int );
100 void deleteCalendar( int ); 100 void deleteCalendar( int );
101 QColor defaultColor( int ) const; 101 QColor defaultColor( int ) const;
102 QString calName( int ) const;
102 protected: 103 protected:
103 void setTimeZoneIdDefault(); 104 void setTimeZoneIdDefault();
104 105
105 /** Fill empty mail fields with default values. */ 106 /** Fill empty mail fields with default values. */
106 void fillMailDefaults(); 107 void fillMailDefaults();
107 108
108 private: 109 private:
109 /** Constructor disabled for public. Use instance() to create a KOPrefs 110 /** Constructor disabled for public. Use instance() to create a KOPrefs
110 object. */ 111 object. */
111 KOPrefs(); 112 KOPrefs();
112 113
113 static KOPrefs *mInstance; 114 static KOPrefs *mInstance;
114 QStringList getDefaultList(); 115 QStringList getDefaultList();
115 QStringList getLocationDefaultList(); 116 QStringList getLocationDefaultList();
116 public: 117 public:
117 // preferences data 118 // preferences data
118 KConfig* getConfig(); 119 KConfig* getConfig();
119 void setFullName(const QString &); 120 void setFullName(const QString &);
120 QString fullName(); 121 QString fullName();
121 void setEmail(const QString &); 122 void setEmail(const QString &);
122 QString email(); 123 QString email();
123 124
124 QString mAdditional; 125 QString mAdditional;
125 126
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index 2243e28..3b7b183 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -55,48 +55,49 @@ namespace KCal {
55 care of deleting it. All Events returned by the query functions are returned 55 care of deleting it. All Events returned by the query functions are returned
56 as pointers, that means all changes to the returned events are immediately 56 as pointers, that means all changes to the returned events are immediately
57 visible in the Calendar. You shouldn't delete any Event object you get from 57 visible in the Calendar. You shouldn't delete any Event object you get from
58 Calendar. 58 Calendar.
59*/ 59*/
60class Calendar : public QObject, public CustomProperties, 60class Calendar : public QObject, public CustomProperties,
61 public IncidenceBase::Observer 61 public IncidenceBase::Observer
62{ 62{
63 Q_OBJECT 63 Q_OBJECT
64public: 64public:
65 Calendar(); 65 Calendar();
66 Calendar(const QString &timeZoneId); 66 Calendar(const QString &timeZoneId);
67 virtual ~Calendar(); 67 virtual ~Calendar();
68 Incidence * undoIncidence() { return mUndoIncidence; }; 68 Incidence * undoIncidence() { return mUndoIncidence; };
69 bool undoDeleteIncidence(); 69 bool undoDeleteIncidence();
70 void deleteIncidence(Incidence *in); 70 void deleteIncidence(Incidence *in);
71 void resetTempSyncStat(); 71 void resetTempSyncStat();
72 void resetPilotStat(int id); 72 void resetPilotStat(int id);
73 /** 73 /**
74 Clears out the current calendar, freeing all used memory etc. 74 Clears out the current calendar, freeing all used memory etc.
75 */ 75 */
76 virtual void close() = 0; 76 virtual void close() = 0;
77 virtual void addCalendar( Calendar* ) = 0; 77 virtual void addCalendar( Calendar* ) = 0;
78 virtual bool addCalendarFile( QString name, int id ) = 0; 78 virtual bool addCalendarFile( QString name, int id ) = 0;
79 virtual void setSyncEventsReadOnly() = 0;
79 80
80 /** 81 /**
81 Sync changes in memory to persistant storage. 82 Sync changes in memory to persistant storage.
82 */ 83 */
83 virtual void save() = 0; 84 virtual void save() = 0;
84 virtual QPtrList<Event> getExternLastSyncEvents() = 0; 85 virtual QPtrList<Event> getExternLastSyncEvents() = 0;
85 virtual void removeSyncInfo( QString syncProfile) = 0; 86 virtual void removeSyncInfo( QString syncProfile) = 0;
86 virtual bool isSaving() { return false; } 87 virtual bool isSaving() { return false; }
87 88
88 /** 89 /**
89 Return the owner of the calendar's full name. 90 Return the owner of the calendar's full name.
90 */ 91 */
91 const QString &getOwner() const; 92 const QString &getOwner() const;
92 /** 93 /**
93 Set the owner of the calendar. Should be owner's full name. 94 Set the owner of the calendar. Should be owner's full name.
94 */ 95 */
95 void setOwner( const QString &os ); 96 void setOwner( const QString &os );
96 /** 97 /**
97 Return the email address of the calendar owner. 98 Return the email address of the calendar owner.
98 */ 99 */
99 const QString &getEmail(); 100 const QString &getEmail();
100 /** 101 /**
101 Set the email address of the calendar owner. 102 Set the email address of the calendar owner.
102 */ 103 */
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 336c3e8..8c4dde1 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -57,48 +57,58 @@ CalendarLocal::CalendarLocal(const QString &timeZoneId)
57 init(); 57 init();
58} 58}
59 59
60void CalendarLocal::init() 60void CalendarLocal::init()
61{ 61{
62 mNextAlarmIncidence = 0; 62 mNextAlarmIncidence = 0;
63} 63}
64 64
65 65
66CalendarLocal::~CalendarLocal() 66CalendarLocal::~CalendarLocal()
67{ 67{
68 if ( mDeleteIncidencesOnClose ) 68 if ( mDeleteIncidencesOnClose )
69 close(); 69 close();
70} 70}
71bool CalendarLocal::addCalendarFile( QString name, int id ) 71bool CalendarLocal::addCalendarFile( QString name, int id )
72{ 72{
73 CalendarLocal calendar( timeZoneId() ); 73 CalendarLocal calendar( timeZoneId() );
74 calendar.setDefaultCalendar( id ); 74 calendar.setDefaultCalendar( id );
75 if ( calendar.load( name ) ) { 75 if ( calendar.load( name ) ) {
76 addCalendar( &calendar ); 76 addCalendar( &calendar );
77 return true; 77 return true;
78 } 78 }
79 return false; 79 return false;
80} 80}
81void CalendarLocal::setSyncEventsReadOnly()
82{
83 Event * ev;
84 ev = mEventList.first();
85 while ( ev ) {
86 if ( ev->uid().left(15) == QString("last-syncEvent-") )
87 ev->setReadOnly( true );
88 ev = mEventList.next();
89 }
90}
81void CalendarLocal::addCalendar( Calendar* cal ) 91void CalendarLocal::addCalendar( Calendar* cal )
82{ 92{
83 cal->setDontDeleteIncidencesOnClose(); 93 cal->setDontDeleteIncidencesOnClose();
84 { 94 {
85 QPtrList<Event> EventList = cal->rawEvents(); 95 QPtrList<Event> EventList = cal->rawEvents();
86 Event * ev = EventList.first(); 96 Event * ev = EventList.first();
87 while ( ev ) { 97 while ( ev ) {
88 ev->unRegisterObserver( cal ); 98 ev->unRegisterObserver( cal );
89 ev->registerObserver( this ); 99 ev->registerObserver( this );
90 mEventList.append( ev ); 100 mEventList.append( ev );
91 ev = EventList.next(); 101 ev = EventList.next();
92 } 102 }
93 } 103 }
94 { 104 {
95 105
96 QPtrList<Todo> TodoList = cal->rawTodos(); 106 QPtrList<Todo> TodoList = cal->rawTodos();
97 Todo * ev = TodoList.first(); 107 Todo * ev = TodoList.first();
98 while ( ev ) { 108 while ( ev ) {
99 QString rel = ev->relatedToUid(); 109 QString rel = ev->relatedToUid();
100 if ( !rel.isEmpty() ){ 110 if ( !rel.isEmpty() ){
101 ev->setRelatedTo ( 0 ); 111 ev->setRelatedTo ( 0 );
102 ev->setRelatedToUid( rel ); 112 ev->setRelatedToUid( rel );
103 } 113 }
104 ev = TodoList.next(); 114 ev = TodoList.next();
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h
index 5bbe55f..0286b48 100644
--- a/libkcal/calendarlocal.h
+++ b/libkcal/calendarlocal.h
@@ -24,48 +24,49 @@
24 24
25#include "calendar.h" 25#include "calendar.h"
26 26
27namespace KCal { 27namespace KCal {
28 28
29class CalFormat; 29class CalFormat;
30 30
31/** 31/**
32 This class provides a calendar stored as a local file. 32 This class provides a calendar stored as a local file.
33*/ 33*/
34class CalendarLocal : public Calendar 34class CalendarLocal : public Calendar
35{ 35{
36 public: 36 public:
37 /** 37 /**
38 Constructs a new calendar, with variables initialized to sane values. 38 Constructs a new calendar, with variables initialized to sane values.
39 */ 39 */
40 CalendarLocal(); 40 CalendarLocal();
41 /** 41 /**
42 Constructs a new calendar, with variables initialized to sane values. 42 Constructs a new calendar, with variables initialized to sane values.
43 */ 43 */
44 CalendarLocal( const QString &timeZoneId ); 44 CalendarLocal( const QString &timeZoneId );
45 ~CalendarLocal(); 45 ~CalendarLocal();
46 void addCalendar( Calendar* ); 46 void addCalendar( Calendar* );
47 bool addCalendarFile( QString name, int id ); 47 bool addCalendarFile( QString name, int id );
48 void setSyncEventsReadOnly();
48 /** 49 /**
49 Loads a calendar on disk in vCalendar or iCalendar format into the current 50 Loads a calendar on disk in vCalendar or iCalendar format into the current
50 calendar. Any information already present is lost. 51 calendar. Any information already present is lost.
51 @return true, if successfull, false on error. 52 @return true, if successfull, false on error.
52 @param fileName the name of the calendar on disk. 53 @param fileName the name of the calendar on disk.
53 */ 54 */
54 bool load( const QString &fileName ); 55 bool load( const QString &fileName );
55 /** 56 /**
56 Writes out the calendar to disk in the specified \a format. 57 Writes out the calendar to disk in the specified \a format.
57 CalendarLocal takes ownership of the CalFormat object. 58 CalendarLocal takes ownership of the CalFormat object.
58 @return true, if successfull, false on error. 59 @return true, if successfull, false on error.
59 @param fileName the name of the file 60 @param fileName the name of the file
60 */ 61 */
61 bool save( const QString &fileName, CalFormat *format = 0 ); 62 bool save( const QString &fileName, CalFormat *format = 0 );
62 63
63 /** 64 /**
64 Clears out the current calendar, freeing all used memory etc. etc. 65 Clears out the current calendar, freeing all used memory etc. etc.
65 */ 66 */
66 void close(); 67 void close();
67 68
68 void save() {} 69 void save() {}
69 70
70 /** 71 /**
71 Add Event to calendar. 72 Add Event to calendar.
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index 2ddbb01..96039df 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -120,48 +120,50 @@ bool KCal::operator==( const IncidenceBase& i1, const IncidenceBase& i2 )
120 } 120 }
121 } else { 121 } else {
122 return false; 122 return false;
123 } 123 }
124 124
125 return ( i1.organizer() == i2.organizer() && 125 return ( i1.organizer() == i2.organizer() &&
126 // i1.uid() == i2.uid() && 126 // i1.uid() == i2.uid() &&
127 // Don't compare lastModified, otherwise the operator is not 127 // Don't compare lastModified, otherwise the operator is not
128 // of much use. We are not comparing for identity, after all. 128 // of much use. We are not comparing for identity, after all.
129 i1.doesFloat() == i2.doesFloat() && 129 i1.doesFloat() == i2.doesFloat() &&
130 i1.pilotId() == i2.pilotId() );// && i1.syncStatus() == i2.syncStatus() ); 130 i1.pilotId() == i2.pilotId() );// && i1.syncStatus() == i2.syncStatus() );
131 // no need to compare mObserver 131 // no need to compare mObserver
132} 132}
133 133
134 134
135QDateTime IncidenceBase::getEvenTime( QDateTime dt ) 135QDateTime IncidenceBase::getEvenTime( QDateTime dt )
136{ 136{
137 QTime t = dt.time(); 137 QTime t = dt.time();
138 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 138 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
139 return dt; 139 return dt;
140} 140}
141 141
142void IncidenceBase::setCalID( int id ) 142void IncidenceBase::setCalID( int id )
143{ 143{
144 if ( mCalID > 0 )
145 updated();
144 mCalID = id; 146 mCalID = id;
145} 147}
146int IncidenceBase::calID() const 148int IncidenceBase::calID() const
147{ 149{
148 return mCalID; 150 return mCalID;
149} 151}
150void IncidenceBase::setCalEnabled( bool b ) 152void IncidenceBase::setCalEnabled( bool b )
151{ 153{
152 mCalEnabled = b; 154 mCalEnabled = b;
153} 155}
154bool IncidenceBase::calEnabled() const 156bool IncidenceBase::calEnabled() const
155{ 157{
156 return mCalEnabled; 158 return mCalEnabled;
157} 159}
158 160
159void IncidenceBase::setAlarmEnabled( bool b ) 161void IncidenceBase::setAlarmEnabled( bool b )
160{ 162{
161 mAlarmEnabled = b; 163 mAlarmEnabled = b;
162} 164}
163bool IncidenceBase::alarmEnabled() const 165bool IncidenceBase::alarmEnabled() const
164{ 166{
165 return mAlarmEnabled; 167 return mAlarmEnabled;
166} 168}
167 169