summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-09-25 02:09:22 (UTC)
committer zautrix <zautrix>2005-09-25 02:09:22 (UTC)
commit3bbc14431e854bc3d8870b5ba12d64f6e1af6eb6 (patch) (unidiff)
tree0d88d48dc1b9198c9c2deed6b55c70deffcfeadd
parent181bc87d92ecc48cb07c288cb2d135d8fde56716 (diff)
downloadkdepimpi-3bbc14431e854bc3d8870b5ba12d64f6e1af6eb6.zip
kdepimpi-3bbc14431e854bc3d8870b5ba12d64f6e1af6eb6.tar.gz
kdepimpi-3bbc14431e854bc3d8870b5ba12d64f6e1af6eb6.tar.bz2
todo timer fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/main.cpp3
-rw-r--r--korganizer/mainwindow.cpp15
-rw-r--r--libkcal/todo.cpp12
3 files changed, 26 insertions, 4 deletions
diff --git a/korganizer/main.cpp b/korganizer/main.cpp
index a96f7c2..9410c6a 100644
--- a/korganizer/main.cpp
+++ b/korganizer/main.cpp
@@ -1,114 +1,117 @@
1 1
2 2
3#ifndef DESKTOP_VERSION 3#ifndef DESKTOP_VERSION
4#include <qpe/qpeapplication.h> 4#include <qpe/qpeapplication.h>
5#include <qcopchannel_qws.h> 5#include <qcopchannel_qws.h>
6#include <qpe/global.h> 6#include <qpe/global.h>
7#include <stdlib.h> 7#include <stdlib.h>
8#else 8#else
9#include <qapplication.h> 9#include <qapplication.h>
10#include <qstring.h> 10#include <qstring.h>
11#include <qwindowsstyle.h> 11#include <qwindowsstyle.h>
12#include <qplatinumstyle.h> 12#include <qplatinumstyle.h>
13#include <qsgistyle.h> 13#include <qsgistyle.h>
14#include <stdlib.h> 14#include <stdlib.h>
15#endif 15#endif
16#include <qtextcodec.h> 16#include <qtextcodec.h>
17 17
18#include <qdir.h> 18#include <qdir.h>
19#include <kstandarddirs.h> 19#include <kstandarddirs.h>
20#include <kglobal.h> 20#include <kglobal.h>
21#include <stdio.h> 21#include <stdio.h>
22#include "mainwindow.h" 22#include "mainwindow.h"
23#include <libkdepim/kpimglobalprefs.h> 23#include <libkdepim/kpimglobalprefs.h>
24void dumpMissing(); 24void dumpMissing();
25 25
26 26
27int main( int argc, char **argv ) 27int main( int argc, char **argv )
28{ 28{
29#ifndef DESKTOP_VERSION 29#ifndef DESKTOP_VERSION
30 QPEApplication a( argc, argv ); 30 QPEApplication a( argc, argv );
31 a.setKeepRunning (); 31 a.setKeepRunning ();
32#else 32#else
33 QApplication a( argc, argv ); 33 QApplication a( argc, argv );
34 QApplication::setStyle( new QPlatinumStyle ()); 34 QApplication::setStyle( new QPlatinumStyle ());
35#ifdef _WIN32_ 35#ifdef _WIN32_
36 QString hdir ( getenv( "HOME") ); 36 QString hdir ( getenv( "HOME") );
37 if ( hdir.isEmpty() ) { 37 if ( hdir.isEmpty() ) {
38 QString hd ("C:/" ); 38 QString hd ("C:/" );
39 //QMessageBox::information(0,"hh",QDir::homeDirPath()+" xx" +hd ); 39 //QMessageBox::information(0,"hh",QDir::homeDirPath()+" xx" +hd );
40 if ( QDir::homeDirPath().lower() == hd.lower() ) { 40 if ( QDir::homeDirPath().lower() == hd.lower() ) {
41 _putenv( "HOME=C:"); 41 _putenv( "HOME=C:");
42 //QMessageBox::information(0,"hh",QString ( getenv( "HOME") ) ); 42 //QMessageBox::information(0,"hh",QString ( getenv( "HOME") ) );
43 } 43 }
44 } else { 44 } else {
45 QDir app_dir; 45 QDir app_dir;
46 if ( !app_dir.exists(hdir) ) 46 if ( !app_dir.exists(hdir) )
47 app_dir.mkdir (hdir); 47 app_dir.mkdir (hdir);
48 } 48 }
49#endif 49#endif
50#endif 50#endif
51 bool exitHelp = false; 51 bool exitHelp = false;
52 if ( argc > 1 ) { 52 if ( argc > 1 ) {
53 QString command = argv[1]; 53 QString command = argv[1];
54 if ( command == "-help" ){ 54 if ( command == "-help" ){
55 printf("KO/Pi command line commands:\n"); 55 printf("KO/Pi command line commands:\n");
56 printf(" no command: Start KO/Pi in usual way\n"); 56 printf(" no command: Start KO/Pi in usual way\n");
57 printf(" -help: This output\n"); 57 printf(" -help: This output\n");
58 printf("Next Option: Open or Show after start:\n"); 58 printf("Next Option: Open or Show after start:\n");
59 printf(" -newTodo: New Todo dialog\n"); 59 printf(" -newTodo: New Todo dialog\n");
60 printf(" -newEvent: New Event dialog\n"); 60 printf(" -newEvent: New Event dialog\n");
61 printf(" -showList: List view\n"); 61 printf(" -showList: List view\n");
62 printf(" -showDay: Day view\n"); 62 printf(" -showDay: Day view\n");
63 printf(" -showWWeek: Work Week view\n"); 63 printf(" -showWWeek: Work Week view\n");
64 printf(" -showWeek: Week view\n"); 64 printf(" -showWeek: Week view\n");
65 printf(" -showTodo: Todo view\n"); 65 printf(" -showTodo: Todo view\n");
66 printf(" -showJournal: Journal view\n"); 66 printf(" -showJournal: Journal view\n");
67 printf(" -showKO: Next Days view\n"); 67 printf(" -showKO: Next Days view\n");
68 printf(" -showWNext: What's Next view\n"); 68 printf(" -showWNext: What's Next view\n");
69 printf(" -showNextXView: Next X View\n"); 69 printf(" -showNextXView: Next X View\n");
70 printf(" -new[Y] and -show[X] may be used togehther\n"); 70 printf(" -new[Y] and -show[X] may be used togehther\n");
71 printf(" KO/Pi is exiting now. Bye!\n"); 71 printf(" KO/Pi is exiting now. Bye!\n");
72 exitHelp = true; 72 exitHelp = true;
73 } 73 }
74 } 74 }
75 if ( ! exitHelp ) { 75 if ( ! exitHelp ) {
76 KGlobal::setAppName( "korganizer" ); 76 KGlobal::setAppName( "korganizer" );
77 QString fileName ; 77 QString fileName ;
78#ifndef DESKTOP_VERSION 78#ifndef DESKTOP_VERSION
79 fileName = getenv("QPEDIR"); 79 fileName = getenv("QPEDIR");
80 KGlobal::iconLoader()->setIconPath( fileName +"/pics/kdepim/korganizer/"); 80 KGlobal::iconLoader()->setIconPath( fileName +"/pics/kdepim/korganizer/");
81#else 81#else
82 fileName = qApp->applicationDirPath () + "/kdepim/korganizer/"; 82 fileName = qApp->applicationDirPath () + "/kdepim/korganizer/";
83 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 83 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
84#endif 84#endif
85 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "korganizer"))); 85 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "korganizer")));
86 86
87 QApplication::setFont( KPimGlobalPrefs::instance()->mApplicationFont ); 87 QApplication::setFont( KPimGlobalPrefs::instance()->mApplicationFont );
88 KPimGlobalPrefs::instance()->setGlobalConfig(); 88 KPimGlobalPrefs::instance()->setGlobalConfig();
89 MainWindow m; 89 MainWindow m;
90#ifndef DESKTOP_VERSION 90#ifndef DESKTOP_VERSION
91 91
92 QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(receiveStart( const QCString&, const QByteArray& ))); 92 QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(receiveStart( const QCString&, const QByteArray& )));
93 a.showMainWidget(&m ); 93 a.showMainWidget(&m );
94#else 94#else
95 a.setMainWidget(&m ); 95 a.setMainWidget(&m );
96 m.show(); 96 m.show();
97 //m.resize( 800, 600 ); 97 //m.resize( 800, 600 );
98 //QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); 98 //QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
99#endif 99#endif
100 if ( argc > 1 ) { 100 if ( argc > 1 ) {
101 QCString command = argv[1]; 101 QCString command = argv[1];
102 if ( argc > 2 ) 102 if ( argc > 2 )
103 command += argv[2]; 103 command += argv[2];
104 m.recieve(command, QByteArray() ); 104 m.recieve(command, QByteArray() );
105 105
106 } 106 }
107 107
108#ifndef DESKTOP_VERSION
109 QPEApplication::setTempScreenSaverMode ( QPEApplication::Disable );
110#endif
108 a.exec(); 111 a.exec();
109 dumpMissing(); 112 dumpMissing();
110 113
111 KPimGlobalPrefs::instance()->writeConfig(); 114 KPimGlobalPrefs::instance()->writeConfig();
112 } 115 }
113 qDebug("KO: Bye! "); 116 qDebug("KO: Bye! ");
114} 117}
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index d1e369c..05e5087 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,285 +1,285 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpetoolbar.h> 24#include <qpe/qpetoolbar.h>
25#include <qpe/resource.h> 25#include <qpe/resource.h>
26#include <qpe/qpeapplication.h> 26#include <qpe/qpeapplication.h>
27#include <qtopia/alarmserver.h> 27#include <qtopia/alarmserver.h>
28#include <qtopia/qcopenvelope_qws.h> 28#include <qtopia/qcopenvelope_qws.h>
29#include <unistd.h> // for sleep 29//#include <unistd.h> // for sleep
30#else 30#else
31#include <qtoolbar.h> 31#include <qtoolbar.h>
32#include <qapplication.h> 32#include <qapplication.h>
33//#include <resource.h> 33//#include <resource.h>
34 34
35#endif 35#endif
36#include <libkcal/calendarlocal.h> 36#include <libkcal/calendarlocal.h>
37#include <libkcal/todo.h> 37#include <libkcal/todo.h>
38#include <libkcal/phoneformat.h> 38#include <libkcal/phoneformat.h>
39#include <libkdepim/ksyncprofile.h> 39#include <libkdepim/ksyncprofile.h>
40#include <libkdepim/phoneaccess.h> 40#include <libkdepim/phoneaccess.h>
41#include <libkcal/kincidenceformatter.h> 41#include <libkcal/kincidenceformatter.h>
42#include <libkdepim/kpimglobalprefs.h> 42#include <libkdepim/kpimglobalprefs.h>
43 43
44#include "calendarview.h" 44#include "calendarview.h"
45#include "koviewmanager.h" 45#include "koviewmanager.h"
46#include "datenavigator.h" 46#include "datenavigator.h"
47#include "koagendaview.h" 47#include "koagendaview.h"
48#include "kojournalview.h" 48#include "kojournalview.h"
49#include "koagenda.h" 49#include "koagenda.h"
50#include "kodialogmanager.h" 50#include "kodialogmanager.h"
51#include "kdialogbase.h" 51#include "kdialogbase.h"
52#include "kapplication.h" 52#include "kapplication.h"
53#include "kofilterview.h" 53#include "kofilterview.h"
54#include "kstandarddirs.h" 54#include "kstandarddirs.h"
55#include "koprefs.h" 55#include "koprefs.h"
56#include "kfiledialog.h" 56#include "kfiledialog.h"
57#include "koglobals.h" 57#include "koglobals.h"
58#include "kglobal.h" 58#include "kglobal.h"
59#include "ktoolbar.h" 59#include "ktoolbar.h"
60#include "klocale.h" 60#include "klocale.h"
61#include "kconfig.h" 61#include "kconfig.h"
62#include "externalapphandler.h" 62#include "externalapphandler.h"
63#include <kglobalsettings.h> 63#include <kglobalsettings.h>
64 64
65using namespace KCal; 65using namespace KCal;
66#ifndef _WIN32_ 66#ifndef _WIN32_
67#include <unistd.h> 67#include <unistd.h>
68#else 68#else
69#ifdef _OL_IMPORT_ 69#ifdef _OL_IMPORT_
70#include "koimportoldialog.h" 70#include "koimportoldialog.h"
71#endif 71#endif
72#endif 72#endif
73#include "mainwindow.h" 73#include "mainwindow.h"
74 74
75 75
76class KOex2phonePrefs : public QDialog 76class KOex2phonePrefs : public QDialog
77{ 77{
78 public: 78 public:
79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 79 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
80 QDialog( parent, name, true ) 80 QDialog( parent, name, true )
81 { 81 {
82 setCaption( i18n("Export to phone options") ); 82 setCaption( i18n("Export to phone options") );
83 QVBoxLayout* lay = new QVBoxLayout( this ); 83 QVBoxLayout* lay = new QVBoxLayout( this );
84 lay->setSpacing( 3 ); 84 lay->setSpacing( 3 );
85 lay->setMargin( 3 ); 85 lay->setMargin( 3 );
86 QLabel *lab; 86 QLabel *lab;
87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 87 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
88 lab->setAlignment (AlignHCenter ); 88 lab->setAlignment (AlignHCenter );
89 QHBox* temphb; 89 QHBox* temphb;
90 temphb = new QHBox( this ); 90 temphb = new QHBox( this );
91 new QLabel( i18n("I/O device: "), temphb ); 91 new QLabel( i18n("I/O device: "), temphb );
92 mPhoneDevice = new QLineEdit( temphb); 92 mPhoneDevice = new QLineEdit( temphb);
93 lay->addWidget( temphb ); 93 lay->addWidget( temphb );
94 temphb = new QHBox( this ); 94 temphb = new QHBox( this );
95 new QLabel( i18n("Connection: "), temphb ); 95 new QLabel( i18n("Connection: "), temphb );
96 mPhoneConnection = new QLineEdit( temphb); 96 mPhoneConnection = new QLineEdit( temphb);
97 lay->addWidget( temphb ); 97 lay->addWidget( temphb );
98 temphb = new QHBox( this ); 98 temphb = new QHBox( this );
99 new QLabel( i18n("Model(opt.): "), temphb ); 99 new QLabel( i18n("Model(opt.): "), temphb );
100 mPhoneModel = new QLineEdit( temphb); 100 mPhoneModel = new QLineEdit( temphb);
101 lay->addWidget( temphb ); 101 lay->addWidget( temphb );
102 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 102 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
103 mWriteBackFuture->setChecked( true ); 103 mWriteBackFuture->setChecked( true );
104 lay->addWidget( mWriteBackFuture ); 104 lay->addWidget( mWriteBackFuture );
105 temphb = new QHBox( this ); 105 temphb = new QHBox( this );
106 new QLabel( i18n("Max. weeks in future: ") , temphb ); 106 new QLabel( i18n("Max. weeks in future: ") , temphb );
107 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 107 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
108 mWriteBackFutureWeeks->setValue( 8 ); 108 mWriteBackFutureWeeks->setValue( 8 );
109 lay->addWidget( temphb ); 109 lay->addWidget( temphb );
110 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 110 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
111 lab->setAlignment (AlignHCenter ); 111 lab->setAlignment (AlignHCenter );
112 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 112 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
113 lay->addWidget( ok ); 113 lay->addWidget( ok );
114 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 114 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
115 lay->addWidget( cancel ); 115 lay->addWidget( cancel );
116 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 116 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
117 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 117 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
118 resize( 220, 240 ); 118 resize( 220, 240 );
119 qApp->processEvents(); 119 qApp->processEvents();
120 int dw = QApplication::desktop()->width(); 120 int dw = QApplication::desktop()->width();
121 int dh = QApplication::desktop()->height(); 121 int dh = QApplication::desktop()->height();
122 move( (dw-width())/2, (dh - height() )/2 ); 122 move( (dw-width())/2, (dh - height() )/2 );
123 } 123 }
124 124
125public: 125public:
126 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 126 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
127 QCheckBox* mWriteBackFuture; 127 QCheckBox* mWriteBackFuture;
128 QSpinBox* mWriteBackFutureWeeks; 128 QSpinBox* mWriteBackFutureWeeks;
129}; 129};
130 130
131QPixmap* sgListViewCompletedPix[6]; 131QPixmap* sgListViewCompletedPix[6];
132QPixmap* sgListViewJournalPix; 132QPixmap* sgListViewJournalPix;
133 133
134 134
135int globalFlagBlockStartup; 135int globalFlagBlockStartup;
136MainWindow::MainWindow( QWidget *parent, const char *name ) : 136MainWindow::MainWindow( QWidget *parent, const char *name ) :
137 QMainWindow( parent, name ) 137 QMainWindow( parent, name )
138{ 138{
139 sgListViewCompletedPix[5] = &listviewPix; 139 sgListViewCompletedPix[5] = &listviewPix;
140 sgListViewCompletedPix[0] = &listviewPix0; 140 sgListViewCompletedPix[0] = &listviewPix0;
141 sgListViewCompletedPix[1] = &listviewPix20; 141 sgListViewCompletedPix[1] = &listviewPix20;
142 sgListViewCompletedPix[2] = &listviewPix40; 142 sgListViewCompletedPix[2] = &listviewPix40;
143 sgListViewCompletedPix[3] = &listviewPix60; 143 sgListViewCompletedPix[3] = &listviewPix60;
144 sgListViewCompletedPix[4] = &listviewPix80; 144 sgListViewCompletedPix[4] = &listviewPix80;
145 //int size = 12; 145 //int size = 12;
146 { 146 {
147 sgListViewCompletedPix[5]->resize( 11, 11 ); 147 sgListViewCompletedPix[5]->resize( 11, 11 );
148 sgListViewCompletedPix[5]->fill( Qt::white ); 148 sgListViewCompletedPix[5]->fill( Qt::white );
149 QPainter p ( sgListViewCompletedPix[5] ); 149 QPainter p ( sgListViewCompletedPix[5] );
150 p.drawRect( 0,0,11,11); 150 p.drawRect( 0,0,11,11);
151 p.drawLine ( 2, 5, 4 , 7 ) ; 151 p.drawLine ( 2, 5, 4 , 7 ) ;
152 p.drawLine ( 4 , 7 , 8, 3) ; 152 p.drawLine ( 4 , 7 , 8, 3) ;
153 int iii = 0; 153 int iii = 0;
154 for ( iii = 0; iii < 5; ++iii ) { 154 for ( iii = 0; iii < 5; ++iii ) {
155 sgListViewCompletedPix[iii]->resize( 11, 11 ); 155 sgListViewCompletedPix[iii]->resize( 11, 11 );
156 sgListViewCompletedPix[iii]->fill( Qt::white ); 156 sgListViewCompletedPix[iii]->fill( Qt::white );
157 QPainter p ( sgListViewCompletedPix[iii] ); 157 QPainter p ( sgListViewCompletedPix[iii] );
158 p.drawRect( 0,0,11,11); 158 p.drawRect( 0,0,11,11);
159 if ( iii ) 159 if ( iii )
160 p.fillRect( 1,1,iii*2,9,Qt::gray ); 160 p.fillRect( 1,1,iii*2,9,Qt::gray );
161 } 161 }
162 sgListViewJournalPix = &journalPix; 162 sgListViewJournalPix = &journalPix;
163 sgListViewJournalPix->resize( 11, 11 ); 163 sgListViewJournalPix->resize( 11, 11 );
164 sgListViewJournalPix->fill( Qt::white ); 164 sgListViewJournalPix->fill( Qt::white );
165 { 165 {
166 QPainter p ( sgListViewJournalPix ); 166 QPainter p ( sgListViewJournalPix );
167 p.drawRect( 0,0,11,11); 167 p.drawRect( 0,0,11,11);
168 p.drawLine( 2,3,5,3); 168 p.drawLine( 2,3,5,3);
169 p.drawLine( 2,5,8,5); 169 p.drawLine( 2,5,8,5);
170 p.drawLine( 2,7,6,7); 170 p.drawLine( 2,7,6,7);
171 } 171 }
172 } 172 }
173 mClosed = false; 173 mClosed = false;
174 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 174 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
175 QString confFile = locateLocal("config","korganizerrc"); 175 QString confFile = locateLocal("config","korganizerrc");
176 QFileInfo finf ( confFile ); 176 QFileInfo finf ( confFile );
177 bool showWarning = !finf.exists(); 177 bool showWarning = !finf.exists();
178 setIcon(SmallIcon( "ko24" ) ); 178 setIcon(SmallIcon( "ko24" ) );
179 mBlockAtStartup = true; 179 mBlockAtStartup = true;
180 mFlagKeyPressed = false; 180 mFlagKeyPressed = false;
181 setCaption("KO/Pi"); 181 setCaption("KO/Pi");
182 KOPrefs *p = KOPrefs::instance(); 182 KOPrefs *p = KOPrefs::instance();
183 //KPimGlobalPrefs::instance()->setGlobalConfig(); 183 //KPimGlobalPrefs::instance()->setGlobalConfig();
184 p->mCurrentDisplayedView = 0; 184 p->mCurrentDisplayedView = 0;
185 if ( p->mHourSize > 22 ) 185 if ( p->mHourSize > 22 )
186 p->mHourSize = 22; 186 p->mHourSize = 22;
187 QMainWindow::ToolBarDock tbd; 187 QMainWindow::ToolBarDock tbd;
188 if ( p->mToolBarHor ) { 188 if ( p->mToolBarHor ) {
189 if ( p->mToolBarUp ) 189 if ( p->mToolBarUp )
190 tbd = Bottom; 190 tbd = Bottom;
191 else 191 else
192 tbd = Top; 192 tbd = Top;
193 } 193 }
194 else { 194 else {
195 if ( p->mToolBarUp ) 195 if ( p->mToolBarUp )
196 tbd = Right; 196 tbd = Right;
197 else 197 else
198 tbd = Left; 198 tbd = Left;
199 } 199 }
200 if ( KOPrefs::instance()->mUseAppColors ) 200 if ( KOPrefs::instance()->mUseAppColors )
201 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 201 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
202 globalFlagBlockStartup = 1; 202 globalFlagBlockStartup = 1;
203 iconToolBar = new QPEToolBar( this ); 203 iconToolBar = new QPEToolBar( this );
204 addToolBar (iconToolBar , tbd ); 204 addToolBar (iconToolBar , tbd );
205 205
206#ifdef DESKTOP_VERSION 206#ifdef DESKTOP_VERSION
207 if ( KOPrefs::instance()->mShowIconFilter ) 207 if ( KOPrefs::instance()->mShowIconFilter )
208#else 208#else
209 if ( KOPrefs::instance()->mShowIconFilter || ( !p->mShowIconOnetoolbar &&!p->mShowIconFilterview ) ) 209 if ( KOPrefs::instance()->mShowIconFilter || ( !p->mShowIconOnetoolbar &&!p->mShowIconFilterview ) )
210#endif 210#endif
211 211
212{ 212{
213 if ( p->mToolBarHorF ) { 213 if ( p->mToolBarHorF ) {
214 if ( p->mToolBarUpF ) 214 if ( p->mToolBarUpF )
215 tbd = Bottom; 215 tbd = Bottom;
216 else 216 else
217 tbd = Top; 217 tbd = Top;
218 } 218 }
219 else { 219 else {
220 if ( p->mToolBarUpF ) 220 if ( p->mToolBarUpF )
221 tbd = Right; 221 tbd = Right;
222 else 222 else
223 tbd = Left; 223 tbd = Left;
224 } 224 }
225 filterToolBar = new QPEToolBar ( this ); 225 filterToolBar = new QPEToolBar ( this );
226 filterMenubar = new KMenuBar( 0 ); 226 filterMenubar = new KMenuBar( 0 );
227 QFontMetrics fm ( filterMenubar->font() ); 227 QFontMetrics fm ( filterMenubar->font() );
228#ifndef DESKTOP_VERSION 228#ifndef DESKTOP_VERSION
229 filterToolBar->setFocusPolicy( NoFocus ); 229 filterToolBar->setFocusPolicy( NoFocus );
230 filterMenubar->setFocusPolicy( NoFocus ); 230 filterMenubar->setFocusPolicy( NoFocus );
231#endif 231#endif
232 filterPopupMenu = new QPopupMenu( this ); 232 filterPopupMenu = new QPopupMenu( this );
233 filterMenubar->insertItem( i18n("No Filter"), filterPopupMenu,0 ); 233 filterMenubar->insertItem( i18n("No Filter"), filterPopupMenu,0 );
234 QString addTest = "A"; 234 QString addTest = "A";
235 filterMenubar->setMinimumWidth( fm.width( i18n("No Filter")+addTest ) ); 235 filterMenubar->setMinimumWidth( fm.width( i18n("No Filter")+addTest ) );
236#ifdef DESKTOP_VERSION 236#ifdef DESKTOP_VERSION
237 addTest = "AAAAAABBBCCCx"; 237 addTest = "AAAAAABBBCCCx";
238#else 238#else
239 addTest = "AAAAAx"; 239 addTest = "AAAAAx";
240#endif 240#endif
241 filterMenubar->setMaximumWidth( fm.width( i18n("No Filter")+addTest ) ); 241 filterMenubar->setMaximumWidth( fm.width( i18n("No Filter")+addTest ) );
242 addToolBar (filterToolBar , tbd ); 242 addToolBar (filterToolBar , tbd );
243 connect ( filterPopupMenu , SIGNAL( activated ( int ) ), this, SLOT (selectFilterPopup( int ) ) ); 243 connect ( filterPopupMenu , SIGNAL( activated ( int ) ), this, SLOT (selectFilterPopup( int ) ) );
244 connect ( filterPopupMenu , SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenuPopup() ) ); 244 connect ( filterPopupMenu , SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenuPopup() ) );
245 if ( !KOPrefs::instance()->mShowIconFilter && !p->mShowIconOnetoolbar ) 245 if ( !KOPrefs::instance()->mShowIconFilter && !p->mShowIconOnetoolbar )
246 filterToolBar->hide(); 246 filterToolBar->hide();
247 } else { 247 } else {
248 filterToolBar = 0; 248 filterToolBar = 0;
249 filterMenubar = 0; 249 filterMenubar = 0;
250 filterPopupMenu = 0; 250 filterPopupMenu = 0;
251 } 251 }
252 if ( p->mShowIconOnetoolbar ) { 252 if ( p->mShowIconOnetoolbar ) {
253 viewToolBar = iconToolBar ; 253 viewToolBar = iconToolBar ;
254 navigatorToolBar = iconToolBar ; 254 navigatorToolBar = iconToolBar ;
255 } else { 255 } else {
256#ifndef DESKTOP_VERSION 256#ifndef DESKTOP_VERSION
257 setToolBarsMovable( false ); 257 setToolBarsMovable( false );
258#endif 258#endif
259 if ( p->mToolBarHorV ) { 259 if ( p->mToolBarHorV ) {
260 if ( p->mToolBarUpV ) 260 if ( p->mToolBarUpV )
261 tbd = Bottom; 261 tbd = Bottom;
262 else 262 else
263 tbd = Top; 263 tbd = Top;
264 } 264 }
265 else { 265 else {
266 if ( p->mToolBarUpV ) 266 if ( p->mToolBarUpV )
267 tbd = Right; 267 tbd = Right;
268 else 268 else
269 tbd = Left; 269 tbd = Left;
270 } 270 }
271 viewToolBar = new QPEToolBar( this ); 271 viewToolBar = new QPEToolBar( this );
272 addToolBar (viewToolBar , tbd ); 272 addToolBar (viewToolBar , tbd );
273 if ( p->mToolBarHorN ) { 273 if ( p->mToolBarHorN ) {
274 if ( p->mToolBarUpN ) 274 if ( p->mToolBarUpN )
275 tbd = Bottom; 275 tbd = Bottom;
276 else 276 else
277 tbd = Top; 277 tbd = Top;
278 } 278 }
279 else { 279 else {
280 if ( p->mToolBarUpN ) 280 if ( p->mToolBarUpN )
281 tbd = Right; 281 tbd = Right;
282 else 282 else
283 tbd = Left; 283 tbd = Left;
284 } 284 }
285 navigatorToolBar = new QPEToolBar( this ); 285 navigatorToolBar = new QPEToolBar( this );
@@ -1792,975 +1792,986 @@ void MainWindow::processIncidenceSelection( Incidence *incidence )
1792 bool ok; 1792 bool ok;
1793 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1793 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1794 if ( ok ) { 1794 if ( ok ) {
1795 int years = noc.date().year() - incidence->dtStart().date().year(); 1795 int years = noc.date().year() - incidence->dtStart().date().year();
1796 startString += i18n(" (%1 y.)"). arg( years ); 1796 startString += i18n(" (%1 y.)"). arg( years );
1797 } 1797 }
1798 } 1798 }
1799 else 1799 else
1800 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1800 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1801 } 1801 }
1802 } 1802 }
1803 else { 1803 else {
1804 if ( (( KCal::Todo*)incidence)->percentComplete() == 100 ) 1804 if ( (( KCal::Todo*)incidence)->percentComplete() == 100 )
1805 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+i18n("completed on %1").arg( (( KCal::Todo*)incidence)->completedStr(true) ); 1805 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+i18n("completed on %1").arg( (( KCal::Todo*)incidence)->completedStr(true) );
1806 else 1806 else
1807 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1807 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1808 } 1808 }
1809 if ( !incidence->location().isEmpty() ) 1809 if ( !incidence->location().isEmpty() )
1810 startString += " (" +incidence->location()+")"; 1810 startString += " (" +incidence->location()+")";
1811 setCaption( incidence->summary()+startString); 1811 setCaption( incidence->summary()+startString);
1812 enableIncidenceActions( true ); 1812 enableIncidenceActions( true );
1813 if ( incidence->typeID() == eventID ) { 1813 if ( incidence->typeID() == eventID ) {
1814 mShowAction->setMenuText( i18n("Show Event") ); 1814 mShowAction->setMenuText( i18n("Show Event") );
1815 mNewSubTodoAction->setEnabled( false ); 1815 mNewSubTodoAction->setEnabled( false );
1816 } else if ( incidence->typeID() == todoID ) { 1816 } else if ( incidence->typeID() == todoID ) {
1817 mShowAction->setMenuText( i18n("Show Todo") ); 1817 mShowAction->setMenuText( i18n("Show Todo") );
1818 mNewSubTodoAction->setEnabled( true ); 1818 mNewSubTodoAction->setEnabled( true );
1819 } else { 1819 } else {
1820 mShowAction->setMenuText( i18n("Show") ); 1820 mShowAction->setMenuText( i18n("Show") );
1821 mNewSubTodoAction->setEnabled( false ); 1821 mNewSubTodoAction->setEnabled( false );
1822 } 1822 }
1823#ifdef DESKTOP_VERSION 1823#ifdef DESKTOP_VERSION
1824 static QPixmap jP = SmallIcon( "journal" ); 1824 static QPixmap jP = SmallIcon( "journal" );
1825 static QPixmap eP = SmallIcon( "newevent" ); 1825 static QPixmap eP = SmallIcon( "newevent" );
1826 static QPixmap tP = SmallIcon( "newtodo" ); 1826 static QPixmap tP = SmallIcon( "newtodo" );
1827 QIconSet icon; 1827 QIconSet icon;
1828 if ( incidence->typeID() == todoID ) 1828 if ( incidence->typeID() == todoID )
1829 icon = QIconSet ( tP ); 1829 icon = QIconSet ( tP );
1830 else if ( incidence->typeID() == eventID ) 1830 else if ( incidence->typeID() == eventID )
1831 icon = QIconSet ( eP ); 1831 icon = QIconSet ( eP );
1832 else if ( incidence->typeID() == journalID ) 1832 else if ( incidence->typeID() == journalID )
1833 icon = QIconSet ( jP ); 1833 icon = QIconSet ( jP );
1834 mPrintSelAction->setIconSet ( icon ); 1834 mPrintSelAction->setIconSet ( icon );
1835#endif 1835#endif
1836} 1836}
1837 1837
1838void MainWindow::enableIncidenceActions( bool enabled ) 1838void MainWindow::enableIncidenceActions( bool enabled )
1839{ 1839{
1840 mShowAction->setEnabled( enabled ); 1840 mShowAction->setEnabled( enabled );
1841 mEditAction->setEnabled( enabled ); 1841 mEditAction->setEnabled( enabled );
1842 mDeleteAction->setEnabled( enabled ); 1842 mDeleteAction->setEnabled( enabled );
1843 1843
1844 mCloneAction->setEnabled( enabled ); 1844 mCloneAction->setEnabled( enabled );
1845 mMoveAction->setEnabled( enabled ); 1845 mMoveAction->setEnabled( enabled );
1846#ifndef DESKTOP_VERSION 1846#ifndef DESKTOP_VERSION
1847 mBeamAction->setEnabled( enabled ); 1847 mBeamAction->setEnabled( enabled );
1848#else 1848#else
1849 mPrintSelAction->setEnabled( enabled ); 1849 mPrintSelAction->setEnabled( enabled );
1850#endif 1850#endif
1851 mCancelAction->setEnabled( enabled ); 1851 mCancelAction->setEnabled( enabled );
1852} 1852}
1853 1853
1854void MainWindow::importOL() 1854void MainWindow::importOL()
1855{ 1855{
1856#ifdef _OL_IMPORT_ 1856#ifdef _OL_IMPORT_
1857 mView->clearAllViews(); 1857 mView->clearAllViews();
1858 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1858 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1859 id->exec(); 1859 id->exec();
1860 delete id; 1860 delete id;
1861 mView->calendar()->checkAlarmForIncidence( 0, true ); 1861 mView->calendar()->checkAlarmForIncidence( 0, true );
1862 mView->updateView(); 1862 mView->updateView();
1863#endif 1863#endif
1864} 1864}
1865void MainWindow::importBday() 1865void MainWindow::importBday()
1866{ 1866{
1867 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"), 1867 int result = QMessageBox::warning( this, i18n("KO/Pi import information!"),
1868 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1868 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1869 i18n("Import!"), i18n("Cancel"), 0, 1869 i18n("Import!"), i18n("Cancel"), 0,
1870 0, 1 ); 1870 0, 1 );
1871 if ( result == 0 ) { 1871 if ( result == 0 ) {
1872 mView->importBday(); 1872 mView->importBday();
1873 1873
1874 } 1874 }
1875 1875
1876 1876
1877} 1877}
1878void MainWindow::importQtopia() 1878void MainWindow::importQtopia()
1879{ 1879{
1880 //#ifndef DESKTOP_VERSION 1880 //#ifndef DESKTOP_VERSION
1881 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); 1881 QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing");
1882#ifdef DESKTOP_VERSION 1882#ifdef DESKTOP_VERSION
1883 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); 1883 mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml");
1884#endif 1884#endif
1885 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1885 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1886 i18n("Import!"), i18n("Cancel"), 0, 1886 i18n("Import!"), i18n("Cancel"), 0,
1887 0, 1 ); 1887 0, 1 );
1888 if ( result == 0 ) { 1888 if ( result == 0 ) {
1889#ifndef DESKTOP_VERSION 1889#ifndef DESKTOP_VERSION
1890 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1890 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1891 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1891 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1892 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1892 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1893#else 1893#else
1894 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1894 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1895 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1895 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1896 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1896 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1897#endif 1897#endif
1898 mView->importQtopia( categories, datebook, todolist ); 1898 mView->importQtopia( categories, datebook, todolist );
1899 } 1899 }
1900 mView->calendar()->reInitAlarmSettings(); 1900 mView->calendar()->reInitAlarmSettings();
1901#if 0 1901#if 0
1902 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1902 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1903 i18n("Not supported \non desktop!\n"), 1903 i18n("Not supported \non desktop!\n"),
1904 i18n("Ok"), i18n("Cancel"), 0, 1904 i18n("Ok"), i18n("Cancel"), 0,
1905 0, 1 ); 1905 0, 1 );
1906 1906
1907#endif 1907#endif
1908} 1908}
1909 1909
1910void MainWindow::saveOnClose() 1910void MainWindow::saveOnClose()
1911{ 1911{
1912 KOPrefs *p = KOPrefs::instance(); 1912 KOPrefs *p = KOPrefs::instance();
1913 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1913 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1914 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1914 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1915 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1915 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1916 if ( filterToolBar ) { 1916 if ( filterToolBar ) {
1917 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1917 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1918 } 1918 }
1919#ifdef DESKTOP_VERSION 1919#ifdef DESKTOP_VERSION
1920 1920
1921 QPoint myP; 1921 QPoint myP;
1922 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) ); 1922 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) );
1923 if ( p->mToolBarHor ) 1923 if ( p->mToolBarHor )
1924 p->mToolBarUp = myP.y() > height()/2; 1924 p->mToolBarUp = myP.y() > height()/2;
1925 else 1925 else
1926 p->mToolBarUp = myP.x() > width()/2; 1926 p->mToolBarUp = myP.x() > width()/2;
1927 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) ); 1927 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) );
1928 if ( p->mToolBarHorV ) 1928 if ( p->mToolBarHorV )
1929 p->mToolBarUpV = myP.y() > height()/2; 1929 p->mToolBarUpV = myP.y() > height()/2;
1930 else 1930 else
1931 p->mToolBarUpV = myP.x() > width()/2 ; 1931 p->mToolBarUpV = myP.x() > width()/2 ;
1932 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) ); 1932 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) );
1933 if ( p->mToolBarHorN ) 1933 if ( p->mToolBarHorN )
1934 p->mToolBarUpN = myP.y() > height()/2; 1934 p->mToolBarUpN = myP.y() > height()/2;
1935 else 1935 else
1936 p->mToolBarUpN = myP.x() > width()/2 ; 1936 p->mToolBarUpN = myP.x() > width()/2 ;
1937 if ( filterToolBar ) { 1937 if ( filterToolBar ) {
1938 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) ); 1938 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) );
1939 if ( p->mToolBarHorF ) 1939 if ( p->mToolBarHorF )
1940 p->mToolBarUpF = myP.y() > height()/2; 1940 p->mToolBarUpF = myP.y() > height()/2;
1941 else 1941 else
1942 p->mToolBarUpF = myP.x() > width()/2 ; 1942 p->mToolBarUpF = myP.x() > width()/2 ;
1943 } 1943 }
1944#else 1944#else
1945 if ( p->mToolBarHor ) 1945 if ( p->mToolBarHor )
1946 p->mToolBarUp = iconToolBar->y() > height()/2; 1946 p->mToolBarUp = iconToolBar->y() > height()/2;
1947 else 1947 else
1948 p->mToolBarUp = iconToolBar->x() > width()/2; 1948 p->mToolBarUp = iconToolBar->x() > width()/2;
1949 if ( p->mToolBarHorV ) 1949 if ( p->mToolBarHorV )
1950 p->mToolBarUpV = viewToolBar->y() > height()/2; 1950 p->mToolBarUpV = viewToolBar->y() > height()/2;
1951 else 1951 else
1952 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1952 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1953 1953
1954 if ( p->mToolBarHorN ) 1954 if ( p->mToolBarHorN )
1955 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1955 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1956 else 1956 else
1957 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1957 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1958 if ( filterToolBar ) { 1958 if ( filterToolBar ) {
1959 if ( p->mToolBarHorF ) 1959 if ( p->mToolBarHorF )
1960 p->mToolBarUpF = filterToolBar->y() > height()/2; 1960 p->mToolBarUpF = filterToolBar->y() > height()/2;
1961 else 1961 else
1962 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1962 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1963 } 1963 }
1964#endif 1964#endif
1965 save(); 1965 save();
1966 mView->writeSettings(); 1966 mView->writeSettings();
1967 mView->checkSuspendAlarm(); 1967 mView->checkSuspendAlarm();
1968} 1968}
1969void MainWindow::slotModifiedChanged( bool ) 1969void MainWindow::slotModifiedChanged( bool )
1970{ 1970{
1971 if ( mBlockAtStartup ) 1971 if ( mBlockAtStartup )
1972 return; 1972 return;
1973 1973
1974 int msec; 1974 int msec;
1975 if ( mCalendarModifiedFlag ) { 1975 if ( mCalendarModifiedFlag ) {
1976 //qDebug(" MainWindow timer is running "); 1976 //qDebug(" MainWindow timer is running ");
1977 return; 1977 return;
1978 } 1978 }
1979 // we store the changes after 1 minute, 1979 // we store the changes after 1 minute,
1980 // and for safety reasons after 10 minutes again 1980 // and for safety reasons after 10 minutes again
1981 if ( !mSyncManager->blockSave() ) 1981 if ( !mSyncManager->blockSave() )
1982 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1982 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1983 else 1983 else
1984 msec = 1000 * 600; 1984 msec = 1000 * 600;
1985 mSaveTimer.start( msec, true ); // 1 minute 1985 mSaveTimer.start( msec, true ); // 1 minute
1986 mSaveTimerStart = QDateTime::currentDateTime(); 1986 mSaveTimerStart = QDateTime::currentDateTime();
1987 mSaveDelay = msec/1000; 1987 mSaveDelay = msec/1000;
1988 qDebug("KO: Saving File in %d secs!", msec/1000); 1988 qDebug("KO: Saving File in %d secs!", msec/1000);
1989 mCalendarModifiedFlag = true; 1989 mCalendarModifiedFlag = true;
1990} 1990}
1991void MainWindow::saveStopTimer() 1991void MainWindow::saveStopTimer()
1992{ 1992{
1993 mSaveTimer.stop(); 1993 mSaveTimer.stop();
1994} 1994}
1995void MainWindow::backupAllFiles() 1995void MainWindow::backupAllFiles()
1996{ 1996{
1997 QDate reference ( 2000,1,1); 1997 QDate reference ( 2000,1,1);
1998 int daysTo = reference.daysTo ( QDate::currentDate() ); 1998 int daysTo = reference.daysTo ( QDate::currentDate() );
1999 setCaption(i18n("Creating backup ... please wait ..." )); 1999 setCaption(i18n("Creating backup ... please wait ..." ));
2000 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate); 2000 qDebug("KO: Last backup was %d days ago ", daysTo - KOPrefs::instance()->mLastBackupDate);
2001 // we need the file path, the backup dir and the number of bups as param 2001 // we need the file path, the backup dir and the number of bups as param
2002 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 2002 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
2003 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 2003 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
2004 bupDir = KGlobalSettings::backupDataDir(); 2004 bupDir = KGlobalSettings::backupDataDir();
2005 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 2005 int retval = KApplication::createBackup( defaultFileName(), bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
2006 if ( retval == 0 ) { 2006 if ( retval == 0 ) {
2007 setCaption(i18n("Backup cancelled" )); 2007 setCaption(i18n("Backup cancelled" ));
2008 qDebug("KO: Backup cancelled. Will try again tomorrow "); 2008 qDebug("KO: Backup cancelled. Will try again tomorrow ");
2009 // retval == 0 : backup skipped for today, try again tomorrow 2009 // retval == 0 : backup skipped for today, try again tomorrow
2010 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1; 2010 KOPrefs::instance()->mLastBackupDate = daysTo- KPimGlobalPrefs::instance()->mBackupDayCount+1;
2011 } else if ( retval == 1 ){ 2011 } else if ( retval == 1 ){
2012 qDebug("KO: Backup created."); 2012 qDebug("KO: Backup created.");
2013 // backup ok 2013 // backup ok
2014 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2014 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2015 KopiCalendarFile * cal = calendars.first(); 2015 KopiCalendarFile * cal = calendars.first();
2016 cal = calendars.next(); 2016 cal = calendars.next();
2017 while ( cal ) { 2017 while ( cal ) {
2018 if ( !cal->mErrorOnLoad ) { 2018 if ( !cal->mErrorOnLoad ) {
2019 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers ); 2019 KApplication::createBackup( cal->mFileName, bupDir, KPimGlobalPrefs::instance()->mBackupNumbers );
2020 } 2020 }
2021 cal = calendars.next(); 2021 cal = calendars.next();
2022 } 2022 }
2023 KOPrefs::instance()->mLastBackupDate = daysTo; 2023 KOPrefs::instance()->mLastBackupDate = daysTo;
2024 setCaption(i18n("Backup succesfully finished" )); 2024 setCaption(i18n("Backup succesfully finished" ));
2025 } else if ( retval == 2 ){ 2025 } else if ( retval == 2 ){
2026 setCaption(i18n("Backup globally disabled" )); 2026 setCaption(i18n("Backup globally disabled" ));
2027 qDebug("KO: Backup globally cancelled."); 2027 qDebug("KO: Backup globally cancelled.");
2028 // backup globally cancelled 2028 // backup globally cancelled
2029 KPimGlobalPrefs::instance()->mBackupEnabled = false; 2029 KPimGlobalPrefs::instance()->mBackupEnabled = false;
2030 } 2030 }
2031 // retval == 3: do nothing, try again later 2031 // retval == 3: do nothing, try again later
2032} 2032}
2033void MainWindow::save() 2033void MainWindow::save()
2034{ 2034{
2035 if ( mSaveDelay ) { 2035 if ( mSaveDelay ) {
2036 int elapsed = mSaveTimerStart.secsTo( QDateTime::currentDateTime() ); 2036 int elapsed = mSaveTimerStart.secsTo( QDateTime::currentDateTime() );
2037 if ( mSaveDelay < elapsed ) { 2037 if ( mSaveDelay < elapsed ) {
2038 qDebug("KO: Pending save after wakeup from suspend detected."); 2038 qDebug("KO: Pending save after wakeup from suspend detected.");
2039 qDebug("KO: Save delay %d sec. Elapsed save time %d sec.", mSaveDelay, elapsed ); 2039 qDebug("KO: Save delay %d sec. Elapsed save time %d sec.", mSaveDelay, elapsed );
2040 qDebug("KO: Restarting save timer to save in 10 sec."); 2040 qDebug("KO: Restarting save timer to save in 10 sec.");
2041 int msec = 10000; 2041 int msec = 10000;
2042 mSaveTimer.start( msec, true ); 2042 mSaveTimer.start( msec, true );
2043 mSaveTimerStart = QDateTime::currentDateTime(); 2043 mSaveTimerStart = QDateTime::currentDateTime();
2044 mSaveDelay = msec/1000; 2044 mSaveDelay = msec/1000;
2045 return; 2045 return;
2046 } 2046 }
2047 } 2047 }
2048
2049 if ( mView->viewManager()->journalView() ) 2048 if ( mView->viewManager()->journalView() )
2050 mView->viewManager()->journalView()->checkModified(); 2049 mView->viewManager()->journalView()->checkModified();
2051 if ( !mCalendarModifiedFlag ) { 2050 if ( !mCalendarModifiedFlag ) {
2052 qDebug("KO: Calendar not modified. Nothing saved."); 2051 qDebug("KO: Calendar not modified. Nothing saved.");
2053 return; 2052 return;
2054 } 2053 }
2055 if ( mSyncManager->blockSave() ) { 2054 if ( mSyncManager->blockSave() ) {
2056 slotModifiedChanged( true ); 2055 slotModifiedChanged( true );
2057 return; 2056 return;
2058 } 2057 }
2058#ifndef DESKTOP_VERSION
2059 QPEApplication::setTempScreenSaverMode ( QPEApplication::Disable );
2060#endif
2059 mSaveDelay = 0; 2061 mSaveDelay = 0;
2060 mSyncManager->setBlockSave(true); 2062 mSyncManager->setBlockSave(true);
2061 if ( mView->checkAllFileVersions() ) { 2063 if ( mView->checkAllFileVersions() ) {
2062 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){ 2064 if ( KPimGlobalPrefs::instance()->mBackupEnabled ){
2063 QDate reference ( 2000,1,1); 2065 QDate reference ( 2000,1,1);
2064 int daysTo = reference.daysTo ( QDate::currentDate() ); 2066 int daysTo = reference.daysTo ( QDate::currentDate() );
2065 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) { 2067 if ( daysTo - KPimGlobalPrefs::instance()->mBackupDayCount >= KOPrefs::instance()->mLastBackupDate ) {
2066 backupAllFiles(); 2068 backupAllFiles();
2067 } 2069 }
2068 ; // KPimGlobalPrefs::instance()->mLastBackupDate 2070 ; // KPimGlobalPrefs::instance()->mLastBackupDate
2069 } 2071 }
2070 QTime neededSaveTime; 2072 QTime neededSaveTime;
2071 neededSaveTime.start(); 2073 neededSaveTime.start();
2072 if ( !isMinimized () ) 2074 if ( !isMinimized () )
2073 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 2075 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
2074 qDebug("KO: Start saving data to file!"); 2076 qDebug("KO: Start saving data to file!");
2075 if ( mView->saveCalendars() ) 2077 if ( mView->saveCalendars() )
2076 mCalendarModifiedFlag = false; 2078 mCalendarModifiedFlag = false;
2077 int msNeeded = neededSaveTime.elapsed(); 2079 int msNeeded = neededSaveTime.elapsed();
2078 qDebug("KO: Needed %d ms for saving.",msNeeded ); 2080 qDebug("KO: Needed %d ms for saving.",msNeeded );
2079 QString savemes; 2081 QString savemes;
2080 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 2082 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
2081 if ( !isMinimized () ) 2083 if ( !isMinimized () )
2082 setCaption(savemes); 2084 setCaption(savemes);
2083 else 2085 else
2084 qDebug(savemes); 2086 qDebug(savemes);
2085 } else { 2087 } else {
2086 setCaption(i18n("Saving cancelled!")); 2088 setCaption(i18n("Saving cancelled!"));
2087 mCalendarModifiedFlag = false; 2089 mCalendarModifiedFlag = false;
2088 slotModifiedChanged( true ); 2090 slotModifiedChanged( true );
2089 } 2091 }
2090 mSyncManager->setBlockSave( false ); 2092 mSyncManager->setBlockSave( false );
2093#ifndef DESKTOP_VERSION
2094 QPEApplication::setTempScreenSaverMode ( QPEApplication::Enable );
2095#endif
2091} 2096}
2092 2097
2093void MainWindow::keyReleaseEvent ( QKeyEvent * e) 2098void MainWindow::keyReleaseEvent ( QKeyEvent * e)
2094{ 2099{
2095 if ( !e->isAutoRepeat() ) { 2100 if ( !e->isAutoRepeat() ) {
2096 mFlagKeyPressed = false; 2101 mFlagKeyPressed = false;
2097 } 2102 }
2098} 2103}
2099void MainWindow::keyPressEvent ( QKeyEvent * e ) 2104void MainWindow::keyPressEvent ( QKeyEvent * e )
2100{ 2105{
2101 qApp->processEvents(); 2106 qApp->processEvents();
2102 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 2107 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
2103 e->ignore(); 2108 e->ignore();
2104 // qDebug(" ignore %d",e->isAutoRepeat() ); 2109 // qDebug(" ignore %d",e->isAutoRepeat() );
2105 return; 2110 return;
2106 } 2111 }
2107 if (! e->isAutoRepeat() ) 2112 if (! e->isAutoRepeat() )
2108 mFlagKeyPressed = true; 2113 mFlagKeyPressed = true;
2109 KOPrefs *p = KOPrefs::instance(); 2114 KOPrefs *p = KOPrefs::instance();
2110 bool showSelectedDates = false; 2115 bool showSelectedDates = false;
2111 int size; 2116 int size;
2112 int pro = 0; 2117 int pro = 0;
2113 //qDebug("MainWindow::keyPressEvent "); 2118 //qDebug("MainWindow::keyPressEvent ");
2114 switch ( e->key() ) { 2119 switch ( e->key() ) {
2115 case Qt::Key_Right: 2120 case Qt::Key_Right:
2116 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2121 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2117 mView->goNextMonth(); 2122 mView->goNextMonth();
2118 else 2123 else
2119 mView->goNext(); 2124 mView->goNext();
2120 showSelectedDates = true; 2125 showSelectedDates = true;
2121 break; 2126 break;
2122 case Qt::Key_Left: 2127 case Qt::Key_Left:
2123 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2128 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2124 mView->goPreviousMonth(); 2129 mView->goPreviousMonth();
2125 else 2130 else
2126 mView->goPrevious(); 2131 mView->goPrevious();
2127 showSelectedDates = true; 2132 showSelectedDates = true;
2128 break; 2133 break;
2129 case Qt::Key_Down: 2134 case Qt::Key_Down:
2130 mView->viewManager()->agendaView()->scrollOneHourDown(); 2135 mView->viewManager()->agendaView()->scrollOneHourDown();
2131 break; 2136 break;
2132 case Qt::Key_Up: 2137 case Qt::Key_Up:
2133 mView->viewManager()->agendaView()->scrollOneHourUp(); 2138 mView->viewManager()->agendaView()->scrollOneHourUp();
2134 break; 2139 break;
2135 case Qt::Key_K: 2140 case Qt::Key_K:
2136 mView->viewManager()->showMonthViewWeek(); 2141 mView->viewManager()->showMonthViewWeek();
2137 break; 2142 break;
2138 case Qt::Key_I: 2143 case Qt::Key_I:
2139 mView->showIncidence(); 2144 mView->showIncidence();
2140 break; 2145 break;
2141 case Qt::Key_Delete: 2146 case Qt::Key_Delete:
2142 case Qt::Key_Backspace: 2147 case Qt::Key_Backspace:
2143 mView->deleteIncidence(); 2148 mView->deleteIncidence();
2144 break; 2149 break;
2145 case Qt::Key_D: 2150 case Qt::Key_D:
2146 mView->viewManager()->showDayView(); 2151 mView->viewManager()->showDayView();
2147 showSelectedDates = true; 2152 showSelectedDates = true;
2148 break; 2153 break;
2149 case Qt::Key_O: 2154 case Qt::Key_O:
2150 mView->toggleFilerEnabled( ); 2155 mView->toggleFilerEnabled( );
2151 break; 2156 break;
2152 case Qt::Key_0: 2157 case Qt::Key_0:
2153 case Qt::Key_1: 2158 case Qt::Key_1:
2154 case Qt::Key_2: 2159 case Qt::Key_2:
2155 case Qt::Key_3: 2160 case Qt::Key_3:
2156 case Qt::Key_4: 2161 case Qt::Key_4:
2157 case Qt::Key_5: 2162 case Qt::Key_5:
2158 case Qt::Key_6: 2163 case Qt::Key_6:
2159 case Qt::Key_7: 2164 case Qt::Key_7:
2160 case Qt::Key_8: 2165 case Qt::Key_8:
2161 case Qt::Key_9: 2166 case Qt::Key_9:
2162 pro = e->key()-48; 2167 pro = e->key()-48;
2163 if ( pro == 0 ) 2168 if ( pro == 0 )
2164 pro = 10; 2169 pro = 10;
2165 if ( e->state() == Qt::ControlButton) 2170 if ( e->state() == Qt::ControlButton)
2166 pro += 10; 2171 pro += 10;
2167 break; 2172 break;
2168 case Qt::Key_M: 2173 case Qt::Key_M:
2169 mView->viewManager()->showMonthView(); 2174 mView->viewManager()->showMonthView();
2170 showSelectedDates = true; 2175 showSelectedDates = true;
2171 break; 2176 break;
2172 case Qt::Key_Insert: 2177 case Qt::Key_Insert:
2173 mView->newEvent(); 2178 mView->newEvent();
2174 break; 2179 break;
2175 case Qt::Key_S : 2180 case Qt::Key_S :
2176 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2181 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2177 mView->newSubTodo(); 2182 mView->newSubTodo();
2178 else 2183 else
2179 mView->dialogManager()->showSearchDialog(); 2184 mView->dialogManager()->showSearchDialog();
2180 break; 2185 break;
2181 case Qt::Key_Y : 2186 case Qt::Key_Y :
2182 case Qt::Key_Z : 2187 case Qt::Key_Z :
2183 mView->viewManager()->showWorkWeekView(); 2188 mView->viewManager()->showWorkWeekView();
2184 showSelectedDates = true; 2189 showSelectedDates = true;
2185 break; 2190 break;
2186 case Qt::Key_U : 2191 case Qt::Key_U :
2187 mView->viewManager()->showWeekView(); 2192 mView->viewManager()->showWeekView();
2188 showSelectedDates = true; 2193 showSelectedDates = true;
2189 break; 2194 break;
2190 case Qt::Key_H : 2195 case Qt::Key_H :
2191 keyBindings(); 2196 keyBindings();
2192 break; 2197 break;
2193 case Qt::Key_W: 2198 case Qt::Key_W:
2194 mView->viewManager()->showWhatsNextView(); 2199 mView->viewManager()->showWhatsNextView();
2195 break; 2200 break;
2196 case Qt::Key_L: 2201 case Qt::Key_L:
2197 mView->viewManager()->showListView(); 2202 mView->viewManager()->showListView();
2198 break; 2203 break;
2199 case Qt::Key_N: 2204 case Qt::Key_N:
2200 mView->viewManager()->showNextView(); 2205 mView->viewManager()->showNextView();
2201 break; 2206 break;
2202 case Qt::Key_V: 2207 case Qt::Key_V:
2203 mView->viewManager()->showTodoView(); 2208 mView->viewManager()->showTodoView();
2204 break; 2209 break;
2205 case Qt::Key_C: 2210 case Qt::Key_C:
2206 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 2211 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
2207 break; 2212 break;
2208 case Qt::Key_P: 2213 case Qt::Key_P:
2209 mView->showDatePicker( ); 2214 mView->showDatePicker( );
2210 break; 2215 break;
2211 case Qt::Key_F: 2216 case Qt::Key_F:
2212 mView->editFilters(); 2217 mView->editFilters();
2213 break; 2218 break;
2214 case Qt::Key_R: 2219 case Qt::Key_R:
2215 mView->toggleFilter(); 2220 mView->toggleFilter();
2216 break; 2221 break;
2217 case Qt::Key_X: 2222 case Qt::Key_X:
2218 if ( e->state() == Qt::ControlButton ) 2223 if ( e->state() == Qt::ControlButton )
2219 mView->toggleDateNavigatorWidget(); 2224 mView->toggleDateNavigatorWidget();
2220 else { 2225 else {
2221 mView->viewManager()->showNextXView(); 2226 mView->viewManager()->showNextXView();
2222 showSelectedDates = true; 2227 showSelectedDates = true;
2223 } 2228 }
2224 break; 2229 break;
2225 case Qt::Key_Space: 2230 case Qt::Key_Space:
2226 mView->toggleExpand(); 2231 mView->toggleExpand();
2227 break; 2232 break;
2228 case Qt::Key_A: 2233 case Qt::Key_A:
2229 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) 2234 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
2230 mView->showNextAlarms(); 2235 mView->showNextAlarms();
2231 else 2236 else
2232 mView->toggleAllDaySize(); 2237 mView->toggleAllDaySize();
2233 break; 2238 break;
2234 case Qt::Key_T: 2239 case Qt::Key_T:
2235 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2240 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2236 mView->newTodo(); 2241 mView->newTodo();
2237 else { 2242 else {
2238 mView->goToday(); 2243 mView->goToday();
2239 showSelectedDates = true; 2244 showSelectedDates = true;
2240 } 2245 }
2241 break; 2246 break;
2242 case Qt::Key_Q: 2247 case Qt::Key_Q:
2243 if ( e->state() == Qt::ControlButton ) 2248 if ( e->state() == Qt::ControlButton )
2244 mView->conflictNotAll(); 2249 mView->conflictNotAll();
2245 else if ( e->state() == Qt::ShiftButton ) 2250 else if ( e->state() == Qt::ShiftButton )
2246 mView->conflictAllday(); 2251 mView->conflictAllday();
2247 else 2252 else
2248 mView->conflictAll(); 2253 mView->conflictAll();
2249 break; 2254 break;
2250 case Qt::Key_J: 2255 case Qt::Key_J:
2251 mView->viewManager()->showJournalView(); 2256 mView->viewManager()->showJournalView();
2252 break; 2257 break;
2253 case Qt::Key_B: 2258 case Qt::Key_B:
2254 mView->editIncidenceDescription();; 2259 mView->editIncidenceDescription();;
2255 break; 2260 break;
2256 // case Qt::Key_Return: 2261 // case Qt::Key_Return:
2257 case Qt::Key_E: 2262 case Qt::Key_E:
2258 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2263 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2259 mView->newEvent(); 2264 mView->newEvent();
2260 else 2265 else
2261 mView->editIncidence(); 2266 mView->editIncidence();
2262 break; 2267 break;
2263 case Qt::Key_Plus: 2268 case Qt::Key_Plus:
2264 size = p->mHourSize +2; 2269 size = p->mHourSize +2;
2265 if ( size <= 22 ) 2270 if ( size <= 22 )
2266 configureAgenda( size ); 2271 configureAgenda( size );
2267 break; 2272 break;
2268 case Qt::Key_Minus: 2273 case Qt::Key_Minus:
2269 size = p->mHourSize - 2; 2274 size = p->mHourSize - 2;
2270 if ( size >= 4 ) 2275 if ( size >= 4 )
2271 configureAgenda( size ); 2276 configureAgenda( size );
2272 break; 2277 break;
2273 2278
2274 2279
2275 default: 2280 default:
2276 e->ignore(); 2281 e->ignore();
2277 } 2282 }
2278 if ( pro > 0 ) { 2283 if ( pro > 0 ) {
2279 selectFilter( pro+1 ); 2284 selectFilter( pro+1 );
2280 } 2285 }
2281 if ( showSelectedDates ) { 2286 if ( showSelectedDates ) {
2282 ;// setCaptionToDates(); 2287 ;// setCaptionToDates();
2283 } 2288 }
2284 2289
2285} 2290}
2286void MainWindow::fillFilterMenuTB() 2291void MainWindow::fillFilterMenuTB()
2287{ 2292{
2288 selectFilterMenuTB->clear(); 2293 selectFilterMenuTB->clear();
2289 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 ); 2294 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 );
2290 selectFilterMenuTB->insertSeparator(); 2295 selectFilterMenuTB->insertSeparator();
2291 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 ); 2296 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 );
2292 2297
2293 selectFilterMenuTB->insertSeparator(); 2298 selectFilterMenuTB->insertSeparator();
2294 QPtrList<CalFilter> fili = mView->filters(); 2299 QPtrList<CalFilter> fili = mView->filters();
2295 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2300 CalFilter *curfilter = mView->filterView()->selectedFilter();
2296 CalFilter *filter = fili.first(); 2301 CalFilter *filter = fili.first();
2297 int iii = 2; 2302 int iii = 2;
2298 bool checkitem = mView->filterView()->filtersEnabled(); 2303 bool checkitem = mView->filterView()->filtersEnabled();
2299 while(filter) { 2304 while(filter) {
2300 selectFilterMenuTB->insertItem( filter->name(), iii ); 2305 selectFilterMenuTB->insertItem( filter->name(), iii );
2301 if ( filter == curfilter) 2306 if ( filter == curfilter)
2302 selectFilterMenuTB->setItemChecked( iii, checkitem ); 2307 selectFilterMenuTB->setItemChecked( iii, checkitem );
2303 filter = fili.next(); 2308 filter = fili.next();
2304 ++iii; 2309 ++iii;
2305 } 2310 }
2306 if ( !checkitem ) 2311 if ( !checkitem )
2307 selectFilterMenuTB->setItemChecked( 1, true ); 2312 selectFilterMenuTB->setItemChecked( 1, true );
2308 2313
2309 int x = 0; 2314 int x = 0;
2310 int y = iconToolBar->height(); 2315 int y = iconToolBar->height();
2311 int dX = 0; 2316 int dX = 0;
2312 int dY = 0; 2317 int dY = 0;
2313 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2318 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2314 if ( iconToolBar->y() > height()/2 ) { 2319 if ( iconToolBar->y() > height()/2 ) {
2315 dY = selectFilterMenuTB->sizeHint().height()+8; 2320 dY = selectFilterMenuTB->sizeHint().height()+8;
2316 y = 0; 2321 y = 0;
2317 } 2322 }
2318 } else { 2323 } else {
2319 if ( iconToolBar->x() > width()/2 ) { // right side 2324 if ( iconToolBar->x() > width()/2 ) { // right side
2320 x=0; 2325 x=0;
2321 dX= selectFilterMenuTB->sizeHint().width()+8; 2326 dX= selectFilterMenuTB->sizeHint().width()+8;
2322 y = 0; 2327 y = 0;
2323 } else { 2328 } else {
2324 x= iconToolBar->width(); 2329 x= iconToolBar->width();
2325 y = 0; 2330 y = 0;
2326 } 2331 }
2327 } 2332 }
2328 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2333 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2329 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))); 2334 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)));
2330} 2335}
2331void MainWindow::fillFilterMenu() 2336void MainWindow::fillFilterMenu()
2332{ 2337{
2333 selectFilterMenu->clear(); 2338 selectFilterMenu->clear();
2334 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 2339 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
2335 selectFilterMenu->insertSeparator(); 2340 selectFilterMenu->insertSeparator();
2336 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 ); 2341 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 );
2337 2342
2338 selectFilterMenu->insertSeparator(); 2343 selectFilterMenu->insertSeparator();
2339 QPtrList<CalFilter> fili = mView->filters(); 2344 QPtrList<CalFilter> fili = mView->filters();
2340 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2345 CalFilter *curfilter = mView->filterView()->selectedFilter();
2341 CalFilter *filter = fili.first(); 2346 CalFilter *filter = fili.first();
2342 int iii = 2; 2347 int iii = 2;
2343 bool checkitem = mView->filterView()->filtersEnabled(); 2348 bool checkitem = mView->filterView()->filtersEnabled();
2344 while(filter) { 2349 while(filter) {
2345 selectFilterMenu->insertItem( filter->name(), iii ); 2350 selectFilterMenu->insertItem( filter->name(), iii );
2346 if ( filter == curfilter) 2351 if ( filter == curfilter)
2347 selectFilterMenu->setItemChecked( iii, checkitem ); 2352 selectFilterMenu->setItemChecked( iii, checkitem );
2348 filter = fili.next(); 2353 filter = fili.next();
2349 ++iii; 2354 ++iii;
2350 } 2355 }
2351 if ( !checkitem ) 2356 if ( !checkitem )
2352 selectFilterMenu->setItemChecked( 1, true ); 2357 selectFilterMenu->setItemChecked( 1, true );
2353} 2358}
2354void MainWindow::fillFilterMenuPopup() 2359void MainWindow::fillFilterMenuPopup()
2355{ 2360{
2356 filterPopupMenu->clear(); 2361 filterPopupMenu->clear();
2357 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 ); 2362 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 );
2358 2363
2359 filterPopupMenu->insertSeparator(); 2364 filterPopupMenu->insertSeparator();
2360 QPtrList<CalFilter> fili = mView->filters(); 2365 QPtrList<CalFilter> fili = mView->filters();
2361 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2366 CalFilter *curfilter = mView->filterView()->selectedFilter();
2362 CalFilter *filter = fili.first(); 2367 CalFilter *filter = fili.first();
2363 int iii = 1; 2368 int iii = 1;
2364 bool checkitem = mView->filterView()->filtersEnabled(); 2369 bool checkitem = mView->filterView()->filtersEnabled();
2365 while(filter) { 2370 while(filter) {
2366 filterPopupMenu->insertItem( filter->name(), iii ); 2371 filterPopupMenu->insertItem( filter->name(), iii );
2367 if ( filter == curfilter) 2372 if ( filter == curfilter)
2368 filterPopupMenu->setItemChecked( iii, checkitem ); 2373 filterPopupMenu->setItemChecked( iii, checkitem );
2369 filter = fili.next(); 2374 filter = fili.next();
2370 ++iii; 2375 ++iii;
2371 } 2376 }
2372 if ( !checkitem ) 2377 if ( !checkitem )
2373 filterPopupMenu->setItemChecked( 0, true ); 2378 filterPopupMenu->setItemChecked( 0, true );
2374} 2379}
2375void MainWindow::selectFilter( int fil ) 2380void MainWindow::selectFilter( int fil )
2376{ 2381{
2377 2382
2378 if ( fil == 0 ) { 2383 if ( fil == 0 ) {
2379 mView->editFilters( ); 2384 mView->editFilters( );
2380 } else if ( fil == 1 ){ 2385 } else if ( fil == 1 ){
2381 if ( mView->filterView()->filtersEnabled() ) 2386 if ( mView->filterView()->filtersEnabled() )
2382 mView->toggleFilerEnabled( ); 2387 mView->toggleFilerEnabled( );
2383 } else { 2388 } else {
2384 if ( !mView->filterView()->filtersEnabled() ) { 2389 if ( !mView->filterView()->filtersEnabled() ) {
2385 mView->filterView()->blockSignals( true ); 2390 mView->filterView()->blockSignals( true );
2386 mView->toggleFilerEnabled( ); 2391 mView->toggleFilerEnabled( );
2387 mView->filterView()->blockSignals( false ); 2392 mView->filterView()->blockSignals( false );
2388 } 2393 }
2389 mView->selectFilter( fil-2 ); 2394 mView->selectFilter( fil-2 );
2390 } 2395 }
2391} 2396}
2392void MainWindow::updateFilterToolbar() 2397void MainWindow::updateFilterToolbar()
2393{ 2398{
2394 if ( filterMenubar ) { 2399 if ( filterMenubar ) {
2395 if ( !mView->filterView()->filtersEnabled() ) { 2400 if ( !mView->filterView()->filtersEnabled() ) {
2396 filterMenubar->changeItem( 0, i18n("No Filter") ); 2401 filterMenubar->changeItem( 0, i18n("No Filter") );
2397 } else { 2402 } else {
2398 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2403 CalFilter *curfilter = mView->filterView()->selectedFilter();
2399 if ( curfilter ) { 2404 if ( curfilter ) {
2400 QString name = curfilter->name(); 2405 QString name = curfilter->name();
2401 if ( name.length() > 12 ) 2406 if ( name.length() > 12 )
2402 name = name.left(10)+"..."; 2407 name = name.left(10)+"...";
2403 filterMenubar->changeItem( 0, name ); 2408 filterMenubar->changeItem( 0, name );
2404 } 2409 }
2405 } 2410 }
2406 } 2411 }
2407} 2412}
2408void MainWindow::selectFilterPopup( int fil ) 2413void MainWindow::selectFilterPopup( int fil )
2409{ 2414{
2410 selectFilter( fil + 1 ); 2415 selectFilter( fil + 1 );
2411 2416
2412} 2417}
2413void MainWindow::configureToolBar( int item ) 2418void MainWindow::configureToolBar( int item )
2414{ 2419{
2415 2420
2416 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 2421 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
2417 KOPrefs *p = KOPrefs::instance(); 2422 KOPrefs *p = KOPrefs::instance();
2418 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 2423 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
2419 p-> mShowIconOnetoolbar = configureToolBarMenu->isItemChecked( 6 ); 2424 p-> mShowIconOnetoolbar = configureToolBarMenu->isItemChecked( 6 );
2420 p-> mShowIconFilter = configureToolBarMenu->isItemChecked( 7 ); 2425 p-> mShowIconFilter = configureToolBarMenu->isItemChecked( 7 );
2421 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 2426 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
2422 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 2427 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
2423 p->mShowIconNavigator = configureToolBarMenu->isItemChecked( 22 ); 2428 p->mShowIconNavigator = configureToolBarMenu->isItemChecked( 22 );
2424 p->mShowIconAllday = configureToolBarMenu->isItemChecked( 24 ); 2429 p->mShowIconAllday = configureToolBarMenu->isItemChecked( 24 );
2425 p->mShowIconFilterview = configureToolBarMenu->isItemChecked( 26 ); 2430 p->mShowIconFilterview = configureToolBarMenu->isItemChecked( 26 );
2426 p->mShowIconToggleFull = configureToolBarMenu->isItemChecked( 28 ); 2431 p->mShowIconToggleFull = configureToolBarMenu->isItemChecked( 28 );
2427 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 2432 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
2428 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 2433 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
2429 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 2434 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
2430 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 2435 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
2431 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); 2436 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 );
2432 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 2437 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
2433 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 2438 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
2434 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 2439 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
2435 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 2440 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
2436 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 2441 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
2437 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 2442 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
2438 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 2443 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
2439 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 2444 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
2440 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 2445 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
2441 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 2446 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
2442 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 2447 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
2443 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 2448 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
2444 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); 2449 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 );
2445 // initActions(); 2450 // initActions();
2446 setCaption ( i18n("Toolbar changes needs a restart!") ); 2451 setCaption ( i18n("Toolbar changes needs a restart!") );
2447} 2452}
2448void MainWindow::setCaption ( const QString & c ) 2453void MainWindow::setCaption ( const QString & c )
2449{ 2454{
2450 QString cap = c; 2455 QString cap = c;
2451 cap.replace( QRegExp("\n"), " " ); 2456 cap.replace( QRegExp("\n"), " " );
2452 cap = cap.stripWhiteSpace(); 2457 cap = cap.stripWhiteSpace();
2453 if ( cap.isEmpty() ) 2458 if ( cap.isEmpty() )
2454 cap = "KO/Pi"; 2459 cap = "KO/Pi";
2455 QWidget::setCaption( cap ); 2460 QWidget::setCaption( cap );
2456} 2461}
2457void MainWindow::setCaptionToDates() 2462void MainWindow::setCaptionToDates()
2458{ 2463{
2459 QString selDates; 2464 QString selDates;
2460 QDate date = mView->startDate(); 2465 QDate date = mView->startDate();
2461 if ( ! date.isValid() ) { 2466 if ( ! date.isValid() ) {
2462 setCaption(""); 2467 setCaption("");
2463 return; 2468 return;
2464 } 2469 }
2465 selDates = KGlobal::locale()->formatDate( date, true); 2470 selDates = KGlobal::locale()->formatDate( date, true);
2466 if (mView->startDate() < mView->endDate() ) 2471 if (mView->startDate() < mView->endDate() )
2467 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); 2472 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true);
2468 else { 2473 else {
2469 QString addString; 2474 QString addString;
2470 if ( date == QDateTime::currentDateTime().date() ) 2475 if ( date == QDateTime::currentDateTime().date() )
2471 addString = i18n("Today"); 2476 addString = i18n("Today");
2472 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 2477 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
2473 addString = i18n("Tomorrow"); 2478 addString = i18n("Tomorrow");
2474 if ( !addString.isEmpty() ) 2479 if ( !addString.isEmpty() )
2475 selDates = addString+", "+selDates ; 2480 selDates = addString+", "+selDates ;
2476 } 2481 }
2477 setCaption( i18n("Dates: ") + selDates ); 2482 setCaption( i18n("Dates: ") + selDates );
2478 2483
2479} 2484}
2480void MainWindow::showConfigureAgenda( ) 2485void MainWindow::showConfigureAgenda( )
2481{ 2486{
2482 int iii; 2487 int iii;
2483 for ( iii = 1;iii<= 10 ;++iii ){ 2488 for ( iii = 1;iii<= 10 ;++iii ){
2484 configureAgendaMenu->setItemChecked( (iii+1)*2, false ); 2489 configureAgendaMenu->setItemChecked( (iii+1)*2, false );
2485 } 2490 }
2486 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); 2491 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true );
2487} 2492}
2488void MainWindow::configureAgenda( int item ) 2493void MainWindow::configureAgenda( int item )
2489{ 2494{
2490 if ( KOPrefs::instance()->mHourSize == item ) 2495 if ( KOPrefs::instance()->mHourSize == item )
2491 return; 2496 return;
2492 KOPrefs::instance()->mHourSize=item; 2497 KOPrefs::instance()->mHourSize=item;
2493 mView->viewManager()->agendaView()->updateConfig(); 2498 mView->viewManager()->agendaView()->updateConfig();
2494} 2499}
2495 2500
2496void MainWindow::saveCalendar() 2501void MainWindow::saveCalendar()
2497{ 2502{
2498 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir; 2503 QString bupDir = KPimGlobalPrefs::instance()->mBackupDatadir;
2499 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir) 2504 if ( KPimGlobalPrefs::instance()->mBackupUseDefaultDir)
2500 bupDir = KGlobalSettings::backupDataDir(); 2505 bupDir = KGlobalSettings::backupDataDir();
2501 bupDir = KGlobal::formatMessage ( bupDir, 0 ); 2506 bupDir = KGlobal::formatMessage ( bupDir, 0 );
2502 QString bupHint; 2507 QString bupHint;
2503 if ( !KPimGlobalPrefs::instance()->mBackupEnabled ) 2508 if ( !KPimGlobalPrefs::instance()->mBackupEnabled )
2504 bupHint = i18n("(Hint: You can enable automatic backup in the global settings!)"); 2509 bupHint = i18n("(Hint: You can enable automatic backup in the global settings!)");
2505 if ( KMessageBox::warningContinueCancel( this, i18n("This will <b>backup all calendar files</b> to the directory %1 %2").arg(bupDir).arg(bupHint),i18n("Information") ) != KMessageBox::Continue ) return; 2510 if ( KMessageBox::warningContinueCancel( this, i18n("This will <b>backup all calendar files</b> to the directory %1 %2").arg(bupDir).arg(bupHint),i18n("Information") ) != KMessageBox::Continue ) return;
2506 bool enabled = KPimGlobalPrefs::instance()->mBackupEnabled; 2511 bool enabled = KPimGlobalPrefs::instance()->mBackupEnabled;
2507 KPimGlobalPrefs::instance()->mBackupEnabled = false; 2512 KPimGlobalPrefs::instance()->mBackupEnabled = false;
2508 save(); 2513 save();
2514#ifndef DESKTOP_VERSION
2515 QPEApplication::setTempScreenSaverMode ( QPEApplication::Disable );
2516#endif
2509 KPimGlobalPrefs::instance()->mBackupEnabled = enabled; 2517 KPimGlobalPrefs::instance()->mBackupEnabled = enabled;
2510 backupAllFiles(); 2518 backupAllFiles();
2519#ifndef DESKTOP_VERSION
2520 QPEApplication::setTempScreenSaverMode ( QPEApplication::Enable );
2521#endif
2511} 2522}
2512void MainWindow::loadCalendar() 2523void MainWindow::loadCalendar()
2513{ 2524{
2514 2525
2515 2526
2516#if 0 2527#if 0
2517 QString fn = KOPrefs::instance()->mLastLoadFile; 2528 QString fn = KOPrefs::instance()->mLastLoadFile;
2518 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 2529 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
2519 2530
2520 if ( fn == "" ) 2531 if ( fn == "" )
2521 return; 2532 return;
2522 QFileInfo info; 2533 QFileInfo info;
2523 info.setFile( fn ); 2534 info.setFile( fn );
2524 QString mess; 2535 QString mess;
2525 bool loadbup = true; 2536 bool loadbup = true;
2526 if ( info. exists() ) { 2537 if ( info. exists() ) {
2527 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2538 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2528 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 2539 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
2529 mess, 2540 mess,
2530 i18n("Load!"), i18n("Cancel"), 0, 2541 i18n("Load!"), i18n("Cancel"), 0,
2531 0, 1 ); 2542 0, 1 );
2532 if ( result != 0 ) { 2543 if ( result != 0 ) {
2533 loadbup = false; 2544 loadbup = false;
2534 } 2545 }
2535 } else { 2546 } else {
2536 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2547 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2537 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 2548 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
2538 0, 1 ); 2549 0, 1 );
2539 2550
2540 return; 2551 return;
2541 } 2552 }
2542 if ( loadbup ) { 2553 if ( loadbup ) {
2543 mView->openCalendar( fn ); 2554 mView->openCalendar( fn );
2544 KOPrefs::instance()->mLastLoadFile = fn; 2555 KOPrefs::instance()->mLastLoadFile = fn;
2545 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 2556 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
2546 setCaption(mess); 2557 setCaption(mess);
2547 } 2558 }
2548#endif 2559#endif
2549 2560
2550} 2561}
2551void MainWindow::quickImportIcal() 2562void MainWindow::quickImportIcal()
2552{ 2563{
2553 importFile( KOPrefs::instance()->mLastImportFile, false ); 2564 importFile( KOPrefs::instance()->mLastImportFile, false );
2554} 2565}
2555void MainWindow::importFile( QString fn, bool quick ) 2566void MainWindow::importFile( QString fn, bool quick )
2556{ 2567{
2557 QFileInfo info; 2568 QFileInfo info;
2558 info.setFile( fn ); 2569 info.setFile( fn );
2559 QString mess; 2570 QString mess;
2560 if ( !info. exists() ) { 2571 if ( !info. exists() ) {
2561 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 2572 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
2562 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2573 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2563 mess ); 2574 mess );
2564 return; 2575 return;
2565 } 2576 }
2566 int result = 0; 2577 int result = 0;
2567 if ( !quick ) { 2578 if ( !quick ) {
2568 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2579 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2569 result = QMessageBox::warning( this, "KO/Pi: Warning!", 2580 result = QMessageBox::warning( this, "KO/Pi: Warning!",
2570 mess, 2581 mess,
2571 "Import", "Cancel", 0, 2582 "Import", "Cancel", 0,
2572 0, 1 ); 2583 0, 1 );
2573 } 2584 }
2574 if ( result == 0 ) { 2585 if ( result == 0 ) {
2575 if ( mView->openCalendar( fn, true )) { 2586 if ( mView->openCalendar( fn, true )) {
2576 KOPrefs::instance()->mLastImportFile = fn; 2587 KOPrefs::instance()->mLastImportFile = fn;
2577 setCaption(i18n("Imported file successfully")); 2588 setCaption(i18n("Imported file successfully"));
2578 } else { 2589 } else {
2579 setCaption(i18n("Error importing file")); 2590 setCaption(i18n("Error importing file"));
2580 } 2591 }
2581 mView->updateView(); 2592 mView->updateView();
2582 } 2593 }
2583} 2594}
2584 2595
2585void MainWindow::importIcal() 2596void MainWindow::importIcal()
2586{ 2597{
2587 2598
2588 QString fn =KOPrefs::instance()->mLastImportFile; 2599 QString fn =KOPrefs::instance()->mLastImportFile;
2589 2600
2590 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 2601 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
2591 if ( fn == "" ) 2602 if ( fn == "" )
2592 return; 2603 return;
2593 importFile( fn, true ); 2604 importFile( fn, true );
2594 2605
2595} 2606}
2596void MainWindow::exportCalendar( bool iCalFormat ) 2607void MainWindow::exportCalendar( bool iCalFormat )
2597{ 2608{
2598 QString fn = KOPrefs::instance()->mLastVcalFile; 2609 QString fn = KOPrefs::instance()->mLastVcalFile;
2599 if ( iCalFormat ) { 2610 if ( iCalFormat ) {
2600 fn = QDir::homeDirPath()+"/kopiexport.ics"; 2611 fn = QDir::homeDirPath()+"/kopiexport.ics";
2601 fn = KFileDialog::getSaveFileName( fn, i18n("Export iCal filename(*.ics)"), this ); 2612 fn = KFileDialog::getSaveFileName( fn, i18n("Export iCal filename(*.ics)"), this );
2602 } 2613 }
2603 else 2614 else
2604 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 2615 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
2605 if ( fn == "" ) 2616 if ( fn == "" )
2606 return; 2617 return;
2607 QFileInfo info; 2618 QFileInfo info;
2608 info.setFile( fn ); 2619 info.setFile( fn );
2609 QString mes; 2620 QString mes;
2610 bool createbup = true; 2621 bool createbup = true;
2611 if ( info. exists() ) { 2622 if ( info. exists() ) {
2612 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 2623 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
2613 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 2624 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
2614 i18n("Overwrite!"), i18n("Cancel"), 0, 2625 i18n("Overwrite!"), i18n("Cancel"), 0,
2615 0, 1 ); 2626 0, 1 );
2616 if ( result != 0 ) { 2627 if ( result != 0 ) {
2617 createbup = false; 2628 createbup = false;
2618 } 2629 }
2619 } 2630 }
2620 if ( createbup ) { 2631 if ( createbup ) {
2621 bool success = false; 2632 bool success = false;
2622 if ( iCalFormat ) 2633 if ( iCalFormat )
2623 success = mView->exportICalendar( fn ); 2634 success = mView->exportICalendar( fn );
2624 else 2635 else
2625 success = mView->exportVCalendar( fn ); 2636 success = mView->exportVCalendar( fn );
2626 if ( success ) { 2637 if ( success ) {
2627 if ( fn.length() > 20 ) 2638 if ( fn.length() > 20 )
2628 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 2639 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
2629 else 2640 else
2630 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 2641 mes = i18n("KO/Pi:Exported to %1").arg(fn );
2631 setCaption(mes); 2642 setCaption(mes);
2632 } 2643 }
2633 } 2644 }
2634 2645
2635} 2646}
2636void MainWindow::exportICalendar() 2647void MainWindow::exportICalendar()
2637{ 2648{
2638 exportCalendar( true ); 2649 exportCalendar( true );
2639} 2650}
2640void MainWindow::exportVCalendar() 2651void MainWindow::exportVCalendar()
2641{ 2652{
2642 exportCalendar( false ); 2653 exportCalendar( false );
2643} 2654}
2644QString MainWindow::sentSyncFile() 2655QString MainWindow::sentSyncFile()
2645{ 2656{
2646#ifdef DESKTOP_VERSION 2657#ifdef DESKTOP_VERSION
2647 return QDir::convertSeparators( locateLocal( "tmp", "copysynccal.ics" ) ); 2658 return QDir::convertSeparators( locateLocal( "tmp", "copysynccal.ics" ) );
2648#else 2659#else
2649 return QString( "/tmp/copysynccal.ics" ); 2660 return QString( "/tmp/copysynccal.ics" );
2650#endif 2661#endif
2651} 2662}
2652 2663
2653void MainWindow::syncFileRequest() 2664void MainWindow::syncFileRequest()
2654{ 2665{
2655 while ( mSyncManager->blockSave() ) { 2666 while ( mSyncManager->blockSave() ) {
2656 qApp->processEvents(); 2667 qApp->processEvents();
2657 } 2668 }
2658 mSyncManager->setBlockSave(true); 2669 mSyncManager->setBlockSave(true);
2659 2670
2660 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2671 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2661 mSyncManager->slotSyncMenu( 999 ); 2672 mSyncManager->slotSyncMenu( 999 );
2662 } 2673 }
2663 2674
2664 setCaption(i18n("Saving Data to temp file ..." )); 2675 setCaption(i18n("Saving Data to temp file ..." ));
2665 mView->saveCalendar( sentSyncFile() ); 2676 mView->saveCalendar( sentSyncFile() );
2666 setCaption(i18n("Data saved to temp file!" )); 2677 setCaption(i18n("Data saved to temp file!" ));
2667 mSyncManager->setBlockSave( false ); 2678 mSyncManager->setBlockSave( false );
2668 2679
2669} 2680}
2670void MainWindow::getFile( bool success ) 2681void MainWindow::getFile( bool success )
2671{ 2682{
2672 if ( ! success ) { 2683 if ( ! success ) {
2673 setCaption( i18n("Error receiving file. Nothing changed!") ); 2684 setCaption( i18n("Error receiving file. Nothing changed!") );
2674 return; 2685 return;
2675 } 2686 }
2676 mView->mergeFile( sentSyncFile() ); 2687 mView->mergeFile( sentSyncFile() );
2677 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2688 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2678 mSyncManager->slotSyncMenu( 999 ); 2689 mSyncManager->slotSyncMenu( 999 );
2679 } 2690 }
2680 setCaption( i18n("Pi-Sync successful!") ); 2691 setCaption( i18n("Pi-Sync successful!") );
2681} 2692}
2682void MainWindow::printListView() 2693void MainWindow::printListView()
2683{ 2694{
2684 2695
2685 QString message = i18n("You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items."); 2696 QString message = i18n("You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.");
2686 2697
2687 KMessageBox::information( this, message); 2698 KMessageBox::information( this, message);
2688} 2699}
2689void MainWindow::printSel( ) 2700void MainWindow::printSel( )
2690{ 2701{
2691 mView->viewManager()->agendaView()->agenda()->printSelection(); 2702 mView->viewManager()->agendaView()->agenda()->printSelection();
2692} 2703}
2693 2704
2694void MainWindow::printCal() 2705void MainWindow::printCal()
2695{ 2706{
2696 mView->print();//mCp->showDialog(); 2707 mView->print();//mCp->showDialog();
2697} 2708}
2698 2709
2699 2710
2700#include "libkdepim/kdatepicker.h" 2711#include "libkdepim/kdatepicker.h"
2701#include <kdatetbl.h> 2712#include <kdatetbl.h>
2702 2713
2703void MainWindow::weekAction() 2714void MainWindow::weekAction()
2704{ 2715{
2705 int month; 2716 int month;
2706 KPopupFrame* popup = new KPopupFrame(this); 2717 KPopupFrame* popup = new KPopupFrame(this);
2707 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); 2718 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup);
2708 // ----- 2719 // -----
2709 picker->resize(picker->sizeHint()); 2720 picker->resize(picker->sizeHint());
2710 popup->setMainWidget(picker); 2721 popup->setMainWidget(picker);
2711 picker->setFocus(); 2722 picker->setFocus();
2712 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 2723 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
2713 int x = 0; 2724 int x = 0;
2714 int y = iconToolBar->height(); 2725 int y = iconToolBar->height();
2715 int dX = 0; 2726 int dX = 0;
2716 int dY = 0; 2727 int dY = 0;
2717 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2728 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2718 if ( iconToolBar->y() > height()/2 ) { 2729 if ( iconToolBar->y() > height()/2 ) {
2719 dY = picker->sizeHint().height()+8; 2730 dY = picker->sizeHint().height()+8;
2720 y = 0; 2731 y = 0;
2721 } 2732 }
2722 } else { 2733 } else {
2723 if ( iconToolBar->x() > width()/2 ) { // right side 2734 if ( iconToolBar->x() > width()/2 ) { // right side
2724 x=0; 2735 x=0;
2725 dX= picker->sizeHint().width()+8; 2736 dX= picker->sizeHint().width()+8;
2726 y = 0; 2737 y = 0;
2727 } else { 2738 } else {
2728 x= iconToolBar->width(); 2739 x= iconToolBar->width();
2729 y = 0; 2740 y = 0;
2730 } 2741 }
2731 } 2742 }
2732 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2743 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2733 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)))) 2744 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))))
2734 { 2745 {
2735 month = picker->getResult(); 2746 month = picker->getResult();
2736 emit selectWeek ( month ); 2747 emit selectWeek ( month );
2737 //qDebug("weekSelected %d ", month); 2748 //qDebug("weekSelected %d ", month);
2738 } 2749 }
2739 delete popup; 2750 delete popup;
2740} 2751}
2741 2752
2742void MainWindow::hideEvent ( QHideEvent * ) 2753void MainWindow::hideEvent ( QHideEvent * )
2743{ 2754{
2744 QString message; 2755 QString message;
2745 QDateTime nextA = mCalendar->nextAlarmEventDateTime(); 2756 QDateTime nextA = mCalendar->nextAlarmEventDateTime();
2746 if ( nextA.isValid() ) { 2757 if ( nextA.isValid() ) {
2747 QString sum = mCalendar->nextSummary(); 2758 QString sum = mCalendar->nextSummary();
2748 2759
2749 message = i18n("%1 %2 - %3 (next event/todo with alarm)").arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDate(nextA.date() , false)); 2760 message = i18n("%1 %2 - %3 (next event/todo with alarm)").arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDate(nextA.date() , false));
2750 setCaption( message ); 2761 setCaption( message );
2751 } 2762 }
2752} 2763}
2753 2764
2754void MainWindow::resizeEvent( QResizeEvent* e) 2765void MainWindow::resizeEvent( QResizeEvent* e)
2755{ 2766{
2756#ifndef DESKTOP_VERSION 2767#ifndef DESKTOP_VERSION
2757 if ( filterToolBar ) { 2768 if ( filterToolBar ) {
2758 if ( !KOPrefs::instance()->mShowIconFilter && !KOPrefs::instance()->mShowIconOnetoolbar && QApplication::desktop()->width() > 320) { 2769 if ( !KOPrefs::instance()->mShowIconFilter && !KOPrefs::instance()->mShowIconOnetoolbar && QApplication::desktop()->width() > 320) {
2759 if (QApplication::desktop()->width() > QApplication::desktop()->height() ) 2770 if (QApplication::desktop()->width() > QApplication::desktop()->height() )
2760 filterToolBar->hide(); 2771 filterToolBar->hide();
2761 else 2772 else
2762 filterToolBar->show(); 2773 filterToolBar->show();
2763 } 2774 }
2764 } 2775 }
2765#endif 2776#endif
2766 QMainWindow::resizeEvent( e); 2777 QMainWindow::resizeEvent( e);
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp
index f7d40ad..70a7711 100644
--- a/libkcal/todo.cpp
+++ b/libkcal/todo.cpp
@@ -1,443 +1,451 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library 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 GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <kglobal.h> 21#include <kglobal.h>
22#include <kglobalsettings.h> 22#include <kglobalsettings.h>
23#include <klocale.h> 23#include <klocale.h>
24#include <kdebug.h> 24#include <kdebug.h>
25#include <qregexp.h> 25#include <qregexp.h>
26#include <qfileinfo.h> 26#include <qfileinfo.h>
27 27
28#include "calendarlocal.h" 28#include "calendarlocal.h"
29#include "icalformat.h" 29#include "icalformat.h"
30#include "todo.h" 30#include "todo.h"
31 31
32#ifndef DESKTOP_VERSION
33#include <qpe/qpeapplication.h>
34#endif
35
32#define SAVETIMER_TIMEOUT_SECONDS 300 36#define SAVETIMER_TIMEOUT_SECONDS 300
33//#define SAVETIMER_TIMEOUT_SECONDS 8 37//#define SAVETIMER_TIMEOUT_SECONDS 8
34#define SAVETIMER_TIMEOUT_RETRY_SECONDS 5 38#define SAVETIMER_TIMEOUT_RETRY_SECONDS 5
35 39
36using namespace KCal; 40using namespace KCal;
37 41
38Todo::Todo(): QObject(), Incidence() 42Todo::Todo(): QObject(), Incidence()
39{ 43{
40// mStatus = TENTATIVE; 44// mStatus = TENTATIVE;
41 45
42 mHasDueDate = false; 46 mHasDueDate = false;
43 setHasStartDate( false ); 47 setHasStartDate( false );
44 mCompleted = getEvenTime(QDateTime::currentDateTime()); 48 mCompleted = getEvenTime(QDateTime::currentDateTime());
45 mHasCompletedDate = false; 49 mHasCompletedDate = false;
46 mPercentComplete = 0; 50 mPercentComplete = 0;
47 mRunning = false; 51 mRunning = false;
48 mRunSaveTimer = 0; 52 mRunSaveTimer = 0;
49 setFloats( true ); 53 setFloats( true );
50 mCurrentTimerDelay = 0; 54 mCurrentTimerDelay = 0;
51} 55}
52 56
53Todo::Todo(const Todo &t) : QObject(),Incidence(t) 57Todo::Todo(const Todo &t) : QObject(),Incidence(t)
54{ 58{
55 mDtDue = t.mDtDue; 59 mDtDue = t.mDtDue;
56 mHasDueDate = t.mHasDueDate; 60 mHasDueDate = t.mHasDueDate;
57 mCompleted = t.mCompleted; 61 mCompleted = t.mCompleted;
58 mHasCompletedDate = t.mHasCompletedDate; 62 mHasCompletedDate = t.mHasCompletedDate;
59 mPercentComplete = t.mPercentComplete; 63 mPercentComplete = t.mPercentComplete;
60 mRunning = false; 64 mRunning = false;
61 mRunSaveTimer = 0; 65 mRunSaveTimer = 0;
62 mCurrentTimerDelay = 0; 66 mCurrentTimerDelay = 0;
63} 67}
64 68
65Todo::~Todo() 69Todo::~Todo()
66{ 70{
67 setRunning( false ); 71 setRunning( false );
68 //qDebug("Todo::~Todo() "); 72 //qDebug("Todo::~Todo() ");
69} 73}
70 74
71void Todo::setRunningFalse( QString s ) 75void Todo::setRunningFalse( QString s )
72{ 76{
73 if ( ! mRunning ) 77 if ( ! mRunning )
74 return; 78 return;
75 mRunning = false; 79 mRunning = false;
76 if ( mRunSaveTimer ) 80 if ( mRunSaveTimer )
77 mRunSaveTimer->stop(); 81 mRunSaveTimer->stop();
78 saveRunningInfoToFile( s ); 82 saveRunningInfoToFile( s );
79} 83}
80void Todo::stopRunning() 84void Todo::stopRunning()
81{ 85{
82 if ( !mRunning ) 86 if ( !mRunning )
83 return; 87 return;
84 if ( mRunSaveTimer ) 88 if ( mRunSaveTimer )
85 mRunSaveTimer->stop(); 89 mRunSaveTimer->stop();
86 mRunning = false; 90 mRunning = false;
87} 91}
88void Todo::setRunning( bool run ) 92void Todo::setRunning( bool run )
89{ 93{
90 if ( run == mRunning ) 94 if ( run == mRunning )
91 return; 95 return;
92 //qDebug("Todo::setRunning %d ", run); 96 //qDebug("Todo::setRunning %d ", run);
93 if ( !mRunSaveTimer ) { 97 if ( !mRunSaveTimer ) {
94 mRunSaveTimer = new QTimer ( this ); 98 mRunSaveTimer = new QTimer ( this );
95 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( timerSlotSaveRunningInfoToFile() ) ); 99 connect ( mRunSaveTimer, SIGNAL( timeout() ), this , SLOT ( timerSlotSaveRunningInfoToFile() ) );
96 } 100 }
97 mRunning = run; 101 mRunning = run;
98 mRunLastSave = QDateTime::currentDateTime(); 102 mRunLastSave = QDateTime::currentDateTime();
99 if ( mRunning ) { 103 if ( mRunning ) {
100 restartSaveTimer( SAVETIMER_TIMEOUT_SECONDS ); 104 restartSaveTimer( SAVETIMER_TIMEOUT_SECONDS );
101 mRunStart = QDateTime::currentDateTime(); 105 mRunStart = QDateTime::currentDateTime();
102 } else { 106 } else {
103 mRunSaveTimer->stop(); 107 mRunSaveTimer->stop();
104 saveRunningInfoToFile(); 108 saveRunningInfoToFile();
105 } 109 }
106} 110}
107void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end ) 111void Todo::saveRunningInfo( QString comment, QDateTime start, QDateTime end )
108{ 112{
109 if ( !mRunning) return; 113 if ( !mRunning) return;
110 mRunning = false; 114 mRunning = false;
111 mRunStart = start; 115 mRunStart = start;
112 mRunEnd = end; 116 mRunEnd = end;
113 saveRunningInfoToFile( comment ); 117 saveRunningInfoToFile( comment );
114} 118}
115void Todo::restartSaveTimer( int secs ) 119void Todo::restartSaveTimer( int secs )
116{ 120{
117 mRunSaveTimer->start( secs * 1000 ); 121 mRunSaveTimer->start( secs * 1000 );
118 mRunLastSave = QDateTime::currentDateTime(); 122 mRunLastSave = QDateTime::currentDateTime();
119 mCurrentTimerDelay = secs; 123 mCurrentTimerDelay = secs;
120} 124}
121void Todo::timerSlotSaveRunningInfoToFile() 125void Todo::timerSlotSaveRunningInfoToFile()
122{ 126{
123 mRunEnd = QDateTime::currentDateTime(); 127 mRunEnd = QDateTime::currentDateTime();
124 int secsTo = mRunLastSave.secsTo( mRunEnd ); 128 int secsTo = mRunLastSave.secsTo( mRunEnd );
125 //if( secsTo == 8 ) ++secsTo; 129 //if( secsTo == 8 ) ++secsTo;
126 qDebug("KO Todo::saveTimerTimeout %d %d", secsTo, mCurrentTimerDelay ); 130 qDebug("KO Todo::saveTimerTimeout %d %d", secsTo, mCurrentTimerDelay );
127 if ( secsTo > mCurrentTimerDelay ) { 131 if ( secsTo > mCurrentTimerDelay ) {
128 qDebug("KO Todo::saveTimerTimeout restart %d ", SAVETIMER_TIMEOUT_RETRY_SECONDS ); 132 qDebug("KO Todo::saveTimerTimeout restart %d ", SAVETIMER_TIMEOUT_RETRY_SECONDS );
129 restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS ); 133 restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS );
130 return; 134 return;
131 } 135 }
132 int msecs = mRunLastSave.time().msecsTo( mRunEnd.time()); 136 int msecs = mRunLastSave.time().msecsTo( mRunEnd.time());
133 if ( msecs < 0 ) { 137 if ( msecs < 0 ) {
134 restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS ); 138 restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS );
135 return; 139 return;
136 } 140 }
137 // qDebug("KO Todo::saveTimerTimeout restarting! millisecs %d", msecs - ( ( mCurrentTimerDelay * 1000 ) + 50 ) ); 141 // qDebug("KO Todo::saveTimerTimeout restarting! millisecs %d", msecs - ( ( mCurrentTimerDelay * 1000 ) + 50 ) );
138 if ( msecs > ( ( mCurrentTimerDelay * 1000 ) + 50 )) { 142 if ( msecs > ( ( mCurrentTimerDelay * 1000 ) + 50 )) {
139 qDebug("KO Todo::saveTimerTimeout restarting! millisecs %d", msecs - ( ( mCurrentTimerDelay * 1000 ) + 50 ) ); 143 qDebug("KO Todo::saveTimerTimeout restarting! millisecs %d", msecs - ( ( mCurrentTimerDelay * 1000 ) + 50 ) );
140 restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS ); 144 restartSaveTimer( SAVETIMER_TIMEOUT_RETRY_SECONDS );
141 return; 145 return;
142
143 } 146 }
144 restartSaveTimer( SAVETIMER_TIMEOUT_SECONDS ); 147 restartSaveTimer( SAVETIMER_TIMEOUT_SECONDS );
145 saveRunningInfoToFile( QString::null ); 148 saveRunningInfoToFile( QString::null );
146} 149}
147void Todo::saveRunningInfoToFile() 150void Todo::saveRunningInfoToFile()
148{ 151{
149 mRunEnd = QDateTime::currentDateTime(); 152 mRunEnd = QDateTime::currentDateTime();
150 saveRunningInfoToFile( QString::null ); 153 saveRunningInfoToFile( QString::null );
151} 154}
152void Todo::saveRunningInfoToFile( QString comment ) 155void Todo::saveRunningInfoToFile( QString comment )
153{ 156{
157#ifndef DESKTOP_VERSION
158 QPEApplication::setTempScreenSaverMode ( QPEApplication::Disable );
159#endif
154 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1()); 160 //qDebug("Todo::saveRunningInfoToFile() %s", summary().latin1());
155 if ( mRunStart.secsTo ( mRunEnd) < 15 ) { 161 if ( mRunStart.secsTo ( mRunEnd) < 15 ) {
156 qDebug("Running time < 15 seconds. Skipped. "); 162 qDebug("Running time < 15 seconds. Skipped. ");
157 return; 163 return;
158 } 164 }
159 QString dir = KGlobalSettings::timeTrackerDir(); 165 QString dir = KGlobalSettings::timeTrackerDir();
160 //qDebug("%s ", dir.latin1()); 166 //qDebug("%s ", dir.latin1());
161 QString file = "%1%2%3-%4%5%6-"; 167 QString file = "%1%2%3-%4%5%6-";
162 file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 ); 168 file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 );
163 file.replace ( QRegExp (" "), "0" ); 169 file.replace ( QRegExp (" "), "0" );
164 file += uid(); 170 file += uid();
165 //qDebug("File %s ",file.latin1() ); 171 //qDebug("File %s ",file.latin1() );
166 CalendarLocal cal; 172 CalendarLocal cal;
167 cal.setLocalTime(); 173 cal.setLocalTime();
168 Todo * to = (Todo*) clone(); 174 Todo * to = (Todo*) clone();
169 to->setFloats( false ); 175 to->setFloats( false );
170 to->setDtStart( mRunStart ); 176 to->setDtStart( mRunStart );
171 to->setHasStartDate( true ); 177 to->setHasStartDate( true );
172 to->setDtDue( mRunEnd ); 178 to->setDtDue( mRunEnd );
173 to->setHasDueDate( true ); 179 to->setHasDueDate( true );
174 to->setUid( file ); 180 to->setUid( file );
175 if ( !comment.isEmpty() ) { 181 if ( !comment.isEmpty() ) {
176 QString des = to->description(); 182 QString des = to->description();
177 if ( des.isEmpty () ) 183 if ( des.isEmpty () )
178 to->setDescription( "TT-Note: " + comment ); 184 to->setDescription( "TT-Note: " + comment );
179 else 185 else
180 to->setDescription( "TT-Note: " + comment +"\n" + des ); 186 to->setDescription( "TT-Note: " + comment +"\n" + des );
181 } 187 }
182 cal.addIncidence( to ); 188 cal.addIncidence( to );
183 ICalFormat format( false ); 189 ICalFormat format( false );
184 file = dir +"/" +file +".ics"; 190 file = dir +"/" +file +".ics";
185 format.save( &cal, file ); 191 format.save( &cal, file );
186 saveParents(); 192 saveParents();
187 193#ifndef DESKTOP_VERSION
194 QPEApplication::setTempScreenSaverMode ( QPEApplication::Enable );
195#endif
188} 196}
189void Todo::saveParents() 197void Todo::saveParents()
190{ 198{
191 if (!relatedTo() ) 199 if (!relatedTo() )
192 return; 200 return;
193 Incidence * inc = relatedTo(); 201 Incidence * inc = relatedTo();
194 if ( inc->typeID() != todoID ) 202 if ( inc->typeID() != todoID )
195 return; 203 return;
196 Todo* to = (Todo*)inc; 204 Todo* to = (Todo*)inc;
197 bool saveTodo = false; 205 bool saveTodo = false;
198 QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics"; 206 QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics";
199 QFileInfo fi ( file ); 207 QFileInfo fi ( file );
200 if ( fi.exists() ) { 208 if ( fi.exists() ) {
201 if ( fi.lastModified () < to->lastModified ()) 209 if ( fi.lastModified () < to->lastModified ())
202 saveTodo = true; 210 saveTodo = true;
203 } else { 211 } else {
204 saveTodo = true; 212 saveTodo = true;
205 } 213 }
206 if ( saveTodo ) { 214 if ( saveTodo ) {
207 CalendarLocal cal; 215 CalendarLocal cal;
208 cal.setLocalTime(); 216 cal.setLocalTime();
209 Todo * par = (Todo *) to->clone(); 217 Todo * par = (Todo *) to->clone();
210 cal.addIncidence( par ); 218 cal.addIncidence( par );
211 ICalFormat format( false ); 219 ICalFormat format( false );
212 format.save( &cal, file ); 220 format.save( &cal, file );
213 } 221 }
214 to->saveParents(); 222 to->saveParents();
215} 223}
216 224
217int Todo::runTime() 225int Todo::runTime()
218{ 226{
219 if ( !mRunning ) 227 if ( !mRunning )
220 return 0; 228 return 0;
221 return mRunStart.secsTo( QDateTime::currentDateTime() ); 229 return mRunStart.secsTo( QDateTime::currentDateTime() );
222} 230}
223bool Todo::hasRunningSub() 231bool Todo::hasRunningSub()
224{ 232{
225 if ( mRunning ) 233 if ( mRunning )
226 return true; 234 return true;
227 Incidence *aTodo; 235 Incidence *aTodo;
228 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) { 236 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) {
229 if ( ((Todo*)aTodo)->hasRunningSub() ) 237 if ( ((Todo*)aTodo)->hasRunningSub() )
230 return true; 238 return true;
231 } 239 }
232 return false; 240 return false;
233} 241}
234Incidence *Todo::clone() 242Incidence *Todo::clone()
235{ 243{
236 return new Todo(*this); 244 return new Todo(*this);
237} 245}
238 246
239bool Todo::contains ( Todo* from ) 247bool Todo::contains ( Todo* from )
240{ 248{
241 249
242 if ( !from->summary().isEmpty() ) 250 if ( !from->summary().isEmpty() )
243 if ( !summary().startsWith( from->summary() )) 251 if ( !summary().startsWith( from->summary() ))
244 return false; 252 return false;
245 if ( from->hasStartDate() ) { 253 if ( from->hasStartDate() ) {
246 if ( !hasStartDate() ) 254 if ( !hasStartDate() )
247 return false; 255 return false;
248 if ( from->dtStart() != dtStart()) 256 if ( from->dtStart() != dtStart())
249 return false; 257 return false;
250 } 258 }
251 if ( from->hasDueDate() ){ 259 if ( from->hasDueDate() ){
252 if ( !hasDueDate() ) 260 if ( !hasDueDate() )
253 return false; 261 return false;
254 if ( from->dtDue() != dtDue()) 262 if ( from->dtDue() != dtDue())
255 return false; 263 return false;
256 } 264 }
257 if ( !from->location().isEmpty() ) 265 if ( !from->location().isEmpty() )
258 if ( !location().startsWith( from->location() ) ) 266 if ( !location().startsWith( from->location() ) )
259 return false; 267 return false;
260 if ( !from->description().isEmpty() ) 268 if ( !from->description().isEmpty() )
261 if ( !description().startsWith( from->description() )) 269 if ( !description().startsWith( from->description() ))
262 return false; 270 return false;
263 if ( from->alarms().count() ) { 271 if ( from->alarms().count() ) {
264 Alarm *a = from->alarms().first(); 272 Alarm *a = from->alarms().first();
265 if ( a->enabled() ){ 273 if ( a->enabled() ){
266 if ( !alarms().count() ) 274 if ( !alarms().count() )
267 return false; 275 return false;
268 Alarm *b = alarms().first(); 276 Alarm *b = alarms().first();
269 if( ! b->enabled() ) 277 if( ! b->enabled() )
270 return false; 278 return false;
271 if ( ! (a->offset() == b->offset() )) 279 if ( ! (a->offset() == b->offset() ))
272 return false; 280 return false;
273 } 281 }
274 } 282 }
275 283
276 QStringList cat = categories(); 284 QStringList cat = categories();
277 QStringList catFrom = from->categories(); 285 QStringList catFrom = from->categories();
278 QString nCat; 286 QString nCat;
279 unsigned int iii; 287 unsigned int iii;
280 for ( iii = 0; iii < catFrom.count();++iii ) { 288 for ( iii = 0; iii < catFrom.count();++iii ) {
281 nCat = catFrom[iii]; 289 nCat = catFrom[iii];
282 if ( !nCat.isEmpty() ) 290 if ( !nCat.isEmpty() )
283 if ( !cat.contains( nCat )) { 291 if ( !cat.contains( nCat )) {
284 return false; 292 return false;
285 } 293 }
286 } 294 }
287 if ( from->isCompleted() ) { 295 if ( from->isCompleted() ) {
288 if ( !isCompleted() ) 296 if ( !isCompleted() )
289 return false; 297 return false;
290 } 298 }
291 if( priority() != from->priority() ) 299 if( priority() != from->priority() )
292 return false; 300 return false;
293 301
294 302
295 return true; 303 return true;
296 304
297} 305}
298bool KCal::operator==( const Todo& t1, const Todo& t2 ) 306bool KCal::operator==( const Todo& t1, const Todo& t2 )
299{ 307{
300 308
301 bool ret = operator==( (const Incidence&)t1, (const Incidence&)t2 ); 309 bool ret = operator==( (const Incidence&)t1, (const Incidence&)t2 );
302 if ( ! ret ) 310 if ( ! ret )
303 return false; 311 return false;
304 if ( t1.hasDueDate() == t2.hasDueDate() ) { 312 if ( t1.hasDueDate() == t2.hasDueDate() ) {
305 if ( t1.hasDueDate() ) { 313 if ( t1.hasDueDate() ) {
306 if ( t1.doesFloat() == t2.doesFloat() ) { 314 if ( t1.doesFloat() == t2.doesFloat() ) {
307 if ( t1.doesFloat() ) { 315 if ( t1.doesFloat() ) {
308 if ( t1.dtDue().date() != t2.dtDue().date() ) 316 if ( t1.dtDue().date() != t2.dtDue().date() )
309 return false; 317 return false;
310 } else 318 } else
311 if ( t1.dtDue() != t2.dtDue() ) 319 if ( t1.dtDue() != t2.dtDue() )
312 return false; 320 return false;
313 } else 321 } else
314 return false;// float != 322 return false;// float !=
315 } 323 }
316 324
317 } else 325 } else
318 return false; 326 return false;
319 if ( t1.percentComplete() != t2.percentComplete() ) 327 if ( t1.percentComplete() != t2.percentComplete() )
320 return false; 328 return false;
321 if ( t1.isCompleted() ) { 329 if ( t1.isCompleted() ) {
322 if ( t1.hasCompletedDate() == t2.hasCompletedDate() ) { 330 if ( t1.hasCompletedDate() == t2.hasCompletedDate() ) {
323 if ( t1.hasCompletedDate() ) { 331 if ( t1.hasCompletedDate() ) {
324 if ( t1.completed() != t2.completed() ) 332 if ( t1.completed() != t2.completed() )
325 return false; 333 return false;
326 } 334 }
327 335
328 } else 336 } else
329 return false; 337 return false;
330 } 338 }
331 return true; 339 return true;
332 340
333} 341}
334 342
335void Todo::setDtDue(const QDateTime &dtDue) 343void Todo::setDtDue(const QDateTime &dtDue)
336{ 344{
337 //int diffsecs = mDtDue.secsTo(dtDue); 345 //int diffsecs = mDtDue.secsTo(dtDue);
338 346
339 /*if (mReadOnly) return; 347 /*if (mReadOnly) return;
340 const QPtrList<Alarm>& alarms = alarms(); 348 const QPtrList<Alarm>& alarms = alarms();
341 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next()) { 349 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next()) {
342 if (alarm->enabled()) { 350 if (alarm->enabled()) {
343 alarm->setTime(alarm->time().addSecs(diffsecs)); 351 alarm->setTime(alarm->time().addSecs(diffsecs));
344 } 352 }
345 }*/ 353 }*/
346 mDtDue = getEvenTime(dtDue); 354 mDtDue = getEvenTime(dtDue);
347 355
348 //kdDebug(5800) << "setDtDue says date is " << mDtDue.toString() << endl; 356 //kdDebug(5800) << "setDtDue says date is " << mDtDue.toString() << endl;
349 357
350 /*const QPtrList<Alarm>& alarms = alarms(); 358 /*const QPtrList<Alarm>& alarms = alarms();
351 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next()) 359 for (Alarm* alarm = alarms.first(); alarm; alarm = alarms.next())
352 alarm->setAlarmStart(mDtDue);*/ 360 alarm->setAlarmStart(mDtDue);*/
353 updated(); 361 updated();
354} 362}
355 363
356QDateTime Todo::dtDue() const 364QDateTime Todo::dtDue() const
357{ 365{
358 return mDtDue; 366 return mDtDue;
359} 367}
360 368
361QString Todo::dtDueTimeStr() const 369QString Todo::dtDueTimeStr() const
362{ 370{
363 return KGlobal::locale()->formatTime(mDtDue.time()); 371 return KGlobal::locale()->formatTime(mDtDue.time());
364} 372}
365 373
366QString Todo::dtDueDateStr(bool shortfmt) const 374QString Todo::dtDueDateStr(bool shortfmt) const
367{ 375{
368 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt); 376 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt);
369} 377}
370 378
371QString Todo::dtDueStr(bool shortfmt) const 379QString Todo::dtDueStr(bool shortfmt) const
372{ 380{
373 if ( doesFloat() ) 381 if ( doesFloat() )
374 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt); 382 return KGlobal::locale()->formatDate(mDtDue.date(),shortfmt);
375 return KGlobal::locale()->formatDateTime(mDtDue, shortfmt); 383 return KGlobal::locale()->formatDateTime(mDtDue, shortfmt);
376} 384}
377// retval 0 : no found 385// retval 0 : no found
378// 1 : due for date found 386// 1 : due for date found
379// 2 : overdue for date found 387// 2 : overdue for date found
380int Todo::hasDueSubTodoForDate( const QDate & date, bool checkSubtodos ) 388int Todo::hasDueSubTodoForDate( const QDate & date, bool checkSubtodos )
381{ 389{
382 int retval = 0; 390 int retval = 0;
383 if ( isCompleted() ) 391 if ( isCompleted() )
384 return 0; 392 return 0;
385 if ( hasDueDate() ) { 393 if ( hasDueDate() ) {
386 if ( dtDue().date() < date ) 394 if ( dtDue().date() < date )
387 return 2; 395 return 2;
388 // we do not return, because we may find an overdue sub todo 396 // we do not return, because we may find an overdue sub todo
389 if ( dtDue().date() == date ) 397 if ( dtDue().date() == date )
390 retval = 1; 398 retval = 1;
391 } 399 }
392 if ( checkSubtodos ) { 400 if ( checkSubtodos ) {
393 Incidence *aTodo; 401 Incidence *aTodo;
394 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) { 402 for (aTodo = mRelations.first(); aTodo; aTodo = mRelations.next()) {
395 int ret = ((Todo*)aTodo)->hasDueSubTodoForDate( date ,checkSubtodos ); 403 int ret = ((Todo*)aTodo)->hasDueSubTodoForDate( date ,checkSubtodos );
396 if ( ret == 2 ) 404 if ( ret == 2 )
397 return 2; 405 return 2;
398 if ( ret == 1) 406 if ( ret == 1)
399 retval = 1; 407 retval = 1;
400 } 408 }
401 } 409 }
402 return retval; 410 return retval;
403} 411}
404int Todo::hasDueSubTodo( bool checkSubtodos ) //= true 412int Todo::hasDueSubTodo( bool checkSubtodos ) //= true
405{ 413{
406 return hasDueSubTodoForDate(QDate::currentDate(), checkSubtodos ); 414 return hasDueSubTodoForDate(QDate::currentDate(), checkSubtodos );
407} 415}
408bool Todo::hasDueDate() const 416bool Todo::hasDueDate() const
409{ 417{
410 return mHasDueDate; 418 return mHasDueDate;
411} 419}
412 420
413void Todo::setHasDueDate(bool f) 421void Todo::setHasDueDate(bool f)
414{ 422{
415 if (mReadOnly) return; 423 if (mReadOnly) return;
416 mHasDueDate = f; 424 mHasDueDate = f;
417 updated(); 425 updated();
418} 426}
419 427
420 428
421#if 0 429#if 0
422void Todo::setStatus(const QString &statStr) 430void Todo::setStatus(const QString &statStr)
423{ 431{
424 if (mReadOnly) return; 432 if (mReadOnly) return;
425 QString ss(statStr.upper()); 433 QString ss(statStr.upper());
426 434
427 if (ss == "X-ACTION") 435 if (ss == "X-ACTION")
428 mStatus = NEEDS_ACTION; 436 mStatus = NEEDS_ACTION;
429 else if (ss == "NEEDS ACTION") 437 else if (ss == "NEEDS ACTION")
430 mStatus = NEEDS_ACTION; 438 mStatus = NEEDS_ACTION;
431 else if (ss == "ACCEPTED") 439 else if (ss == "ACCEPTED")
432 mStatus = ACCEPTED; 440 mStatus = ACCEPTED;
433 else if (ss == "SENT") 441 else if (ss == "SENT")
434 mStatus = SENT; 442 mStatus = SENT;
435 else if (ss == "TENTATIVE") 443 else if (ss == "TENTATIVE")
436 mStatus = TENTATIVE; 444 mStatus = TENTATIVE;
437 else if (ss == "CONFIRMED") 445 else if (ss == "CONFIRMED")
438 mStatus = CONFIRMED; 446 mStatus = CONFIRMED;
439 else if (ss == "DECLINED") 447 else if (ss == "DECLINED")
440 mStatus = DECLINED; 448 mStatus = DECLINED;
441 else if (ss == "COMPLETED") 449 else if (ss == "COMPLETED")
442 mStatus = COMPLETED; 450 mStatus = COMPLETED;
443 else if (ss == "DELEGATED") 451 else if (ss == "DELEGATED")