summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp29
-rw-r--r--libkcal/dndfactory_dummy.h5
-rw-r--r--libkdepim/categoryeditdialog.h4
-rw-r--r--libkdepim/categoryselectdialog.cpp1
-rw-r--r--libkdepim/ksyncmanager.cpp9
-rw-r--r--libkdepim/ksyncmanager.h2
6 files changed, 32 insertions, 18 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 9571f16..8d024c1 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,199 +1,199 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) savecale1997, 1998, 1999
8 Preston Brown (preton.brown@yale.edu) 8 Preston Brown (preton.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "koagenda.h" 107#include "koagenda.h"
108#include "kodialogmanager.h" 108#include "kodialogmanager.h"
109#include "outgoingdialog.h" 109#include "outgoingdialog.h"
110#include "incomingdialog.h" 110#include "incomingdialog.h"
111#include "datenavigatorcontainer.h" 111#include "datenavigatorcontainer.h"
112#include "statusdialog.h" 112#include "statusdialog.h"
113#include "kdatenavigator.h" 113#include "kdatenavigator.h"
114#include "kotodoview.h" 114#include "kotodoview.h"
115#include "datenavigator.h" 115#include "datenavigator.h"
116#include "resourceview.h" 116#include "resourceview.h"
117#include "navigatorbar.h" 117#include "navigatorbar.h"
118#include "searchdialog.h" 118#include "searchdialog.h"
119#include "mainwindow.h" 119#include "mainwindow.h"
120#include "categoryeditdialog.h" 120#include "categoryeditdialog.h"
121 121
122#include "calendarview.h" 122#include "calendarview.h"
123#ifndef DESKTOP_VERSION 123#ifndef DESKTOP_VERSION
124#include <qtopia/alarmserver.h> 124#include <qtopia/alarmserver.h>
125#endif 125#endif
126#ifndef _WIN32_ 126#ifndef _WIN32_
127#include <stdlib.h> 127#include <stdlib.h>
128#include <stdio.h> 128#include <stdio.h>
129#include <unistd.h> 129#include <unistd.h>
130#else 130#else
131#include <qprocess.h> 131#include <qprocess.h>
132#endif 132#endif
133 133
134#ifdef DESKTOP_VERSION 134#ifdef DESKTOP_VERSION
135#include <kabc/stdaddressbook.h> 135#include <kabc/stdaddressbook.h>
136#endif 136#endif
137using namespace KOrg; 137using namespace KOrg;
138using namespace KCal; 138using namespace KCal;
139extern int globalFlagBlockAgenda; 139extern int globalFlagBlockAgenda;
140extern int globalFlagBlockStartup; 140extern int globalFlagBlockStartup;
141 141
142 142
143MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent) 143MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent)
144 144
145{ 145{
146 mAlarms = alarms; 146 mAlarms = alarms;
147 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) ); 147 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) );
148 QString mText = "<table width=\"100%\">\n"; 148 QString mText = "<table width=\"100%\">\n";
149 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 149 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
150#ifdef DESKTOP_VERSION 150#ifdef DESKTOP_VERSION
151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
152#else 152#else
153 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>"; 153 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>";
154#endif 154#endif
155 // mText += "<img src=\""; 155 // mText += "<img src=\"";
156 // mText += ipath; 156 // mText += ipath;
157 // mText += "\">"; 157 // mText += "\">";
158 //mEventDate = QDate::currentDate(); 158 //mEventDate = QDate::currentDate();
159#ifdef DESKTOP_VERSION 159#ifdef DESKTOP_VERSION
160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>"; 160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>";
161#else 161#else
162 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>"; 162 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>";
163#endif 163#endif
164 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 164 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
165 165
166 Incidence * inc = getNextInc( start ); 166 Incidence * inc = getNextInc( start );
167 int time = 0; 167 int time = 0;
168 //mText += "<table>"; 168 //mText += "<table>";
169 while ( inc ) { 169 while ( inc ) {
170 QDateTime dt ; 170 QDateTime dt ;
171 QString tempText = "<a "; 171 QString tempText = "<a ";
172 bool ok; 172 bool ok;
173 dt = inc->getNextOccurence( start, &ok ); 173 dt = inc->getNextOccurence( start, &ok );
174 if ( !ok ) continue; 174 if ( !ok ) continue;
175 if ( inc->typeID() == eventID ) { 175 if ( inc->typeID() == eventID ) {
176 tempText += "href=\"event:"; 176 tempText += "href=\"event:";
177 } else if ( inc->typeID() == todoID ) { 177 } else if ( inc->typeID() == todoID ) {
178 tempText += "href=\"todo:"; 178 tempText += "href=\"todo:";
179 } 179 }
180 tempText += inc->uid() + "\">"; 180 tempText += inc->uid() + "\">";
181 if ( inc->typeID() == todoID ) 181 if ( inc->typeID() == todoID )
182 tempText += i18n("Todo: "); 182 tempText += i18n("Todo: ");
183 if ( inc->summary().length() > 0 ) 183 if ( inc->summary().length() > 0 )
184 tempText += inc->summary(); 184 tempText += inc->summary();
185 else 185 else
186 tempText += i18n("-no summary-"); 186 tempText += i18n("-no summary-");
187 QString timestr; 187 QString timestr;
188 if (!inc->doesFloat()) 188 if (!inc->doesFloat())
189 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": "; 189 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": ";
190 else 190 else
191 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 191 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
192 if ( dt.date() < QDate::currentDate() && time == 0 ) { 192 if ( dt.date() < QDate::currentDate() && time == 0 ) {
193 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 193 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
194 mText += "<table>"; 194 mText += "<table>";
195 time = 1; 195 time = 1;
196 } 196 }
197 if ( dt.date() == QDate::currentDate() && time <= 1 ) { 197 if ( dt.date() == QDate::currentDate() && time <= 1 ) {
198 if ( time > 0 ) 198 if ( time > 0 )
199 mText +="</table>"; 199 mText +="</table>";
@@ -590,410 +590,414 @@ void CalendarView::init()
590 590
591 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 591 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
592 this, SLOT ( todo_unsub( Todo * ) ) ); 592 this, SLOT ( todo_unsub( Todo * ) ) );
593 593
594 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 594 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
595 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 595 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
596 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 596 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
597 SLOT( updateTodo( Todo *, int ) ) ); 597 SLOT( updateTodo( Todo *, int ) ) );
598 connect( this, SIGNAL( todoModified( Todo *, int )), this, 598 connect( this, SIGNAL( todoModified( Todo *, int )), this,
599 SLOT( changeTodoDisplay( Todo *, int ) ) ); 599 SLOT( changeTodoDisplay( Todo *, int ) ) );
600 600
601 601
602 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 602 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
603 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 603 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
604 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 604 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
605 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 605 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
606 606
607 607
608 608
609 609
610 610
611 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 611 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
612 SLOT(checkClipboard())); 612 SLOT(checkClipboard()));
613 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 613 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
614 SLOT( processTodoListSelection( Incidence * ) ) ); 614 SLOT( processTodoListSelection( Incidence * ) ) );
615 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 615 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
616 616
617 // kdDebug() << "CalendarView::CalendarView() done" << endl; 617 // kdDebug() << "CalendarView::CalendarView() done" << endl;
618 618
619 mDateFrame = new QVBox(0,0,WType_Popup); 619 mDateFrame = new QVBox(0,0,WType_Popup);
620 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 620 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
621 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 621 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
622 mDateFrame->setLineWidth(3); 622 mDateFrame->setLineWidth(3);
623 mDateFrame->hide(); 623 mDateFrame->hide();
624 mDateFrame->setCaption( i18n( "Pick a date to display")); 624 mDateFrame->setCaption( i18n( "Pick a date to display"));
625 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 625 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
626 626
627 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 627 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
628 628
629 mEventEditor = mDialogManager->getEventEditor(); 629 mEventEditor = mDialogManager->getEventEditor();
630 mTodoEditor = mDialogManager->getTodoEditor(); 630 mTodoEditor = mDialogManager->getTodoEditor();
631 631
632 mFlagEditDescription = false; 632 mFlagEditDescription = false;
633 633
634 mSuspendTimer = new QTimer( this ); 634 mSuspendTimer = new QTimer( this );
635 mAlarmTimer = new QTimer( this ); 635 mAlarmTimer = new QTimer( this );
636 mRecheckAlarmTimer = new QTimer( this ); 636 mRecheckAlarmTimer = new QTimer( this );
637 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 637 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
638 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 638 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
639 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 639 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
640 mAlarmDialog = new AlarmDialog( this ); 640 mAlarmDialog = new AlarmDialog( this );
641 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 641 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
642 mAlarmDialog->setServerNotification( false ); 642 mAlarmDialog->setServerNotification( false );
643 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 643 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
644 644
645 645
646#ifndef DESKTOP_VERSION 646#ifndef DESKTOP_VERSION
647//US listen for arriving address resultsets 647//US listen for arriving address resultsets
648 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 648 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
649 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 649 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
650#endif 650#endif
651 mDateNavigator->setCalendar( mCalendar ); 651 mDateNavigator->setCalendar( mCalendar );
652} 652}
653 653
654 654
655CalendarView::~CalendarView() 655CalendarView::~CalendarView()
656{ 656{
657 // kdDebug() << "~CalendarView()" << endl; 657 // kdDebug() << "~CalendarView()" << endl;
658 //qDebug("CalendarView::~CalendarView() "); 658 //qDebug("CalendarView::~CalendarView() ");
659 delete mDialogManager; 659 delete mDialogManager;
660 delete mViewManager; 660 delete mViewManager;
661 delete mStorage; 661 delete mStorage;
662 delete mDateFrame ; 662 delete mDateFrame ;
663 delete mEventViewerDialog; 663 delete mEventViewerDialog;
664 //kdDebug() << "~CalendarView() done" << endl; 664 //kdDebug() << "~CalendarView() done" << endl;
665} 665}
666 666
667 667
668void CalendarView::nextConflict( bool all, bool allday ) 668void CalendarView::nextConflict( bool all, bool allday )
669{ 669{
670 if ( flag_blockConflict ) return; 670 if ( flag_blockConflict ) return;
671 flag_blockConflict = true; 671 flag_blockConflict = true;
672 QPtrList<Event> testlist = mCalendar->events(); 672 QPtrList<Event> testlist = mCalendar->events();
673 Event * test = testlist.first(); 673 Event * test = testlist.first();
674 while ( test ) { 674 while ( test ) {
675 test->setTagged( false ); 675 test->setTagged( false );
676 test = testlist.next(); 676 test = testlist.next();
677 } 677 }
678 QTime st ( 0,0,0); 678 QTime st ( 0,0,0);
679 if ( mViewManager->currentView() == mViewManager->agendaView() ) 679 if ( mViewManager->currentView() == mViewManager->agendaView() )
680 st = mViewManager->agendaView()->agenda()->getEndTime(); 680 st = mViewManager->agendaView()->agenda()->getEndTime();
681 //qDebug("time %s ", st.toString().latin1()); 681 //qDebug("time %s ", st.toString().latin1());
682 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st); 682 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st);
683 QDateTime conflict; 683 QDateTime conflict;
684 QDateTime retVal; 684 QDateTime retVal;
685 bool found = false; 685 bool found = false;
686 Event * cE = 0; 686 Event * cE = 0;
687 Event * cE2 = 0; 687 Event * cE2 = 0;
688 QPtrList<Event> testlist2 = testlist; 688 QPtrList<Event> testlist2 = testlist;
689 test = testlist.first(); 689 test = testlist.first();
690 bool skip = false; 690 bool skip = false;
691 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 691 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
692 //QTime tm; 692 //QTime tm;
693 //tm.start(); 693 //tm.start();
694 while ( test ) { 694 while ( test ) {
695 qApp->processEvents(); 695 qApp->processEvents();
696 skip = false; 696 skip = false;
697 if ( !all ) skip = ( allday != test->doesFloat() ); 697 if ( !all ) skip = ( allday != test->doesFloat() );
698 if ( !skip ) { 698 if ( !skip ) {
699 if ( found ) 699 if ( found )
700 skip = !test->matchTime( &startDT, &conflict ); 700 skip = !test->matchTime( &startDT, &conflict );
701 else 701 else
702 skip = !test->matchTime( &startDT, 0 ); 702 skip = !test->matchTime( &startDT, 0 );
703 } 703 }
704 if ( !skip ) { 704 if ( !skip ) {
705 Event * test2 = testlist2.first(); 705 Event * test2 = testlist2.first();
706 while ( test2 ) { 706 while ( test2 ) {
707 skip = test2->isTagged(); 707 skip = test2->isTagged();
708 if ( !skip && !all ) skip = ( allday != test2->doesFloat() ); 708 if ( !skip && !all ) skip = ( allday != test2->doesFloat() );
709 if ( !skip ) { 709 if ( !skip ) {
710 if ( found ) 710 if ( found )
711 skip = !test2->matchTime( &startDT, &conflict ); 711 skip = !test2->matchTime( &startDT, &conflict );
712 else 712 else
713 skip = !test2->matchTime( &startDT, 0 ); 713 skip = !test2->matchTime( &startDT, 0 );
714 } 714 }
715 if ( !skip ) { 715 if ( !skip ) {
716 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) { 716 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
717 //qDebug("overlap "); 717 //qDebug("overlap ");
718 if ( ! found ) { 718 if ( ! found ) {
719 if ( retVal >= startDT ) { 719 if ( retVal >= startDT ) {
720 conflict = retVal; 720 conflict = retVal;
721 cE = test; 721 cE = test;
722 cE2 = test2; 722 cE2 = test2;
723 found = true; 723 found = true;
724 } 724 }
725 } else { 725 } else {
726 if ( retVal >= startDT && retVal < conflict ) { 726 if ( retVal >= startDT && retVal < conflict ) {
727 conflict = retVal; 727 conflict = retVal;
728 cE = test; 728 cE = test;
729 cE2 = test2; 729 cE2 = test2;
730 } 730 }
731 } 731 }
732 } 732 }
733 } 733 }
734 test2 = testlist2.next(); 734 test2 = testlist2.next();
735 } 735 }
736 } 736 }
737 test->setTagged( true ); 737 test->setTagged( true );
738 test = testlist.next(); 738 test = testlist.next();
739 } 739 }
740 //qDebug("Search time : %d", tm.elapsed()); 740 //qDebug("Search time : %d", tm.elapsed());
741 if ( found ) { 741 if ( found ) {
742 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 742 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
743 mViewManager->showDayView(); 743 mViewManager->showDayView();
744 mNavigator->slotDaySelect( conflict.date() ); 744 mNavigator->slotDaySelect( conflict.date() );
745 int hour = conflict.time().hour(); 745 int hour = conflict.time().hour();
746 mViewManager->agendaView()->setStartHour( hour ); 746 mViewManager->agendaView()->setStartHour( hour );
747 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) ); 747 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
748 flag_blockConflict = false; 748 flag_blockConflict = false;
749 return; 749 return;
750 } 750 }
751 751
752 topLevelWidget()->setCaption( i18n("No conflict found") ); 752 topLevelWidget()->setCaption( i18n("No conflict found") );
753 //qDebug("No conflict found "); 753 //qDebug("No conflict found ");
754 flag_blockConflict = false; 754 flag_blockConflict = false;
755 return; 755 return;
756} 756}
757 757
758void CalendarView::conflictAll() 758void CalendarView::conflictAll()
759{ 759{
760 nextConflict ( true, true ); 760 nextConflict ( true, true );
761} 761}
762void CalendarView::conflictAllday() 762void CalendarView::conflictAllday()
763{ 763{
764 nextConflict ( false, true ); 764 nextConflict ( false, true );
765} 765}
766void CalendarView::conflictNotAll() 766void CalendarView::conflictNotAll()
767{ 767{
768 nextConflict ( false, false ); 768 nextConflict ( false, false );
769} 769}
770 770
771void CalendarView::setCalReadOnly( int id, bool readO ) 771void CalendarView::setCalReadOnly( int id, bool readO )
772{ 772{
773 if ( readO ) { 773 if ( readO ) {
774 emit save(); 774 emit save();
775 } 775 }
776 mCalendar->setReadOnly( id, readO ); 776 mCalendar->setReadOnly( id, readO );
777} 777}
778void CalendarView::setScrollBarStep(int val ) 778void CalendarView::setScrollBarStep(int val )
779{ 779{
780#ifdef DESKTOP_VERSION 780#ifdef DESKTOP_VERSION
781 mDateScrollBar->setLineStep ( val ); 781 mDateScrollBar->setLineStep ( val );
782#else
783 Q_UNUSED( val );
782#endif 784#endif
783} 785}
784void CalendarView::scrollBarValue(int val ) 786void CalendarView::scrollBarValue(int val )
785{ 787{
786#ifdef DESKTOP_VERSION 788#ifdef DESKTOP_VERSION
787 if ( QApplication::desktop()->width() < 800 ) return; 789 if ( QApplication::desktop()->width() < 800 ) return;
788 if ( flag_blockScrollBar ) return; 790 if ( flag_blockScrollBar ) return;
789 flag_blockScrollBar = true; 791 flag_blockScrollBar = true;
790 int count = mNavigator->selectedDates().count(); 792 int count = mNavigator->selectedDates().count();
791 int day = mNavigator->selectedDates().first().dayOfYear(); 793 int day = mNavigator->selectedDates().first().dayOfYear();
792 int stepdays = val; 794 int stepdays = val;
793 if ( mDateScrollBar->lineStep () <= count ) { 795 if ( mDateScrollBar->lineStep () <= count ) {
794 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 796 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
795 //qDebug("VAL %d ",val ); 797 //qDebug("VAL %d ",val );
796 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 798 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
797 stepdays = day+stepdays; 799 stepdays = day+stepdays;
798 if ( stepdays < 0 ) stepdays = 0; 800 if ( stepdays < 0 ) stepdays = 0;
799 } 801 }
800 if ( stepdays == day ) { 802 if ( stepdays == day ) {
801 flag_blockScrollBar = false; 803 flag_blockScrollBar = false;
802 return; 804 return;
803 } 805 }
804 int year = mNavigator->selectedDates().first().year(); 806 int year = mNavigator->selectedDates().first().year();
805 QDate d ( year,1,1 ); 807 QDate d ( year,1,1 );
806 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 808 mNavigator->selectDates( d.addDays( stepdays-1) , count );
807 flag_blockScrollBar = false; 809 flag_blockScrollBar = false;
810#else
811 Q_UNUSED( val );
808#endif 812#endif
809 813
810} 814}
811void CalendarView::updateView(const QDate &start, const QDate &end) 815void CalendarView::updateView(const QDate &start, const QDate &end)
812{ 816{
813#ifdef DESKTOP_VERSION 817#ifdef DESKTOP_VERSION
814 if ( ! mDateScrollBar->draggingSlider () ) { 818 if ( ! mDateScrollBar->draggingSlider () ) {
815 int dof = start.dayOfYear(); 819 int dof = start.dayOfYear();
816 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 820 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
817 if ( dof != mDateScrollBar->value() ) { 821 if ( dof != mDateScrollBar->value() ) {
818 mDateScrollBar->blockSignals( true ); 822 mDateScrollBar->blockSignals( true );
819 mDateScrollBar->setValue( start.dayOfYear()); 823 mDateScrollBar->setValue( start.dayOfYear());
820 mDateScrollBar->blockSignals( false ); 824 mDateScrollBar->blockSignals( false );
821 } 825 }
822 } 826 }
823#endif 827#endif
824 mTodoList->updateView(); 828 mTodoList->updateView();
825 mViewManager->updateView(start, end); 829 mViewManager->updateView(start, end);
826 //mDateNavigator->updateView(); 830 //mDateNavigator->updateView();
827} 831}
828 832
829 833
830 834
831void CalendarView::checkFiles() 835void CalendarView::checkFiles()
832{ 836{
833 QString message; 837 QString message;
834 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 838 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
835 KopiCalendarFile * cal = calendars.first(); 839 KopiCalendarFile * cal = calendars.first();
836 while ( cal ) { 840 while ( cal ) {
837 if ( cal->mErrorOnLoad ) { 841 if ( cal->mErrorOnLoad ) {
838 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 842 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
839 } 843 }
840 cal = calendars.next(); 844 cal = calendars.next();
841 } 845 }
842 if ( !message.isEmpty() ) { 846 if ( !message.isEmpty() ) {
843 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 847 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
844 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed")); 848 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed"));
845 } 849 }
846 if ( flag_checkFileFirsttime ) { 850 if ( flag_checkFileFirsttime ) {
847 flag_checkFileFirsttime = false; 851 flag_checkFileFirsttime = false;
848 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 852 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
849 } 853 }
850} 854}
851void CalendarView::checkAlarms() 855void CalendarView::checkAlarms()
852{ 856{
853 KConfig *config = KOGlobals::config(); 857 KConfig *config = KOGlobals::config();
854 config->setGroup( "AppRun" ); 858 config->setGroup( "AppRun" );
855 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 859 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
856 int daysto = dt.daysTo( QDate::currentDate() ); 860 int daysto = dt.daysTo( QDate::currentDate() );
857 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 861 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
858 dt = dt.addDays( days ); 862 dt = dt.addDays( days );
859 int secto = dt.secsTo( QDateTime::currentDateTime() ); 863 int secto = dt.secsTo( QDateTime::currentDateTime() );
860 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 864 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
861 //qDebug("KO: Reading program stop %d ", secs); 865 //qDebug("KO: Reading program stop %d ", secs);
862 //secs -= ( 3600 * 24*3 ); // debug only 866 //secs -= ( 3600 * 24*3 ); // debug only
863 QDateTime latest = dt.addSecs ( secs ); 867 QDateTime latest = dt.addSecs ( secs );
864 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 868 qDebug("KO: Last termination on %s ", latest.toString().latin1());
865 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 869 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
866 QPtrList<Incidence> el = mCalendar->rawIncidences(); 870 QPtrList<Incidence> el = mCalendar->rawIncidences();
867 QPtrList<Incidence> al; 871 QPtrList<Incidence> al;
868 Incidence* inL = el.first(); 872 Incidence* inL = el.first();
869 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 873 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
870 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 874 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
871 while ( inL ) { 875 while ( inL ) {
872 bool ok = false; 876 bool ok = false;
873 int offset = 0; 877 int offset = 0;
874 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 878 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
875 if ( ok ) { 879 if ( ok ) {
876 //qDebug("OK %s",next.toString().latin1()); 880 //qDebug("OK %s",next.toString().latin1());
877 if ( next < cur ) { 881 if ( next < cur ) {
878 al.append( inL ); 882 al.append( inL );
879 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 883 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
880 } 884 }
881 } 885 }
882 inL = el.next(); 886 inL = el.next();
883 } 887 }
884 if ( al.count() ) { 888 if ( al.count() ) {
885 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 889 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
886 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 890 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
887 QVBoxLayout* lay = new QVBoxLayout( dia ); 891 QVBoxLayout* lay = new QVBoxLayout( dia );
888 lay->setSpacing( 0 ); 892 lay->setSpacing( 0 );
889 lay->setMargin( 0 ); 893 lay->setMargin( 0 );
890 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 894 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
891 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 895 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
892 lay->addWidget( matb ); 896 lay->addWidget( matb );
893 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 897 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
894 int wid = 210; 898 int wid = 210;
895 int x = QApplication::desktop()->width() - wid - 7; 899 int x = QApplication::desktop()->width() - wid - 7;
896 int y = QApplication::desktop()->height() - wid - 70; 900 int y = QApplication::desktop()->height() - wid - 70;
897 dia->setGeometry ( x,y,wid,wid); 901 dia->setGeometry ( x,y,wid,wid);
898 } else { 902 } else {
899 int si = 220; 903 int si = 220;
900 if ( QApplication::desktop()->width() > 470 ) 904 if ( QApplication::desktop()->width() > 470 )
901 si = 400; 905 si = 400;
902 dia->resize(si,si/2); 906 dia->resize(si,si/2);
903 } 907 }
904 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 908 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
905 dia->show(); 909 dia->show();
906 910
907 } 911 }
908#if 0 912#if 0
909 // for creating timetracker test data 913 // for creating timetracker test data
910 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc "); 914 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc ");
911 Todo * nt; 915 Todo * nt;
912 mCalendar->close(); 916 mCalendar->close();
913 { 917 {
914 Todo * root1 = new Todo; 918 Todo * root1 = new Todo;
915 mCalendar->addTodo( root1 ); 919 mCalendar->addTodo( root1 );
916 root1->setSummary( "Project1"); 920 root1->setSummary( "Project1");
917 root1->setPriority( 1 ); 921 root1->setPriority( 1 );
918 root1->setCategories( QString( "Cat_Pro1") ); 922 root1->setCategories( QString( "Cat_Pro1") );
919 root1->setDescription( "This is a test description of a root Project" ); 923 root1->setDescription( "This is a test description of a root Project" );
920 root1->setPercentComplete( 20 ); 924 root1->setPercentComplete( 20 );
921 updateView(); 925 updateView();
922 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 926 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
923 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) ); 927 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
924 928
925 nt = new Todo; 929 nt = new Todo;
926 mCalendar->addTodo( nt ); 930 mCalendar->addTodo( nt );
927 nt->setSummary( "Planning Project1"); 931 nt->setSummary( "Planning Project1");
928 nt->setPriority( 1 ); 932 nt->setPriority( 1 );
929 nt->setDescription( "This is a test description of Planning Project1" ); 933 nt->setDescription( "This is a test description of Planning Project1" );
930 nt->setPercentComplete( 20 ); 934 nt->setPercentComplete( 20 );
931 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") ); 935 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") );
932 936
933 937
934 Todo * sub1 = nt; 938 Todo * sub1 = nt;
935 sub1->setRelatedTo( root1 ); 939 sub1->setRelatedTo( root1 );
936 940
937 nt = new Todo; 941 nt = new Todo;
938 mCalendar->addTodo( nt ); 942 mCalendar->addTodo( nt );
939 nt->setSummary( "Planning Project1: Lutz"); 943 nt->setSummary( "Planning Project1: Lutz");
940 nt->setPriority( 1 ); 944 nt->setPriority( 1 );
941 nt->setDescription( "This todo counts the actual work of a person on a project" ); 945 nt->setDescription( "This todo counts the actual work of a person on a project" );
942 nt->setPercentComplete( 20 ); 946 nt->setPercentComplete( 20 );
943 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") ); 947 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") );
944 Todo * workLutz11 = nt; 948 Todo * workLutz11 = nt;
945 workLutz11->setRelatedTo( sub1 ); 949 workLutz11->setRelatedTo( sub1 );
946 950
947 nt = new Todo; 951 nt = new Todo;
948 mCalendar->addTodo( nt ); 952 mCalendar->addTodo( nt );
949 nt->setSummary( "Planning Project1: Norbert"); 953 nt->setSummary( "Planning Project1: Norbert");
950 nt->setPriority( 1 ); 954 nt->setPriority( 1 );
951 nt->setDescription( "This todo counts the actual work of a person on a project" ); 955 nt->setDescription( "This todo counts the actual work of a person on a project" );
952 nt->setPercentComplete( 20 ); 956 nt->setPercentComplete( 20 );
953 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") ); 957 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") );
954 Todo * workNorbert11 = nt; 958 Todo * workNorbert11 = nt;
955 workNorbert11->setRelatedTo( sub1 ); 959 workNorbert11->setRelatedTo( sub1 );
956 960
957 nt = new Todo; 961 nt = new Todo;
958 mCalendar->addTodo( nt ); 962 mCalendar->addTodo( nt );
959 nt->setSummary( "Work on 1"); 963 nt->setSummary( "Work on 1");
960 nt->setPriority( 1 ); 964 nt->setPriority( 1 );
961 nt->setDescription( "This is a test description of Work Project_1" ); 965 nt->setDescription( "This is a test description of Work Project_1" );
962 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") ); 966 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") );
963 nt->setPercentComplete( 20 ); 967 nt->setPercentComplete( 20 );
964 968
965 Todo * sub2 = nt; 969 Todo * sub2 = nt;
966 sub2->setRelatedTo( root1 ); 970 sub2->setRelatedTo( root1 );
967 971
968 972
969 nt = new Todo; 973 nt = new Todo;
970 mCalendar->addTodo( nt ); 974 mCalendar->addTodo( nt );
971 nt->setSummary( "Work on 1: Lutz"); 975 nt->setSummary( "Work on 1: Lutz");
972 nt->setPriority( 1 ); 976 nt->setPriority( 1 );
973 nt->setDescription( "This todo counts the actual work of a person on a project" ); 977 nt->setDescription( "This todo counts the actual work of a person on a project" );
974 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") ); 978 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") );
975 nt->setPercentComplete( 20 ); 979 nt->setPercentComplete( 20 );
976 Todo * workLutz12 = nt; 980 Todo * workLutz12 = nt;
977 workLutz12->setRelatedTo( sub2 ); 981 workLutz12->setRelatedTo( sub2 );
978 982
979 nt = new Todo; 983 nt = new Todo;
980 mCalendar->addTodo( nt ); 984 mCalendar->addTodo( nt );
981 nt->setSummary( "Work on 1: Norbert"); 985 nt->setSummary( "Work on 1: Norbert");
982 nt->setPriority( 1 ); 986 nt->setPriority( 1 );
983 nt->setDescription( "This todo counts the actual work of a person on a project" ); 987 nt->setDescription( "This todo counts the actual work of a person on a project" );
984 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") ); 988 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") );
985 nt->setPercentComplete( 20 ); 989 nt->setPercentComplete( 20 );
986 Todo * workNorbert12 = nt; 990 Todo * workNorbert12 = nt;
987 workNorbert12->setRelatedTo( sub2 ); 991 workNorbert12->setRelatedTo( sub2 );
988 992
989 int secLenRunning = 7200; 993 int secLenRunning = 7200;
990 int secLenPausing = 3600 * 3; 994 int secLenPausing = 3600 * 3;
991 int dayInterval = 1; 995 int dayInterval = 1;
992 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval ); 996 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval );
993 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 ); 997 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 );
994 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1); 998 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1);
995 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3); 999 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3);
996 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0); 1000 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0);
997 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1); 1001 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1);
998 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3); 1002 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3);
999 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0); 1003 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0);
@@ -1413,644 +1417,645 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
1413 if ( mode <= SYNC_PREF_ASK ) 1417 if ( mode <= SYNC_PREF_ASK )
1414 return 0; 1418 return 0;
1415 } else { 1419 } else {
1416 if ( locCh ) { 1420 if ( locCh ) {
1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 1421 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
1418 lastSync = localMod.addDays( -1 ); 1422 lastSync = localMod.addDays( -1 );
1419 if ( !remCh ) 1423 if ( !remCh )
1420 remoteMod = ( lastSync.addDays( -1 ) ); 1424 remoteMod = ( lastSync.addDays( -1 ) );
1421 } else { 1425 } else {
1422 //qDebug(" not loc changed "); 1426 //qDebug(" not loc changed ");
1423 lastSync = localMod.addDays( 1 ); 1427 lastSync = localMod.addDays( 1 );
1424 if ( remCh ) 1428 if ( remCh )
1425 remoteMod =( lastSync.addDays( 1 ) ); 1429 remoteMod =( lastSync.addDays( 1 ) );
1426 1430
1427 } 1431 }
1428 } 1432 }
1429 full = true; 1433 full = true;
1430 if ( mode < SYNC_PREF_ASK ) 1434 if ( mode < SYNC_PREF_ASK )
1431 mode = SYNC_PREF_ASK; 1435 mode = SYNC_PREF_ASK;
1432 } else { 1436 } else {
1433 if ( localMod == remoteMod ) 1437 if ( localMod == remoteMod )
1434 // if ( local->revision() == remote->revision() ) 1438 // if ( local->revision() == remote->revision() )
1435 return 0; 1439 return 0;
1436 1440
1437 } 1441 }
1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 1442 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
1439 1443
1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 1444 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 1445 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
1442 //full = true; //debug only 1446 //full = true; //debug only
1443 if ( full ) { 1447 if ( full ) {
1444 bool equ = false; 1448 bool equ = false;
1445 if ( local->typeID() == eventID ) { 1449 if ( local->typeID() == eventID ) {
1446 equ = (*((Event*) local) == *((Event*) remote)); 1450 equ = (*((Event*) local) == *((Event*) remote));
1447 } 1451 }
1448 else if ( local->typeID() == todoID ) 1452 else if ( local->typeID() == todoID )
1449 equ = (*((Todo*) local) == (*(Todo*) remote)); 1453 equ = (*((Todo*) local) == (*(Todo*) remote));
1450 else if ( local->typeID() == journalID ) 1454 else if ( local->typeID() == journalID )
1451 equ = (*((Journal*) local) == *((Journal*) remote)); 1455 equ = (*((Journal*) local) == *((Journal*) remote));
1452 if ( equ ) { 1456 if ( equ ) {
1453 //qDebug("equal "); 1457 //qDebug("equal ");
1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1458 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 1459 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
1456 } 1460 }
1457 if ( mode < SYNC_PREF_FORCE_LOCAL ) 1461 if ( mode < SYNC_PREF_FORCE_LOCAL )
1458 return 0; 1462 return 0;
1459 1463
1460 }//else //debug only 1464 }//else //debug only
1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 1465 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
1462 } 1466 }
1463 int result; 1467 int result;
1464 bool localIsNew; 1468 bool localIsNew;
1465 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 1469 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
1466 1470
1467 1471
1468 // ************************************************ 1472 // ************************************************
1469 // ************************************************ 1473 // ************************************************
1470 // ************************************************ 1474 // ************************************************
1471 // We may have that lastSync > remoteMod AND lastSync > localMod 1475 // We may have that lastSync > remoteMod AND lastSync > localMod
1472 // BUT remoteMod != localMod 1476 // BUT remoteMod != localMod
1473 1477
1474 1478
1475 if ( full && mode < SYNC_PREF_NEWEST ) 1479 if ( full && mode < SYNC_PREF_NEWEST )
1476 mode = SYNC_PREF_ASK; 1480 mode = SYNC_PREF_ASK;
1477 1481
1478 switch( mode ) { 1482 switch( mode ) {
1479 case SYNC_PREF_LOCAL: 1483 case SYNC_PREF_LOCAL:
1480 if ( lastSync > remoteMod ) 1484 if ( lastSync > remoteMod )
1481 return 1; 1485 return 1;
1482 if ( lastSync > localMod ) 1486 if ( lastSync > localMod )
1483 return 2; 1487 return 2;
1484 return 1; 1488 return 1;
1485 break; 1489 break;
1486 case SYNC_PREF_REMOTE: 1490 case SYNC_PREF_REMOTE:
1487 if ( lastSync > localMod ) 1491 if ( lastSync > localMod )
1488 return 2; 1492 return 2;
1489 if ( lastSync > remoteMod ) 1493 if ( lastSync > remoteMod )
1490 return 1; 1494 return 1;
1491 return 2; 1495 return 2;
1492 break; 1496 break;
1493 case SYNC_PREF_NEWEST: 1497 case SYNC_PREF_NEWEST:
1494 if ( localMod >= remoteMod ) 1498 if ( localMod >= remoteMod )
1495 return 1; 1499 return 1;
1496 else 1500 else
1497 return 2; 1501 return 2;
1498 break; 1502 break;
1499 case SYNC_PREF_ASK: 1503 case SYNC_PREF_ASK:
1500 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1504 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1501 if ( lastSync > remoteMod && lastSync > localMod) 1505 if ( lastSync > remoteMod && lastSync > localMod)
1502 return 0; 1506 return 0;
1503 if ( lastSync > remoteMod ) 1507 if ( lastSync > remoteMod )
1504 return 1; 1508 return 1;
1505 if ( lastSync > localMod ) 1509 if ( lastSync > localMod )
1506 return 2; 1510 return 2;
1507 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1511 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1508 localIsNew = localMod >= remoteMod; 1512 localIsNew = localMod >= remoteMod;
1509 if ( localIsNew ) 1513 if ( localIsNew )
1510 getEventViewerDialog()->setColorMode( 1 ); 1514 getEventViewerDialog()->setColorMode( 1 );
1511 else 1515 else
1512 getEventViewerDialog()->setColorMode( 2 ); 1516 getEventViewerDialog()->setColorMode( 2 );
1513 getEventViewerDialog()->setIncidence(local); 1517 getEventViewerDialog()->setIncidence(local);
1514 if ( localIsNew ) 1518 if ( localIsNew )
1515 getEventViewerDialog()->setColorMode( 2 ); 1519 getEventViewerDialog()->setColorMode( 2 );
1516 else 1520 else
1517 getEventViewerDialog()->setColorMode( 1 ); 1521 getEventViewerDialog()->setColorMode( 1 );
1518 getEventViewerDialog()->addIncidence(remote); 1522 getEventViewerDialog()->addIncidence(remote);
1519 getEventViewerDialog()->setColorMode( 0 ); 1523 getEventViewerDialog()->setColorMode( 0 );
1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1524 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1525 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1522 getEventViewerDialog()->showMe(); 1526 getEventViewerDialog()->showMe();
1523 result = getEventViewerDialog()->executeS( localIsNew ); 1527 result = getEventViewerDialog()->executeS( localIsNew );
1524 return result; 1528 return result;
1525 1529
1526 break; 1530 break;
1527 case SYNC_PREF_FORCE_LOCAL: 1531 case SYNC_PREF_FORCE_LOCAL:
1528 return 1; 1532 return 1;
1529 break; 1533 break;
1530 case SYNC_PREF_FORCE_REMOTE: 1534 case SYNC_PREF_FORCE_REMOTE:
1531 return 2; 1535 return 2;
1532 break; 1536 break;
1533 1537
1534 default: 1538 default:
1535 // SYNC_PREF_TAKE_BOTH not implemented 1539 // SYNC_PREF_TAKE_BOTH not implemented
1536 break; 1540 break;
1537 } 1541 }
1538 return 0; 1542 return 0;
1539} 1543}
1540Event* CalendarView::getLastSyncEvent() 1544Event* CalendarView::getLastSyncEvent()
1541{ 1545{
1542 Event* lse; 1546 Event* lse;
1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1547 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1544 mCalendar->setSyncEventsEnabled(); 1548 mCalendar->setSyncEventsEnabled();
1545 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1549 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1546 if (!lse) { 1550 if (!lse) {
1547 qDebug("KO: New last Syncevent created for local: %s",mCurrentSyncDevice.latin1() ); 1551 qDebug("KO: New last Syncevent created for local: %s",mCurrentSyncDevice.latin1() );
1548 lse = new Event(); 1552 lse = new Event();
1549 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1553 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1550 QString sum = ""; 1554 QString sum = "";
1551 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1555 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1552 sum = "E: "; 1556 sum = "E: ";
1553 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1557 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1554 lse->setDtStart( mLastCalendarSync ); 1558 lse->setDtStart( mLastCalendarSync );
1555 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1559 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1556 lse->setCategories( i18n("SyncEvent") ); 1560 lse->setCategories( i18n("SyncEvent") );
1557 lse->setReadOnly( true ); 1561 lse->setReadOnly( true );
1558 lse->setCalID( 1 ); 1562 lse->setCalID( 1 );
1559 mCalendar->addEvent( lse ); 1563 mCalendar->addEvent( lse );
1560 } else 1564 } else
1561 qDebug("KO: Last Syncevent on local found"); 1565 qDebug("KO: Last Syncevent on local found");
1562 1566
1563 return lse; 1567 return lse;
1564 1568
1565} 1569}
1566 1570
1567// we check, if the to delete event has a id for a profile 1571// we check, if the to delete event has a id for a profile
1568// if yes, we set this id in the profile to delete 1572// if yes, we set this id in the profile to delete
1569void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1573void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1570{ 1574{
1571 if ( lastSync.count() == 0 ) { 1575 if ( lastSync.count() == 0 ) {
1572 //qDebug(" lastSync.count() == 0"); 1576 //qDebug(" lastSync.count() == 0");
1573 return; 1577 return;
1574 } 1578 }
1575 if ( toDelete->typeID() == journalID ) 1579 if ( toDelete->typeID() == journalID )
1576 return; 1580 return;
1577 1581
1578 Event* eve = lastSync.first(); 1582 Event* eve = lastSync.first();
1579 1583
1580 while ( eve ) { 1584 while ( eve ) {
1581 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1585 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1582 if ( !id.isEmpty() ) { 1586 if ( !id.isEmpty() ) {
1583 QString des = eve->description(); 1587 QString des = eve->description();
1584 QString pref = "e"; 1588 QString pref = "e";
1585 if ( toDelete->typeID() == todoID ) 1589 if ( toDelete->typeID() == todoID )
1586 pref = "t"; 1590 pref = "t";
1587 des += pref+ id + ","; 1591 des += pref+ id + ",";
1588 eve->setReadOnly( false ); 1592 eve->setReadOnly( false );
1589 eve->setDescription( des ); 1593 eve->setDescription( des );
1590 //qDebug("setdes %s ", des.latin1()); 1594 //qDebug("setdes %s ", des.latin1());
1591 eve->setReadOnly( true ); 1595 eve->setReadOnly( true );
1592 } 1596 }
1593 eve = lastSync.next(); 1597 eve = lastSync.next();
1594 } 1598 }
1595 1599
1596} 1600}
1597void CalendarView::checkExternalId( Incidence * inc ) 1601void CalendarView::checkExternalId( Incidence * inc )
1598{ 1602{
1599 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1603 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1600 checkExternSyncEvent( lastSync, inc ); 1604 checkExternSyncEvent( lastSync, inc );
1601 1605
1602} 1606}
1603bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1607bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1604{ 1608{
1609
1605 bool syncOK = true; 1610 bool syncOK = true;
1606 int addedEvent = 0; 1611 int addedEvent = 0;
1607 int addedEventR = 0; 1612 int addedEventR = 0;
1608 int deletedEventR = 0; 1613 int deletedEventR = 0;
1609 int deletedEventL = 0; 1614 int deletedEventL = 0;
1610 int changedLocal = 0; 1615 int changedLocal = 0;
1611 int changedRemote = 0; 1616 int changedRemote = 0;
1612 int filteredIN = 0; 1617 int filteredIN = 0;
1613 int filteredOUT = 0; 1618 int filteredOUT = 0;
1614 //QPtrList<Event> el = local->rawEvents(); 1619 //QPtrList<Event> el = local->rawEvents();
1615 Event* eventR; 1620 Event* eventR;
1616 QString uid; 1621 QString uid;
1617 int take; 1622 int take;
1618 Event* eventRSync; 1623 Event* eventRSync;
1619 Event* eventLSync; 1624 Event* eventLSync;
1620 clearAllViews(); 1625 clearAllViews();
1621 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1626 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1622 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1627 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1623 bool fullDateRange = false; 1628 bool fullDateRange = false;
1624 local->resetTempSyncStat(); 1629 local->resetTempSyncStat();
1625 mLastCalendarSync = QDateTime::currentDateTime(); 1630 mLastCalendarSync = QDateTime::currentDateTime();
1626 if ( mSyncManager->syncWithDesktop() ) { 1631 if ( mSyncManager->syncWithDesktop() ) {
1627 remote->resetPilotStat(1); 1632 remote->resetPilotStat(1);
1628 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1633 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1629 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1634 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1630 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1635 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1631 } else { 1636 } else {
1632 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1637 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1633 } 1638 }
1634 } 1639 }
1635 QDateTime modifiedCalendar = mLastCalendarSync; 1640 QDateTime modifiedCalendar = mLastCalendarSync;
1636 eventLSync = getLastSyncEvent(); 1641 eventLSync = getLastSyncEvent();
1637 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1642 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1638 if ( eventR ) { 1643 if ( eventR ) {
1639 qDebug("KO: Last-syncEvent on remote found "); 1644 qDebug("KO: Last-syncEvent on remote found ");
1640 eventRSync = (Event*) eventR->clone(); 1645 eventRSync = (Event*) eventR->clone();
1641 remote->deleteEvent(eventR ); 1646 remote->deleteEvent(eventR );
1642 1647
1643 } else { 1648 } else {
1644 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1649 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1645 eventRSync = (Event*)eventLSync->clone(); 1650 eventRSync = (Event*)eventLSync->clone();
1646 } else { 1651 } else {
1647 fullDateRange = true; 1652 fullDateRange = true;
1648 eventRSync = new Event(); 1653 eventRSync = new Event();
1649 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1654 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1650 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1655 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1651 eventRSync->setDtStart( mLastCalendarSync ); 1656 eventRSync->setDtStart( mLastCalendarSync );
1652 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1657 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1653 eventRSync->setCategories( i18n("SyncEvent") ); 1658 eventRSync->setCategories( i18n("SyncEvent") );
1654 } 1659 }
1655 } 1660 }
1656 if ( eventLSync->dtStart() == mLastCalendarSync ) 1661 if ( eventLSync->dtStart() == mLastCalendarSync )
1657 fullDateRange = true; 1662 fullDateRange = true;
1658 1663
1659 if ( ! fullDateRange ) { 1664 if ( ! fullDateRange ) {
1660 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1665 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1661 1666
1662 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1667 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1663 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1668 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1664 fullDateRange = true; 1669 fullDateRange = true;
1665 } 1670 }
1666 } 1671 }
1667 if ( mSyncManager->syncWithDesktop() ) { 1672 if ( mSyncManager->syncWithDesktop() ) {
1668 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1673 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1669 } 1674 }
1670 if ( fullDateRange ) 1675 if ( fullDateRange )
1671 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1676 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1672 else 1677 else
1673 mLastCalendarSync = eventLSync->dtStart(); 1678 mLastCalendarSync = eventLSync->dtStart();
1674 // for resyncing if own file has changed 1679 // for resyncing if own file has changed
1675 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1680 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1676 mLastCalendarSync = loadedFileVersion; 1681 mLastCalendarSync = loadedFileVersion;
1677 //qDebug("setting mLastCalendarSync "); 1682 //qDebug("setting mLastCalendarSync ");
1678 } 1683 }
1679 //qDebug("*************************** "); 1684 //qDebug("*************************** ");
1680 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1685 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1681 QPtrList<Incidence> er = remote->rawIncidences(); 1686 QPtrList<Incidence> er = remote->rawIncidences();
1682 Incidence* inR = er.first(); 1687 Incidence* inR = er.first();
1683 Incidence* inL; 1688 Incidence* inL;
1684 QProgressBar bar( er.count(),0 ); 1689 QProgressBar bar( er.count(),0 );
1685 bar.setCaption (i18n("Syncing - close to abort!") ); 1690 bar.setCaption (i18n("Syncing - close to abort!") );
1686 1691
1687 // ************** setting up filter ************* 1692 // ************** setting up filter *************
1688 CalFilter *filterIN = 0; 1693 CalFilter *filterIN = 0;
1689 CalFilter *filterOUT = 0; 1694 CalFilter *filterOUT = 0;
1690 CalFilter *filter = mFilters.first(); 1695 CalFilter *filter = mFilters.first();
1691 while(filter) { 1696 while(filter) {
1692 if ( filter->name() == mSyncManager->mFilterInCal ) 1697 if ( filter->name() == mSyncManager->mFilterInCal )
1693 filterIN = filter; 1698 filterIN = filter;
1694 if ( filter->name() == mSyncManager->mFilterOutCal ) 1699 if ( filter->name() == mSyncManager->mFilterOutCal )
1695 filterOUT = filter; 1700 filterOUT = filter;
1696 filter = mFilters.next(); 1701 filter = mFilters.next();
1697 } 1702 }
1698 int w = 300; 1703 int w = 300;
1699 if ( QApplication::desktop()->width() < 320 ) 1704 if ( QApplication::desktop()->width() < 320 )
1700 w = 220; 1705 w = 220;
1701 int h = bar.sizeHint().height() ; 1706 int h = bar.sizeHint().height() ;
1702 int dw = QApplication::desktop()->width(); 1707 int dw = QApplication::desktop()->width();
1703 int dh = QApplication::desktop()->height(); 1708 int dh = QApplication::desktop()->height();
1704 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1709 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1705 bar.show(); 1710 bar.show();
1706 int modulo = (er.count()/10)+1; 1711 int modulo = (er.count()/10)+1;
1707 int incCounter = 0; 1712 int incCounter = 0;
1708 while ( inR ) { 1713 while ( inR ) {
1709 if ( ! bar.isVisible() ) 1714 if ( ! bar.isVisible() )
1710 return false; 1715 return false;
1711 if ( incCounter % modulo == 0 ) 1716 if ( incCounter % modulo == 0 )
1712 bar.setProgress( incCounter ); 1717 bar.setProgress( incCounter );
1713 ++incCounter; 1718 ++incCounter;
1714 uid = inR->uid(); 1719 uid = inR->uid();
1715 bool skipIncidence = false; 1720 bool skipIncidence = false;
1716 if ( uid.left(15) == QString("last-syncEvent-") ) 1721 if ( uid.left(15) == QString("last-syncEvent-") )
1717 skipIncidence = true; 1722 skipIncidence = true;
1718 QString idS; 1723 QString idS;
1719 qApp->processEvents(); 1724 qApp->processEvents();
1720 if ( !skipIncidence ) { 1725 if ( !skipIncidence ) {
1721 inL = local->incidenceForUid( uid , false , true ); 1726 inL = local->incidenceForUid( uid , false , true );
1722 if ( inL ) { // maybe conflict - same uid in both calendars 1727 if ( inL ) { // maybe conflict - same uid in both calendars
1723 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1728 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1724 //qDebug("take %d %s ", take, inL->summary().latin1()); 1729 //qDebug("take %d %s ", take, inL->summary().latin1());
1725 if ( take == 3 ) 1730 if ( take == 3 )
1726 return false; 1731 return false;
1727 if ( take == 1 ) {// take local ********************** 1732 if ( take == 1 ) {// take local **********************
1728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1733 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1729 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1734 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1730 else 1735 else
1731 idS = inR->IDStr(); 1736 idS = inR->IDStr();
1732 int calID = inR->calID(); 1737 int calID = inR->calID();
1733 remote->deleteIncidence( inR ); 1738 remote->deleteIncidence( inR );
1734 inR = inL->clone(); 1739 inR = inL->clone();
1735 inR->setCalID( calID ); 1740 inR->setCalID_block( calID );
1736 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1741 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1737 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1742 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1738 inR->setIDStr( idS ); 1743 inR->setIDStr( idS );
1739 remote->addIncidence( inR ); 1744 remote->addIncidence( inR );
1740 if ( mSyncManager->syncWithDesktop() ) 1745 if ( mSyncManager->syncWithDesktop() )
1741 inR->setPilotId( 2 ); 1746 inR->setPilotId( 2 );
1742 ++changedRemote; 1747 ++changedRemote;
1743 } else {// take remote ********************** 1748 } else {// take remote **********************
1744 if ( !inL->isReadOnly() ) { 1749 if ( !inL->isReadOnly() ) {
1745 idS = inL->IDStr(); 1750 idS = inL->IDStr();
1746 int pid = inL->pilotId(); 1751 int pid = inL->pilotId();
1747 int calID = inL->calID(); 1752 int calID = inL->calID();
1748 local->deleteIncidence( inL ); 1753 local->deleteIncidence( inL );
1749 inL = inR->clone(); 1754 inL = inR->clone();
1750 inL->setCalID( calID ); 1755 inL->setCalID_block( calID );
1751 if ( mSyncManager->syncWithDesktop() ) 1756 if ( mSyncManager->syncWithDesktop() )
1752 inL->setPilotId( pid ); 1757 inL->setPilotId( pid );
1753 inL->setIDStr( idS ); 1758 inL->setIDStr( idS );
1754 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1759 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1755 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1760 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1756 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1761 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1757 } 1762 }
1758 local->addIncidence( inL ); 1763 local->addIncidence( inL );
1759 ++changedLocal; 1764 ++changedLocal;
1760 } 1765 }
1761 } 1766 }
1762 } 1767 }
1763 } else { // no conflict ********** add or delete remote 1768 } else { // no conflict ********** add or delete remote
1764 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1769 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1770 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1766 QString des = eventLSync->description(); 1771 QString des = eventLSync->description();
1767 QString pref = "e"; 1772 QString pref = "e";
1768 if ( inR->typeID() == todoID ) 1773 if ( inR->typeID() == todoID )
1769 pref = "t"; 1774 pref = "t";
1770 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1775 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1771 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1776 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1772 //remote->deleteIncidence( inR ); 1777 //remote->deleteIncidence( inR );
1773 ++deletedEventR; 1778 ++deletedEventR;
1774 } else { 1779 } else {
1775 inR->setLastModified( modifiedCalendar ); 1780 inR->setLastModified( modifiedCalendar );
1776 inL = inR->clone(); 1781 inL = inR->clone();
1777 inL->setIDStr( ":" ); 1782 inL->setIDStr( ":" );
1778 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1783 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1779 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1784 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1780 1785
1781 inL->setCalID( 0 );// add to default cal 1786 inL->setCalID_block( 0 );// add to default cal
1782 local->addIncidence( inL ); 1787 local->addIncidence( inL );
1783 ++addedEvent; 1788 ++addedEvent;
1784 1789
1785 } 1790 }
1786 } else { 1791 } else {
1787 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1792 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1788 inR->setLastModified( modifiedCalendar ); 1793 inR->setLastModified( modifiedCalendar );
1789 inL = inR->clone(); 1794 inL = inR->clone();
1790 inL->setIDStr( ":" ); 1795 inL->setIDStr( ":" );
1791 inL->setCalID( 0 );// add to default cal 1796 inL->setCalID_block( 0 );// add to default cal
1792 local->addIncidence( inL ); 1797 local->addIncidence( inL );
1793 ++addedEvent; 1798 ++addedEvent;
1794 1799
1795 } else { 1800 } else {
1796 checkExternSyncEvent(eventRSyncSharp, inR); 1801 checkExternSyncEvent(eventRSyncSharp, inR);
1797 remote->deleteIncidence( inR ); 1802 remote->deleteIncidence( inR );
1798 ++deletedEventR; 1803 ++deletedEventR;
1799 } 1804 }
1800 } 1805 }
1801 } else { 1806 } else {
1802 ++filteredIN; 1807 ++filteredIN;
1803 } 1808 }
1804 } 1809 }
1805 } 1810 }
1806 inR = er.next(); 1811 inR = er.next();
1807 } 1812 }
1808 QPtrList<Incidence> el = local->rawIncidences(); 1813 QPtrList<Incidence> el = local->rawIncidences();
1809 inL = el.first(); 1814 inL = el.first();
1810 modulo = (el.count()/10)+1; 1815 modulo = (el.count()/10)+1;
1811 bar.setCaption (i18n("Add / remove events") ); 1816 bar.setCaption (i18n("Add / remove events") );
1812 bar.setTotalSteps ( el.count() ) ; 1817 bar.setTotalSteps ( el.count() ) ;
1813 bar.show(); 1818 bar.show();
1814 incCounter = 0; 1819 incCounter = 0;
1815 1820
1816 while ( inL ) { 1821 while ( inL ) {
1817 1822
1818 qApp->processEvents(); 1823 qApp->processEvents();
1819 if ( ! bar.isVisible() ) 1824 if ( ! bar.isVisible() )
1820 return false; 1825 return false;
1821 if ( incCounter % modulo == 0 ) 1826 if ( incCounter % modulo == 0 )
1822 bar.setProgress( incCounter ); 1827 bar.setProgress( incCounter );
1823 ++incCounter; 1828 ++incCounter;
1824 uid = inL->uid(); 1829 uid = inL->uid();
1825 bool skipIncidence = false; 1830 bool skipIncidence = false;
1826 if ( uid.left(15) == QString("last-syncEvent-") ) 1831 if ( uid.left(15) == QString("last-syncEvent-") )
1827 skipIncidence = true; 1832 skipIncidence = true;
1828 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1833 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1829 skipIncidence = true; 1834 skipIncidence = true;
1830 if ( !skipIncidence ) { 1835 if ( !skipIncidence ) {
1831 inR = remote->incidenceForUid( uid , true, true ); 1836 inR = remote->incidenceForUid( uid , true, true );
1832 if ( ! inR ) { 1837 if ( ! inR ) {
1833 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1838 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1834 // no conflict ********** add or delete local 1839 // no conflict ********** add or delete local
1835 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1840 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1836 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1841 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1837 checkExternSyncEvent(eventLSyncSharp, inL); 1842 checkExternSyncEvent(eventLSyncSharp, inL);
1838 local->deleteIncidence( inL ); 1843 local->deleteIncidence( inL );
1839 ++deletedEventL; 1844 ++deletedEventL;
1840 } else { 1845 } else {
1841 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1846 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1842 inL->removeID(mCurrentSyncDevice ); 1847 inL->removeID(mCurrentSyncDevice );
1843 ++addedEventR; 1848 ++addedEventR;
1844 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1849 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1845 inL->setLastModified( modifiedCalendar ); 1850 inL->setLastModified( modifiedCalendar );
1846 inR = inL->clone(); 1851 inR = inL->clone();
1847 inR->setIDStr( ":" ); 1852 inR->setIDStr( ":" );
1848 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1853 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1849 inR->setCalID( 0 );// add to default cal 1854 inR->setCalID_block( 0 );// add to default cal
1850 remote->addIncidence( inR ); 1855 remote->addIncidence( inR );
1851 } 1856 }
1852 } 1857 }
1853 } else { 1858 } else {
1854 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1859 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1855 checkExternSyncEvent(eventLSyncSharp, inL); 1860 checkExternSyncEvent(eventLSyncSharp, inL);
1856 local->deleteIncidence( inL ); 1861 local->deleteIncidence( inL );
1857 ++deletedEventL; 1862 ++deletedEventL;
1858 } else { 1863 } else {
1859 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1864 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1860 ++addedEventR; 1865 ++addedEventR;
1861 inL->setLastModified( modifiedCalendar ); 1866 inL->setLastModified( modifiedCalendar );
1862 inR = inL->clone(); 1867 inR = inL->clone();
1863 inR->setIDStr( ":" ); 1868 inR->setIDStr( ":" );
1864 inR->setCalID( 0 );// add to default cal 1869 inR->setCalID_block( 0 );// add to default cal
1865 remote->addIncidence( inR ); 1870 remote->addIncidence( inR );
1866 } 1871 }
1867 } 1872 }
1868 } 1873 }
1869 } else { 1874 } else {
1870 ++filteredOUT; 1875 ++filteredOUT;
1871 } 1876 }
1872 } 1877 }
1873 } 1878 }
1874 inL = el.next(); 1879 inL = el.next();
1875 } 1880 }
1876 int delFut = 0; 1881 int delFut = 0;
1877 int remRem = 0; 1882 int remRem = 0;
1878 if ( mSyncManager->mWriteBackInFuture ) { 1883 if ( mSyncManager->mWriteBackInFuture ) {
1879 er = remote->rawIncidences(); 1884 er = remote->rawIncidences();
1880 remRem = er.count(); 1885 remRem = er.count();
1881 inR = er.first(); 1886 inR = er.first();
1882 QDateTime dt; 1887 QDateTime dt;
1883 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1888 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1884 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1889 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1885 while ( inR ) { 1890 while ( inR ) {
1886 if ( inR->typeID() == todoID ) { 1891 if ( inR->typeID() == todoID ) {
1887 Todo * t = (Todo*)inR; 1892 Todo * t = (Todo*)inR;
1888 if ( t->hasDueDate() ) 1893 if ( t->hasDueDate() )
1889 dt = t->dtDue(); 1894 dt = t->dtDue();
1890 else 1895 else
1891 dt = cur.addSecs( 62 ); 1896 dt = cur.addSecs( 62 );
1892 } 1897 }
1893 else if (inR->typeID() == eventID ) { 1898 else if (inR->typeID() == eventID ) {
1894 bool ok; 1899 bool ok;
1895 dt = inR->getNextOccurence( cur, &ok ); 1900 dt = inR->getNextOccurence( cur, &ok );
1896 if ( !ok ) 1901 if ( !ok )
1897 dt = cur.addSecs( -62 ); 1902 dt = cur.addSecs( -62 );
1898 } 1903 }
1899 else 1904 else
1900 dt = inR->dtStart(); 1905 dt = inR->dtStart();
1901 if ( dt < cur || dt > end ) { 1906 if ( dt < cur || dt > end ) {
1902 remote->deleteIncidence( inR ); 1907 remote->deleteIncidence( inR );
1903 ++delFut; 1908 ++delFut;
1904 } 1909 }
1905 inR = er.next(); 1910 inR = er.next();
1906 } 1911 }
1907 } 1912 }
1908 bar.hide(); 1913 bar.hide();
1909 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1914 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1910 if ( mMultiResourceSync ) { 1915 if ( mMultiResourceSync ) {
1911 remote->removeSyncInfo( "" ); //all 1916 remote->removeSyncInfo( "" ); //all
1912 qDebug("KO: Remoing all sync info on remote "); 1917 qDebug("KO: Remoing all sync info on remote ");
1913 } else { 1918 } else {
1914 eventLSync->setReadOnly( false ); 1919 eventLSync->setReadOnly( false );
1915 eventLSync->setDtStart( mLastCalendarSync ); 1920 eventLSync->setDtStart( mLastCalendarSync );
1916 eventRSync->setDtStart( mLastCalendarSync ); 1921 eventRSync->setDtStart( mLastCalendarSync );
1917 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1922 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1918 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1923 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1919 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1924 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1920 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1925 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1921 eventLSync->setReadOnly( true ); 1926 eventLSync->setReadOnly( true );
1922 } 1927 }
1923 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1928 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1924 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal... 1929 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal...
1925 remote->addEvent( eventRSync ); 1930 remote->addEvent( eventRSync );
1926 else 1931 else
1927 delete eventRSync; 1932 delete eventRSync;
1928 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1933 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1929 QString mes; 1934 QString mes;
1930 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1935 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1931 QString delmess; 1936 QString delmess;
1932 if ( delFut ) { 1937 if ( delFut ) {
1933 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1938 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1934 mes += delmess; 1939 mes += delmess;
1935 } 1940 }
1936 mes = i18n("Local calendar changed!\n") +mes; 1941 mes = i18n("Local calendar changed!\n") +mes;
1937 mCalendar->checkAlarmForIncidence( 0, true ); 1942 mCalendar->checkAlarmForIncidence( 0, true );
1938 qDebug( mes ); 1943 qDebug( mes );
1939 if ( mSyncManager->mShowSyncSummary ) { 1944 if ( mSyncManager->mShowSyncSummary ) {
1940 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1945 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1941 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1946 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1942 qDebug("KO: WB cancelled "); 1947 qDebug("KO: WB cancelled ");
1943 mSyncManager->mWriteBackFile = false; 1948 mSyncManager->mWriteBackFile = false;
1944 return syncOK; 1949 return syncOK;
1945 } 1950 }
1946 } 1951 }
1947 return syncOK; 1952 return syncOK;
1948} 1953}
1949 1954
1950void CalendarView::setSyncDevice( QString s ) 1955void CalendarView::setSyncDevice( QString s )
1951{ 1956{
1952 mCurrentSyncDevice= s; 1957 mCurrentSyncDevice= s;
1953} 1958}
1954void CalendarView::setSyncName( QString s ) 1959void CalendarView::setSyncName( QString s )
1955{ 1960{
1956 mCurrentSyncName= s; 1961 mCurrentSyncName= s;
1957} 1962}
1958bool CalendarView::syncCalendar(QString filename, int mode) 1963bool CalendarView::syncCalendar(QString filename, int mode)
1959{ 1964{
1960 //qDebug("syncCalendar %s ", filename.latin1()); 1965 //qDebug("syncCalendar %s ", filename.latin1());
1961 mGlobalSyncMode = SYNC_MODE_NORMAL; 1966 mGlobalSyncMode = SYNC_MODE_NORMAL;
1962 CalendarLocal* calendar = new CalendarLocal(); 1967 CalendarLocal* calendar = new CalendarLocal();
1963 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1968 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1964 FileStorage* storage = new FileStorage( calendar ); 1969 FileStorage* storage = new FileStorage( calendar );
1965 bool syncOK = false; 1970 bool syncOK = false;
1966 storage->setFileName( filename ); 1971 storage->setFileName( filename );
1967 // qDebug("loading ... "); 1972 // qDebug("loading ... ");
1968 if ( storage->load() ) { 1973 if ( storage->load() ) {
1969 getEventViewerDialog()->setSyncMode( true ); 1974 getEventViewerDialog()->setSyncMode( true );
1970 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1975 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1971 getEventViewerDialog()->setSyncMode( false ); 1976 getEventViewerDialog()->setSyncMode( false );
1972 if ( syncOK ) { 1977 if ( syncOK ) {
1973 if ( mSyncManager->mWriteBackFile ) 1978 if ( mSyncManager->mWriteBackFile )
1974 { 1979 {
1975 storage->setSaveFormat( new ICalFormat() ); 1980 storage->setSaveFormat( new ICalFormat() );
1976 storage->save(); 1981 storage->save();
1977 } 1982 }
1978 } 1983 }
1979 setModified( true ); 1984 setModified( true );
1980 } 1985 }
1981 delete storage; 1986 delete storage;
1982 delete calendar; 1987 delete calendar;
1983 if ( syncOK ) 1988 if ( syncOK )
1984 updateView(); 1989 updateView();
1985 return syncOK; 1990 return syncOK;
1986} 1991}
1987 1992
1988void CalendarView::syncExternal( int mode ) 1993void CalendarView::syncExternal( int mode )
1989{ 1994{
1990 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1995 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1991 qApp->processEvents(); 1996 qApp->processEvents();
1992 CalendarLocal* calendar = new CalendarLocal(); 1997 CalendarLocal* calendar = new CalendarLocal();
1993 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1998 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1994 bool syncOK = false; 1999 bool syncOK = false;
1995 bool loadSuccess = false; 2000 bool loadSuccess = false;
1996 PhoneFormat* phoneFormat = 0; 2001 PhoneFormat* phoneFormat = 0;
1997 emit tempDisableBR(true); 2002 emit tempDisableBR(true);
1998#ifndef DESKTOP_VERSION 2003#ifndef DESKTOP_VERSION
1999 SharpFormat* sharpFormat = 0; 2004 SharpFormat* sharpFormat = 0;
2000 if ( mode == 0 ) { // sharp 2005 if ( mode == 0 ) { // sharp
2001 sharpFormat = new SharpFormat () ; 2006 sharpFormat = new SharpFormat () ;
2002 loadSuccess = sharpFormat->load( calendar, mCalendar ); 2007 loadSuccess = sharpFormat->load( calendar, mCalendar );
2003 2008
2004 } else 2009 } else
2005#endif 2010#endif
2006 if ( mode == 1 ) { // phone 2011 if ( mode == 1 ) { // phone
2007 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 2012 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
2008 mSyncManager->mPhoneDevice, 2013 mSyncManager->mPhoneDevice,
2009 mSyncManager->mPhoneConnection, 2014 mSyncManager->mPhoneConnection,
2010 mSyncManager->mPhoneModel); 2015 mSyncManager->mPhoneModel);
2011 loadSuccess = phoneFormat->load( calendar,mCalendar); 2016 loadSuccess = phoneFormat->load( calendar,mCalendar);
2012 2017
2013 } else { 2018 } else {
2014 emit tempDisableBR(false); 2019 emit tempDisableBR(false);
2015 return; 2020 return;
2016 } 2021 }
2017 if ( loadSuccess ) { 2022 if ( loadSuccess ) {
2018 getEventViewerDialog()->setSyncMode( true ); 2023 getEventViewerDialog()->setSyncMode( true );
2019 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2024 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2020 getEventViewerDialog()->setSyncMode( false ); 2025 getEventViewerDialog()->setSyncMode( false );
2021 qApp->processEvents(); 2026 qApp->processEvents();
2022 if ( syncOK ) { 2027 if ( syncOK ) {
2023 if ( mSyncManager->mWriteBackFile ) 2028 if ( mSyncManager->mWriteBackFile )
2024 { 2029 {
2025 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 2030 QPtrList<Incidence> iL = mCalendar->rawIncidences();
2026 Incidence* inc = iL.first(); 2031 Incidence* inc = iL.first();
2027 if ( phoneFormat ) { 2032 if ( phoneFormat ) {
2028 while ( inc ) { 2033 while ( inc ) {
2029 inc->removeID(mCurrentSyncDevice); 2034 inc->removeID(mCurrentSyncDevice);
2030 inc = iL.next(); 2035 inc = iL.next();
2031 } 2036 }
2032 } 2037 }
2033#ifndef DESKTOP_VERSION 2038#ifndef DESKTOP_VERSION
2034 if ( sharpFormat ) 2039 if ( sharpFormat )
2035 sharpFormat->save(calendar); 2040 sharpFormat->save(calendar);
2036#endif 2041#endif
2037 if ( phoneFormat ) 2042 if ( phoneFormat )
2038 phoneFormat->save(calendar); 2043 phoneFormat->save(calendar);
2039 iL = calendar->rawIncidences(); 2044 iL = calendar->rawIncidences();
2040 inc = iL.first(); 2045 inc = iL.first();
2041 Incidence* loc; 2046 Incidence* loc;
2042 while ( inc ) { 2047 while ( inc ) {
2043 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 2048 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
2044 loc = mCalendar->incidence(inc->uid() ); 2049 loc = mCalendar->incidence(inc->uid() );
2045 if ( loc ) { 2050 if ( loc ) {
2046 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 2051 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
2047 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 2052 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
2048 } 2053 }
2049 } 2054 }
2050 inc = iL.next(); 2055 inc = iL.next();
2051 } 2056 }
2052 Incidence* lse = getLastSyncEvent(); 2057 Incidence* lse = getLastSyncEvent();
2053 if ( lse ) { 2058 if ( lse ) {
2054 lse->setReadOnly( false ); 2059 lse->setReadOnly( false );
2055 lse->setDescription( "" ); 2060 lse->setDescription( "" );
2056 lse->setReadOnly( true ); 2061 lse->setReadOnly( true );
@@ -2260,534 +2265,540 @@ bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a
2260bool CalendarView::importQtopia( const QString &categories, 2265bool CalendarView::importQtopia( const QString &categories,
2261 const QString &datebook, 2266 const QString &datebook,
2262 const QString &todolist ) 2267 const QString &todolist )
2263{ 2268{
2264 2269
2265 QtopiaFormat qtopiaFormat; 2270 QtopiaFormat qtopiaFormat;
2266 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2271 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2267 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 2272 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
2268 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 2273 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
2269 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 2274 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
2270 2275
2271 updateView(); 2276 updateView();
2272 return true; 2277 return true;
2273 2278
2274#if 0 2279#if 0
2275 mGlobalSyncMode = SYNC_MODE_QTOPIA; 2280 mGlobalSyncMode = SYNC_MODE_QTOPIA;
2276 mCurrentSyncDevice = "qtopia-XML"; 2281 mCurrentSyncDevice = "qtopia-XML";
2277 if ( mSyncManager->mAskForPreferences ) 2282 if ( mSyncManager->mAskForPreferences )
2278 edit_sync_options(); 2283 edit_sync_options();
2279 qApp->processEvents(); 2284 qApp->processEvents();
2280 CalendarLocal* calendar = new CalendarLocal(); 2285 CalendarLocal* calendar = new CalendarLocal();
2281 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2286 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2282 bool syncOK = false; 2287 bool syncOK = false;
2283 QtopiaFormat qtopiaFormat; 2288 QtopiaFormat qtopiaFormat;
2284 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2289 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2285 bool loadOk = true; 2290 bool loadOk = true;
2286 if ( !categories.isEmpty() ) 2291 if ( !categories.isEmpty() )
2287 loadOk = qtopiaFormat.load( calendar, categories ); 2292 loadOk = qtopiaFormat.load( calendar, categories );
2288 if ( loadOk && !datebook.isEmpty() ) 2293 if ( loadOk && !datebook.isEmpty() )
2289 loadOk = qtopiaFormat.load( calendar, datebook ); 2294 loadOk = qtopiaFormat.load( calendar, datebook );
2290 if ( loadOk && !todolist.isEmpty() ) 2295 if ( loadOk && !todolist.isEmpty() )
2291 loadOk = qtopiaFormat.load( calendar, todolist ); 2296 loadOk = qtopiaFormat.load( calendar, todolist );
2292 2297
2293 if ( loadOk ) { 2298 if ( loadOk ) {
2294 getEventViewerDialog()->setSyncMode( true ); 2299 getEventViewerDialog()->setSyncMode( true );
2295 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2300 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2296 getEventViewerDialog()->setSyncMode( false ); 2301 getEventViewerDialog()->setSyncMode( false );
2297 qApp->processEvents(); 2302 qApp->processEvents();
2298 if ( syncOK ) { 2303 if ( syncOK ) {
2299 if ( mSyncManager->mWriteBackFile ) 2304 if ( mSyncManager->mWriteBackFile )
2300 { 2305 {
2301 // write back XML file 2306 // write back XML file
2302 2307
2303 } 2308 }
2304 setModified( true ); 2309 setModified( true );
2305 } 2310 }
2306 } else { 2311 } else {
2307 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 2312 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
2308 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 2313 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
2309 question, i18n("Ok")) ; 2314 question, i18n("Ok")) ;
2310 } 2315 }
2311 delete calendar; 2316 delete calendar;
2312 updateView(); 2317 updateView();
2313 return syncOK; 2318 return syncOK;
2314 2319
2315 2320
2316#endif 2321#endif
2317 2322
2318} 2323}
2319 2324
2320void CalendarView::setSyncEventsReadOnly() 2325void CalendarView::setSyncEventsReadOnly()
2321{ 2326{
2322 mCalendar->setSyncEventsReadOnly(); 2327 mCalendar->setSyncEventsReadOnly();
2323} 2328}
2324 2329
2325bool CalendarView::loadCalendars() 2330bool CalendarView::loadCalendars()
2326{ 2331{
2327 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2332 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2328 KopiCalendarFile * cal = calendars.first(); 2333 KopiCalendarFile * cal = calendars.first();
2329 mCalendar->setDefaultCalendar( 1 ); 2334 mCalendar->setDefaultCalendar( 1 );
2330 openCalendar( MainWindow::defaultFileName(), false ); 2335 openCalendar( MainWindow::defaultFileName(), false );
2331 cal = calendars.next(); 2336 cal = calendars.next();
2332 while ( cal ) { 2337 while ( cal ) {
2333 addCalendar( cal ); 2338 addCalendar( cal );
2334 cal = calendars.next(); 2339 cal = calendars.next();
2335 } 2340 }
2336 restoreCalendarSettings(); 2341 restoreCalendarSettings();
2337 return true; 2342 return true;
2338} 2343}
2339bool CalendarView::restoreCalendarSettings() 2344bool CalendarView::restoreCalendarSettings()
2340{ 2345{
2341 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2346 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2342 KopiCalendarFile * cal = calendars.first(); 2347 KopiCalendarFile * cal = calendars.first();
2343 while ( cal ) { 2348 while ( cal ) {
2344 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 2349 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
2345 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 2350 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
2346 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 2351 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
2347 if ( cal->isStandard ) 2352 if ( cal->isStandard )
2348 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2353 mCalendar->setDefaultCalendar( cal->mCalNumber );
2349 cal = calendars.next(); 2354 cal = calendars.next();
2350 } 2355 }
2351 setSyncEventsReadOnly(); 2356 setSyncEventsReadOnly();
2352 mCalendar->reInitAlarmSettings(); 2357 mCalendar->reInitAlarmSettings();
2353 updateUnmanagedViews(); 2358 updateUnmanagedViews();
2354 updateView(); 2359 updateView();
2355 return true; 2360 return true;
2356} 2361}
2357void CalendarView::addCalendarId( int id ) 2362void CalendarView::addCalendarId( int id )
2358{ 2363{
2359 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 2364 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
2360 if ( cal ) 2365 if ( cal )
2361 addCalendar( cal ); 2366 addCalendar( cal );
2362} 2367}
2363bool CalendarView::addCalendar( KopiCalendarFile * cal ) 2368bool CalendarView::addCalendar( KopiCalendarFile * cal )
2364{ 2369{
2365 cal->mErrorOnLoad = false; 2370 cal->mErrorOnLoad = false;
2366 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 2371 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
2367 cal->mLoadDt = QDateTime::currentDateTime(); 2372 cal->mLoadDt = QDateTime::currentDateTime();
2368 return true; 2373 return true;
2369 } 2374 }
2370 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 2375 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
2371 cal->mErrorOnLoad = true; 2376 cal->mErrorOnLoad = true;
2372 return false; 2377 return false;
2373} 2378}
2374bool CalendarView::openCalendar(QString filename, bool merge) 2379bool CalendarView::openCalendar(QString filename, bool merge)
2375{ 2380{
2376 2381
2377 if (filename.isEmpty()) { 2382 if (filename.isEmpty()) {
2378 return false; 2383 return false;
2379 } 2384 }
2380 2385
2381 if (!QFile::exists(filename)) { 2386 if (!QFile::exists(filename)) {
2382 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 2387 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
2383 return false; 2388 return false;
2384 } 2389 }
2385 2390
2386 globalFlagBlockAgenda = 1; 2391 globalFlagBlockAgenda = 1;
2387 clearAllViews(); 2392 clearAllViews();
2388 if (!merge) { 2393 if (!merge) {
2389 mViewManager->setDocumentId( filename ); 2394 mViewManager->setDocumentId( filename );
2390 mCalendar->close(); 2395 mCalendar->close();
2391 } 2396 }
2392 mStorage->setFileName( filename ); 2397 mStorage->setFileName( filename );
2393 2398
2394 if ( mStorage->load() ) { 2399 if ( mStorage->load() ) {
2395 if ( merge ) ;//setModified( true ); 2400 if ( merge ) ;//setModified( true );
2396 else { 2401 else {
2397 //setModified( true ); 2402 //setModified( true );
2398 mViewManager->setDocumentId( filename ); 2403 mViewManager->setDocumentId( filename );
2399 mDialogManager->setDocumentId( filename ); 2404 mDialogManager->setDocumentId( filename );
2400 mTodoList->setDocumentId( filename ); 2405 mTodoList->setDocumentId( filename );
2401 } 2406 }
2402 globalFlagBlockAgenda = 2; 2407 globalFlagBlockAgenda = 2;
2403 // if ( getLastSyncEvent() ) 2408 // if ( getLastSyncEvent() )
2404 // getLastSyncEvent()->setReadOnly( true ); 2409 // getLastSyncEvent()->setReadOnly( true );
2405 mCalendar->reInitAlarmSettings(); 2410 mCalendar->reInitAlarmSettings();
2406 setSyncEventsReadOnly(); 2411 setSyncEventsReadOnly();
2407 //updateUnmanagedViews(); 2412 //updateUnmanagedViews();
2408 //updateView(); 2413 //updateView();
2409 if ( filename != MainWindow::defaultFileName() ) { 2414 if ( filename != MainWindow::defaultFileName() ) {
2410 saveCalendar( MainWindow::defaultFileName() ); 2415 saveCalendar( MainWindow::defaultFileName() );
2411 } else { 2416 } else {
2412 QFileInfo finf ( MainWindow::defaultFileName()); 2417 QFileInfo finf ( MainWindow::defaultFileName());
2413 if ( finf.exists() ) { 2418 if ( finf.exists() ) {
2414 setLoadedFileVersion( finf.lastModified () ); 2419 setLoadedFileVersion( finf.lastModified () );
2415 } 2420 }
2416 } 2421 }
2417 return true; 2422 return true;
2418 } else { 2423 } else {
2419 // while failing to load, the calendar object could 2424 // while failing to load, the calendar object could
2420 // have become partially populated. Clear it out. 2425 // have become partially populated. Clear it out.
2421 if ( !merge ) { 2426 if ( !merge ) {
2422 mCalendar->close(); 2427 mCalendar->close();
2423 mViewManager->setDocumentId( filename ); 2428 mViewManager->setDocumentId( filename );
2424 mDialogManager->setDocumentId( filename ); 2429 mDialogManager->setDocumentId( filename );
2425 mTodoList->setDocumentId( filename ); 2430 mTodoList->setDocumentId( filename );
2426 } 2431 }
2427 2432
2428 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2433 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2429 2434
2430 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2435 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2431 globalFlagBlockAgenda = 2; 2436 globalFlagBlockAgenda = 2;
2432 mCalendar->reInitAlarmSettings(); 2437 mCalendar->reInitAlarmSettings();
2433 setSyncEventsReadOnly(); 2438 setSyncEventsReadOnly();
2434 updateUnmanagedViews(); 2439 updateUnmanagedViews();
2435 updateView(); 2440 updateView();
2436 } 2441 }
2437 return false; 2442 return false;
2438} 2443}
2439void CalendarView::mergeFile( QString fn ) 2444void CalendarView::mergeFile( QString fn )
2440{ 2445{
2441 clearAllViews(); 2446 clearAllViews();
2442 mCalendar->mergeCalendarFile( fn ); 2447 mCalendar->mergeCalendarFile( fn );
2443 mCalendar->reInitAlarmSettings(); 2448 mCalendar->reInitAlarmSettings();
2444 setSyncEventsReadOnly(); 2449 setSyncEventsReadOnly();
2445 updateUnmanagedViews(); 2450 updateUnmanagedViews();
2446 updateView(); 2451 updateView();
2447} 2452}
2448void CalendarView::mergeFileResource( QString fn ,QString resource ) 2453void CalendarView::mergeFileResource( QString fn ,QString resource )
2449{ 2454{
2450 2455
2451 if ( resource == "ALL" ) { 2456 if ( resource == "ALL" ) {
2457 mCalendar->setAllCalendarEnabled( true );
2452 mergeFile( fn ); 2458 mergeFile( fn );
2459 restoreCalendarSettings();
2453 return; 2460 return;
2454 } 2461 }
2455 2462
2456 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2463 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2457 if ( !exclusiveResource ) { 2464 if ( !exclusiveResource ) {
2458 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() ); 2465 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() );
2459 return; 2466 return;
2460 } 2467 }
2461 clearAllViews(); 2468 clearAllViews();
2462 mCalendar->setCalendarRemove( exclusiveResource ); 2469 mCalendar->setCalendarRemove( exclusiveResource );
2463 int def = mCalendar->defaultCalendar(); 2470 int def = mCalendar->defaultCalendar();
2464 mCalendar->setDefaultCalendar(exclusiveResource); 2471 mCalendar->setDefaultCalendar(exclusiveResource);
2465 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) { 2472 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) {
2466 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() ); 2473 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() );
2467 } 2474 }
2468 mCalendar->setDefaultCalendar( def ); 2475 mCalendar->setDefaultCalendar( def );
2469 mCalendar->reInitAlarmSettings(); 2476 mCalendar->reInitAlarmSettings();
2470 setSyncEventsReadOnly(); 2477 setSyncEventsReadOnly();
2471 updateUnmanagedViews(); 2478 updateUnmanagedViews();
2472 updateView(); 2479 updateView();
2473} 2480}
2474void CalendarView::showOpenError() 2481void CalendarView::showOpenError()
2475{ 2482{
2476 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2483 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2477} 2484}
2478void CalendarView::setLoadedFileVersion(QDateTime dt) 2485void CalendarView::setLoadedFileVersion(QDateTime dt)
2479{ 2486{
2480 loadedFileVersion = dt; 2487 loadedFileVersion = dt;
2481} 2488}
2482bool CalendarView::checkFileChanged(QString fn) 2489bool CalendarView::checkFileChanged(QString fn)
2483{ 2490{
2484 QFileInfo finf ( fn ); 2491 QFileInfo finf ( fn );
2485 if ( !finf.exists() ) 2492 if ( !finf.exists() )
2486 return true; 2493 return true;
2487 QDateTime dt = finf.lastModified (); 2494 QDateTime dt = finf.lastModified ();
2488 if ( dt <= loadedFileVersion ) 2495 if ( dt <= loadedFileVersion )
2489 return false; 2496 return false;
2490 return true; 2497 return true;
2491 2498
2492} 2499}
2493void CalendarView::watchSavedFile() 2500void CalendarView::watchSavedFile()
2494{ 2501{
2495 QFileInfo finf ( MainWindow::defaultFileName()); 2502 QFileInfo finf ( MainWindow::defaultFileName());
2496 if ( !finf.exists() ) 2503 if ( !finf.exists() )
2497 return; 2504 return;
2498 QDateTime dt = finf.lastModified (); 2505 QDateTime dt = finf.lastModified ();
2499 if ( dt < loadedFileVersion ) { 2506 if ( dt < loadedFileVersion ) {
2500 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2507 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2501 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2508 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2502 return; 2509 return;
2503 } 2510 }
2504 loadedFileVersion = dt; 2511 loadedFileVersion = dt;
2505} 2512}
2506bool CalendarView::checkAllFileVersions() 2513bool CalendarView::checkAllFileVersions()
2507{ 2514{
2508 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2515 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2509 KopiCalendarFile * cal = calendars.first(); 2516 KopiCalendarFile * cal = calendars.first();
2510 mCalendar->setDefaultCalendar( 1 ); 2517 mCalendar->setDefaultCalendar( 1 );
2511 mCalendar->setDefaultCalendarEnabledOnly(); 2518 mCalendar->setDefaultCalendarEnabledOnly();
2512 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2519 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2513 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2520 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2514 restoreCalendarSettings(); 2521 restoreCalendarSettings();
2515 return false; 2522 return false;
2516 } 2523 }
2517 } 2524 }
2518 cal = calendars.next(); 2525 cal = calendars.next();
2519 QDateTime storeTemp = loadedFileVersion; 2526 QDateTime storeTemp = loadedFileVersion;
2520 while ( cal ) { 2527 while ( cal ) {
2521 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2528 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2522 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2529 mCalendar->setDefaultCalendar( cal->mCalNumber );
2523 mCalendar->setDefaultCalendarEnabledOnly(); 2530 mCalendar->setDefaultCalendarEnabledOnly();
2524 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2531 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2525 if ( !checkFileVersion(cal->mFileName )) { 2532 if ( !checkFileVersion(cal->mFileName )) {
2526 loadedFileVersion = storeTemp; 2533 loadedFileVersion = storeTemp;
2527 restoreCalendarSettings(); 2534 restoreCalendarSettings();
2528 return false; 2535 return false;
2529 } 2536 }
2530 } 2537 }
2531 cal = calendars.next(); 2538 cal = calendars.next();
2532 } 2539 }
2533 loadedFileVersion = storeTemp; 2540 loadedFileVersion = storeTemp;
2534 return true; 2541 return true;
2535} 2542}
2536bool CalendarView::checkFileVersion(QString fn) 2543bool CalendarView::checkFileVersion(QString fn)
2537{ 2544{
2538 QFileInfo finf ( fn ); 2545 QFileInfo finf ( fn );
2539 if ( !finf.exists() ) 2546 if ( !finf.exists() )
2540 return true; 2547 return true;
2541 QDateTime dt = finf.lastModified (); 2548 QDateTime dt = finf.lastModified ();
2542 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2549 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2543 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2550 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2544 if ( dt <= loadedFileVersion ) 2551 if ( dt <= loadedFileVersion )
2545 return true; 2552 return true;
2546 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2553 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2547 i18n("KO/Pi Warning"),i18n("Overwrite"), 2554 i18n("KO/Pi Warning"),i18n("Overwrite"),
2548 i18n("Sync+save")); 2555 i18n("Sync+save"));
2549 2556
2550 if ( km == KMessageBox::Cancel ) 2557 if ( km == KMessageBox::Cancel )
2551 return false; 2558 return false;
2552 if ( km == KMessageBox::Yes ) 2559 if ( km == KMessageBox::Yes )
2553 return true; 2560 return true;
2554 2561
2555 setSyncDevice("deleteaftersync" ); 2562 setSyncDevice("deleteaftersync" );
2556 mSyncManager->mAskForPreferences = true; 2563 mSyncManager->mAskForPreferences = true;
2557 mSyncManager->mSyncAlgoPrefs = 3; 2564 mSyncManager->mSyncAlgoPrefs = 3;
2558 mSyncManager->mWriteBackFile = false; 2565 mSyncManager->mWriteBackFile = false;
2559 mSyncManager->mWriteBackExistingOnly = false; 2566 mSyncManager->mWriteBackExistingOnly = false;
2560 mSyncManager->mShowSyncSummary = false; 2567 mSyncManager->mShowSyncSummary = false;
2561 mMultiResourceSync = false; 2568 mMultiResourceSync = false;
2562 syncCalendar( fn, 3 ); 2569 syncCalendar( fn, 3 );
2563 Event * e = getLastSyncEvent(); 2570 Event * e = getLastSyncEvent();
2564 if ( e ) 2571 if ( e )
2565 mCalendar->deleteEvent( e ); 2572 mCalendar->deleteEvent( e );
2566 return true; 2573 return true;
2567} 2574}
2568bool CalendarView::saveCalendars() 2575bool CalendarView::saveCalendars()
2569{ 2576{
2570 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2577 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2571 KopiCalendarFile * cal = calendars.first(); 2578 KopiCalendarFile * cal = calendars.first();
2572 mCalendar->setDefaultCalendar( 1 ); 2579 mCalendar->setDefaultCalendar( 1 );
2573 mCalendar->setDefaultCalendarEnabledOnly(); 2580 mCalendar->setDefaultCalendarEnabledOnly();
2574 QString saveError; 2581 QString saveError;
2575 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2582 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2576 saveError = cal->mName +"\n"; 2583 saveError = cal->mName +"\n";
2577 cal = calendars.next(); 2584 cal = calendars.next();
2578 while ( cal ) { 2585 while ( cal ) {
2579 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2586 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2580 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2587 mCalendar->setDefaultCalendar( cal->mCalNumber );
2581 mCalendar->setDefaultCalendarEnabledOnly(); 2588 mCalendar->setDefaultCalendarEnabledOnly();
2582 if ( saveCalendar( cal->mFileName ) ) 2589 if ( saveCalendar( cal->mFileName ) )
2583 cal->mLoadDt = QDateTime::currentDateTime(); 2590 cal->mLoadDt = QDateTime::currentDateTime();
2584 else 2591 else
2585 saveError += cal->mName + "\n"; 2592 saveError += cal->mName + "\n";
2586 } 2593 }
2587 cal = calendars.next(); 2594 cal = calendars.next();
2588 } 2595 }
2589 restoreCalendarSettings(); 2596 restoreCalendarSettings();
2590 //saveError = "test error"; 2597 //saveError = "test error";
2591 if ( !saveError.isEmpty() ) { 2598 if ( !saveError.isEmpty() ) {
2592 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2599 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2593 KMessageBox::error(this, saveError, i18n("Error saving data")); 2600 KMessageBox::error(this, saveError, i18n("Error saving data"));
2594 return false; 2601 return false;
2595 } 2602 }
2596 return true; 2603 return true;
2597} 2604}
2598bool CalendarView::saveCalendarResource(QString filename, QString resource) 2605bool CalendarView::saveCalendarResource(QString filename, QString resource)
2599{ 2606{
2600 if ( resource == "ALL" ) 2607 if ( resource == "ALL" ) {
2601 return saveCalendar( filename ); 2608 mCalendar->setAllCalendarEnabled( true );
2609 bool retval = saveCalendar( filename );
2610 restoreCalendarSettings();
2611 return retval;
2612 }
2602 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2613 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2603 if ( !exclusiveResource ) { 2614 if ( !exclusiveResource ) {
2604 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() ); 2615 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() );
2605 return false; 2616 return false;
2606 } 2617 }
2607 mCalendar->setDefaultCalendar( exclusiveResource ); 2618 mCalendar->setDefaultCalendar( exclusiveResource );
2608 mCalendar->setDefaultCalendarEnabledOnly(); 2619 mCalendar->setDefaultCalendarEnabledOnly();
2609 mCalendar->setSyncEventsEnabled(); 2620 mCalendar->setSyncEventsEnabled();
2610 bool res = saveCalendar( filename ); 2621 bool res = saveCalendar( filename );
2611 restoreCalendarSettings(); 2622 restoreCalendarSettings();
2612 return res; 2623 return res;
2613 2624
2614} 2625}
2615bool CalendarView::saveCalendar( QString filename ) 2626bool CalendarView::saveCalendar( QString filename )
2616{ 2627{
2617 2628
2618 // Store back all unsaved data into calendar object 2629 // Store back all unsaved data into calendar object
2619 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2630 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2620 if ( mViewManager->currentView() ) 2631 if ( mViewManager->currentView() )
2621 mViewManager->currentView()->flushView(); 2632 mViewManager->currentView()->flushView();
2622 2633
2623 2634
2624 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2635 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2625 mStorage->setSaveFormat( new ICalFormat() ); 2636 mStorage->setSaveFormat( new ICalFormat() );
2626 mStorage->setFileName( filename ); 2637 mStorage->setFileName( filename );
2627 bool success; 2638 bool success;
2628 success = mStorage->save(); 2639 success = mStorage->save();
2629 if ( !success ) { 2640 if ( !success ) {
2630 return false; 2641 return false;
2631 } 2642 }
2632 if ( filename == MainWindow::defaultFileName() ) { 2643 if ( filename == MainWindow::defaultFileName() ) {
2633 setLoadedFileVersion( lfv ); 2644 setLoadedFileVersion( lfv );
2634 watchSavedFile(); 2645 watchSavedFile();
2635 } 2646 }
2636 return true; 2647 return true;
2637} 2648}
2638 2649
2639void CalendarView::closeCalendar() 2650void CalendarView::closeCalendar()
2640{ 2651{
2641 2652
2642 // child windows no longer valid 2653 // child windows no longer valid
2643 clearAllViews(); 2654 clearAllViews();
2644 emit closingDown(); 2655 emit closingDown();
2645 2656
2646 mCalendar->close(); 2657 mCalendar->close();
2647 setModified(false); 2658 setModified(false);
2648 updateView(); 2659 updateView();
2649} 2660}
2650 2661
2651void CalendarView::archiveCalendar() 2662void CalendarView::archiveCalendar()
2652{ 2663{
2653 mDialogManager->showArchiveDialog(); 2664 mDialogManager->showArchiveDialog();
2654} 2665}
2655 2666
2656 2667
2657void CalendarView::readSettings() 2668void CalendarView::readSettings()
2658{ 2669{
2659 2670
2660 2671
2661 // mViewManager->showAgendaView(); 2672 // mViewManager->showAgendaView();
2662 QString str; 2673 QString str;
2663 //qDebug("CalendarView::readSettings() "); 2674 //qDebug("CalendarView::readSettings() ");
2664 // read settings from the KConfig, supplying reasonable 2675 // read settings from the KConfig, supplying reasonable
2665 // defaults where none are to be found 2676 // defaults where none are to be found
2666 KConfig *config = KOGlobals::config(); 2677 KConfig *config = KOGlobals::config();
2667#ifndef KORG_NOSPLITTER 2678#ifndef KORG_NOSPLITTER
2668 config->setGroup("KOrganizer Geometry"); 2679 config->setGroup("KOrganizer Geometry");
2669 2680
2670 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2681 QValueList<int> sizes = config->readIntListEntry("Separator1");
2671 if (sizes.count() != 2) { 2682 if (sizes.count() != 2) {
2672 sizes << mDateNavigator->minimumSizeHint().width(); 2683 sizes << mDateNavigator->minimumSizeHint().width();
2673 sizes << 300; 2684 sizes << 300;
2674 } 2685 }
2675 mPanner->setSizes(sizes); 2686 mPanner->setSizes(sizes);
2676 2687
2677 sizes = config->readIntListEntry("Separator2"); 2688 sizes = config->readIntListEntry("Separator2");
2678 if ( ( mResourceView && sizes.count() == 4 ) || 2689 if ( ( mResourceView && sizes.count() == 4 ) ||
2679 ( !mResourceView && sizes.count() == 3 ) ) { 2690 ( !mResourceView && sizes.count() == 3 ) ) {
2680 mLeftSplitter->setSizes(sizes); 2691 mLeftSplitter->setSizes(sizes);
2681 } 2692 }
2682#endif 2693#endif
2683 globalFlagBlockAgenda = 1; 2694 globalFlagBlockAgenda = 1;
2684 mViewManager->showAgendaView(); 2695 mViewManager->showAgendaView();
2685 //mViewManager->readSettings( config ); 2696 //mViewManager->readSettings( config );
2686 mTodoList->restoreLayout(config,QString("Todo Layout")); 2697 mTodoList->restoreLayout(config,QString("Todo Layout"));
2687 readFilterSettings(config); 2698 readFilterSettings(config);
2688 2699
2689#ifdef DESKTOP_VERSION 2700#ifdef DESKTOP_VERSION
2690 config->setGroup("WidgetLayout"); 2701 config->setGroup("WidgetLayout");
2691 QStringList list; 2702 QStringList list;
2692 list = config->readListEntry("MainLayout"); 2703 list = config->readListEntry("MainLayout");
2693 int x,y,w,h; 2704 int x,y,w,h;
2694 if ( ! list.isEmpty() ) { 2705 if ( ! list.isEmpty() ) {
2695 x = list[0].toInt(); 2706 x = list[0].toInt();
2696 y = list[1].toInt(); 2707 y = list[1].toInt();
2697 w = list[2].toInt(); 2708 w = list[2].toInt();
2698 h = list[3].toInt(); 2709 h = list[3].toInt();
2699 KApplication::testCoords( &x,&y,&w,&h ); 2710 KApplication::testCoords( &x,&y,&w,&h );
2700 topLevelWidget()->setGeometry(x,y,w,h); 2711 topLevelWidget()->setGeometry(x,y,w,h);
2701 2712
2702 } else { 2713 } else {
2703 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2714 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2704 } 2715 }
2705 list = config->readListEntry("EditEventLayout"); 2716 list = config->readListEntry("EditEventLayout");
2706 if ( ! list.isEmpty() ) { 2717 if ( ! list.isEmpty() ) {
2707 x = list[0].toInt(); 2718 x = list[0].toInt();
2708 y = list[1].toInt(); 2719 y = list[1].toInt();
2709 w = list[2].toInt(); 2720 w = list[2].toInt();
2710 h = list[3].toInt(); 2721 h = list[3].toInt();
2711 KApplication::testCoords( &x,&y,&w,&h ); 2722 KApplication::testCoords( &x,&y,&w,&h );
2712 mEventEditor->setGeometry(x,y,w,h); 2723 mEventEditor->setGeometry(x,y,w,h);
2713 2724
2714 } 2725 }
2715 list = config->readListEntry("EditTodoLayout"); 2726 list = config->readListEntry("EditTodoLayout");
2716 if ( ! list.isEmpty() ) { 2727 if ( ! list.isEmpty() ) {
2717 x = list[0].toInt(); 2728 x = list[0].toInt();
2718 y = list[1].toInt(); 2729 y = list[1].toInt();
2719 w = list[2].toInt(); 2730 w = list[2].toInt();
2720 h = list[3].toInt(); 2731 h = list[3].toInt();
2721 KApplication::testCoords( &x,&y,&w,&h ); 2732 KApplication::testCoords( &x,&y,&w,&h );
2722 mTodoEditor->setGeometry(x,y,w,h); 2733 mTodoEditor->setGeometry(x,y,w,h);
2723 2734
2724 } 2735 }
2725 list = config->readListEntry("ViewerLayout"); 2736 list = config->readListEntry("ViewerLayout");
2726 if ( ! list.isEmpty() ) { 2737 if ( ! list.isEmpty() ) {
2727 x = list[0].toInt(); 2738 x = list[0].toInt();
2728 y = list[1].toInt(); 2739 y = list[1].toInt();
2729 w = list[2].toInt(); 2740 w = list[2].toInt();
2730 h = list[3].toInt(); 2741 h = list[3].toInt();
2731 KApplication::testCoords( &x,&y,&w,&h ); 2742 KApplication::testCoords( &x,&y,&w,&h );
2732 getEventViewerDialog()->setGeometry(x,y,w,h); 2743 getEventViewerDialog()->setGeometry(x,y,w,h);
2733 } 2744 }
2734#endif 2745#endif
2735 config->setGroup( "Views" ); 2746 config->setGroup( "Views" );
2736 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2747 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2737 2748
2738 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2749 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2739 2750
2740 int resetval = 0; 2751 int resetval = 0;
2741 int maxVal = 0; 2752 int maxVal = 0;
2742 if (sizes.count() != 3) { 2753 if (sizes.count() != 3) {
2743 if ( KOPrefs::instance()->mVerticalScreen ) { 2754 if ( KOPrefs::instance()->mVerticalScreen ) {
2744 resetval = mDateNavigator->sizeHint().width()+2; 2755 resetval = mDateNavigator->sizeHint().width()+2;
2745 } else { 2756 } else {
2746 resetval = mDateNavigator->sizeHint().height()+2; 2757 resetval = mDateNavigator->sizeHint().height()+2;
2747 } 2758 }
2748 } 2759 }
2749 if ( resetval ) { 2760 if ( resetval ) {
2750 sizes.clear(); 2761 sizes.clear();
2751 if ( KOPrefs::instance()->mVerticalScreen ) { 2762 if ( KOPrefs::instance()->mVerticalScreen ) {
2752 maxVal = QApplication::desktop()->width() -10; 2763 maxVal = QApplication::desktop()->width() -10;
2753 } else { 2764 } else {
2754 maxVal = QApplication::desktop()->height()-10; 2765 maxVal = QApplication::desktop()->height()-10;
2755 } 2766 }
2756 sizes << resetval; 2767 sizes << resetval;
2757 if ( maxVal < resetval + resetval) 2768 if ( maxVal < resetval + resetval)
2758 resetval = maxVal - resetval; 2769 resetval = maxVal - resetval;
2759 sizes << resetval; 2770 sizes << resetval;
2760 sizes << 100; 2771 sizes << 100;
2761 } 2772 }
2762 mLeftFrame->setSizes(sizes); 2773 mLeftFrame->setSizes(sizes);
2763 sizes = config->readIntListEntry("Main Splitter Frame"); 2774 sizes = config->readIntListEntry("Main Splitter Frame");
2764 resetval = 0; 2775 resetval = 0;
2765 maxVal = 0; 2776 maxVal = 0;
2766 if (sizes.count() != 2) { 2777 if (sizes.count() != 2) {
2767 if ( !KOPrefs::instance()->mVerticalScreen ) { 2778 if ( !KOPrefs::instance()->mVerticalScreen ) {
2768 resetval = mDateNavigator->sizeHint().width()+2; 2779 resetval = mDateNavigator->sizeHint().width()+2;
2769 } else { 2780 } else {
2770 resetval = mDateNavigator->sizeHint().height()+2; 2781 resetval = mDateNavigator->sizeHint().height()+2;
2771 } 2782 }
2772 } 2783 }
2773 if ( resetval ) { 2784 if ( resetval ) {
2774 sizes.clear(); 2785 sizes.clear();
2775 if ( !KOPrefs::instance()->mVerticalScreen ) { 2786 if ( !KOPrefs::instance()->mVerticalScreen ) {
2776 maxVal = QApplication::desktop()->width() -10; 2787 maxVal = QApplication::desktop()->width() -10;
2777 } else { 2788 } else {
2778 maxVal = QApplication::desktop()->height()-10; 2789 maxVal = QApplication::desktop()->height()-10;
2779 } 2790 }
2780 sizes << resetval; 2791 sizes << resetval;
2781 if ( maxVal < resetval + resetval) 2792 if ( maxVal < resetval + resetval)
2782 resetval = maxVal - resetval; 2793 resetval = maxVal - resetval;
2783 sizes << resetval; 2794 sizes << resetval;
2784 } 2795 }
2785 mMainFrame->setSizes(sizes); 2796 mMainFrame->setSizes(sizes);
2786 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 2797 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
2787 else if ( dateCount == 7 ) mNavigator->selectWeek(); 2798 else if ( dateCount == 7 ) mNavigator->selectWeek();
2788 else mNavigator->selectDates( dateCount ); 2799 else mNavigator->selectDates( dateCount );
2789 // mViewManager->readSettings( config ); 2800 // mViewManager->readSettings( config );
2790 updateConfig(); 2801 updateConfig();
2791 globalFlagBlockAgenda = 2; 2802 globalFlagBlockAgenda = 2;
2792 mViewManager->readSettings( config ); 2803 mViewManager->readSettings( config );
2793 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 2804 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
diff --git a/libkcal/dndfactory_dummy.h b/libkcal/dndfactory_dummy.h
index 6b73f34..44cc114 100644
--- a/libkcal/dndfactory_dummy.h
+++ b/libkcal/dndfactory_dummy.h
@@ -1,62 +1,65 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 1998 Preston Brown 3 Copyright (c) 1998 Preston Brown
4 Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
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// $Id$ 22// $Id$
23 23
24#ifndef KCAL_DNDFACTORY_H 24#ifndef KCAL_DNDFACTORY_H
25#define KCAL_DNDFACTORY_H 25#define KCAL_DNDFACTORY_H
26 26
27#include "vcalformat.h" 27#include "vcalformat.h"
28 28
29class QDropEvent; 29class QDropEvent;
30 30
31namespace KCal { 31namespace KCal {
32 32
33/** 33/**
34 This class implements functions to create Drag and Drop objects used for 34 This class implements functions to create Drag and Drop objects used for
35 Drag-and-Drop and Copy-and-Paste. 35 Drag-and-Drop and Copy-and-Paste.
36 36
37 @short vCalendar Drag-and-Drop object factory. 37 @short vCalendar Drag-and-Drop object factory.
38*/ 38*/
39class DndFactory { 39class DndFactory {
40 public: 40 public:
41 DndFactory( Calendar * ) {} 41 DndFactory( Calendar * ) {}
42 42
43 /** create an object to be used with the Xdnd Drag And Drop protocol. */ 43 /** create an object to be used with the Xdnd Drag And Drop protocol. */
44 ICalDrag *createDrag(Event *, QWidget *) { return 0; } 44 ICalDrag *createDrag(Event *, QWidget *) { return 0; }
45 /** create an object to be used with the Xdnd Drag And Drop protocol. */ 45 /** create an object to be used with the Xdnd Drag And Drop protocol. */
46 ICalDrag *createDragTodo(Todo *, QWidget *) { return 0; } 46 ICalDrag *createDragTodo(Todo *, QWidget *) { return 0; }
47 /** Create Todo object from drop event */ 47 /** Create Todo object from drop event */
48 Todo *createDropTodo(QDropEvent *) { return 0; } 48 Todo *createDropTodo(QDropEvent *) { return 0; }
49 /** Create Event object from drop event */ 49 /** Create Event object from drop event */
50 Event *createDrop(QDropEvent *) { return 0; } 50 Event *createDrop(QDropEvent *) { return 0; }
51 51
52 /** cut event to clipboard */ 52 /** cut event to clipboard */
53 void cutEvent(Event *) {} 53 void cutEvent(Event *) {}
54 /** cut, copy, and paste operations follow. */ 54 /** cut, copy, and paste operations follow. */
55 bool copyEvent(Event *) { return false; } 55 bool copyEvent(Event *) { return false; }
56 /** pastes the event and returns a pointer to the new event pasted. */ 56 /** pastes the event and returns a pointer to the new event pasted. */
57 Event *pasteEvent(const QDate &, const QTime *newTime = 0) { return 0; } 57 Event *pasteEvent(const QDate &, const QTime *newTime = 0) {
58 Q_UNUSED( newTime );
59 return 0;
60 }
58}; 61};
59 62
60} 63}
61 64
62#endif 65#endif
diff --git a/libkdepim/categoryeditdialog.h b/libkdepim/categoryeditdialog.h
index 3e8ab45..9bb3201 100644
--- a/libkdepim/categoryeditdialog.h
+++ b/libkdepim/categoryeditdialog.h
@@ -1,86 +1,86 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 Copyright (c) 2000, 2001, 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000, 2001, 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KPIM_CATEGORYEDITDIALOG_H 23#ifndef KPIM_CATEGORYEDITDIALOG_H
24#define KPIM_CATEGORYEDITDIALOG_H 24#define KPIM_CATEGORYEDITDIALOG_H
25 25
26#include <categoryeditdialog_base.h> 26#include <categoryeditdialog_base.h>
27#include <qlistview.h> 27#include <qlistview.h>
28 28
29class KPimPrefs; 29class KPimPrefs;
30 30
31namespace KPIM { 31namespace KPIM {
32 32
33 class CategorySelectItem :public QObject, public QCheckListItem 33 class CategorySelectItem :public QObject, public QCheckListItem
34{ 34{
35 35
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 38
39 CategorySelectItem(QListView * parent, const QString & text, Type tt) : 39 CategorySelectItem(QListView * parent, const QString & text, Type tt) : QObject( parent ),
40 QCheckListItem (parent, text, tt ) , QObject( parent ) 40 QCheckListItem (parent, text, tt )
41 {;} 41 {;}
42 42
43 signals: 43 signals:
44 void stateChanged( QListViewItem*); 44 void stateChanged( QListViewItem*);
45 45
46 protected: 46 protected:
47 47
48 virtual void stateChange(bool b) 48 virtual void stateChange(bool b)
49 { 49 {
50 QCheckListItem::stateChange(b); 50 QCheckListItem::stateChange(b);
51 emit stateChanged( this ); 51 emit stateChanged( this );
52 } 52 }
53}; 53};
54 54
55 55
56class CategoryEditDialog : public CategoryEditDialog_base 56class CategoryEditDialog : public CategoryEditDialog_base
57{ 57{
58 Q_OBJECT 58 Q_OBJECT
59 public: 59 public:
60 CategoryEditDialog( KPimPrefs *prefs, QWidget* parent = 0, 60 CategoryEditDialog( KPimPrefs *prefs, QWidget* parent = 0,
61 const char* name = 0, 61 const char* name = 0,
62 bool modal = FALSE, WFlags fl = 0 ); 62 bool modal = FALSE, WFlags fl = 0 );
63 ~CategoryEditDialog(); 63 ~CategoryEditDialog();
64 64
65 public slots: 65 public slots:
66 void add(); 66 void add();
67 void remove(); 67 void remove();
68 void modify(); 68 void modify();
69 void accept(); 69 void accept();
70 70
71 void slotOk(); 71 void slotOk();
72 void slotApply(); 72 void slotApply();
73 73
74 signals: 74 signals:
75 void categoryConfigChanged(); 75 void categoryConfigChanged();
76 76
77 private slots: 77 private slots:
78 void editItem(QListViewItem *item); 78 void editItem(QListViewItem *item);
79 void slotTextChanged(const QString &text); 79 void slotTextChanged(const QString &text);
80 80
81 KPimPrefs *mPrefs; 81 KPimPrefs *mPrefs;
82}; 82};
83 83
84} 84}
85 85
86#endif 86#endif
diff --git a/libkdepim/categoryselectdialog.cpp b/libkdepim/categoryselectdialog.cpp
index a4e0024..2a9b43e 100644
--- a/libkdepim/categoryselectdialog.cpp
+++ b/libkdepim/categoryselectdialog.cpp
@@ -1,236 +1,237 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 Copyright (c) 2000, 2001, 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000, 2001, 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qlistview.h> 24#include <qlistview.h>
25#include <qpushbutton.h> 25#include <qpushbutton.h>
26#include <qheader.h> 26#include <qheader.h>
27#include <qapp.h> 27#include <qapp.h>
28#include <qmessagebox.h> 28#include <qmessagebox.h>
29#include <kmessagebox.h> 29#include <kmessagebox.h>
30 30
31 31
32#include "categoryeditdialog.h" 32#include "categoryeditdialog.h"
33#include "categoryselectdialog.h" 33#include "categoryselectdialog.h"
34 34
35#include "kpimprefs.h" 35#include "kpimprefs.h"
36 36
37using namespace KPIM; 37using namespace KPIM;
38 38
39CategorySelectDialog::CategorySelectDialog( KPimPrefs *prefs, QWidget* parent, 39CategorySelectDialog::CategorySelectDialog( KPimPrefs *prefs, QWidget* parent,
40 const char* name, 40 const char* name,
41 bool modal, WFlags fl ) 41 bool modal, WFlags fl )
42 : CategorySelectDialog_base( parent, name, true, fl ), 42 : CategorySelectDialog_base( parent, name, true, fl ),
43 mPrefs( prefs ) 43 mPrefs( prefs )
44{ 44{
45 Q_UNUSED( modal );
45 mColorItem = 0; 46 mColorItem = 0;
46 mColorEnabled = false; 47 mColorEnabled = false;
47 mCategories->header()->hide(); 48 mCategories->header()->hide();
48 49
49 setCategories(); 50 setCategories();
50 51
51 connect(mButtonEdit,SIGNAL(clicked()),this, SLOT(editCategoriesDialog())); 52 connect(mButtonEdit,SIGNAL(clicked()),this, SLOT(editCategoriesDialog()));
52 if ( QApplication::desktop()->width() > 460 ) 53 if ( QApplication::desktop()->width() > 460 )
53 resize( 300, 360 ); 54 resize( 300, 360 );
54 else 55 else
55 showMaximized(); 56 showMaximized();
56 connect( mSetColorCat, SIGNAL( clicked() ), this, SLOT( setColorCat() ) ); 57 connect( mSetColorCat, SIGNAL( clicked() ), this, SLOT( setColorCat() ) );
57 // connect( mCategories, SIGNAL( clicked(QListViewItem *) ), this, SLOT( clicked(QListViewItem *) ) ); 58 // connect( mCategories, SIGNAL( clicked(QListViewItem *) ), this, SLOT( clicked(QListViewItem *) ) );
58#ifndef DESKTOP_VERSION 59#ifndef DESKTOP_VERSION
59 mButtonOk->hide(); 60 mButtonOk->hide();
60 mButtonCancel->hide(); 61 mButtonCancel->hide();
61#endif 62#endif
62} 63}
63void CategorySelectDialog::editCategoriesDialog() 64void CategorySelectDialog::editCategoriesDialog()
64{ 65{
65 KPIM::CategoryEditDialog* ced = new KPIM::CategoryEditDialog(mPrefs,this ); 66 KPIM::CategoryEditDialog* ced = new KPIM::CategoryEditDialog(mPrefs,this );
66 67
67 ced->exec(); 68 ced->exec();
68 delete ced; 69 delete ced;
69 slotApply(); 70 slotApply();
70 QStringList temp = mCategoryList; 71 QStringList temp = mCategoryList;
71 setCategories(); 72 setCategories();
72 setSelected( temp ); 73 setSelected( temp );
73} 74}
74void CategorySelectDialog::setCategories() 75void CategorySelectDialog::setCategories()
75{ 76{
76 mColorItem = 0; 77 mColorItem = 0;
77 mCategories->clear(); 78 mCategories->clear();
78 mCategoryList.clear(); 79 mCategoryList.clear();
79 80
80 QStringList::Iterator it; 81 QStringList::Iterator it;
81 for (it = mPrefs->mCustomCategories.begin(); 82 for (it = mPrefs->mCustomCategories.begin();
82 it != mPrefs->mCustomCategories.end(); ++it ) { 83 it != mPrefs->mCustomCategories.end(); ++it ) {
83 CategorySelectItem * item = new CategorySelectItem(mCategories,*it,QCheckListItem::CheckBox); 84 CategorySelectItem * item = new CategorySelectItem(mCategories,*it,QCheckListItem::CheckBox);
84 QObject::connect( item, SIGNAL( stateChanged(QListViewItem *) ), this, SLOT( clicked(QListViewItem *) ) ); 85 QObject::connect( item, SIGNAL( stateChanged(QListViewItem *) ), this, SLOT( clicked(QListViewItem *) ) );
85 86
86 } 87 }
87} 88}
88 89
89CategorySelectDialog::~CategorySelectDialog() 90CategorySelectDialog::~CategorySelectDialog()
90{ 91{
91} 92}
92 93
93void CategorySelectDialog::setSelected(const QStringList &selList) 94void CategorySelectDialog::setSelected(const QStringList &selList)
94{ 95{
95 clear(); 96 clear();
96 97
97 QStringList::ConstIterator it; 98 QStringList::ConstIterator it;
98 QStringList notFound; 99 QStringList notFound;
99 bool found = false; 100 bool found = false;
100 for (it=selList.begin();it!=selList.end();++it) { 101 for (it=selList.begin();it!=selList.end();++it) {
101 //qDebug(" CategorySelectDialog::setSelected("); 102 //qDebug(" CategorySelectDialog::setSelected(");
102 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild(); 103 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild();
103 while (item) { 104 while (item) {
104 if (item->text() == *it) { 105 if (item->text() == *it) {
105 item->setOn(true); 106 item->setOn(true);
106 if ( ! found ) 107 if ( ! found )
107 setColorItem( item ); 108 setColorItem( item );
108 found = true; 109 found = true;
109 break; 110 break;
110 } 111 }
111 item = (QCheckListItem *)item->nextSibling(); 112 item = (QCheckListItem *)item->nextSibling();
112 } 113 }
113// if ( ! found ) { 114// if ( ! found ) {
114 115
115//emit updateCategoriesGlobal(); 116//emit updateCategoriesGlobal();
116// QMessageBox::information( this, "KO/E: Information!", 117// QMessageBox::information( this, "KO/E: Information!",
117// "Categories found, which were not\n" 118// "Categories found, which were not\n"
118// "in list of categories!\n" 119// "in list of categories!\n"
119// "message", 120// "message",
120// "OK", "", 0, 121// "OK", "", 0,
121// 0, 1 ); 122// 0, 1 );
122// setSelected(selList); 123// setSelected(selList);
123// return; 124// return;
124// } 125// }
125 } 126 }
126} 127}
127 128
128QStringList CategorySelectDialog::selectedCategories() const 129QStringList CategorySelectDialog::selectedCategories() const
129{ 130{
130 return mCategoryList; 131 return mCategoryList;
131} 132}
132void CategorySelectDialog::setColorEnabled() 133void CategorySelectDialog::setColorEnabled()
133{ 134{
134 mColorEnabled = true; 135 mColorEnabled = true;
135 mSetColorCat->show(); 136 mSetColorCat->show();
136} 137}
137void CategorySelectDialog::setColorCat() 138void CategorySelectDialog::setColorCat()
138{ 139{
139 QCheckListItem * newColorItem = (QCheckListItem * )mCategories->currentItem (); 140 QCheckListItem * newColorItem = (QCheckListItem * )mCategories->currentItem ();
140 if ( !newColorItem ) { 141 if ( !newColorItem ) {
141 KMessageBox::error(this,i18n("There is no current item.")); 142 KMessageBox::error(this,i18n("There is no current item."));
142 return; 143 return;
143 } 144 }
144 if ( !newColorItem->isOn() ) 145 if ( !newColorItem->isOn() )
145 newColorItem->setOn( true ); 146 newColorItem->setOn( true );
146 setColorItem( newColorItem ); 147 setColorItem( newColorItem );
147 148
148} 149}
149void CategorySelectDialog::clicked ( QListViewItem * it ) 150void CategorySelectDialog::clicked ( QListViewItem * it )
150{ 151{
151 if ( ! it ) 152 if ( ! it )
152 return; 153 return;
153 QCheckListItem *i = (QCheckListItem *) it; 154 QCheckListItem *i = (QCheckListItem *) it;
154 if ( !i->isOn() && i==mColorItem) { 155 if ( !i->isOn() && i==mColorItem) {
155 setColorItem( 0); 156 setColorItem( 0);
156 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild(); 157 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild();
157 while (item) { 158 while (item) {
158 if (item->isOn()) { 159 if (item->isOn()) {
159 setColorItem( item ); 160 setColorItem( item );
160 break; 161 break;
161 } 162 }
162 item = (QCheckListItem *)item->nextSibling(); 163 item = (QCheckListItem *)item->nextSibling();
163 } 164 }
164 } else if ( i->isOn() && !mColorItem) { 165 } else if ( i->isOn() && !mColorItem) {
165 setColorItem( i); 166 setColorItem( i);
166 } 167 }
167} 168}
168void CategorySelectDialog::setColorItem( QCheckListItem * newColorItem ) 169void CategorySelectDialog::setColorItem( QCheckListItem * newColorItem )
169{ 170{
170 if ( !mColorEnabled ) 171 if ( !mColorEnabled )
171 return; 172 return;
172 if ( mColorItem == newColorItem) 173 if ( mColorItem == newColorItem)
173 return; 174 return;
174 if ( mColorItem ) { 175 if ( mColorItem ) {
175 mColorItem->setPixmap ( 0, QPixmap() ); 176 mColorItem->setPixmap ( 0, QPixmap() );
176 mColorItem = 0; 177 mColorItem = 0;
177 } 178 }
178 if ( newColorItem ) { 179 if ( newColorItem ) {
179 QPixmap pix (newColorItem->height()/2, newColorItem->height()/2 ); 180 QPixmap pix (newColorItem->height()/2, newColorItem->height()/2 );
180 pix.fill(Qt::red ); 181 pix.fill(Qt::red );
181 newColorItem->setPixmap ( 0, pix ); 182 newColorItem->setPixmap ( 0, pix );
182 mColorItem = newColorItem; 183 mColorItem = newColorItem;
183 } 184 }
184} 185}
185void CategorySelectDialog::slotApply() 186void CategorySelectDialog::slotApply()
186{ 187{
187 QStringList categories; 188 QStringList categories;
188 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild(); 189 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild();
189 QString colcat; 190 QString colcat;
190 while (item) { 191 while (item) {
191 if (item->isOn()) { 192 if (item->isOn()) {
192 if ( item == mColorItem) 193 if ( item == mColorItem)
193 colcat = item->text(); 194 colcat = item->text();
194 else 195 else
195 categories.append(item->text()); 196 categories.append(item->text());
196 } 197 }
197 item = (QCheckListItem *)item->nextSibling(); 198 item = (QCheckListItem *)item->nextSibling();
198 } 199 }
199 categories.sort(); 200 categories.sort();
200 if ( ! colcat.isEmpty() ) 201 if ( ! colcat.isEmpty() )
201 categories.prepend( colcat ); 202 categories.prepend( colcat );
202 // QString categoriesStr = categories.join(","); 203 // QString categoriesStr = categories.join(",");
203 204
204 mCategoryList = categories; 205 mCategoryList = categories;
205 206
206} 207}
207void CategorySelectDialog::accept() 208void CategorySelectDialog::accept()
208{ 209{
209 slotOk(); 210 slotOk();
210} 211}
211 212
212void CategorySelectDialog::slotOk() 213void CategorySelectDialog::slotOk()
213{ 214{
214 slotApply(); 215 slotApply();
215 emit categoriesSelected(mCategoryList); 216 emit categoriesSelected(mCategoryList);
216 emit categoriesSelected(mCategoryList.join(",")); 217 emit categoriesSelected(mCategoryList.join(","));
217 QDialog::accept(); 218 QDialog::accept();
218} 219}
219 220
220void CategorySelectDialog::clear() 221void CategorySelectDialog::clear()
221{ 222{
222 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild(); 223 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild();
223 while (item) { 224 while (item) {
224 item->setOn(false); 225 item->setOn(false);
225 item = (QCheckListItem *)item->nextSibling(); 226 item = (QCheckListItem *)item->nextSibling();
226 } 227 }
227} 228}
228 229
229void CategorySelectDialog::updateCategoryConfig() 230void CategorySelectDialog::updateCategoryConfig()
230{ 231{
231 QStringList selected; 232 QStringList selected;
232 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild(); 233 QCheckListItem *item = (QCheckListItem *)mCategories->firstChild();
233 while (item) { 234 while (item) {
234 if (item->isOn()) { 235 if (item->isOn()) {
235 selected.append(item->text()); 236 selected.append(item->text());
236 } 237 }
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 0109c02..28c48fe 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -564,781 +564,780 @@ void KSyncManager::multiSync( bool askforPrefs )
564 if ( num ) 564 if ( num )
565 emit save(); 565 emit save();
566 if ( num ) 566 if ( num )
567 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 567 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
568 else 568 else
569 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 569 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
570 return; 570 return;
571} 571}
572 572
573int KSyncManager::ringSync() 573int KSyncManager::ringSync()
574{ 574{
575 emit multiResourceSyncStart( false ); 575 emit multiResourceSyncStart( false );
576 int syncedProfiles = 0; 576 int syncedProfiles = 0;
577 unsigned int i; 577 unsigned int i;
578 QTime timer; 578 QTime timer;
579 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 579 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
580 QStringList syncProfileNames = mSyncProfileNames; 580 QStringList syncProfileNames = mSyncProfileNames;
581 KSyncProfile* temp = new KSyncProfile (); 581 KSyncProfile* temp = new KSyncProfile ();
582 mAskForPreferences = false; 582 mAskForPreferences = false;
583 mCurrentResourceLocal = ""; 583 mCurrentResourceLocal = "";
584 for ( i = 0; i < syncProfileNames.count(); ++i ) { 584 for ( i = 0; i < syncProfileNames.count(); ++i ) {
585 mCurrentSyncProfile = i; 585 mCurrentSyncProfile = i;
586 temp->setName(syncProfileNames[mCurrentSyncProfile]); 586 temp->setName(syncProfileNames[mCurrentSyncProfile]);
587 temp->readConfig(&config); 587 temp->readConfig(&config);
588 588
589 bool includeInRingSync = false; 589 bool includeInRingSync = false;
590 switch(mTargetApp) 590 switch(mTargetApp)
591 { 591 {
592 case (KAPI): 592 case (KAPI):
593 includeInRingSync = temp->getIncludeInRingSyncAB(); 593 includeInRingSync = temp->getIncludeInRingSyncAB();
594 break; 594 break;
595 case (KOPI): 595 case (KOPI):
596 includeInRingSync = temp->getIncludeInRingSync(); 596 includeInRingSync = temp->getIncludeInRingSync();
597 break; 597 break;
598 case (PWMPI): 598 case (PWMPI):
599 includeInRingSync = temp->getIncludeInRingSyncPWM(); 599 includeInRingSync = temp->getIncludeInRingSyncPWM();
600 break; 600 break;
601 default: 601 default:
602 qDebug("KSM::ringSync: invalid apptype selected"); 602 qDebug("KSM::ringSync: invalid apptype selected");
603 break; 603 break;
604 604
605 } 605 }
606 606
607 607
608 if ( includeInRingSync && ( i < 1 || i > 2 )) { 608 if ( includeInRingSync && ( i < 1 || i > 2 )) {
609 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 609 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
610 ++syncedProfiles; 610 ++syncedProfiles;
611 mSyncWithDesktop = false; 611 mSyncWithDesktop = false;
612 // mAskForPreferences = temp->getAskForPreferences(); 612 // mAskForPreferences = temp->getAskForPreferences();
613 mWriteBackFile = temp->getWriteBackFile(); 613 mWriteBackFile = temp->getWriteBackFile();
614 mWriteBackExistingOnly = temp->getWriteBackExisting(); 614 mWriteBackExistingOnly = temp->getWriteBackExisting();
615 mIsKapiFile = temp->getIsKapiFile(); 615 mIsKapiFile = temp->getIsKapiFile();
616 mWriteBackInFuture = 0; 616 mWriteBackInFuture = 0;
617 if ( temp->getWriteBackFuture() ) { 617 if ( temp->getWriteBackFuture() ) {
618 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 618 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
619 mWriteBackInPast = temp->getWriteBackPastWeeks( ); 619 mWriteBackInPast = temp->getWriteBackPastWeeks( );
620 } 620 }
621 mFilterInCal = temp->getFilterInCal(); 621 mFilterInCal = temp->getFilterInCal();
622 mFilterOutCal = temp->getFilterOutCal(); 622 mFilterOutCal = temp->getFilterOutCal();
623 mFilterInAB = temp->getFilterInAB(); 623 mFilterInAB = temp->getFilterInAB();
624 mFilterOutAB = temp->getFilterOutAB(); 624 mFilterOutAB = temp->getFilterOutAB();
625 mShowSyncSummary = false; 625 mShowSyncSummary = false;
626 mCurrentSyncDevice = syncProfileNames[i] ; 626 mCurrentSyncDevice = syncProfileNames[i] ;
627 mCurrentSyncName = mLocalMachineName; 627 mCurrentSyncName = mLocalMachineName;
628 if ( i == 0 ) { 628 if ( i == 0 ) {
629 mIsKapiFile = false; 629 mIsKapiFile = false;
630#ifdef DESKTOP_VERSION 630#ifdef DESKTOP_VERSION
631 syncKDE(); 631 syncKDE();
632#else 632#else
633 syncSharp(); 633 syncSharp();
634#endif 634#endif
635 } else { 635 } else {
636 if ( temp->getIsLocalFileSync() ) { 636 if ( temp->getIsLocalFileSync() ) {
637 switch(mTargetApp) 637 switch(mTargetApp)
638 { 638 {
639 case (KAPI): 639 case (KAPI):
640 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 640 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
641 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 641 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
642 break; 642 break;
643 case (KOPI): 643 case (KOPI):
644 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 644 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
645 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 645 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
646 break; 646 break;
647 case (PWMPI): 647 case (PWMPI):
648 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 648 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
649 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 649 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
650 break; 650 break;
651 default: 651 default:
652 qDebug("KSM: invalid apptype selected"); 652 qDebug("KSM: invalid apptype selected");
653 break; 653 break;
654 } 654 }
655 } else { 655 } else {
656 if ( temp->getIsPhoneSync() ) { 656 if ( temp->getIsPhoneSync() ) {
657 mPhoneDevice = temp->getPhoneDevice( ) ; 657 mPhoneDevice = temp->getPhoneDevice( ) ;
658 mPhoneConnection = temp->getPhoneConnection( ); 658 mPhoneConnection = temp->getPhoneConnection( );
659 mPhoneModel = temp->getPhoneModel( ); 659 mPhoneModel = temp->getPhoneModel( );
660 syncPhone(); 660 syncPhone();
661 } else if ( temp->getIsPiSync() || temp->getIsPiSyncSpec()) { 661 } else if ( temp->getIsPiSync() || temp->getIsPiSyncSpec()) {
662 mSpecificResources.clear(); 662 mSpecificResources.clear();
663 if ( mTargetApp == KAPI ) { 663 if ( mTargetApp == KAPI ) {
664 mPassWordPiSync = temp->getRemotePwAB(); 664 mPassWordPiSync = temp->getRemotePwAB();
665 mActiveSyncPort = temp->getRemotePortAB(); 665 mActiveSyncPort = temp->getRemotePortAB();
666 mActiveSyncIP = temp->getRemoteIPAB(); 666 mActiveSyncIP = temp->getRemoteIPAB();
667 } else if ( mTargetApp == KOPI ) { 667 } else if ( mTargetApp == KOPI ) {
668 mSpecificResources = QStringList::split( ":", temp->getResSpecKopi(),true ); 668 mSpecificResources = QStringList::split( ":", temp->getResSpecKopi(),true );
669 mPassWordPiSync = temp->getRemotePw(); 669 mPassWordPiSync = temp->getRemotePw();
670 mActiveSyncPort = temp->getRemotePort(); 670 mActiveSyncPort = temp->getRemotePort();
671 mActiveSyncIP = temp->getRemoteIP(); 671 mActiveSyncIP = temp->getRemoteIP();
672 } else { 672 } else {
673 mPassWordPiSync = temp->getRemotePwPWM(); 673 mPassWordPiSync = temp->getRemotePwPWM();
674 mActiveSyncPort = temp->getRemotePortPWM(); 674 mActiveSyncPort = temp->getRemotePortPWM();
675 mActiveSyncIP = temp->getRemoteIPPWM(); 675 mActiveSyncIP = temp->getRemoteIPPWM();
676 } 676 }
677 syncPi(); 677 syncPi();
678 while ( !mPisyncFinished ) { 678 while ( !mPisyncFinished ) {
679 //qDebug("waiting "); 679 //qDebug("waiting ");
680 qApp->processEvents(); 680 qApp->processEvents();
681 } 681 }
682 timer.start(); 682 timer.start();
683 while ( timer.elapsed () < 2000 ) { 683 while ( timer.elapsed () < 2000 ) {
684 qApp->processEvents(); 684 qApp->processEvents();
685 } 685 }
686 } else 686 } else
687 syncRemote( temp, false ); 687 syncRemote( temp, false );
688 688
689 } 689 }
690 } 690 }
691 timer.start(); 691 timer.start();
692 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 692 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
693 while ( timer.elapsed () < 2000 ) { 693 while ( timer.elapsed () < 2000 ) {
694 qApp->processEvents(); 694 qApp->processEvents();
695#ifndef _WIN32_ 695#ifndef _WIN32_
696 sleep (1); 696 sleep (1);
697#endif 697#endif
698 } 698 }
699 699
700 } 700 }
701 701
702 } 702 }
703 delete temp; 703 delete temp;
704 return syncedProfiles; 704 return syncedProfiles;
705} 705}
706 706
707void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 707void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
708{ 708{
709 QString question; 709 QString question;
710 if ( ask ) { 710 if ( ask ) {
711 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 711 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
712 if ( QMessageBox::information( mParent, i18n("Sync"), 712 if ( QMessageBox::information( mParent, i18n("Sync"),
713 question, 713 question,
714 i18n("Yes"), i18n("No"), 714 i18n("Yes"), i18n("No"),
715 0, 0 ) != 0 ) 715 0, 0 ) != 0 )
716 return; 716 return;
717 } 717 }
718 718
719 QString preCommand; 719 QString preCommand;
720 QString localTempFile; 720 QString localTempFile;
721 QString postCommand; 721 QString postCommand;
722 722
723 switch(mTargetApp) 723 switch(mTargetApp)
724 { 724 {
725 case (KAPI): 725 case (KAPI):
726 preCommand = prof->getPreSyncCommandAB(); 726 preCommand = prof->getPreSyncCommandAB();
727 postCommand = prof->getPostSyncCommandAB(); 727 postCommand = prof->getPostSyncCommandAB();
728 localTempFile = prof->getLocalTempFileAB(); 728 localTempFile = prof->getLocalTempFileAB();
729 break; 729 break;
730 case (KOPI): 730 case (KOPI):
731 preCommand = prof->getPreSyncCommand(); 731 preCommand = prof->getPreSyncCommand();
732 postCommand = prof->getPostSyncCommand(); 732 postCommand = prof->getPostSyncCommand();
733 localTempFile = prof->getLocalTempFile(); 733 localTempFile = prof->getLocalTempFile();
734 break; 734 break;
735 case (PWMPI): 735 case (PWMPI):
736 preCommand = prof->getPreSyncCommandPWM(); 736 preCommand = prof->getPreSyncCommandPWM();
737 postCommand = prof->getPostSyncCommandPWM(); 737 postCommand = prof->getPostSyncCommandPWM();
738 localTempFile = prof->getLocalTempFilePWM(); 738 localTempFile = prof->getLocalTempFilePWM();
739 break; 739 break;
740 default: 740 default:
741 qDebug("KSM::syncRemote: invalid apptype selected"); 741 qDebug("KSM::syncRemote: invalid apptype selected");
742 break; 742 break;
743 } 743 }
744 744
745 745
746 int fi; 746 int fi;
747 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 747 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
748 QString pwd = getPassword(); 748 QString pwd = getPassword();
749 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 749 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
750 750
751 } 751 }
752 int maxlen = 30; 752 int maxlen = 30;
753 if ( QApplication::desktop()->width() > 320 ) 753 if ( QApplication::desktop()->width() > 320 )
754 maxlen += 25; 754 maxlen += 25;
755 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) ); 755 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) );
756 int fileSize = 0;
757 int result = system ( preCommand ); 756 int result = system ( preCommand );
758 // 0 : okay 757 // 0 : okay
759 // 256: no such file or dir 758 // 256: no such file or dir
760 // 759 //
761 qDebug("KSM::Sync: Remote copy result(0 = okay): %d ",result ); 760 qDebug("KSM::Sync: Remote copy result(0 = okay): %d ",result );
762 if ( result != 0 ) { 761 if ( result != 0 ) {
763 unsigned int len = maxlen; 762 unsigned int len = maxlen;
764 while ( len < preCommand.length() ) { 763 while ( len < preCommand.length() ) {
765 preCommand.insert( len , "\n" ); 764 preCommand.insert( len , "\n" );
766 len += maxlen +2; 765 len += maxlen +2;
767 } 766 }
768 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ; 767 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ;
769 QMessageBox::information( mParent, i18n("Sync - ERROR"), 768 QMessageBox::information( mParent, i18n("Sync - ERROR"),
770 question, 769 question,
771 i18n("Okay!")) ; 770 i18n("Okay!")) ;
772 mParent->topLevelWidget()->setCaption ("KDE-Pim"); 771 mParent->topLevelWidget()->setCaption ("KDE-Pim");
773 return; 772 return;
774 } 773 }
775 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) ); 774 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) );
776 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 775 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
777 776
778 if ( syncWithFile( localTempFile, true ) ) { 777 if ( syncWithFile( localTempFile, true ) ) {
779 778
780 if ( mWriteBackFile ) { 779 if ( mWriteBackFile ) {
781 int fi; 780 int fi;
782 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 781 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
783 QString pwd = getPassword(); 782 QString pwd = getPassword();
784 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 783 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
785 784
786 } 785 }
787 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 786 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
788 result = system ( postCommand ); 787 result = system ( postCommand );
789 qDebug("KSM::Sync:Writing back file result: %d ", result); 788 qDebug("KSM::Sync:Writing back file result: %d ", result);
790 if ( result != 0 ) { 789 if ( result != 0 ) {
791 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 790 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
792 return; 791 return;
793 } else { 792 } else {
794 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 793 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
795 } 794 }
796 } 795 }
797 } 796 }
798 return; 797 return;
799} 798}
800bool KSyncManager::edit_pisync_options() 799bool KSyncManager::edit_pisync_options()
801{ 800{
802 QDialog dia( mParent, "dia", true ); 801 QDialog dia( mParent, "dia", true );
803 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); 802 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
804 QVBoxLayout lay ( &dia ); 803 QVBoxLayout lay ( &dia );
805 lay.setSpacing( 5 ); 804 lay.setSpacing( 5 );
806 lay.setMargin( 3 ); 805 lay.setMargin( 3 );
807 QLabel lab1 ( i18n("Password for remote access:"), &dia); 806 QLabel lab1 ( i18n("Password for remote access:"), &dia);
808 lay.addWidget( &lab1 ); 807 lay.addWidget( &lab1 );
809 QLineEdit le1 (&dia ); 808 QLineEdit le1 (&dia );
810 lay.addWidget( &le1 ); 809 lay.addWidget( &le1 );
811 QLabel lab2 ( i18n("Remote IP address:"), &dia); 810 QLabel lab2 ( i18n("Remote IP address:"), &dia);
812 lay.addWidget( &lab2 ); 811 lay.addWidget( &lab2 );
813 QLineEdit le2 (&dia ); 812 QLineEdit le2 (&dia );
814 lay.addWidget( &le2 ); 813 lay.addWidget( &le2 );
815 QLabel lab3 ( i18n("Remote port number:\n(May be: 1 - 65535)"), &dia); 814 QLabel lab3 ( i18n("Remote port number:\n(May be: 1 - 65535)"), &dia);
816 lay.addWidget( &lab3 ); 815 lay.addWidget( &lab3 );
817 QLineEdit le3 (&dia ); 816 QLineEdit le3 (&dia );
818 lay.addWidget( &le3 ); 817 lay.addWidget( &le3 );
819 QPushButton pb ( "OK", &dia); 818 QPushButton pb ( "OK", &dia);
820 lay.addWidget( &pb ); 819 lay.addWidget( &pb );
821 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 820 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
822 le1.setText( mPassWordPiSync ); 821 le1.setText( mPassWordPiSync );
823 le2.setText( mActiveSyncIP ); 822 le2.setText( mActiveSyncIP );
824 le3.setText( mActiveSyncPort ); 823 le3.setText( mActiveSyncPort );
825 if ( dia.exec() ) { 824 if ( dia.exec() ) {
826 mPassWordPiSync = le1.text(); 825 mPassWordPiSync = le1.text();
827 mActiveSyncPort = le3.text(); 826 mActiveSyncPort = le3.text();
828 mActiveSyncIP = le2.text(); 827 mActiveSyncIP = le2.text();
829 return true; 828 return true;
830 } 829 }
831 return false; 830 return false;
832} 831}
833bool KSyncManager::edit_sync_options() 832bool KSyncManager::edit_sync_options()
834{ 833{
835 834
836 QDialog dia( mParent, "dia", true ); 835 QDialog dia( mParent, "dia", true );
837 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 836 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
838 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 837 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
839 QVBoxLayout lay ( &dia ); 838 QVBoxLayout lay ( &dia );
840 lay.setSpacing( 2 ); 839 lay.setSpacing( 2 );
841 lay.setMargin( 3 ); 840 lay.setMargin( 3 );
842 lay.addWidget(&gr); 841 lay.addWidget(&gr);
843 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 842 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
844 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 843 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
845 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 844 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
846 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 845 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
847 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 846 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
848 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 847 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
849 //QRadioButton both( i18n("Take both on conflict"), &gr ); 848 //QRadioButton both( i18n("Take both on conflict"), &gr );
850 QPushButton pb ( "OK", &dia); 849 QPushButton pb ( "OK", &dia);
851 lay.addWidget( &pb ); 850 lay.addWidget( &pb );
852 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 851 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
853 switch ( mSyncAlgoPrefs ) { 852 switch ( mSyncAlgoPrefs ) {
854 case 0: 853 case 0:
855 loc.setChecked( true); 854 loc.setChecked( true);
856 break; 855 break;
857 case 1: 856 case 1:
858 rem.setChecked( true ); 857 rem.setChecked( true );
859 break; 858 break;
860 case 2: 859 case 2:
861 newest.setChecked( true); 860 newest.setChecked( true);
862 break; 861 break;
863 case 3: 862 case 3:
864 ask.setChecked( true); 863 ask.setChecked( true);
865 break; 864 break;
866 case 4: 865 case 4:
867 f_loc.setChecked( true); 866 f_loc.setChecked( true);
868 break; 867 break;
869 case 5: 868 case 5:
870 f_rem.setChecked( true); 869 f_rem.setChecked( true);
871 break; 870 break;
872 case 6: 871 case 6:
873 // both.setChecked( true); 872 // both.setChecked( true);
874 break; 873 break;
875 default: 874 default:
876 break; 875 break;
877 } 876 }
878 if ( dia.exec() ) { 877 if ( dia.exec() ) {
879 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 878 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
880 return true; 879 return true;
881 } 880 }
882 return false; 881 return false;
883} 882}
884 883
885QString KSyncManager::getPassword( ) 884QString KSyncManager::getPassword( )
886{ 885{
887 QString retfile = ""; 886 QString retfile = "";
888 QDialog dia ( mParent, "input-dialog", true ); 887 QDialog dia ( mParent, "input-dialog", true );
889 QLineEdit lab ( &dia ); 888 QLineEdit lab ( &dia );
890 lab.setEchoMode( QLineEdit::Password ); 889 lab.setEchoMode( QLineEdit::Password );
891 QVBoxLayout lay( &dia ); 890 QVBoxLayout lay( &dia );
892 lay.setMargin(7); 891 lay.setMargin(7);
893 lay.setSpacing(7); 892 lay.setSpacing(7);
894 lay.addWidget( &lab); 893 lay.addWidget( &lab);
895 dia.setFixedSize( 230,50 ); 894 dia.setFixedSize( 230,50 );
896 dia.setCaption( i18n("Enter password") ); 895 dia.setCaption( i18n("Enter password") );
897 QPushButton pb ( "OK", &dia); 896 QPushButton pb ( "OK", &dia);
898 lay.addWidget( &pb ); 897 lay.addWidget( &pb );
899 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 898 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
900 dia.show(); 899 dia.show();
901 int res = dia.exec(); 900 int res = dia.exec();
902 if ( res ) 901 if ( res )
903 retfile = lab.text(); 902 retfile = lab.text();
904 dia.hide(); 903 dia.hide();
905 qApp->processEvents(); 904 qApp->processEvents();
906 return retfile; 905 return retfile;
907 906
908} 907}
909 908
910 909
911void KSyncManager::confSync() 910void KSyncManager::confSync()
912{ 911{
913 static KSyncPrefsDialog* sp = 0; 912 static KSyncPrefsDialog* sp = 0;
914 if ( ! sp ) { 913 if ( ! sp ) {
915 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 914 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
916 } 915 }
917 sp->usrReadConfig(); 916 sp->usrReadConfig();
918#ifndef DESKTOP_VERSION 917#ifndef DESKTOP_VERSION
919 sp->showMaximized(); 918 sp->showMaximized();
920#else 919#else
921 sp->show(); 920 sp->show();
922#endif 921#endif
923 sp->exec(); 922 sp->exec();
924 QStringList oldSyncProfileNames = mSyncProfileNames; 923 QStringList oldSyncProfileNames = mSyncProfileNames;
925 mSyncProfileNames = sp->getSyncProfileNames(); 924 mSyncProfileNames = sp->getSyncProfileNames();
926 mLocalMachineName = sp->getLocalMachineName (); 925 mLocalMachineName = sp->getLocalMachineName ();
927 int ii; 926 uint ii;
928 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) { 927 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) {
929 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) ) 928 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) )
930 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] ); 929 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] );
931 } 930 }
932 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 931 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
933} 932}
934void KSyncManager::syncKDE() 933void KSyncManager::syncKDE()
935{ 934{
936 mSyncWithDesktop = true; 935 mSyncWithDesktop = true;
937 emit save(); 936 emit save();
938 switch(mTargetApp) 937 switch(mTargetApp)
939 { 938 {
940 case (KAPI): 939 case (KAPI):
941 { 940 {
942#ifdef DESKTOP_VERSION 941#ifdef DESKTOP_VERSION
943 QString command = "kdeabdump33"; 942 QString command = "kdeabdump33";
944 QString commandfile = "kdeabdump33"; 943 QString commandfile = "kdeabdump33";
945 QString commandpath = qApp->applicationDirPath () + "/"; 944 QString commandpath = qApp->applicationDirPath () + "/";
946#else 945#else
947 QString command = "kdeabdump33"; 946 QString command = "kdeabdump33";
948 QString commandfile = "kdeabdump33"; 947 QString commandfile = "kdeabdump33";
949 QString commandpath = QDir::homeDirPath ()+"/"; 948 QString commandpath = QDir::homeDirPath ()+"/";
950#endif 949#endif
951 if ( ! QFile::exists ( commandpath+commandfile ) ) 950 if ( ! QFile::exists ( commandpath+commandfile ) )
952 command = commandfile; 951 command = commandfile;
953 else 952 else
954 command = commandpath+commandfile; 953 command = commandpath+commandfile;
955 954
956 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf"; 955 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf";
957 int result = system ( command.latin1()); 956 int result = system ( command.latin1());
958 qDebug("AB dump 33 command call result: %d ", result); 957 qDebug("AB dump 33 command call result: %d ", result);
959 if ( result != 0 ) { 958 if ( result != 0 ) {
960 qDebug("Calling AB dump version 33 failed. Trying 34... "); 959 qDebug("Calling AB dump version 33 failed. Trying 34... ");
961 commandfile = "kdeabdump34"; 960 commandfile = "kdeabdump34";
962 if ( ! QFile::exists ( commandpath+commandfile ) ) 961 if ( ! QFile::exists ( commandpath+commandfile ) )
963 command = commandfile; 962 command = commandfile;
964 else 963 else
965 command = commandpath+commandfile; 964 command = commandpath+commandfile;
966 result = system ( command.latin1()); 965 result = system ( command.latin1());
967 qDebug("AB dump 34 command call result: %d ", result); 966 qDebug("AB dump 34 command call result: %d ", result);
968 if ( result != 0 ) { 967 if ( result != 0 ) {
969 KMessageBox::error( 0, i18n("Error accessing KDE addressbook data.\nMake sure the file\n%1kdeabdump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath )); 968 KMessageBox::error( 0, i18n("Error accessing KDE addressbook data.\nMake sure the file\n%1kdeabdump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath ));
970 return; 969 return;
971 } 970 }
972 } 971 }
973 if ( syncWithFile( fileName,true ) ) { 972 if ( syncWithFile( fileName,true ) ) {
974 if ( mWriteBackFile ) { 973 if ( mWriteBackFile ) {
975 command += " --read"; 974 command += " --read";
976 system ( command.latin1()); 975 system ( command.latin1());
977 } 976 }
978 } 977 }
979 978
980 } 979 }
981 break; 980 break;
982 case (KOPI): 981 case (KOPI):
983 { 982 {
984#ifdef DESKTOP_VERSION 983#ifdef DESKTOP_VERSION
985 QString command = "kdecaldump33"; 984 QString command = "kdecaldump33";
986 QString commandfile = "kdecaldump33"; 985 QString commandfile = "kdecaldump33";
987 QString commandpath = qApp->applicationDirPath () + "/"; 986 QString commandpath = qApp->applicationDirPath () + "/";
988#else 987#else
989 QString command = "kdecaldump33"; 988 QString command = "kdecaldump33";
990 QString commandfile = "kdecaldump33"; 989 QString commandfile = "kdecaldump33";
991 QString commandpath = QDir::homeDirPath ()+"/"; 990 QString commandpath = QDir::homeDirPath ()+"/";
992#endif 991#endif
993 if ( ! QFile::exists ( commandpath+commandfile ) ) 992 if ( ! QFile::exists ( commandpath+commandfile ) )
994 command = commandfile; 993 command = commandfile;
995 else 994 else
996 command = commandpath+commandfile; 995 command = commandpath+commandfile;
997 996
998 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; 997 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics";
999 int result = system ( command.latin1()); 998 int result = system ( command.latin1());
1000 qDebug("Cal dump 33 command call result result: %d ", result); 999 qDebug("Cal dump 33 command call result result: %d ", result);
1001 if ( result != 0 ) { 1000 if ( result != 0 ) {
1002 qDebug("Calling CAL dump version 33 failed. Trying 34... "); 1001 qDebug("Calling CAL dump version 33 failed. Trying 34... ");
1003 commandfile = "kdecaldump34"; 1002 commandfile = "kdecaldump34";
1004 if ( ! QFile::exists ( commandpath+commandfile ) ) 1003 if ( ! QFile::exists ( commandpath+commandfile ) )
1005 command = commandfile; 1004 command = commandfile;
1006 else 1005 else
1007 command = commandpath+commandfile; 1006 command = commandpath+commandfile;
1008 result = system ( command.latin1()); 1007 result = system ( command.latin1());
1009 qDebug("Cal dump 34 command call result result: %d ", result); 1008 qDebug("Cal dump 34 command call result result: %d ", result);
1010 if ( result != 0 ) { 1009 if ( result != 0 ) {
1011 KMessageBox::error( 0, i18n("Error accessing KDE calendar data.\nMake sure the file\n%1kdecaldump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath )); 1010 KMessageBox::error( 0, i18n("Error accessing KDE calendar data.\nMake sure the file\n%1kdecaldump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath ));
1012 return; 1011 return;
1013 } 1012 }
1014 } 1013 }
1015 if ( syncWithFile( fileName,true ) ) { 1014 if ( syncWithFile( fileName,true ) ) {
1016 if ( mWriteBackFile ) { 1015 if ( mWriteBackFile ) {
1017 command += " --read"; 1016 command += " --read";
1018 system ( command.latin1()); 1017 system ( command.latin1());
1019 } 1018 }
1020 } 1019 }
1021 1020
1022 } 1021 }
1023 break; 1022 break;
1024 case (PWMPI): 1023 case (PWMPI):
1025 1024
1026 break; 1025 break;
1027 default: 1026 default:
1028 qDebug("KSM::slotSyncMenu: invalid apptype selected"); 1027 qDebug("KSM::slotSyncMenu: invalid apptype selected");
1029 break; 1028 break;
1030 1029
1031 } 1030 }
1032} 1031}
1033 1032
1034void KSyncManager::syncSharp() 1033void KSyncManager::syncSharp()
1035{ 1034{
1036 1035
1037 if ( ! syncExternalApplication("sharp") ) 1036 if ( ! syncExternalApplication("sharp") )
1038 qDebug("KSM::ERROR sync sharp "); 1037 qDebug("KSM::ERROR sync sharp ");
1039} 1038}
1040 1039
1041bool KSyncManager::syncExternalApplication(QString resource) 1040bool KSyncManager::syncExternalApplication(QString resource)
1042{ 1041{
1043 1042
1044 emit save(); 1043 emit save();
1045 1044
1046 if ( mAskForPreferences ) 1045 if ( mAskForPreferences )
1047 if ( !edit_sync_options()) { 1046 if ( !edit_sync_options()) {
1048 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1047 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1049 return false; 1048 return false;
1050 } 1049 }
1051 1050
1052 qDebug("KSM::Sync extern %s", resource.latin1()); 1051 qDebug("KSM::Sync extern %s", resource.latin1());
1053 1052
1054 bool syncOK = mImplementation->syncExternal(this, resource); 1053 bool syncOK = mImplementation->syncExternal(this, resource);
1055 1054
1056 return syncOK; 1055 return syncOK;
1057 1056
1058} 1057}
1059 1058
1060void KSyncManager::syncPhone() 1059void KSyncManager::syncPhone()
1061{ 1060{
1062 1061
1063 syncExternalApplication("phone"); 1062 syncExternalApplication("phone");
1064 1063
1065} 1064}
1066 1065
1067void KSyncManager::showProgressBar(int percentage, QString caption, int total) 1066void KSyncManager::showProgressBar(int percentage, QString caption, int total)
1068{ 1067{
1069 if (!bar->isVisible()) 1068 if (!bar->isVisible())
1070 { 1069 {
1071 int w = 300; 1070 int w = 300;
1072 if ( QApplication::desktop()->width() < 320 ) 1071 if ( QApplication::desktop()->width() < 320 )
1073 w = 220; 1072 w = 220;
1074 int h = bar->sizeHint().height() ; 1073 int h = bar->sizeHint().height() ;
1075 int dw = QApplication::desktop()->width(); 1074 int dw = QApplication::desktop()->width();
1076 int dh = QApplication::desktop()->height(); 1075 int dh = QApplication::desktop()->height();
1077 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1076 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1078 bar->setCaption (caption); 1077 bar->setCaption (caption);
1079 bar->setTotalSteps ( total ) ; 1078 bar->setTotalSteps ( total ) ;
1080 bar->show(); 1079 bar->show();
1081 } 1080 }
1082 bar->raise(); 1081 bar->raise();
1083 bar->setProgress( percentage ); 1082 bar->setProgress( percentage );
1084 qApp->processEvents(); 1083 qApp->processEvents();
1085} 1084}
1086 1085
1087void KSyncManager::hideProgressBar() 1086void KSyncManager::hideProgressBar()
1088{ 1087{
1089 bar->hide(); 1088 bar->hide();
1090 qApp->processEvents(); 1089 qApp->processEvents();
1091} 1090}
1092 1091
1093bool KSyncManager::isProgressBarCanceled() 1092bool KSyncManager::isProgressBarCanceled()
1094{ 1093{
1095 return !bar->isVisible(); 1094 return !bar->isVisible();
1096} 1095}
1097 1096
1098QString KSyncManager::syncFileName() 1097QString KSyncManager::syncFileName()
1099{ 1098{
1100 1099
1101 QString fn = "tempfile"; 1100 QString fn = "tempfile";
1102 switch(mTargetApp) 1101 switch(mTargetApp)
1103 { 1102 {
1104 case (KAPI): 1103 case (KAPI):
1105 fn = "tempsyncab.vcf"; 1104 fn = "tempsyncab.vcf";
1106 break; 1105 break;
1107 case (KOPI): 1106 case (KOPI):
1108 fn = "tempsynccal.ics"; 1107 fn = "tempsynccal.ics";
1109 break; 1108 break;
1110 case (PWMPI): 1109 case (PWMPI):
1111 fn = "tempsyncpw.pwm"; 1110 fn = "tempsyncpw.pwm";
1112 break; 1111 break;
1113 default: 1112 default:
1114 break; 1113 break;
1115 } 1114 }
1116#ifdef DESKTOP_VERSION 1115#ifdef DESKTOP_VERSION
1117 return locateLocal( "tmp", fn ); 1116 return locateLocal( "tmp", fn );
1118#else 1117#else
1119 return (QString( "/tmp/" )+ fn ); 1118 return (QString( "/tmp/" )+ fn );
1120#endif 1119#endif
1121} 1120}
1122 1121
1123void KSyncManager::syncPi() 1122void KSyncManager::syncPi()
1124{ 1123{
1125 mIsKapiFile = true; 1124 mIsKapiFile = true;
1126 mPisyncFinished = false; 1125 mPisyncFinished = false;
1127 qApp->processEvents(); 1126 qApp->processEvents();
1128 if ( mAskForPreferences ) 1127 if ( mAskForPreferences )
1129 if ( !edit_pisync_options()) { 1128 if ( !edit_pisync_options()) {
1130 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1129 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1131 mPisyncFinished = true; 1130 mPisyncFinished = true;
1132 return; 1131 return;
1133 } 1132 }
1134 bool ok; 1133 bool ok;
1135 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 1134 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
1136 if ( ! ok ) { 1135 if ( ! ok ) {
1137 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 1136 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
1138 mPisyncFinished = true; 1137 mPisyncFinished = true;
1139 return; 1138 return;
1140 } 1139 }
1141 mCurrentResourceLocal = ""; 1140 mCurrentResourceLocal = "";
1142 mCurrentResourceRemote = ""; 1141 mCurrentResourceRemote = "";
1143 if ( mSpecificResources.count() ) { 1142 if ( mSpecificResources.count() ) {
1144 int lastSyncRes = mSpecificResources.count()/2; 1143 uint lastSyncRes = mSpecificResources.count()/2;
1145 int ccc = mSpecificResources.count()-1; 1144 int ccc = mSpecificResources.count()-1;
1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) { 1145 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) {
1147 --ccc; 1146 --ccc;
1148 --lastSyncRes; 1147 --lastSyncRes;
1149 //qDebug ( "KSM: sync pi %d",ccc ); 1148 //qDebug ( "KSM: sync pi %d",ccc );
1150 } 1149 }
1151 int startLocal = 0; 1150 uint startLocal = 0;
1152 int startRemote = mSpecificResources.count()/2; 1151 uint startRemote = mSpecificResources.count()/2;
1153 emit multiResourceSyncStart( true ); 1152 emit multiResourceSyncStart( true );
1154 while ( startLocal < mSpecificResources.count()/2 ) { 1153 while ( startLocal < mSpecificResources.count()/2 ) {
1155 if ( startLocal+1 >= lastSyncRes ) 1154 if ( startLocal+1 >= lastSyncRes )
1156 emit multiResourceSyncStart( false ); 1155 emit multiResourceSyncStart( false );
1157 mPisyncFinished = false; 1156 mPisyncFinished = false;
1158 mCurrentResourceLocal = mSpecificResources[ startLocal ]; 1157 mCurrentResourceLocal = mSpecificResources[ startLocal ];
1159 mCurrentResourceRemote = mSpecificResources[ startRemote ]; 1158 mCurrentResourceRemote = mSpecificResources[ startRemote ];
1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1159 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1161 if ( !mCurrentResourceRemote.isEmpty() ) { 1160 if ( !mCurrentResourceRemote.isEmpty() ) {
1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1161 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1163 1162
1164 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1163 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1165 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1164 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1166 commandSocket->readFile( syncFileName() ); 1165 commandSocket->readFile( syncFileName() );
1167 mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) ); 1166 mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) );
1168 while ( !mPisyncFinished ) { 1167 while ( !mPisyncFinished ) {
1169 //qDebug("waiting "); 1168 //qDebug("waiting ");
1170 qApp->processEvents(); 1169 qApp->processEvents();
1171 } 1170 }
1172 if ( startLocal+1 < mSpecificResources.count()/2 ) { 1171 if ( startLocal+1 < mSpecificResources.count()/2 ) {
1173 mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") ); 1172 mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") );
1174 QTime timer; 1173 QTime timer;
1175 timer.start(); 1174 timer.start();
1176 while ( timer.elapsed () < 2000 ) { 1175 while ( timer.elapsed () < 2000 ) {
1177 qApp->processEvents(); 1176 qApp->processEvents();
1178 } 1177 }
1179 } 1178 }
1180 } 1179 }
1181 ++startRemote; 1180 ++startRemote;
1182 ++startLocal; 1181 ++startLocal;
1183 mAskForPreferences = false; 1182 mAskForPreferences = false;
1184 } 1183 }
1185 mPisyncFinished = true; 1184 mPisyncFinished = true;
1186 } else { 1185 } else {
1187 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1186 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1188 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1187 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1189 commandSocket->readFile( syncFileName() ); 1188 commandSocket->readFile( syncFileName() );
1190 } 1189 }
1191} 1190}
1192 1191
1193void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 1192void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
1194{ 1193{
1195 //enum { success, errorW, errorR, quiet }; 1194 //enum { success, errorW, errorR, quiet };
1196 1195
1197 1196
1198 1197
1199 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW || 1198 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ||
1200 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) { 1199 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) {
1201 if ( state == KCommandSocket::errorPW ) 1200 if ( state == KCommandSocket::errorPW )
1202 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") ); 1201 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") );
1203 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) 1202 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO )
1204 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 1203 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
1205 else if ( state == KCommandSocket::errorCA ) 1204 else if ( state == KCommandSocket::errorCA )
1206 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") ); 1205 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") );
1207 else if ( state == KCommandSocket::errorFI ) 1206 else if ( state == KCommandSocket::errorFI )
1208 mParent->topLevelWidget()->setCaption( i18n("File error on remote.") ); 1207 mParent->topLevelWidget()->setCaption( i18n("File error on remote.") );
1209 else if ( state == KCommandSocket::errorED ) 1208 else if ( state == KCommandSocket::errorED )
1210 mParent->topLevelWidget()->setCaption( i18n("Please close error dialog on remote.") ); 1209 mParent->topLevelWidget()->setCaption( i18n("Please close error dialog on remote.") );
1211 else if ( state == KCommandSocket::errorUN ) 1210 else if ( state == KCommandSocket::errorUN )
1212 mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") ); 1211 mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") );
1213 delete s; 1212 delete s;
1214 if ( state == KCommandSocket::errorR ) { 1213 if ( state == KCommandSocket::errorR ) {
1215 KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget()); 1214 KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget());
1216 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1215 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1217 commandSocket->sendStop(); 1216 commandSocket->sendStop();
1218 } 1217 }
1219 mPisyncFinished = true; 1218 mPisyncFinished = true;
1220 return; 1219 return;
1221 1220
1222 } else if ( state == KCommandSocket::errorW ) { 1221 } else if ( state == KCommandSocket::errorW ) {
1223 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 1222 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
1224 mPisyncFinished = true; 1223 mPisyncFinished = true;
1225 1224
1226 } else if ( state == KCommandSocket::successR ) { 1225 } else if ( state == KCommandSocket::successR ) {
1227 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1226 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
1228 1227
1229 } else if ( state == KCommandSocket::successW ) { 1228 } else if ( state == KCommandSocket::successW ) {
1230 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync successful!") ); 1229 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync successful!") );
1231 mPisyncFinished = true; 1230 mPisyncFinished = true;
1232 } else if ( state == KCommandSocket::quiet ){ 1231 } else if ( state == KCommandSocket::quiet ){
1233 qDebug("KSS: quiet "); 1232 qDebug("KSS: quiet ");
1234 mPisyncFinished = true; 1233 mPisyncFinished = true;
1235 } else { 1234 } else {
1236 qDebug("KSS: Error: unknown state: %d ", state); 1235 qDebug("KSS: Error: unknown state: %d ", state);
1237 mPisyncFinished = true; 1236 mPisyncFinished = true;
1238 } 1237 }
1239 1238
1240 delete s; 1239 delete s;
1241} 1240}
1242 1241
1243void KSyncManager::readFileFromSocket() 1242void KSyncManager::readFileFromSocket()
1244{ 1243{
1245 QString fileName = syncFileName(); 1244 QString fileName = syncFileName();
1246 bool syncOK = true; 1245 bool syncOK = true;
1247 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1246 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1248 if ( ! syncWithFile( fileName , true ) ) { 1247 if ( ! syncWithFile( fileName , true ) ) {
1249 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1248 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1250 syncOK = false; 1249 syncOK = false;
1251 } 1250 }
1252 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() ); 1251 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() );
1253 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1252 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1254 if ( mWriteBackFile && syncOK ) { 1253 if ( mWriteBackFile && syncOK ) {
1255 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") ); 1254 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") );
1256 commandSocket->writeFile( fileName ); 1255 commandSocket->writeFile( fileName );
1257 } 1256 }
1258 else { 1257 else {
1259 commandSocket->sendStop(); 1258 commandSocket->sendStop();
1260 if ( syncOK ) 1259 if ( syncOK )
1261 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1260 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1262 mPisyncFinished = true; 1261 mPisyncFinished = true;
1263 } 1262 }
1264} 1263}
1265 1264
1266KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1265KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1267{ 1266{
1268 mPendingConnect = 0; 1267 mPendingConnect = 0;
1269 mPassWord = pw; 1268 mPassWord = pw;
1270 mSocket = 0; 1269 mSocket = 0;
1271 mSyncActionDialog = 0; 1270 mSyncActionDialog = 0;
1272 blockRC = false; 1271 blockRC = false;
1273 mErrorMessage = 0; 1272 mErrorMessage = 0;
1274} 1273}
1275void KServerSocket::waitForSocketFinish() 1274void KServerSocket::waitForSocketFinish()
1276{ 1275{
1277 if ( mSocket ) { 1276 if ( mSocket ) {
1278 //qDebug("KSS:: waiting for finish operation"); 1277 //qDebug("KSS:: waiting for finish operation");
1279 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish())); 1278 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1280 return; 1279 return;
1281 } 1280 }
1282 mSocket = new QSocket( this ); 1281 mSocket = new QSocket( this );
1283 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1282 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1284 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1283 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1285 mSocket->setSocket( mPendingConnect ); 1284 mSocket->setSocket( mPendingConnect );
1286 mPendingConnect = 0; 1285 mPendingConnect = 0;
1287} 1286}
1288void KServerSocket::newConnection ( int socket ) 1287void KServerSocket::newConnection ( int socket )
1289{ 1288{
1290 // qDebug("KServerSocket:New connection %d ", socket); 1289 // qDebug("KServerSocket:New connection %d ", socket);
1291 if ( mPendingConnect ) { 1290 if ( mPendingConnect ) {
1292 qDebug("KSS::Error : new Connection"); 1291 qDebug("KSS::Error : new Connection");
1293 return; 1292 return;
1294 } 1293 }
1295 if ( mSocket ) { 1294 if ( mSocket ) {
1296 mPendingConnect = socket; 1295 mPendingConnect = socket;
1297 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish())); 1296 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1298 return; 1297 return;
1299 qDebug("KSS::newConnection Socket deleted! "); 1298 qDebug("KSS::newConnection Socket deleted! ");
1300 delete mSocket; 1299 delete mSocket;
1301 mSocket = 0; 1300 mSocket = 0;
1302 } 1301 }
1303 mPendingConnect = 0; 1302 mPendingConnect = 0;
1304 mSocket = new QSocket( this ); 1303 mSocket = new QSocket( this );
1305 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1304 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1306 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1305 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1307 mSocket->setSocket( socket ); 1306 mSocket->setSocket( socket );
1308} 1307}
1309 1308
1310void KServerSocket::discardClient() 1309void KServerSocket::discardClient()
1311{ 1310{
1312 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1311 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1313} 1312}
1314void KServerSocket::deleteSocket() 1313void KServerSocket::deleteSocket()
1315{ 1314{
1316 qDebug("KSS::deleteSocket"); 1315 qDebug("KSS::deleteSocket");
1317 if ( mSocket ) { 1316 if ( mSocket ) {
1318 delete mSocket; 1317 delete mSocket;
1319 mSocket = 0; 1318 mSocket = 0;
1320 } 1319 }
1321 if ( mErrorMessage ) 1320 if ( mErrorMessage )
1322 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage())); 1321 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage()));
1323} 1322}
1324void KServerSocket::readClient() 1323void KServerSocket::readClient()
1325{ 1324{
1326 if ( blockRC ) 1325 if ( blockRC )
1327 return; 1326 return;
1328 if ( mSocket == 0 ) { 1327 if ( mSocket == 0 ) {
1329 qDebug("ERROR::KSS::readClient(): mSocket == 0 "); 1328 qDebug("ERROR::KSS::readClient(): mSocket == 0 ");
1330 return; 1329 return;
1331 } 1330 }
1332 if ( mErrorMessage ) { 1331 if ( mErrorMessage ) {
1333 mErrorMessage = 999; 1332 mErrorMessage = 999;
1334 error_connect("ERROR_ED\r\n\r\n"); 1333 error_connect("ERROR_ED\r\n\r\n");
1335 return; 1334 return;
1336 } 1335 }
1337 mResource = ""; 1336 mResource = "";
1338 mErrorMessage = 0; 1337 mErrorMessage = 0;
1339 //qDebug("KServerSocket::readClient()"); 1338 //qDebug("KServerSocket::readClient()");
1340 if ( mSocket->canReadLine() ) { 1339 if ( mSocket->canReadLine() ) {
1341 QString line = mSocket->readLine(); 1340 QString line = mSocket->readLine();
1342 //qDebug("KServerSocket readline: %s ", line.latin1()); 1341 //qDebug("KServerSocket readline: %s ", line.latin1());
1343 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1342 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1344 if ( tokens[0] == "GET" ) { 1343 if ( tokens[0] == "GET" ) {
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 604adb8..04cdade 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -46,204 +46,204 @@ class KServerSocket : public QServerSocket
46 Q_OBJECT 46 Q_OBJECT
47 47
48 public: 48 public:
49 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 49 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
50 50
51 void newConnection ( int socket ) ; 51 void newConnection ( int socket ) ;
52 void setFileName( QString fn ) {mFileName = fn;}; 52 void setFileName( QString fn ) {mFileName = fn;};
53 signals: 53 signals:
54 void file_received( bool ); 54 void file_received( bool );
55 void request_file(); 55 void request_file();
56 void file_received( bool, const QString &); 56 void file_received( bool, const QString &);
57 void request_file(const QString &); 57 void request_file(const QString &);
58 void saveFile(); 58 void saveFile();
59 void endConnect(); 59 void endConnect();
60 private slots: 60 private slots:
61 void waitForSocketFinish(); 61 void waitForSocketFinish();
62 void discardClient(); 62 void discardClient();
63 void deleteSocket(); 63 void deleteSocket();
64 void readClient(); 64 void readClient();
65 void displayErrorMessage(); 65 void displayErrorMessage();
66 void readBackFileFromSocket(); 66 void readBackFileFromSocket();
67 private : 67 private :
68 int mPendingConnect; 68 int mPendingConnect;
69 QString mResource; 69 QString mResource;
70 int mErrorMessage; 70 int mErrorMessage;
71 bool blockRC; 71 bool blockRC;
72 void send_file(); 72 void send_file();
73 void get_file(); 73 void get_file();
74 void end_connect(); 74 void end_connect();
75 void error_connect( QString ); 75 void error_connect( QString );
76 QDialog* mSyncActionDialog; 76 QDialog* mSyncActionDialog;
77 QSocket* mSocket; 77 QSocket* mSocket;
78 QString mPassWord; 78 QString mPassWord;
79 QString mFileName; 79 QString mFileName;
80 QTime piTime; 80 QTime piTime;
81 QString piFileString; 81 QString piFileString;
82}; 82};
83 83
84class KCommandSocket : public QObject 84class KCommandSocket : public QObject
85{ 85{
86 Q_OBJECT 86 Q_OBJECT
87 public: 87 public:
88 enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN, errorED,quiet }; 88 enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN, errorED,quiet };
89 KCommandSocket (QString remoteResource, QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 ); 89 KCommandSocket (QString remoteResource, QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 );
90 void readFile( QString ); 90 void readFile( QString );
91 void writeFile( QString ); 91 void writeFile( QString );
92 void sendStop(); 92 void sendStop();
93 93
94 private slots : 94 private slots :
95 void sendFileRequest(); 95 void sendFileRequest();
96 void updateConnectDialog(); 96 void updateConnectDialog();
97 97
98 signals: 98 signals:
99 void commandFinished( KCommandSocket*, int ); 99 void commandFinished( KCommandSocket*, int );
100 private slots: 100 private slots:
101 void startReadFileFromSocket(); 101 void startReadFileFromSocket();
102 void readFileFromSocket(); 102 void readFileFromSocket();
103 void deleteSocket(); 103 void deleteSocket();
104 void writeFileToSocket(); 104 void writeFileToSocket();
105 private : 105 private :
106 QString mRemoteResource; 106 QString mRemoteResource;
107 int mConnectCount; 107 int mConnectCount;
108 int mConnectMax; 108 int mConnectMax;
109 KProgressDialog mConnectProgress; 109 KProgressDialog mConnectProgress;
110 QWidget* tlw; 110 QWidget* tlw;
111 QSocket* mSocket; 111 QSocket* mSocket;
112 QString mPassWord; 112 QString mPassWord;
113 Q_UINT16 mPort; 113 Q_UINT16 mPort;
114 QString mHost; 114 QString mHost;
115 QString mFileName; 115 QString mFileName;
116 QTimer* mTimerSocket; 116 QTimer* mTimerSocket;
117 int mRetVal; 117 int mRetVal;
118 QTime mTime; 118 QTime mTime;
119 QString mFileString; 119 QString mFileString;
120 bool mFirst; 120 bool mFirst;
121 bool mFirstLine; 121 bool mFirstLine;
122}; 122};
123 123
124 124
125class KSyncManager : public QObject 125class KSyncManager : public QObject
126{ 126{
127 Q_OBJECT 127 Q_OBJECT
128 128
129 public: 129 public:
130 enum TargetApp { 130 enum TargetApp {
131 KOPI = 0, 131 KOPI = 0,
132 KAPI = 1, 132 KAPI = 1,
133 PWMPI = 2 }; 133 PWMPI = 2 };
134 134
135 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu); 135 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu);
136 ~KSyncManager() ; 136 ~KSyncManager() ;
137 137
138 void multiSync( bool askforPrefs ); 138 void multiSync( bool askforPrefs );
139 bool blockSave() { return mBlockSaveFlag; } 139 bool blockSave() { return mBlockSaveFlag; }
140 void setBlockSave(bool sa) { mBlockSaveFlag = sa; } 140 void setBlockSave(bool sa) { mBlockSaveFlag = sa; }
141 void setDefaultFileName( QString s) ; 141 void setDefaultFileName( QString s) ;
142 QString defaultFileName() { return mDefFileName ;} 142 QString defaultFileName() { return mDefFileName ;}
143 QString syncFileName(); 143 QString syncFileName();
144 void enableQuick( bool ask = true); 144 void enableQuick( bool ask = true);
145 145
146 bool syncWithDesktop () { return mSyncWithDesktop;} 146 bool syncWithDesktop () { return mSyncWithDesktop;}
147 QString getCurrentSyncDevice() { return mCurrentSyncDevice; } 147 QString getCurrentSyncDevice() { return mCurrentSyncDevice; }
148 QString getCurrentSyncName() { return mCurrentSyncName; } 148 QString getCurrentSyncName() { return mCurrentSyncName; }
149 149
150 void showProgressBar(int percentage, QString caption = QString::null, int total=100); 150 void showProgressBar(int percentage, QString caption = QString::null, int total=100);
151 void hideProgressBar(); 151 void hideProgressBar();
152 bool isProgressBarCanceled(); 152 bool isProgressBarCanceled();
153 153
154 // sync stuff 154 // sync stuff
155 QString mLocalMachineName; 155 QString mLocalMachineName;
156 QStringList mExternSyncProfiles; 156 QStringList mExternSyncProfiles;
157 QStringList mSyncProfileNames; 157 QStringList mSyncProfileNames;
158 bool mAskForPreferences; 158 bool mAskForPreferences;
159 bool mShowSyncSummary; 159 bool mShowSyncSummary;
160 bool mIsKapiFile; 160 bool mIsKapiFile;
161 bool mWriteBackExistingOnly; 161 bool mWriteBackExistingOnly;
162 int mSyncAlgoPrefs; 162 int mSyncAlgoPrefs;
163 bool mWriteBackFile; 163 bool mWriteBackFile;
164 int mWriteBackInFuture; 164 int mWriteBackInFuture;
165 int mWriteBackInPast; 165 int mWriteBackInPast;
166 QString mPhoneDevice; 166 QString mPhoneDevice;
167 QString mPhoneConnection; 167 QString mPhoneConnection;
168 QString mPhoneModel; 168 QString mPhoneModel;
169 QString mPassWordPiSync; 169 QString mPassWordPiSync;
170 QString mActiveSyncPort; 170 QString mActiveSyncPort;
171 QString mActiveSyncIP ; 171 QString mActiveSyncIP ;
172 QString mFilterInCal; 172 QString mFilterInCal;
173 QString mFilterOutCal; 173 QString mFilterOutCal;
174 QString mFilterInAB; 174 QString mFilterInAB;
175 QString mFilterOutAB; 175 QString mFilterOutAB;
176 static QDateTime mRequestedSyncEvent; 176 static QDateTime mRequestedSyncEvent;
177 177
178 signals: 178 signals:
179 void save(); 179 void save();
180 void request_file(); 180 void request_file();
181 void getFile( bool ); 181 void getFile( bool );
182 void getFile( bool, const QString &); 182 void getFile( bool, const QString &);
183 void request_file(const QString &); 183 void request_file(const QString &);
184 void multiResourceSyncStart( bool ); 184 void multiResourceSyncStart( bool );
185 185
186 public slots: 186 public slots:
187 void slotSyncMenu( int ); 187 void slotSyncMenu( int );
188 void slotClearMenu( int action ); 188 void slotClearMenu( int action );
189 void deleteCommandSocket(KCommandSocket*s, int state); 189 void deleteCommandSocket(KCommandSocket*s, int state);
190 void readFileFromSocket(); 190 void readFileFromSocket();
191 void fillSyncMenu(); 191 void fillSyncMenu();
192 192
193 private: 193 private:
194 void syncPi(); 194 void syncPi();
195 KServerSocket * mServerSocket; 195 KServerSocket * mServerSocket;
196 KPimPrefs* mPrefs; 196 KPimPrefs* mPrefs;
197 QString mDefFileName; 197 QString mDefFileName;
198 QString mCurrentSyncDevice; 198 QString mCurrentSyncDevice;
199 QString mCurrentSyncName; 199 QString mCurrentSyncName;
200 void quickSyncLocalFile(); 200 void quickSyncLocalFile();
201 bool syncWithFile( QString fn , bool quick ); 201 bool syncWithFile( QString fn , bool quick );
202 void syncLocalFile(); 202 void syncLocalFile();
203 void syncPhone(); 203 void syncPhone();
204 void syncSharp(); 204 void syncSharp();
205 void syncKDE(); 205 void syncKDE();
206 bool syncExternalApplication(QString); 206 bool syncExternalApplication(QString);
207 int mCurrentSyncProfile ; 207 int mCurrentSyncProfile ;
208 void syncRemote( KSyncProfile* prof, bool ask = true); 208 void syncRemote( KSyncProfile* prof, bool ask = true);
209 bool edit_sync_options(); 209 bool edit_sync_options();
210 bool edit_pisync_options(); 210 bool edit_pisync_options();
211 int ringSync(); 211 int ringSync();
212 QString getPassword( ); 212 QString getPassword( );
213 bool mPisyncFinished; 213 bool mPisyncFinished;
214 QStringList mSpecificResources; 214 QStringList mSpecificResources;
215 QString mCurrentResourceLocal; 215 QString mCurrentResourceLocal;
216 QString mCurrentResourceRemote; 216 QString mCurrentResourceRemote;
217 bool mBlockSaveFlag; 217 bool mBlockSaveFlag;
218 QWidget* mParent; 218 QWidget* mParent;
219 KSyncInterface* mImplementation; 219 KSyncInterface* mImplementation;
220 TargetApp mTargetApp; 220 TargetApp mTargetApp;
221 QPopupMenu* mSyncMenu; 221 QPopupMenu* mSyncMenu;
222 QProgressBar* bar; 222 QProgressBar* bar;
223 bool mSyncWithDesktop; 223 bool mSyncWithDesktop;
224 224
225private slots: 225private slots:
226 void displayErrorPort(); 226 void displayErrorPort();
227 void confSync(); 227 void confSync();
228 228
229 229
230}; 230};
231 231
232 232
233class KSyncInterface 233class KSyncInterface
234{ 234{
235 public : 235 public :
236 virtual void removeSyncInfo( QString syncProfile) = 0; 236 virtual void removeSyncInfo( QString syncProfile) = 0;
237 virtual bool sync(KSyncManager* manager, QString filename, int mode, QString resource) = 0; 237 virtual bool sync(KSyncManager* manager, QString filename, int mode, QString resource) = 0;
238 virtual bool syncExternal(KSyncManager* manager, QString resource) 238 virtual bool syncExternal(KSyncManager* /*manager*/, QString /*resource*/)
239 { 239 {
240 // empty implementation, because some syncable applications do not 240 // empty implementation, because some syncable applications do not
241 // have an external(sharpdtm) syncmode, like pwmanager. 241 // have an external(sharpdtm) syncmode, like pwmanager.
242 return false; 242 return false;
243 } 243 }
244 244
245 245
246}; 246};
247 247
248 248
249#endif 249#endif