summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt2
-rw-r--r--korganizer/kdatenavigator.cpp18
-rw-r--r--korganizer/komonthview.cpp25
-rw-r--r--korganizer/komonthview.h2
-rw-r--r--korganizer/mainwindow.cpp28
-rw-r--r--microkde/kdecore/klocale.cpp37
-rw-r--r--microkde/kdecore/klocale.h2
7 files changed, 64 insertions, 50 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index ce68a1d..b5285bf 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,215 +1,217 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.22 ************ 3********** VERSION 2.0.22 ************
4 4
5KO/Pi: 5KO/Pi:
6Fix for creating events/todos via the abgenda context menu. 6Fix for creating events/todos via the abgenda context menu.
7Added option to split toolbar to 3 toolbars. 7Added option to split toolbar to 3 toolbars.
8Added option to show one small filter-view-toolbar. 8Added option to show one small filter-view-toolbar.
9Added a print option to the desktop version: 9Added a print option to the desktop version:
10Now you can print out the view of the "Event Viewer". 10Now you can print out the view of the "Event Viewer".
11That means you can print all data of one particular event/todo. 11That means you can print all data of one particular event/todo.
12Added scaling options to printout of Event Viewer and What'sNext View.
13Fixed some problems in the month view in "week start sunday" mode.
12 14
13********** VERSION 2.0.21 ************ 15********** VERSION 2.0.21 ************
14 16
15Fixed another SMTP problem in OM/Pi. 17Fixed another SMTP problem in OM/Pi.
16Some small changed in the new datenavigator in KO/Pi. 18Some small changed in the new datenavigator in KO/Pi.
17Changed default setting for new filter in KA/Pi to "exclude categories". 19Changed default setting for new filter in KA/Pi to "exclude categories".
18Changed the default font size for 640x480 display . 20Changed the default font size for 640x480 display .
19Changed popup menu behaviour in agenda and list view. 21Changed popup menu behaviour in agenda and list view.
20Fixed some layout problems of the date label size in the month view. 22Fixed some layout problems of the date label size in the month view.
21Made month view update faster. 23Made month view update faster.
22Made first datenavigator repainting faster. 24Made first datenavigator repainting faster.
23Changed the title of the event/todo edit dialogs. 25Changed the title of the event/todo edit dialogs.
24Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course). 26Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course).
25Many small usebility fixes in KO/Pi. 27Many small usebility fixes in KO/Pi.
26Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi. 28Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi.
27The set of possible "next views" are the views you have toolbar buttons for. 29The set of possible "next views" are the views you have toolbar buttons for.
28 30
29Made alarm sound working on Linux. 31Made alarm sound working on Linux.
30 32
31KO/Pi alarm applet changed: 33KO/Pi alarm applet changed:
32Made buttons in alarm dialog much bigger. 34Made buttons in alarm dialog much bigger.
33Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger. 35Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger.
34The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings. 36The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings.
35 37
36And because this version is realeased at Easter, I added an Easter-egg: 38And because this version is realeased at Easter, I added an Easter-egg:
37With a new undocumented command you can get a message box about the next alarm. 39With a new undocumented command you can get a message box about the next alarm.
38Good luck to find it! 40Good luck to find it!
39 41
40 42
41 43
42********** VERSION 2.0.20 ************ 44********** VERSION 2.0.20 ************
43 45
44Two small fixes in OM/Pi. 46Two small fixes in OM/Pi.
45 47
46Better resizing of the new datenavigator in KO/Pi. 48Better resizing of the new datenavigator in KO/Pi.
47 49
48********** VERSION 2.0.19 ************ 50********** VERSION 2.0.19 ************
49KO/Pi: 51KO/Pi:
50Enhancements and bugfixes in the new datenavigator. 52Enhancements and bugfixes in the new datenavigator.
51Bugfix in this changelog: 53Bugfix in this changelog:
52The datenavigator was changed in version 2.0.18, not the datepicker. 54The datenavigator was changed in version 2.0.18, not the datepicker.
53 55
54********** VERSION 2.0.18 ************ 56********** VERSION 2.0.18 ************
55KO/Pi: 57KO/Pi:
56Fixed some minor problems. 58Fixed some minor problems.
57Cleaned up the KO/Pi config dialog. 59Cleaned up the KO/Pi config dialog.
58Fixed problem moving events in aganda view. 60Fixed problem moving events in aganda view.
59Made datepicker scaleable, i.e. if the datenavigator shows now a 61Made datepicker scaleable, i.e. if the datenavigator shows now a
60datenavigator matrix depending on its size. 62datenavigator matrix depending on its size.
61Birthdays are now displayed green in the datenavigator. 63Birthdays are now displayed green in the datenavigator.
62What'sThis Help in datenavigator shows all events of the day. 64What'sThis Help in datenavigator shows all events of the day.
63 65
64OM/Pi: 66OM/Pi:
65Updated the backend mail library to the latest version. 67Updated the backend mail library to the latest version.
66Please backup your mail before using this version. 68Please backup your mail before using this version.
67 69
68********** VERSION 2.0.17 ************ 70********** VERSION 2.0.17 ************
69 71
70KO/Pi: 72KO/Pi:
71Tooltips in month view were not sorted. Fixed. 73Tooltips in month view were not sorted. Fixed.
72Daylabel in agenda view ( for display of one day ) was too short. Fixed. 74Daylabel in agenda view ( for display of one day ) was too short. Fixed.
73Conflict display dialog for syncing was not on top of other windows. Fixed. 75Conflict display dialog for syncing was not on top of other windows. Fixed.
74Fixed some minor problems. 76Fixed some minor problems.
75 77
76Fixed an endless loop when importing vcs file with RESOURCES entry. 78Fixed an endless loop when importing vcs file with RESOURCES entry.
77 79
78********** VERSION 2.0.16 ************ 80********** VERSION 2.0.16 ************
79OM/Pi: 81OM/Pi:
80Fixed the SMTP account setting the option. 82Fixed the SMTP account setting the option.
81Fixed something in mail sending. 83Fixed something in mail sending.
82 84
83KO/Pi: 85KO/Pi:
84Added possibility to export selected events/todos as vcal file. 86Added possibility to export selected events/todos as vcal file.
85 87
86********** VERSION 2.0.15 ************ 88********** VERSION 2.0.15 ************
87 89
88PwM/Pi: 90PwM/Pi:
89Added keyboard shorcuts for 91Added keyboard shorcuts for
90- toggling summary view (space bar) 92- toggling summary view (space bar)
91- delete item (delete + backspace key) 93- delete item (delete + backspace key)
92- add new item ( i + n key) 94- add new item ( i + n key)
93Fixed length of info in the title. 95Fixed length of info in the title.
94 96
95KO/Pi-KA/Pi: 97KO/Pi-KA/Pi:
96Changed "ME" menu bar entry to an icon. 98Changed "ME" menu bar entry to an icon.
97 99
98KO/Pi: 100KO/Pi:
99Fixed two minor bugs in displaying todos. 101Fixed two minor bugs in displaying todos.
100If in month view a cell is selected, the key shortcut "d" shows now that date. 102If in month view a cell is selected, the key shortcut "d" shows now that date.
101Added complete info for a todo in month view as an icon left of the text. 103Added complete info for a todo in month view as an icon left of the text.
102Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 104Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
103Fixed problem of search dialog size when switching displays. 105Fixed problem of search dialog size when switching displays.
104Cancel key now closes date picker. 106Cancel key now closes date picker.
105Rearranged KO/Pi file menu structure. 107Rearranged KO/Pi file menu structure.
106 108
107OM/Pi: 109OM/Pi:
108Added to the SMTP account setting the option 110Added to the SMTP account setting the option
109"No secure connection". 111"No secure connection".
110You have to configure your SMTP accounts again, sorry. 112You have to configure your SMTP accounts again, sorry.
111 113
112KA/Pi: 114KA/Pi:
113Added support for importing quoted-printable. 115Added support for importing quoted-printable.
114Support was added by Peter P.. Thanks, Peter! 116Support was added by Peter P.. Thanks, Peter!
115 117
116 118
117********** VERSION 2.0.14 ************ 119********** VERSION 2.0.14 ************
118 120
119Made Passwordmanager PwM/Pi more userfriendly: 121Made Passwordmanager PwM/Pi more userfriendly:
120Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 122Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
121Fixed bug in KO/Pi todo printing. 123Fixed bug in KO/Pi todo printing.
122Made Qtopia calendar import possible on desktop . 124Made Qtopia calendar import possible on desktop .
123 125
124********** VERSION 2.0.13 ************ 126********** VERSION 2.0.13 ************
125 127
126Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 128Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
127 129
128In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 130In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
129 131
130OM/Pi: 132OM/Pi:
131Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 133Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
132Added missing German translation. 134Added missing German translation.
133Added warning if path is specified in local folder settings of account config. 135Added warning if path is specified in local folder settings of account config.
134 136
135********** VERSION 2.0.12 ************ 137********** VERSION 2.0.12 ************
136 138
137KO/Pi: 139KO/Pi:
138Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 140Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
139Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 141Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
140Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 142Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
141 143
142Fixed problem in pi-sync mode when wrong password was sent. 144Fixed problem in pi-sync mode when wrong password was sent.
143 145
144OM/Pi: 146OM/Pi:
145Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 147Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
146Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 148Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
147 149
148********** VERSION 2.0.11 ************ 150********** VERSION 2.0.11 ************
149 151
150Fixed some problems in pi-sync mode 152Fixed some problems in pi-sync mode
151(e.g. details of events were not synced properly) 153(e.g. details of events were not synced properly)
152 154
153********** VERSION 2.0.10 ************ 155********** VERSION 2.0.10 ************
154 156
155KO/Pi: 157KO/Pi:
156In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 158In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
157This is fixed. 159This is fixed.
158Changed the search dialog a bit to make it more user friendly. 160Changed the search dialog a bit to make it more user friendly.
159(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 161(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
160 162
161Added config option to hide the week number in KO/Pi toolbar. 163Added config option to hide the week number in KO/Pi toolbar.
162 164
163********** VERSION 2.0.9 ************ 165********** VERSION 2.0.9 ************
164 166
165Made month view icons for multiday events a bit nicer. 167Made month view icons for multiday events a bit nicer.
166Some minor fixes in KO/Pi 168Some minor fixes in KO/Pi
167(e.g. go to today did not work for new week view properly). 169(e.g. go to today did not work for new week view properly).
168 170
169 171
170********** VERSION 2.0.8 ************ 172********** VERSION 2.0.8 ************
171 173
172Fixed a problem in dependency info in the ipk files for the Zaurus. 174Fixed a problem in dependency info in the ipk files for the Zaurus.
173 175
174Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 176Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
175 177
176Added a "go today" button to the datepicker. 178Added a "go today" button to the datepicker.
177 179
178Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 180Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
179and made it configureable to show these values. 181and made it configureable to show these values.
180 182
181Fixed a problem for events (from external iCal files) that do have a duration but no end date. 183Fixed a problem for events (from external iCal files) that do have a duration but no end date.
182 184
183 185
184********** VERSION 2.0.7 ************ 186********** VERSION 2.0.7 ************
185 187
186Added global application font settings 188Added global application font settings
187(for all KDE-Pim/Pi apps) to the general settings. 189(for all KDE-Pim/Pi apps) to the general settings.
188 190
189Fixed a problem in OM/Pi when trying to login to some IMAP servers 191Fixed a problem in OM/Pi when trying to login to some IMAP servers
190(like the IMAP server of Apple: mail.mac.com ) 192(like the IMAP server of Apple: mail.mac.com )
191 193
192Added recurring todos to KO/Pi. 194Added recurring todos to KO/Pi.
193 195
194 196
195********** VERSION 2.0.6 ************ 197********** VERSION 2.0.6 ************
196 198
197Stable release 2.0.6! 199Stable release 2.0.6!
198 200
199Some bugfixes in the pi-sync mode. 201Some bugfixes in the pi-sync mode.
200Added German translation for pi-sync mode. 202Added German translation for pi-sync mode.
201 203
202KO/Pi: 204KO/Pi:
203Made the todolist using alternate background. 205Made the todolist using alternate background.
204 206
205Other minor fixes in KO/Pi. 207Other minor fixes in KO/Pi.
206 208
207 209
208You can find the complete changelog 210You can find the complete changelog
209from version 1.7.7 to 2.0.5 211from version 1.7.7 to 2.0.5
210in the source package or on 212in the source package or on
211 213
212http://www.pi-sync.net/html/changelog.html 214http://www.pi-sync.net/html/changelog.html
213 215
214 216
215 217
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index 38bddc2..2fca49e 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -1,470 +1,468 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001,2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qstring.h> 24#include <qstring.h>
25#include <qkeycode.h> 25#include <qkeycode.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qtimer.h> 27#include <qtimer.h>
28#include <qframe.h> 28#include <qframe.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qapplication.h> 30#include <qapplication.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <kglobal.h> 34#include <kglobal.h>
35 35
36#include "koglobals.h" 36#include "koglobals.h"
37#include "koprefs.h" 37#include "koprefs.h"
38#ifndef KORG_NOPLUGINS 38#ifndef KORG_NOPLUGINS
39#include "kocore.h" 39#include "kocore.h"
40#endif 40#endif
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#include "navigatorbar.h" 44#include "navigatorbar.h"
45 45
46#include "kdatenavigator.h" 46#include "kdatenavigator.h"
47 47
48KDateNavigator::KDateNavigator( QWidget *parent, const char *name ) 48KDateNavigator::KDateNavigator( QWidget *parent, const char *name )
49 : QFrame(parent, name), 49 : QFrame(parent, name),
50 updateTimer(0L) 50 updateTimer(0L)
51{ 51{
52 setFrameStyle(QFrame::NoFrame); 52 setFrameStyle(QFrame::NoFrame);
53 QDate startDate = QDate::currentDate(); 53 QDate startDate = QDate::currentDate();
54 QGridLayout *topLayout = new QGridLayout(this,8,8); 54 QGridLayout *topLayout = new QGridLayout(this,8,8);
55 55
56 if (! startDate.isValid()) { 56 if (! startDate.isValid()) {
57 qDebug("KDateNavigator::invalid startdate "); 57 qDebug("KDateNavigator::invalid startdate ");
58 startDate = QDate::currentDate(); 58 startDate = QDate::currentDate();
59 } 59 }
60 mMonthSignalOffset = 0; 60 mMonthSignalOffset = 0;
61 mSelectedDates.append(startDate); 61 mSelectedDates.append(startDate);
62 m_MthYr = startDate; 62 m_MthYr = startDate;
63 m_bShowWeekNums = true; 63 m_bShowWeekNums = true;
64 64
65 setFont( KOPrefs::instance()->mDateNavigatorFont ); 65 setFont( KOPrefs::instance()->mDateNavigatorFont );
66 mNavigatorBar = new NavigatorBar( startDate, this ); 66 mNavigatorBar = new NavigatorBar( startDate, this );
67 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); 67 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 );
68 //mNavigatorBar->resize( 1,1); 68 //mNavigatorBar->resize( 1,1);
69 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 69 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
70 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 70 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
71 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 71 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
72 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 72 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
73 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) ); 73 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) );
74 74
75 // get the day of the week on the first day 75 // get the day of the week on the first day
76 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 76 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
77 m_fstDayOfWk = dayone.dayOfWeek(); 77 m_fstDayOfWk = dayone.dayOfWeek();
78 78
79 int i; 79 int i;
80 80
81 // Set up the heading fields. 81 // Set up the heading fields.
82 for( i = 0; i < 7; i++ ) { 82 for( i = 0; i < 7; i++ ) {
83 headings[i] = new QLabel("",this); 83 headings[i] = new QLabel("",this);
84 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold)); 84 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold));
85 headings[i]->setAlignment(AlignCenter); 85 headings[i]->setAlignment(AlignCenter);
86 headings[i]->installEventFilter(this); 86 headings[i]->installEventFilter(this);
87 87
88 topLayout->addWidget(headings[i],1,i+1); 88 topLayout->addWidget(headings[i],1,i+1);
89 } 89 }
90 90
91 // Create the weeknumber labels 91 // Create the weeknumber labels
92 for( i = 0; i < 6; i++ ) { 92 for( i = 0; i < 6; i++ ) {
93 weeknos[i] = new QLabel(this); 93 weeknos[i] = new QLabel(this);
94 weeknos[i]->setAlignment(AlignCenter); 94 weeknos[i]->setAlignment(AlignCenter);
95 //weeknos[i]->setFont(QFont("Arial", 10)); 95 //weeknos[i]->setFont(QFont("Arial", 10));
96 if(!m_bShowWeekNums) { 96 if(!m_bShowWeekNums) {
97 weeknos[i]->hide(); 97 weeknos[i]->hide();
98 } 98 }
99 weeknos[i]->installEventFilter(this); 99 weeknos[i]->installEventFilter(this);
100 100
101 topLayout->addWidget(weeknos[i],i+2,0); 101 topLayout->addWidget(weeknos[i],i+2,0);
102 } 102 }
103 103
104 daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix"); 104 daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix");
105 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken); 105 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken);
106 daymatrix->setLineWidth(1); 106 daymatrix->setLineWidth(1);
107 107
108 connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ), 108 connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ),
109 SIGNAL( datesSelected( const KCal::DateList & ) ) ); 109 SIGNAL( datesSelected( const KCal::DateList & ) ) );
110 110
111 connect( daymatrix, SIGNAL( eventDropped( Event * ) ), 111 connect( daymatrix, SIGNAL( eventDropped( Event * ) ),
112 SIGNAL( eventDropped( Event * ) ) ); 112 SIGNAL( eventDropped( Event * ) ) );
113 113
114 topLayout->addMultiCellWidget(daymatrix,2,7,1,7); 114 topLayout->addMultiCellWidget(daymatrix,2,7,1,7);
115 115
116 // read settings from configuration file. 116 // read settings from configuration file.
117 updateConfig(); 117 updateConfig();
118 enableRollover(FollowMonth); 118 enableRollover(FollowMonth);
119 mySizeHint = sizeHintTwoButtons(); 119 mySizeHint = sizeHintTwoButtons();
120 myFullSizeHint = sizeHintTwoButtons( 4 ); 120 myFullSizeHint = sizeHintTwoButtons( 4 );
121 mFontChanged = false; 121 mFontChanged = false;
122 //resize ( 3,3 ); 122 //resize ( 3,3 );
123 123
124} 124}
125void KDateNavigator::changeFont ( QFont fo ) 125void KDateNavigator::changeFont ( QFont fo )
126{ 126{
127 setFont( fo ); 127 setFont( fo );
128 mNavigatorBar->resetFont( fo ); 128 mNavigatorBar->resetFont( fo );
129} 129}
130QFont KDateNavigator::yourFontHint( QSize si , bool *b) 130QFont KDateNavigator::yourFontHint( QSize si , bool *b)
131{ 131{
132 QFont fo = KOPrefs::instance()->mDateNavigatorFont; 132 QFont fo = KOPrefs::instance()->mDateNavigatorFont;
133 *b = false; 133 *b = false;
134 int fontPoint = fo.pointSize(); 134 int fontPoint = fo.pointSize();
135 while ( fontPoint > 5 ) { 135 while ( fontPoint > 5 ) {
136 --fontPoint; 136 --fontPoint;
137 fo.setPointSize( fontPoint ); 137 fo.setPointSize( fontPoint );
138 setFont( fo ); 138 setFont( fo );
139 mFontChanged = true; 139 mFontChanged = true;
140 mNavigatorBar->resetFont( fo ); 140 mNavigatorBar->resetFont( fo );
141 QSize sh = sizeHintTwoButtons( 2 ); 141 QSize sh = sizeHintTwoButtons( 2 );
142 //qDebug("fp %d %d %d %d %d", fontPoint, si.width() , sh.width() , si.height() , sh.height() ); 142 //qDebug("fp %d %d %d %d %d", fontPoint, si.width() , sh.width() , si.height() , sh.height() );
143 if ( si.width() > sh.width() && si.height() > sh.height()) { 143 if ( si.width() > sh.width() && si.height() > sh.height()) {
144 if ( si.width() / sh.width() == 1 ) { 144 if ( si.width() / sh.width() == 1 ) {
145 if ( si.width() < sizeHintTwoButtons( 4 ).width()) 145 if ( si.width() < sizeHintTwoButtons( 4 ).width())
146 continue; 146 continue;
147 } 147 }
148 *b = true; 148 *b = true;
149 //qDebug("fooooooooooooooooooooooouuuuund "); 149 //qDebug("fooooooooooooooooooooooouuuuund ");
150 break; 150 break;
151 } 151 }
152 } 152 }
153 //qDebug("returnnnnnnnnnnnnnnnnnnn %d", fo.pointSize() ); 153 //qDebug("returnnnnnnnnnnnnnnnnnnn %d", fo.pointSize() );
154 return fo; 154 return fo;
155} 155}
156QSize KDateNavigator::sizeHint() const 156QSize KDateNavigator::sizeHint() const
157{ 157{
158 QFontMetrics fm ( font() ); 158 QFontMetrics fm ( font() );
159 QSize day = daymatrix->sizeHint(); 159 QSize day = daymatrix->sizeHint();
160 QSize nav = mNavigatorBar->sizeHint(); 160 QSize nav = mNavigatorBar->sizeHint();
161 int wid = fm.width( "30") + day.width()+3; 161 int wid = fm.width( "30") + day.width()+3;
162 int hei = fm.height() +day.height()+nav.height()+2; 162 int hei = fm.height() +day.height()+nav.height()+2;
163 if ( wid < nav.width() ) 163 if ( wid < nav.width() )
164 wid = nav.width() ; 164 wid = nav.width() ;
165 //qDebug("KDateNavigator+++++++++++++ %d %d", wid , hei); 165 //qDebug("KDateNavigator+++++++++++++ %d %d", wid , hei);
166 return QSize ( wid, hei ); 166 return QSize ( wid, hei );
167} 167}
168QSize KDateNavigator::sizeHintTwoButtons( int butnum ) const 168QSize KDateNavigator::sizeHintTwoButtons( int butnum ) const
169{ 169{
170 QFontMetrics fm ( font() ); 170 QFontMetrics fm ( font() );
171 QSize day = daymatrix->sizeHint(); 171 QSize day = daymatrix->sizeHint();
172 QSize nav = mNavigatorBar->sizeHintTwoButtons( butnum ); 172 QSize nav = mNavigatorBar->sizeHintTwoButtons( butnum );
173 int wid = fm.width( "30") + day.width()+3; 173 int wid = fm.width( "30") + day.width()+3;
174 int hei = fm.height() +day.height()+nav.height()+2; 174 int hei = fm.height() +day.height()+nav.height()+2;
175 if ( wid < nav.width() ) 175 if ( wid < nav.width() )
176 wid = nav.width() ; 176 wid = nav.width() ;
177 //qDebug("KDateNavigator+++++++++++++ %d %d", wid , hei); 177 //qDebug("KDateNavigator+++++++++++++ %d %d", wid , hei);
178 return QSize ( wid, hei ); 178 return QSize ( wid, hei );
179} 179}
180void KDateNavigator::slotMonthSelected( int m ) 180void KDateNavigator::slotMonthSelected( int m )
181{ 181{
182 if ( m_MthYr.month() <= mMonthSignalOffset) 182 if ( m_MthYr.month() <= mMonthSignalOffset)
183 m += 12; 183 m += 12;
184 //qDebug("%d mMonthSignalOffset %d emit %d", m, mMonthSignalOffset, m - mMonthSignalOffset); 184 //qDebug("%d mMonthSignalOffset %d emit %d", m, mMonthSignalOffset, m - mMonthSignalOffset);
185 emit monthSelected( m - mMonthSignalOffset ); 185 emit monthSelected( m - mMonthSignalOffset );
186 186
187} 187}
188void KDateNavigator::setCalendar( Calendar *cal ) 188void KDateNavigator::setCalendar( Calendar *cal )
189{ 189{
190 daymatrix->setCalendar( cal ); 190 daymatrix->setCalendar( cal );
191} 191}
192 192
193void KDateNavigator::setBaseDate( const QDate &date , bool doRepaint ) // = true 193void KDateNavigator::setBaseDate( const QDate &date , bool doRepaint ) // = true
194{ 194{
195 m_MthYr = date; 195 m_MthYr = date;
196 //qDebug("KDateNavigator::setBaseDate %s ", date.toString().latin1()); 196 //qDebug("KDateNavigator::setBaseDate %s ", date.toString().latin1());
197 197
198 updateDates(); 198 updateDates();
199 updateView(); 199 updateView();
200 200
201 KCal::DateList dates; 201 KCal::DateList dates;
202 dates.append( date ); 202 dates.append( date );
203 mNavigatorBar->selectDates( dates ); 203 mNavigatorBar->selectDates( dates );
204 204
205 daymatrix->clearSelection(); 205 daymatrix->clearSelection();
206 if ( doRepaint ) 206 if ( doRepaint )
207 daymatrix->repaint( false ); 207 daymatrix->repaint( false );
208} 208}
209 209
210void KDateNavigator::enableRollover(RolloverType r) 210void KDateNavigator::enableRollover(RolloverType r)
211{ 211{
212 switch(r) 212 switch(r)
213 { 213 {
214 case None : 214 case None :
215 if (updateTimer) 215 if (updateTimer)
216 { 216 {
217 updateTimer->stop(); 217 updateTimer->stop();
218 delete updateTimer; 218 delete updateTimer;
219 updateTimer=0L; 219 updateTimer=0L;
220 } 220 }
221 break; 221 break;
222 case FollowDay : 222 case FollowDay :
223 case FollowMonth : 223 case FollowMonth :
224 if (!updateTimer) 224 if (!updateTimer)
225 { 225 {
226 updateTimer = new QTimer(this); 226 updateTimer = new QTimer(this);
227 QObject::connect(updateTimer,SIGNAL(timeout()), 227 QObject::connect(updateTimer,SIGNAL(timeout()),
228 this,SLOT(possiblyPastMidnight())); 228 this,SLOT(possiblyPastMidnight()));
229 } 229 }
230 updateTimer->start(0,true); 230 updateTimer->start(0,true);
231 lastDayChecked = QDate::currentDate(); 231 lastDayChecked = QDate::currentDate();
232 } 232 }
233 updateRollover=r; 233 updateRollover=r;
234} 234}
235 235
236 236
237KDateNavigator::~KDateNavigator() 237KDateNavigator::~KDateNavigator()
238{ 238{
239} 239}
240 240
241 241
242void KDateNavigator::passedMidnight() 242void KDateNavigator::passedMidnight()
243{ 243{
244 QDate today = QDate::currentDate(); 244 QDate today = QDate::currentDate();
245 bool emitMonth = false; 245 bool emitMonth = false;
246 246
247 if (today.month() != lastDayChecked.month()) 247 if (today.month() != lastDayChecked.month())
248 { 248 {
249 if (updateRollover==FollowMonth && 249 if (updateRollover==FollowMonth &&
250 daymatrix->isEndOfMonth()) { 250 daymatrix->isEndOfMonth()) {
251 goNextMonth(); 251 goNextMonth();
252 emitMonth=true; 252 emitMonth=true;
253 } 253 }
254 } 254 }
255 daymatrix->recalculateToday(); 255 daymatrix->recalculateToday();
256 daymatrix->repaint( false ); 256 daymatrix->repaint( false );
257 emit dayPassed(today); 257 emit dayPassed(today);
258 if (emitMonth) { emit monthPassed(today); } 258 if (emitMonth) { emit monthPassed(today); }
259} 259}
260 260
261/* slot */ void KDateNavigator::possiblyPastMidnight() 261/* slot */ void KDateNavigator::possiblyPastMidnight()
262{ 262{
263 if (lastDayChecked!=QDate::currentDate()) 263 if (lastDayChecked!=QDate::currentDate())
264 { 264 {
265 passedMidnight(); 265 passedMidnight();
266 lastDayChecked=QDate::currentDate(); 266 lastDayChecked=QDate::currentDate();
267 } 267 }
268 // Set the timer to go off 1 second after midnight 268 // Set the timer to go off 1 second after midnight
269 // or after 8 minutes, whichever comes first. 269 // or after 8 minutes, whichever comes first.
270 if (updateTimer) 270 if (updateTimer)
271 { 271 {
272 QTime now = QTime::currentTime(); 272 QTime now = QTime::currentTime();
273 QTime midnight = QTime(23,59,59); 273 QTime midnight = QTime(23,59,59);
274 int msecsWait = QMIN(480000,now.msecsTo(midnight)+2000); 274 int msecsWait = QMIN(480000,now.msecsTo(midnight)+2000);
275 275
276 // qDebug(QString("Waiting %1 msec from %2 to %3.").arg(msecsWait)) 276 // qDebug(QString("Waiting %1 msec from %2 to %3.").arg(msecsWait))
277 //.arg(now.toString()).arg(midnight.toString())); 277 //.arg(now.toString()).arg(midnight.toString()));
278 278
279 updateTimer->stop(); 279 updateTimer->stop();
280 updateTimer->start(msecsWait,true); 280 updateTimer->start(msecsWait,true);
281 } 281 }
282} 282}
283 283
284void KDateNavigator::updateDates() 284void KDateNavigator::updateDates()
285{ 285{
286 // Find the first day of the week of the current month. 286 // Find the first day of the week of the current month.
287 //int d1 = KOGlobals::self()->calendarSystem()->day( m_MthYr ); 287 //int d1 = KOGlobals::self()->calendarSystem()->day( m_MthYr );
288 QDate dayone( m_MthYr.year(), m_MthYr.month(), m_MthYr.day() ); 288 QDate dayone( m_MthYr.year(), m_MthYr.month(), m_MthYr.day() );
289 int d2 = KOGlobals::self()->calendarSystem()->day( dayone ); 289 int d2 = KOGlobals::self()->calendarSystem()->day( dayone );
290 //int di = d1 - d2 + 1; 290 //int di = d1 - d2 + 1;
291 dayone = dayone.addDays( -d2 + 1 ); 291 dayone = dayone.addDays( -d2 + 1 );
292 292
293 int m_fstDayOfWkCalsys = KOGlobals::self()->calendarSystem()->dayOfWeek( dayone ); 293 int m_fstDayOfWkCalsys = KOGlobals::self()->calendarSystem()->dayOfWeek( dayone );
294 294
295 // If month begins on Monday and Monday is first day of week, 295 // If month begins on Monday and Monday is first day of week,
296 // month should begin on second line. Sunday doesn't have this problem. 296 // month should begin on second line. Sunday doesn't have this problem.
297 int nextLine = ( ( m_fstDayOfWkCalsys == 1) && 297 int nextLine = ( ( m_fstDayOfWkCalsys == 1) &&
298 ( KGlobal::locale()->weekStartsMonday() == 1 ) ) ? 7 : 0; 298 ( KGlobal::locale()->weekStartsMonday() == 1 ) ) ? 7 : 0;
299 299
300 // update the matrix dates 300 // update the matrix dates
301 int index = (KGlobal::locale()->weekStartsMonday() ? 1 : 0) - m_fstDayOfWkCalsys - nextLine; 301 int index = (KGlobal::locale()->weekStartsMonday() ? 1 : 0) - m_fstDayOfWkCalsys - nextLine;
302 302
303 303
304 daymatrix->updateView(dayone.addDays(index)); 304 daymatrix->updateView(dayone.addDays(index));
305//each updateDates is followed by an updateView -> repaint is issued there ! 305//each updateDates is followed by an updateView -> repaint is issued there !
306// daymatrix->repaint(); 306// daymatrix->repaint();
307} 307}
308 308
309void KDateNavigator::updateDayMatrix() 309void KDateNavigator::updateDayMatrix()
310{ 310{
311 daymatrix->updateView(); 311 daymatrix->updateView();
312 //daymatrix->repaint(); 312 //daymatrix->repaint();
313} 313}
314 314
315 315
316void KDateNavigator::updateView() 316void KDateNavigator::updateView()
317{ 317{
318 318
319 setUpdatesEnabled( false ); 319 setUpdatesEnabled( false );
320 320
321 int i; 321 int i;
322 322
323// kdDebug() << "updateView() -> daymatrix->updateView()" << endl; 323// kdDebug() << "updateView() -> daymatrix->updateView()" << endl;
324 daymatrix->updateView(); 324 daymatrix->updateView();
325 325 int sub = 4;
326 if ( ! KGlobal::locale()->weekStartsMonday() )
327 --sub;
326 // set the week numbers. 328 // set the week numbers.
327 for(i = 0; i < 6; i++) { 329 for(i = 0; i < 6; i++) {
328 QString weeknum;
329 // remember, according to ISO 8601, the first week of the year is the 330 // remember, according to ISO 8601, the first week of the year is the
330 // first week that contains a thursday. Thus we must subtract off 4, 331 // first week that contains a thursday. Thus we must subtract off 4,
331 // not just 1. 332 // not just 1.
332 333
333 //ET int dayOfYear = buttons[(i + 1) * 7 - 4]->date().dayOfYear(); 334 //ET int dayOfYear = buttons[(i + 1) * 7 - 4]->date().dayOfYear();
334 int dayOfYear = KOGlobals::self()->calendarSystem()->dayOfYear((daymatrix->getDate((i+1)*7-4))); 335 int dayOfYear = KOGlobals::self()->calendarSystem()->dayOfYear((daymatrix->getDate((i+1)*7-sub)));
335 336 int weekNo;
336 int add = 0;
337 if ( ! KGlobal::locale()->weekStartsMonday() )
338 ++add;
339 if (dayOfYear % 7 != 0) 337 if (dayOfYear % 7 != 0)
340 weeknum.setNum(dayOfYear / 7 + 1+add); 338 weekNo = (dayOfYear / 7 + 1);
341 else 339 else
342 weeknum.setNum(dayOfYear / 7 +add); 340 weekNo = (dayOfYear / 7);
343 weeknos[i]->setText(weeknum); 341 weeknos[i]->setText(QString::number( weekNo ));
344 } 342 }
345 343
346 setUpdatesEnabled( true ); 344 setUpdatesEnabled( true );
347// kdDebug() << "updateView() -> repaint()" << endl; 345// kdDebug() << "updateView() -> repaint()" << endl;
348 repaint(); 346 repaint();
349 // daymatrix->repaint(); 347 // daymatrix->repaint();
350} 348}
351 349
352void KDateNavigator::updateConfig() 350void KDateNavigator::updateConfig()
353{ 351{
354 int day; 352 int day;
355 for(int i=0; i<7; i++) { 353 for(int i=0; i<7; i++) {
356 // take the first letter of the day name to be the abbreviation 354 // take the first letter of the day name to be the abbreviation
357 if (KGlobal::locale()->weekStartsMonday()) { 355 if (KGlobal::locale()->weekStartsMonday()) {
358 day = i+1; 356 day = i+1;
359 } else { 357 } else {
360 if (i==0) day = 7; 358 if (i==0) day = 7;
361 else day = i; 359 else day = i;
362 } 360 }
363 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( day, 361 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( day,
364 true ); 362 true );
365 if ( KOPrefs::instance()->mCompactDialogs ) dayName = dayName.left( 1 ); 363 if ( KOPrefs::instance()->mCompactDialogs ) dayName = dayName.left( 1 );
366 headings[i]->setText( dayName ); 364 headings[i]->setText( dayName );
367 } 365 }
368 updateDates(); 366 updateDates();
369 updateView(); 367 updateView();
370} 368}
371 369
372void KDateNavigator::setShowWeekNums(bool enabled) 370void KDateNavigator::setShowWeekNums(bool enabled)
373{ 371{
374 qDebug("KDateNavigator::setShowWeekNums***************************** "); 372 qDebug("KDateNavigator::setShowWeekNums***************************** ");
375 m_bShowWeekNums = enabled; 373 m_bShowWeekNums = enabled;
376 for(int i=0; i<6; i++) { 374 for(int i=0; i<6; i++) {
377 if(enabled) 375 if(enabled)
378 weeknos[i]->show(); 376 weeknos[i]->show();
379 else 377 else
380 weeknos[i]->hide(); 378 weeknos[i]->hide();
381 } 379 }
382 resize(size()); 380 resize(size());
383} 381}
384 382
385void KDateNavigator::selectDates(const DateList& dateList) 383void KDateNavigator::selectDates(const DateList& dateList)
386{ 384{
387 385
388 if (dateList.count() > 0) { 386 if (dateList.count() > 0) {
389 mNavigatorBar->selectDates( dateList ); 387 mNavigatorBar->selectDates( dateList );
390 mSelectedDates = dateList; 388 mSelectedDates = dateList;
391 389
392 // set our record of the month and year that this datetbl is 390 // set our record of the month and year that this datetbl is
393 // displaying. 391 // displaying.
394 m_MthYr = mSelectedDates.first(); 392 m_MthYr = mSelectedDates.first();
395 393
396 394
397 // set our record of the first day of the week of the current 395 // set our record of the first day of the week of the current
398 // month. This needs to be done before calling dayToIndex, since it 396 // month. This needs to be done before calling dayToIndex, since it
399 // relies on this information being up to date. 397 // relies on this information being up to date.
400 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 398 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
401 m_fstDayOfWk = dayone.dayOfWeek(); 399 m_fstDayOfWk = dayone.dayOfWeek();
402 400
403 updateDates(); 401 updateDates();
404 402
405 daymatrix->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); 403 daymatrix->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
406 404
407 updateView(); 405 updateView();
408 } 406 }
409} 407}
410 408
411int KDateNavigator::dayNum(int row, int col) 409int KDateNavigator::dayNum(int row, int col)
412{ 410{
413 return 7 * (row - 1) + (col + 1) - m_fstDayOfWk; 411 return 7 * (row - 1) + (col + 1) - m_fstDayOfWk;
414} 412}
415 413
416int KDateNavigator::dayToIndex(int dayNum) 414int KDateNavigator::dayToIndex(int dayNum)
417{ 415{
418 int row, col; 416 int row, col;
419 417
420 row = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) / 7; 418 row = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) / 7;
421 if (KGlobal::locale()->weekStartsMonday() && (m_fstDayOfWk == 1)) 419 if (KGlobal::locale()->weekStartsMonday() && (m_fstDayOfWk == 1))
422 row++; 420 row++;
423 col = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) % 7; 421 col = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) % 7;
424 return row * 7 + col; 422 return row * 7 + col;
425} 423}
426 424
427void KDateNavigator::wheelEvent (QWheelEvent *e) 425void KDateNavigator::wheelEvent (QWheelEvent *e)
428{ 426{
429 if(e->delta()>0) emit goPrevious(); 427 if(e->delta()>0) emit goPrevious();
430 else emit goNext(); 428 else emit goNext();
431 429
432 e->accept(); 430 e->accept();
433} 431}
434 432
435bool KDateNavigator::eventFilter (QObject *o,QEvent *e) 433bool KDateNavigator::eventFilter (QObject *o,QEvent *e)
436{ 434{
437 if (e->type() == QEvent::MouseButtonPress) { 435 if (e->type() == QEvent::MouseButtonPress) {
438 int i; 436 int i;
439 for(i=0;i<6;++i) { 437 for(i=0;i<6;++i) {
440 if (o == weeknos[i]) { 438 if (o == weeknos[i]) {
441 QDate weekstart = daymatrix->getDate(i*7); 439 QDate weekstart = daymatrix->getDate(i*7);
442 emit weekClicked(weekstart); 440 emit weekClicked(weekstart);
443 break; 441 break;
444 } 442 }
445 } 443 }
446 for(i=0;i<7;++i) { 444 for(i=0;i<7;++i) {
447 if (o == headings[i]) { 445 if (o == headings[i]) {
448 KCal::DateList selDays; 446 KCal::DateList selDays;
449 QDate date = daymatrix->getDate(14); 447 QDate date = daymatrix->getDate(14);
450 emit showMonth(date ); 448 emit showMonth(date );
451#if 0 449#if 0
452 int dio = date.daysInMonth(); 450 int dio = date.daysInMonth();
453 int j; 451 int j;
454 int ye = date.year(); 452 int ye = date.year();
455 int mo = date.month(); 453 int mo = date.month();
456 for ( j = 1; j <= dio; ++j ) { 454 for ( j = 1; j <= dio; ++j ) {
457 selDays.append( QDate( ye, mo, j ) ); 455 selDays.append( QDate( ye, mo, j ) );
458 } 456 }
459 emit datesSelected( selDays ); 457 emit datesSelected( selDays );
460#endif 458#endif
461 break; 459 break;
462 } 460 }
463 } 461 }
464 return true; 462 return true;
465 } else { 463 } else {
466 return false; 464 return false;
467 } 465 }
468} 466}
469 467
470//#include "kdatenavigator.moc" 468//#include "kdatenavigator.moc"
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 9085775..d825493 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -620,1080 +620,1079 @@ void MonthViewCell::insertEvent(Event *event)
620 if ( mAvailItemList.count() ) { 620 if ( mAvailItemList.count() ) {
621 item = mAvailItemList.first(); 621 item = mAvailItemList.first();
622 mAvailItemList.remove( item ); 622 mAvailItemList.remove( item );
623 item->recycle( event, mDate, text ); 623 item->recycle( event, mDate, text );
624 insertNewItem = true; 624 insertNewItem = true;
625 } else { 625 } else {
626 insertNewItem = true; 626 insertNewItem = true;
627 item = new MonthViewItem( event, mDate, text ); 627 item = new MonthViewItem( event, mDate, text );
628 } 628 }
629 } 629 }
630 QPalette pal; 630 QPalette pal;
631 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 631 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
632 QStringList categories = event->categories(); 632 QStringList categories = event->categories();
633 QString cat = categories.first(); 633 QString cat = categories.first();
634 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 634 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
635 pal = getPalette(); 635 pal = getPalette();
636 if (cat.isEmpty()) { 636 if (cat.isEmpty()) {
637 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 637 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
638 } else { 638 } else {
639 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 639 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
640 } 640 }
641 641
642 } else { 642 } else {
643 if (cat.isEmpty()) { 643 if (cat.isEmpty()) {
644 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 644 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
645 } else { 645 } else {
646 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 646 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
647 } 647 }
648 } 648 }
649 649
650 } else { 650 } else {
651 pal = mStandardPalette ; 651 pal = mStandardPalette ;
652 } 652 }
653 item->setPalette( pal ); 653 item->setPalette( pal );
654 item->setRecur( event->recurrence()->doesRecur() ); 654 item->setRecur( event->recurrence()->doesRecur() );
655 item->setAlarm( event->isAlarmEnabled() && multiday < 2 ); 655 item->setAlarm( event->isAlarmEnabled() && multiday < 2 );
656 item->setMoreInfo( event->description().length() > 0 ); 656 item->setMoreInfo( event->description().length() > 0 );
657#ifdef DESKTOP_VERSION 657#ifdef DESKTOP_VERSION
658 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 658 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
659 KOPrefs::instance()->email()); 659 KOPrefs::instance()->email());
660 if ( me != 0 ) { 660 if ( me != 0 ) {
661 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 661 if ( me->status() == Attendee::NeedsAction && me->RSVP())
662 item->setReply(true && multiday < 2); 662 item->setReply(true && multiday < 2);
663 else 663 else
664 item->setReply(false); 664 item->setReply(false);
665 } else 665 } else
666 item->setReply(false); 666 item->setReply(false);
667#endif 667#endif
668 item->setMultiDay( multiday ); 668 item->setMultiDay( multiday );
669 if ( insertNewItem) 669 if ( insertNewItem)
670 insertItem( item ); 670 insertItem( item );
671 mToolTip.append( mToolTipText ); 671 mToolTip.append( mToolTipText );
672} 672}
673void MonthViewCell::insertTodo(Todo *todo) 673void MonthViewCell::insertTodo(Todo *todo)
674{ 674{
675 bool insertNewItem = false; 675 bool insertNewItem = false;
676 setFocusPolicy(WheelFocus); 676 setFocusPolicy(WheelFocus);
677 QString text; 677 QString text;
678 if (todo->hasDueDate()) { 678 if (todo->hasDueDate()) {
679 if (!todo->doesFloat()) { 679 if (!todo->doesFloat()) {
680 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 680 text += KGlobal::locale()->formatTime(todo->dtDue().time());
681 text += " "; 681 text += " ";
682 } 682 }
683 } 683 }
684 text += todo->summary(); 684 text += todo->summary();
685 MonthViewItem *item ; 685 MonthViewItem *item ;
686 if ( mCurrentAvailItem ) { 686 if ( mCurrentAvailItem ) {
687 item = mCurrentAvailItem; 687 item = mCurrentAvailItem;
688 mCurrentAvailItem = (MonthViewItem*) item->next(); 688 mCurrentAvailItem = (MonthViewItem*) item->next();
689 item->recycle( todo, mDate, text ); 689 item->recycle( todo, mDate, text );
690 } else { 690 } else {
691 if ( mAvailItemList.count() ) { 691 if ( mAvailItemList.count() ) {
692 item = mAvailItemList.first(); 692 item = mAvailItemList.first();
693 mAvailItemList.remove( item ); 693 mAvailItemList.remove( item );
694 item->recycle( todo, mDate, text ); 694 item->recycle( todo, mDate, text );
695 insertNewItem = true; 695 insertNewItem = true;
696 } else { 696 } else {
697 insertNewItem = true; 697 insertNewItem = true;
698 item = new MonthViewItem( todo, mDate, text ); 698 item = new MonthViewItem( todo, mDate, text );
699 } 699 }
700 } 700 }
701 //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 701 //MonthViewItem *item = new MonthViewItem( todo, mDate, text );
702 //item->setPalette( mStandardPalette ); 702 //item->setPalette( mStandardPalette );
703 QPalette pal; 703 QPalette pal;
704 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 704 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
705 QStringList categories = todo->categories(); 705 QStringList categories = todo->categories();
706 QString cat = categories.first(); 706 QString cat = categories.first();
707 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 707 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
708 pal = getPalette(); 708 pal = getPalette();
709 if (cat.isEmpty()) { 709 if (cat.isEmpty()) {
710 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 710 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
711 } else { 711 } else {
712 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 712 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
713 } 713 }
714 714
715 } else { 715 } else {
716 if (cat.isEmpty()) { 716 if (cat.isEmpty()) {
717 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 717 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
718 } else { 718 } else {
719 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 719 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
720 } 720 }
721 } 721 }
722 722
723 } else { 723 } else {
724 pal = mStandardPalette ; 724 pal = mStandardPalette ;
725 } 725 }
726 item->setPalette( pal ); 726 item->setPalette( pal );
727 item->setRecur( todo->recurrence()->doesRecur() ); 727 item->setRecur( todo->recurrence()->doesRecur() );
728 item->setAlarm( todo->isAlarmEnabled() ); 728 item->setAlarm( todo->isAlarmEnabled() );
729 item->setMoreInfo( todo->description().length() > 0 ); 729 item->setMoreInfo( todo->description().length() > 0 );
730 if ( insertNewItem) 730 if ( insertNewItem)
731 insertItem( item ); 731 insertItem( item );
732 mToolTip.append( text ); 732 mToolTip.append( text );
733} 733}
734void MonthViewCell::repaintfinishUpdateCell() 734void MonthViewCell::repaintfinishUpdateCell()
735{ 735{
736 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 736 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
737 while ( mitem ) { 737 while ( mitem ) {
738 mitem->setBlockRepaint( false ); 738 mitem->setBlockRepaint( false );
739 updateItem ( mitem ); 739 updateItem ( mitem );
740 mitem = (MonthViewItem *)mitem->next(); 740 mitem = (MonthViewItem *)mitem->next();
741 } 741 }
742} 742}
743void MonthViewCell::finishUpdateCell() 743void MonthViewCell::finishUpdateCell()
744{ 744{
745 while ( mCurrentAvailItem ) { 745 while ( mCurrentAvailItem ) {
746 MonthViewItem *item = mCurrentAvailItem; 746 MonthViewItem *item = mCurrentAvailItem;
747 mCurrentAvailItem = (MonthViewItem *)item->next(); 747 mCurrentAvailItem = (MonthViewItem *)item->next();
748 mAvailItemList.append( item ); 748 mAvailItemList.append( item );
749 takeItem ( item ); 749 takeItem ( item );
750 } 750 }
751 751
752 752
753#ifdef DESKTOP_VERSION 753#ifdef DESKTOP_VERSION
754 if (mToolTip.count() > 0 ) { 754 if (mToolTip.count() > 0 ) {
755 mToolTip.sort(); 755 mToolTip.sort();
756 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 756 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
757 } 757 }
758#endif 758#endif
759 sort(); 759 sort();
760 //setMyPalette(); 760 //setMyPalette();
761 setMyPalette(); 761 setMyPalette();
762 762
763 resizeEvent( 0 ); 763 resizeEvent( 0 );
764 764
765} 765}
766void MonthViewCell::updateCell() 766void MonthViewCell::updateCell()
767{ 767{
768 //qDebug("MonthViewCell::updateCell() "); 768 //qDebug("MonthViewCell::updateCell() ");
769 if ( !mMonthView->isUpdatePossible() ) 769 if ( !mMonthView->isUpdatePossible() )
770 return; 770 return;
771 startUpdateCell(); 771 startUpdateCell();
772 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 772 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
773 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 773 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
774 Event *event; 774 Event *event;
775 for( event = events.first(); event; event = events.next() ) { // for event 775 for( event = events.first(); event; event = events.next() ) { // for event
776 insertEvent(event); 776 insertEvent(event);
777 } 777 }
778 // insert due todos 778 // insert due todos
779 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 779 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
780 Todo *todo; 780 Todo *todo;
781 for(todo = todos.first(); todo; todo = todos.next()) { 781 for(todo = todos.first(); todo; todo = todos.next()) {
782 insertTodo( todo ); 782 insertTodo( todo );
783 } 783 }
784 finishUpdateCell(); 784 finishUpdateCell();
785 // if ( isVisible()) 785 // if ( isVisible())
786 //qApp->processEvents(); 786 //qApp->processEvents();
787} 787}
788 788
789void MonthViewCell::updateConfig( bool bigFont ) // = false 789void MonthViewCell::updateConfig( bool bigFont ) // = false
790{ 790{
791 791
792 if ( bigFont ) { 792 if ( bigFont ) {
793 QFont fo = KOPrefs::instance()->mMonthViewFont; 793 QFont fo = KOPrefs::instance()->mMonthViewFont;
794 int ps = fo.pointSize() + 2; 794 int ps = fo.pointSize() + 2;
795 if ( ps < 18 ) 795 if ( ps < 18 )
796 ps += 2; 796 ps += 2;
797 fo.setPointSize( ps ); 797 fo.setPointSize( ps );
798 setFont( fo ); 798 setFont( fo );
799 } else 799 } else
800 setFont( KOPrefs::instance()->mMonthViewFont ); 800 setFont( KOPrefs::instance()->mMonthViewFont );
801 801
802 QFontMetrics fm( font() ); 802 QFontMetrics fm( font() );
803 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 803 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
804 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 804 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
805 mHolidayPalette = mStandardPalette; 805 mHolidayPalette = mStandardPalette;
806 mPrimaryPalette = mStandardPalette; 806 mPrimaryPalette = mStandardPalette;
807 mNonPrimaryPalette = mStandardPalette; 807 mNonPrimaryPalette = mStandardPalette;
808 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 808 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
809 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 809 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
810 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 810 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
811 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 811 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
812 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 812 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
813 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 813 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
814 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 814 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
815 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 815 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
816 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 816 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
817 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 817 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
818 } 818 }
819 //updateCell(); 819 //updateCell();
820} 820}
821 821
822void MonthViewCell::enableScrollBars( bool enabled ) 822void MonthViewCell::enableScrollBars( bool enabled )
823{ 823{
824 if ( enabled ) { 824 if ( enabled ) {
825 QListBoxItem *fi = firstItem (); 825 QListBoxItem *fi = firstItem ();
826 if (fi ) { 826 if (fi ) {
827 int ihei = fi->height( this ); 827 int ihei = fi->height( this );
828 int hei = numRows () * ihei; 828 int hei = numRows () * ihei;
829 if ( hei < height() - horizontalScrollBar()->height () ) { 829 if ( hei < height() - horizontalScrollBar()->height () ) {
830 setVScrollBarMode(QScrollView::AlwaysOff); 830 setVScrollBarMode(QScrollView::AlwaysOff);
831 } 831 }
832 else 832 else
833 setVScrollBarMode(QScrollView::Auto); 833 setVScrollBarMode(QScrollView::Auto);
834 if ( ihei *3 > height() ) 834 if ( ihei *3 > height() )
835 setHScrollBarMode(QScrollView::AlwaysOff); 835 setHScrollBarMode(QScrollView::AlwaysOff);
836 else 836 else
837 setHScrollBarMode(QScrollView::Auto); 837 setHScrollBarMode(QScrollView::Auto);
838 } else { 838 } else {
839 setVScrollBarMode(QScrollView::Auto); 839 setVScrollBarMode(QScrollView::Auto);
840 setHScrollBarMode(QScrollView::Auto); 840 setHScrollBarMode(QScrollView::Auto);
841 } 841 }
842 } else { 842 } else {
843 setVScrollBarMode(QScrollView::AlwaysOff); 843 setVScrollBarMode(QScrollView::AlwaysOff);
844 setHScrollBarMode(QScrollView::AlwaysOff); 844 setHScrollBarMode(QScrollView::AlwaysOff);
845 } 845 }
846} 846}
847 847
848Incidence *MonthViewCell::selectedIncidence() 848Incidence *MonthViewCell::selectedIncidence()
849{ 849{
850 int index = currentItem(); 850 int index = currentItem();
851 if ( index < 0 ) return 0; 851 if ( index < 0 ) return 0;
852 852
853 MonthViewItem *mitem = 853 MonthViewItem *mitem =
854 static_cast<MonthViewItem *>( item( index ) ); 854 static_cast<MonthViewItem *>( item( index ) );
855 855
856 if ( !mitem ) return 0; 856 if ( !mitem ) return 0;
857 857
858 return mitem->incidence(); 858 return mitem->incidence();
859} 859}
860 860
861QDate MonthViewCell::selectedIncidenceDate() 861QDate MonthViewCell::selectedIncidenceDate()
862{ 862{
863 QDate qd; 863 QDate qd;
864 int index = currentItem(); 864 int index = currentItem();
865 if ( index < 0 ) return qd; 865 if ( index < 0 ) return qd;
866 866
867 MonthViewItem *mitem = 867 MonthViewItem *mitem =
868 static_cast<MonthViewItem *>( item( index ) ); 868 static_cast<MonthViewItem *>( item( index ) );
869 869
870 if ( !mitem ) return qd; 870 if ( !mitem ) return qd;
871 871
872 return mitem->incidenceDate(); 872 return mitem->incidenceDate();
873} 873}
874 874
875void MonthViewCell::deselect() 875void MonthViewCell::deselect()
876{ 876{
877 clearSelection(); 877 clearSelection();
878 enableScrollBars( false ); 878 enableScrollBars( false );
879 // updateCell(); 879 // updateCell();
880} 880}
881void MonthViewCell::select() 881void MonthViewCell::select()
882{ 882{
883 ;// updateCell(); 883 ;// updateCell();
884} 884}
885 885
886void MonthViewCell::resizeEvent ( QResizeEvent * e ) 886void MonthViewCell::resizeEvent ( QResizeEvent * e )
887{ 887{
888 if ( !mMonthView->isUpdatePossible() ) 888 if ( !mMonthView->isUpdatePossible() )
889 return; 889 return;
890 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height()); 890 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height());
891 deselect(); 891 deselect();
892 mLabel->setMaximumHeight( height() - lineWidth()*2 ); 892 mLabel->setMaximumHeight( height() - lineWidth()*2 );
893 893
894 QString text; 894 QString text;
895 mLabel->setText( text ); 895 mLabel->setText( text );
896 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 896 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
897 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 897 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
898 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 898 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
899 mLabel->resize( mLabelBigSize ); 899 mLabel->resize( mLabelBigSize );
900 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 900 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
901 } else { 901 } else {
902 mLabel->resize( mLabelSize ); 902 mLabel->resize( mLabelSize );
903 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 903 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
904 } 904 }
905 mLabel->setText( text ); 905 mLabel->setText( text );
906 906
907 int size = height() - mLabel->height() - lineWidth()-1; 907 int size = height() - mLabel->height() - lineWidth()-1;
908 //qDebug("LW %d ", lineWidth()); 908 //qDebug("LW %d ", lineWidth());
909 if ( size > 0 ) 909 if ( size > 0 )
910 verticalScrollBar()->setMaximumHeight( size ); 910 verticalScrollBar()->setMaximumHeight( size );
911 size = width() - mLabel->width() -lineWidth()-1; 911 size = width() - mLabel->width() -lineWidth()-1;
912 if ( size > 0 ) 912 if ( size > 0 )
913 horizontalScrollBar()->setMaximumWidth( size ); 913 horizontalScrollBar()->setMaximumWidth( size );
914 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() ); 914 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() );
915 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 915 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
916 // mItemList->resize ( width(), height () ); 916 // mItemList->resize ( width(), height () );
917 if ( e ) 917 if ( e )
918 KNoScrollListBox::resizeEvent ( e ); 918 KNoScrollListBox::resizeEvent ( e );
919} 919}
920 920
921void MonthViewCell::defaultAction( QListBoxItem *item ) 921void MonthViewCell::defaultAction( QListBoxItem *item )
922{ 922{
923 if ( !item ) return; 923 if ( !item ) return;
924 924
925 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 925 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
926 Incidence *incidence = eventItem->incidence(); 926 Incidence *incidence = eventItem->incidence();
927 if ( incidence ) mMonthView->defaultAction( incidence ); 927 if ( incidence ) mMonthView->defaultAction( incidence );
928} 928}
929void MonthViewCell::showDay() 929void MonthViewCell::showDay()
930{ 930{
931 emit showDaySignal( date() ); 931 emit showDaySignal( date() );
932} 932}
933void MonthViewCell::newEvent() 933void MonthViewCell::newEvent()
934{ 934{
935 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 935 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
936 emit newEventSignal( dt ); 936 emit newEventSignal( dt );
937} 937}
938void MonthViewCell::cellClicked( QListBoxItem *item ) 938void MonthViewCell::cellClicked( QListBoxItem *item )
939{ 939{
940 static QListBoxItem * lastClicked = 0; 940 static QListBoxItem * lastClicked = 0;
941 if ( item == 0 ) { 941 if ( item == 0 ) {
942 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 942 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
943 emit newEventSignal( dt ); 943 emit newEventSignal( dt );
944 return; 944 return;
945 } 945 }
946 /* 946 /*
947 if ( lastClicked ) 947 if ( lastClicked )
948 if ( ! item ) { 948 if ( ! item ) {
949 if ( lastClicked->listBox() != item->listBox() ) 949 if ( lastClicked->listBox() != item->listBox() )
950 lastClicked->listBox()->clearSelection(); 950 lastClicked->listBox()->clearSelection();
951 } 951 }
952 */ 952 */
953 953
954 mMonthView->setSelectedCell( this ); 954 mMonthView->setSelectedCell( this );
955 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true ); 955 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true );
956 select(); 956 select();
957} 957}
958 958
959void MonthViewCell::contextMenu( QListBoxItem *item ) 959void MonthViewCell::contextMenu( QListBoxItem *item )
960{ 960{
961 if ( !item ) return; 961 if ( !item ) return;
962 962
963 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 963 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
964 Incidence *incidence = eventItem->incidence(); 964 Incidence *incidence = eventItem->incidence();
965 if ( incidence ) mMonthView->showContextMenu( incidence ); 965 if ( incidence ) mMonthView->showContextMenu( incidence );
966} 966}
967 967
968void MonthViewCell::selection( QListBoxItem *item ) 968void MonthViewCell::selection( QListBoxItem *item )
969{ 969{
970 if ( !item ) return; 970 if ( !item ) return;
971 971
972 mMonthView->setSelectedCell( this ); 972 mMonthView->setSelectedCell( this );
973} 973}
974 974
975 975
976// ******************************************************************************* 976// *******************************************************************************
977// ******************************************************************************* 977// *******************************************************************************
978// ******************************************************************************* 978// *******************************************************************************
979 979
980 980
981KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 981KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
982 : KOEventView( calendar, parent, name ), 982 : KOEventView( calendar, parent, name ),
983 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 983 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
984 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 984 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
985{ 985{
986 mShortDayLabelsM = false; 986 mShortDayLabelsM = false;
987 mShortDayLabelsW = false; 987 mShortDayLabelsW = false;
988 skipResize = false; 988 skipResize = false;
989 clPending = true; 989 clPending = true;
990 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 990 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
991 mWidStack = new QWidgetStack( this ); 991 mWidStack = new QWidgetStack( this );
992 QVBoxLayout* hb = new QVBoxLayout( this ); 992 QVBoxLayout* hb = new QVBoxLayout( this );
993 mMonthView = new QWidget( mWidStack ); 993 mMonthView = new QWidget( mWidStack );
994 mWeekView = new QWidget( mWidStack ); 994 mWeekView = new QWidget( mWidStack );
995#if QT_VERSION >= 0x030000 995#if QT_VERSION >= 0x030000
996 mWidStack->addWidget(mMonthView ); 996 mWidStack->addWidget(mMonthView );
997 mWidStack->addWidget(mWeekView ); 997 mWidStack->addWidget(mWeekView );
998#else 998#else
999 mWidStack->addWidget( mMonthView, 1 ); 999 mWidStack->addWidget( mMonthView, 1 );
1000 mWidStack->addWidget( mWeekView , 1 ); 1000 mWidStack->addWidget( mWeekView , 1 );
1001#endif 1001#endif
1002 hb->addWidget( mNavigatorBar ); 1002 hb->addWidget( mNavigatorBar );
1003 hb->addWidget( mWidStack ); 1003 hb->addWidget( mWidStack );
1004 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1005 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 1004 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
1006 if ( mShowWeekView )
1007 mWeekStartsMonday = true;
1008 updatePossible = false; 1005 updatePossible = false;
1009 //updatePossible = true; 1006 //updatePossible = true;
1010 mCells.setAutoDelete( true ); 1007 mCells.setAutoDelete( true );
1011 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1008 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1012 mDayLabels.resize( mDaysPerWeek ); 1009 mDayLabels.resize( mDaysPerWeek );
1013 mDayLabelsW.resize( mDaysPerWeek ); 1010 mDayLabelsW.resize( mDaysPerWeek );
1014 QFont bfont = font(); 1011 QFont bfont = font();
1015 if ( QApplication::desktop()->width() < 650 ) { 1012 if ( QApplication::desktop()->width() < 650 ) {
1016 bfont.setPointSize( bfont.pointSize() - 2 ); 1013 bfont.setPointSize( bfont.pointSize() - 2 );
1017 } 1014 }
1018 bfont.setBold( true ); 1015 bfont.setBold( true );
1019 int i; 1016 int i;
1020 1017
1021 for( i = 0; i < mDaysPerWeek; i++ ) { 1018 for( i = 0; i < mDaysPerWeek; i++ ) {
1022 QLabel *label = new QLabel( mMonthView ); 1019 QLabel *label = new QLabel( mMonthView );
1023 label->setFont(bfont); 1020 label->setFont(bfont);
1024 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1021 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1025 label->setLineWidth(1); 1022 label->setLineWidth(1);
1026 label->setAlignment(AlignCenter); 1023 label->setAlignment(AlignCenter);
1027 mDayLabels.insert( i, label ); 1024 mDayLabels.insert( i, label );
1028 label = new QLabel( mWeekView ); 1025 label = new QLabel( mWeekView );
1029 label->setFont(bfont); 1026 label->setFont(bfont);
1030 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1027 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1031 label->setLineWidth(1); 1028 label->setLineWidth(1);
1032 label->setAlignment(AlignCenter); 1029 label->setAlignment(AlignCenter);
1033 mDayLabelsW.insert( i, label ); 1030 mDayLabelsW.insert( i, label );
1034 } 1031 }
1035 1032
1036 bfont.setBold( false ); 1033 bfont.setBold( false );
1037 mWeekLabels.resize( mNumWeeks+1 ); 1034 mWeekLabels.resize( mNumWeeks+1 );
1038 mWeekLabelsW.resize( 2 ); 1035 mWeekLabelsW.resize( 2 );
1039 for( i = 0; i < mNumWeeks+1; i++ ) { 1036 for( i = 0; i < mNumWeeks+1; i++ ) {
1040 KOWeekButton *label = new KOWeekButton( mMonthView ); 1037 KOWeekButton *label = new KOWeekButton( mMonthView );
1041 label->setFocusPolicy(NoFocus); 1038 label->setFocusPolicy(NoFocus);
1042 label->setFont(bfont); 1039 label->setFont(bfont);
1043 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1040 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1044 label->setFlat(true); 1041 label->setFlat(true);
1045 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1042 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1046 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1043 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1047 //label->setLineWidth(1); 1044 //label->setLineWidth(1);
1048 //label->setAlignment(AlignCenter); 1045 //label->setAlignment(AlignCenter);
1049 mWeekLabels.insert( i, label ); 1046 mWeekLabels.insert( i, label );
1050 } 1047 }
1051 mWeekLabels[mNumWeeks]->setText( i18n("W")); 1048 mWeekLabels[mNumWeeks]->setText( i18n("W"));
1052 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 1049 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
1053 1050
1054 for( i = 0; i < 1+1; i++ ) { 1051 for( i = 0; i < 1+1; i++ ) {
1055 KOWeekButton *label = new KOWeekButton( mWeekView ); 1052 KOWeekButton *label = new KOWeekButton( mWeekView );
1056 label->setFocusPolicy(NoFocus); 1053 label->setFocusPolicy(NoFocus);
1057 label->setFont(bfont); 1054 label->setFont(bfont);
1058 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1055 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1059 label->setFlat(true); 1056 label->setFlat(true);
1060 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1057 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1061 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1058 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1062 //label->setLineWidth(1); 1059 //label->setLineWidth(1);
1063 //label->setAlignment(AlignCenter); 1060 //label->setAlignment(AlignCenter);
1064 mWeekLabelsW.insert( i, label ); 1061 mWeekLabelsW.insert( i, label );
1065 } 1062 }
1066 mWeekLabelsW[1]->setText( i18n("W")); 1063 mWeekLabelsW[1]->setText( i18n("W"));
1067 1064
1068 1065
1069 int row, col; 1066 int row, col;
1070 mCells.resize( mNumCells ); 1067 mCells.resize( mNumCells );
1071 for( row = 0; row < mNumWeeks; ++row ) { 1068 for( row = 0; row < mNumWeeks; ++row ) {
1072 for( col = 0; col < mDaysPerWeek; ++col ) { 1069 for( col = 0; col < mDaysPerWeek; ++col ) {
1073 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 1070 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
1074 mCells.insert( row * mDaysPerWeek + col, cell ); 1071 mCells.insert( row * mDaysPerWeek + col, cell );
1075 1072
1076 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1073 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1077 SLOT( defaultAction( Incidence * ) ) ); 1074 SLOT( defaultAction( Incidence * ) ) );
1078 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1075 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1079 SIGNAL( newEventSignal( QDateTime ) ) ); 1076 SIGNAL( newEventSignal( QDateTime ) ) );
1080 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1077 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1081 SIGNAL( showDaySignal( QDate ) ) ); 1078 SIGNAL( showDaySignal( QDate ) ) );
1082 } 1079 }
1083 } 1080 }
1084 mCellsW.resize( mDaysPerWeek ); 1081 mCellsW.resize( mDaysPerWeek );
1085 for( col = 0; col < mDaysPerWeek; ++col ) { 1082 for( col = 0; col < mDaysPerWeek; ++col ) {
1086 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 1083 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
1087 mCellsW.insert( col, cell ); 1084 mCellsW.insert( col, cell );
1088 1085
1089 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1086 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1090 SLOT( defaultAction( Incidence * ) ) ); 1087 SLOT( defaultAction( Incidence * ) ) );
1091 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1088 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1092 SIGNAL( newEventSignal( QDateTime ) ) ); 1089 SIGNAL( newEventSignal( QDateTime ) ) );
1093 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1090 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1094 SIGNAL( showDaySignal( QDate ) ) ); 1091 SIGNAL( showDaySignal( QDate ) ) );
1095 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 1092 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
1096 } 1093 }
1097 1094
1098 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 1095 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
1099 mContextMenu = eventPopup(); 1096 mContextMenu = eventPopup();
1100 // updateConfig(); //useless here... 1097 // updateConfig(); //useless here...
1101 // ... but we need mWidthLongDayLabel computed 1098 // ... but we need mWidthLongDayLabel computed
1102 QFontMetrics fontmetric(mDayLabels[0]->font()); 1099 QFontMetrics fontmetric(mDayLabels[0]->font());
1103 mWidthLongDayLabel = 0; 1100 mWidthLongDayLabel = 0;
1104 for (int i = 0; i < 7; i++) { 1101 for (int i = 0; i < 7; i++) {
1105 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1102 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1106 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1103 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1107 } 1104 }
1108 1105
1109 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1106 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1110 1107
1111#if 0 1108#if 0
1112 if ( mShowWeekView ) 1109 if ( mShowWeekView )
1113 mWidStack->raiseWidget( mWeekView ); 1110 mWidStack->raiseWidget( mWeekView );
1114 else 1111 else
1115 mWidStack->raiseWidget( mMonthView ); 1112 mWidStack->raiseWidget( mMonthView );
1116#endif 1113#endif
1117 1114
1118 emit incidenceSelected( 0 ); 1115 emit incidenceSelected( 0 );
1119 1116
1120 mComputeLayoutTimer = new QTimer( this ); 1117 mComputeLayoutTimer = new QTimer( this );
1121 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout())); 1118 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout()));
1122 1119
1123 1120
1124#ifndef DESKTOP_VERSION 1121#ifndef DESKTOP_VERSION
1125 resize( QApplication::desktop()->size() ); 1122 resize( QApplication::desktop()->size() );
1126#else 1123#else
1127 resize(640, 480 ); 1124 resize(640, 480 );
1128 updatePossible = true; 1125 updatePossible = true;
1129#endif 1126#endif
1130 computeLayout(); 1127 computeLayout();
1131 1128
1132 if ( mShowWeekView ) 1129 if ( mShowWeekView )
1133 mWidStack->raiseWidget( mWeekView ); 1130 mWidStack->raiseWidget( mWeekView );
1134 else 1131 else
1135 mWidStack->raiseWidget( mMonthView ); 1132 mWidStack->raiseWidget( mMonthView );
1136} 1133}
1137 1134
1138KOMonthView::~KOMonthView() 1135KOMonthView::~KOMonthView()
1139{ 1136{
1140 delete mContextMenu; 1137 delete mContextMenu;
1141} 1138}
1142 1139
1143void KOMonthView::selectInternalWeekNum ( int n ) 1140void KOMonthView::selectInternalWeekNum ( int n )
1144{ 1141{
1145 switchView(); 1142 switchView();
1146 if ( !KOPrefs::instance()->mMonthViewWeek ) 1143 if ( !KOPrefs::instance()->mMonthViewWeek )
1147 emit selectMonth (); 1144 emit selectMonth ();
1148 else 1145 else
1149 emit selectWeekNum ( n ); 1146 emit selectWeekNum ( n );
1150} 1147}
1151 1148
1152int KOMonthView::currentWeek() 1149int KOMonthView::currentWeek()
1153{ 1150{
1154 if ( mShowWeekView ) 1151 if ( mShowWeekView )
1155 return mWeekLabelsW[0]->getWeekNum(); 1152 return mWeekLabelsW[0]->getWeekNum();
1156 return mWeekLabels[0]->getWeekNum(); 1153 return mWeekLabels[0]->getWeekNum();
1157} 1154}
1158void KOMonthView::switchView() 1155void KOMonthView::switchView()
1159{ 1156{
1160 if ( selectedCell( ) ) 1157 if ( selectedCell( ) )
1161 selectedCell()->deselect(); 1158 selectedCell()->deselect();
1162 mShowWeekView = !mShowWeekView; 1159 mShowWeekView = !mShowWeekView;
1163 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 1160 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
1164 if ( clPending ) { 1161 if ( clPending ) {
1165 computeLayout(); 1162 computeLayout();
1166 updateConfig(); 1163 updateConfig();
1167 } 1164 }
1168 if ( mShowWeekView ) 1165 if ( mShowWeekView )
1169 mWidStack->raiseWidget( mWeekView ); 1166 mWidStack->raiseWidget( mWeekView );
1170 else 1167 else
1171 mWidStack->raiseWidget( mMonthView ); 1168 mWidStack->raiseWidget( mMonthView );
1172 clPending = false; 1169 clPending = false;
1173} 1170}
1174 1171
1175int KOMonthView::maxDatesHint() 1172int KOMonthView::maxDatesHint()
1176{ 1173{
1177 return mNumCells; 1174 return mNumCells;
1178} 1175}
1179 1176
1180int KOMonthView::currentDateCount() 1177int KOMonthView::currentDateCount()
1181{ 1178{
1182 return mNumCells; 1179 return mNumCells;
1183} 1180}
1184 1181
1185QPtrList<Incidence> KOMonthView::selectedIncidences() 1182QPtrList<Incidence> KOMonthView::selectedIncidences()
1186{ 1183{
1187 QPtrList<Incidence> selected; 1184 QPtrList<Incidence> selected;
1188 1185
1189 if ( mSelectedCell ) { 1186 if ( mSelectedCell ) {
1190 Incidence *incidence = mSelectedCell->selectedIncidence(); 1187 Incidence *incidence = mSelectedCell->selectedIncidence();
1191 if ( incidence ) selected.append( incidence ); 1188 if ( incidence ) selected.append( incidence );
1192 } 1189 }
1193 1190
1194 return selected; 1191 return selected;
1195} 1192}
1196 1193
1197DateList KOMonthView::selectedDates() 1194DateList KOMonthView::selectedDates()
1198{ 1195{
1199 DateList selected; 1196 DateList selected;
1200 1197
1201 if ( mSelectedCell ) { 1198 if ( mSelectedCell ) {
1202 QDate qd = mSelectedCell->selectedIncidenceDate(); 1199 QDate qd = mSelectedCell->selectedIncidenceDate();
1203 if ( qd.isValid() ) selected.append( qd ); 1200 if ( qd.isValid() ) selected.append( qd );
1204 } 1201 }
1205 1202
1206 return selected; 1203 return selected;
1207} 1204}
1208 1205
1209void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1206void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1210 const QDate &td) 1207 const QDate &td)
1211{ 1208{
1212#ifndef KORG_NOPRINTER 1209#ifndef KORG_NOPRINTER
1213 calPrinter->preview(CalPrinter::Month, fd, td); 1210 calPrinter->preview(CalPrinter::Month, fd, td);
1214#endif 1211#endif
1215} 1212}
1216 1213
1217void KOMonthView::updateConfig() 1214void KOMonthView::updateConfig()
1218{ 1215{
1219 1216
1220 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1217 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1221 1218
1222 if ( mShowWeekView ) { 1219 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1223 mWeekStartsMonday = true; 1220 mWeekStartsMonday = true;
1224 } 1221 }
1225 QFontMetrics fontmetric(mDayLabels[0]->font()); 1222 QFontMetrics fontmetric(mDayLabels[0]->font());
1226 mWidthLongDayLabel = 0; 1223 mWidthLongDayLabel = 0;
1227 1224
1228 for (int i = 0; i < 7; i++) { 1225 for (int i = 0; i < 7; i++) {
1229 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1226 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1230 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1227 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1231 } 1228 }
1232 bool temp = mShowSatSunComp ; 1229 bool temp = mShowSatSunComp ;
1233 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1230 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1234 if ( ! mShowWeekView ) { 1231 if ( ! mShowWeekView ) {
1235 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1232 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1236 computeLayout(); 1233 computeLayout();
1237 } 1234 }
1238 updateDayLabels(); 1235 updateDayLabels();
1239 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1236 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1240 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1237 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1241 //resizeEvent( 0 ); 1238 //resizeEvent( 0 );
1242 for (uint i = 0; i < mCells.count(); ++i) { 1239 for (uint i = 0; i < mCells.count(); ++i) {
1243 mCells[i]->updateConfig(); 1240 mCells[i]->updateConfig();
1244 } 1241 }
1245 1242
1246 for (uint i = 0; i < mCellsW.count(); ++i) { 1243 for (uint i = 0; i < mCellsW.count(); ++i) {
1247 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1244 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1248 } 1245 }
1249#ifdef DESKTOP_VERSION 1246#ifdef DESKTOP_VERSION
1250 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1247 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1251#endif 1248#endif
1252 updateView(); 1249 updateView();
1253} 1250}
1254 1251
1255void KOMonthView::updateDayLabels() 1252void KOMonthView::updateDayLabels()
1256{ 1253{
1257 1254
1258 QPtrVector<QLabel> *mDayLabelsT; 1255 QPtrVector<QLabel> *mDayLabelsT;
1259 1256
1260 mDayLabelsT = &mDayLabelsW; 1257 mDayLabelsT = &mDayLabelsW;
1261 for (int i = 0; i < 7; i++) { 1258 for (int i = 0; i < 7; i++) {
1262 if (mWeekStartsMonday) { 1259 {
1263 bool show = mShortDayLabelsW; 1260 bool show = mShortDayLabelsW;
1264 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1261 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1265 show = true; 1262 show = true;
1266 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1263 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1267 } else {
1268 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsW));
1269 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsW));
1270
1271 } 1264 }
1272 } 1265 }
1273 mDayLabelsT = &mDayLabels; 1266 mDayLabelsT = &mDayLabels;
1274 for (int i = 0; i < 7; i++) { 1267 for (int i = 0; i < 7; i++) {
1275 if (mWeekStartsMonday) { 1268 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) {
1276 bool show = mShortDayLabelsM; 1269 bool show = mShortDayLabelsM;
1277 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1270 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1278 show = true; 1271 show = true;
1279 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1272 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1280 } else { 1273 } else {
1281 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1274 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM));
1282 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1275 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM));
1283 1276
1284 } 1277 }
1285 } 1278 }
1286 1279
1287} 1280}
1288 1281
1289void KOMonthView::showDates(const QDate &start, const QDate &) 1282void KOMonthView::showDates(const QDate &start, const QDate &)
1290{ 1283{
1291 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1284 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1292 1285
1293 QPtrVector<MonthViewCell> *cells; 1286 QPtrVector<MonthViewCell> *cells;
1294 QPtrVector<QLabel> *dayLabels; 1287 QPtrVector<QLabel> *dayLabels;
1295 QPtrVector<KOWeekButton> *weekLabels; 1288 QPtrVector<KOWeekButton> *weekLabels;
1296 int weekNum = 6; 1289 int weekNum = 6;
1290 mStartDate = start;
1297 if ( mShowWeekView ) { 1291 if ( mShowWeekView ) {
1298 weekNum = 1; 1292 weekNum = 1;
1299 cells = &mCellsW; 1293 cells = &mCellsW;
1300 dayLabels = &mDayLabelsW; 1294 dayLabels = &mDayLabelsW;
1301 weekLabels = &mWeekLabelsW; 1295 weekLabels = &mWeekLabelsW;
1296 if ( !KGlobal::locale()->weekStartsMonday() ) {
1297 mStartDate = mStartDate.addDays( 1 );
1298 }
1302 } else { 1299 } else {
1303 cells = &mCells; 1300 cells = &mCells;
1304 dayLabels = &mDayLabels; 1301 dayLabels = &mDayLabels;
1305 weekLabels = &mWeekLabels; 1302 weekLabels = &mWeekLabels;
1306 } 1303 }
1307 1304
1308 mStartDate = start; 1305 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1309 1306
1307 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1308 mWeekStartsMonday = true;
1309 }
1310 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1310 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1311 1311
1312 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1312 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1313 mStartDate = mStartDate.addDays( -1 ); 1313 mStartDate = mStartDate.addDays( -1 );
1314 } 1314 }
1315
1316 bool primary = false; 1315 bool primary = false;
1317 uint i; 1316 uint i;
1318 for( i = 0; i < (*cells).size(); ++i ) { 1317 for( i = 0; i < (*cells).size(); ++i ) {
1319 QDate date = mStartDate.addDays( i ); 1318 QDate date = mStartDate.addDays( i );
1320 (*cells)[i]->setDate( date ); 1319 (*cells)[i]->setDate( date );
1321 1320
1322#ifndef KORG_NOPLUGINS 1321#ifndef KORG_NOPLUGINS
1323 // add holiday, if present 1322 // add holiday, if present
1324 QString hstring(KOCore::self()->holiday(date)); 1323 QString hstring(KOCore::self()->holiday(date));
1325 (*cells)[i]->setHoliday( hstring ); 1324 (*cells)[i]->setHoliday( hstring );
1326#endif 1325#endif
1327 1326
1328 } 1327 }
1329 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1328 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1330 for( i = 0; i < weekNum; ++i ) { 1329 for( i = 0; i < weekNum; ++i ) {
1331 int wno; 1330 int wno;
1332 // remember, according to ISO 8601, the first week of the year is the 1331 // remember, according to ISO 8601, the first week of the year is the
1333 // first week that contains a thursday. Thus we must subtract off 4, 1332 // first week that contains a thursday. Thus we must subtract off 4,
1334 // not just 1. 1333 // not just 1.
1335 int dayOfYear = date.dayOfYear(); 1334 int dayOfYear = date.dayOfYear();
1336 if (dayOfYear % 7 != 0) 1335 if (dayOfYear % 7 != 0)
1337 wno = dayOfYear / 7 + 1; 1336 wno = dayOfYear / 7 + 1;
1338 else 1337 else
1339 wno =dayOfYear / 7; 1338 wno =dayOfYear / 7;
1340 (*weekLabels)[i]->setWeekNum( wno ); 1339 (*weekLabels)[i]->setWeekNum( wno );
1341 date = date.addDays( 7 ); 1340 date = date.addDays( 7 );
1342 } 1341 }
1343 updateView(); 1342 updateView();
1344} 1343}
1345 1344
1346void KOMonthView::showEvents(QPtrList<Event>) 1345void KOMonthView::showEvents(QPtrList<Event>)
1347{ 1346{
1348 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1347 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1349} 1348}
1350 1349
1351void KOMonthView::changeEventDisplay(Event *, int) 1350void KOMonthView::changeEventDisplay(Event *, int)
1352{ 1351{
1353 // this should be re-written to be much more efficient, but this 1352 // this should be re-written to be much more efficient, but this
1354 // quick-and-dirty-hack gets the job done for right now. 1353 // quick-and-dirty-hack gets the job done for right now.
1355 updateView(); 1354 updateView();
1356} 1355}
1357 1356
1358void KOMonthView::updateView() 1357void KOMonthView::updateView()
1359{ 1358{
1360 1359
1361 if ( !updatePossible ) 1360 if ( !updatePossible )
1362 return; 1361 return;
1363 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU "); 1362 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ");
1364 //QTime ti; 1363 //QTime ti;
1365 //ti.start(); 1364 //ti.start();
1366 clearSelection(); 1365 clearSelection();
1367 QPtrVector<MonthViewCell> *cells; 1366 QPtrVector<MonthViewCell> *cells;
1368 if ( mShowWeekView ) { 1367 if ( mShowWeekView ) {
1369 cells = &mCellsW; 1368 cells = &mCellsW;
1370 } else { 1369 } else {
1371 cells = &mCells; 1370 cells = &mCells;
1372 } 1371 }
1373#if 1 1372#if 1
1374 int i; 1373 int i;
1375 int timeSpan = (*cells).size()-1; 1374 int timeSpan = (*cells).size()-1;
1376 if ( KOPrefs::instance()->mMonthViewWeek ) 1375 if ( KOPrefs::instance()->mMonthViewWeek )
1377 timeSpan = 6; 1376 timeSpan = 6;
1378 for( i = 0; i < timeSpan + 1; ++i ) { 1377 for( i = 0; i < timeSpan + 1; ++i ) {
1379 (*cells)[i]->startUpdateCell(); 1378 (*cells)[i]->startUpdateCell();
1380 } 1379 }
1381 1380
1382 QPtrList<Event> events = calendar()->events(); 1381 QPtrList<Event> events = calendar()->events();
1383 Event *event; 1382 Event *event;
1384 QDateTime dt; 1383 QDateTime dt;
1385 bool ok; 1384 bool ok;
1386 QDate endDate = mStartDate.addDays( timeSpan ); 1385 QDate endDate = mStartDate.addDays( timeSpan );
1387 for( event = events.first(); event; event = events.next() ) { // for event 1386 for( event = events.first(); event; event = events.next() ) { // for event
1388 if ( event->doesRecur() ) { 1387 if ( event->doesRecur() ) {
1389 bool last; 1388 bool last;
1390 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1389 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1391 QDateTime incidenceEnd; 1390 QDateTime incidenceEnd;
1392 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1391 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1393 bool invalid = false; 1392 bool invalid = false;
1394 while( true ) { 1393 while( true ) {
1395 if ( incidenceStart.isValid() ) { 1394 if ( incidenceStart.isValid() ) {
1396 incidenceEnd = incidenceStart.addDays( eventlen ); 1395 incidenceEnd = incidenceStart.addDays( eventlen );
1397 int st = incidenceStart.date().daysTo( endDate ); 1396 int st = incidenceStart.date().daysTo( endDate );
1398 if ( st >= 0 ) { // start before timeend 1397 if ( st >= 0 ) { // start before timeend
1399 int end = mStartDate.daysTo( incidenceEnd.date() ); 1398 int end = mStartDate.daysTo( incidenceEnd.date() );
1400 if ( end >= 0 ) { // end after timestart --- got one! 1399 if ( end >= 0 ) { // end after timestart --- got one!
1401 //normalize 1400 //normalize
1402 st = timeSpan - st; 1401 st = timeSpan - st;
1403 if ( st < 0 ) st = 0; 1402 if ( st < 0 ) st = 0;
1404 if ( end > timeSpan ) end = timeSpan; 1403 if ( end > timeSpan ) end = timeSpan;
1405 int iii; 1404 int iii;
1406 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1405 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1407 for ( iii = st;iii<= end;++iii) 1406 for ( iii = st;iii<= end;++iii)
1408 (*cells)[iii]->insertEvent( event ); 1407 (*cells)[iii]->insertEvent( event );
1409 } 1408 }
1410 } 1409 }
1411 } else { 1410 } else {
1412 if ( invalid ) 1411 if ( invalid )
1413 break; 1412 break;
1414 invalid = true; 1413 invalid = true;
1415 //qDebug("invalid %s", event->summary().latin1()); 1414 //qDebug("invalid %s", event->summary().latin1());
1416 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1415 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1417 } 1416 }
1418 if ( last ) 1417 if ( last )
1419 break; 1418 break;
1420 bool ok; 1419 bool ok;
1421 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1420 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1422 if ( ! ok ) 1421 if ( ! ok )
1423 break; 1422 break;
1424 if ( incidenceStart.date() > endDate ) 1423 if ( incidenceStart.date() > endDate )
1425 break; 1424 break;
1426 } 1425 }
1427 } else { // no recur 1426 } else { // no recur
1428 int st = event->dtStart().date().daysTo( endDate ); 1427 int st = event->dtStart().date().daysTo( endDate );
1429 if ( st >= 0 ) { // start before timeend 1428 if ( st >= 0 ) { // start before timeend
1430 int end = mStartDate.daysTo( event->dtEnd().date() ); 1429 int end = mStartDate.daysTo( event->dtEnd().date() );
1431 if ( end >= 0 ) { // end after timestart --- got one! 1430 if ( end >= 0 ) { // end after timestart --- got one!
1432 //normalize 1431 //normalize
1433 st = timeSpan - st; 1432 st = timeSpan - st;
1434 if ( st < 0 ) st = 0; 1433 if ( st < 0 ) st = 0;
1435 if ( end > timeSpan ) end = timeSpan; 1434 if ( end > timeSpan ) end = timeSpan;
1436 int iii; 1435 int iii;
1437 for ( iii = st;iii<= end;++iii) 1436 for ( iii = st;iii<= end;++iii)
1438 (*cells)[iii]->insertEvent( event ); 1437 (*cells)[iii]->insertEvent( event );
1439 } 1438 }
1440 } 1439 }
1441 } 1440 }
1442 } 1441 }
1443 // insert due todos 1442 // insert due todos
1444 QPtrList<Todo> todos = calendar()->todos( ); 1443 QPtrList<Todo> todos = calendar()->todos( );
1445 Todo *todo; 1444 Todo *todo;
1446 for(todo = todos.first(); todo; todo = todos.next()) { 1445 for(todo = todos.first(); todo; todo = todos.next()) {
1447 //insertTodo( todo ); 1446 //insertTodo( todo );
1448 if ( todo->hasDueDate() ) { 1447 if ( todo->hasDueDate() ) {
1449 int day = mStartDate.daysTo( todo->dtDue().date() ); 1448 int day = mStartDate.daysTo( todo->dtDue().date() );
1450 if ( day >= 0 && day < timeSpan + 1) { 1449 if ( day >= 0 && day < timeSpan + 1) {
1451 (*cells)[day]->insertTodo( todo ); 1450 (*cells)[day]->insertTodo( todo );
1452 } 1451 }
1453 } 1452 }
1454 } 1453 }
1455 1454
1456 for( i = 0; i < timeSpan+1; ++i ) { 1455 for( i = 0; i < timeSpan+1; ++i ) {
1457 (*cells)[i]->finishUpdateCell(); 1456 (*cells)[i]->finishUpdateCell();
1458 } 1457 }
1459 processSelectionChange(); 1458 processSelectionChange();
1460 //qApp->processEvents(); 1459 //qApp->processEvents();
1461 for( i = 0; i < timeSpan+1; ++i ) { 1460 for( i = 0; i < timeSpan+1; ++i ) {
1462 (*cells)[i]->repaintfinishUpdateCell(); 1461 (*cells)[i]->repaintfinishUpdateCell();
1463 } 1462 }
1464 (*cells)[0]->setFocus(); 1463 (*cells)[0]->setFocus();
1465 1464
1466 1465
1467#else 1466#else
1468 // old code 1467 // old code
1469 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1468 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1470 int i; 1469 int i;
1471 for( i = 0; i < (*cells).count(); ++i ) { 1470 for( i = 0; i < (*cells).count(); ++i ) {
1472 (*cells)[i]->updateCell(); 1471 (*cells)[i]->updateCell();
1473 } 1472 }
1474 1473
1475 //qDebug("KOMonthView::updateView() "); 1474 //qDebug("KOMonthView::updateView() ");
1476 processSelectionChange(); 1475 processSelectionChange();
1477 // qDebug("---------------------------------------------------------------------+ "); 1476 // qDebug("---------------------------------------------------------------------+ ");
1478 (*cells)[0]->setFocus(); 1477 (*cells)[0]->setFocus();
1479#endif 1478#endif
1480 1479
1481 //qDebug("update time %d ", ti.elapsed()); 1480 //qDebug("update time %d ", ti.elapsed());
1482} 1481}
1483 1482
1484void KOMonthView::resizeEvent(QResizeEvent * e) 1483void KOMonthView::resizeEvent(QResizeEvent * e)
1485{ 1484{
1486 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1485 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1487 if ( isVisible() ) { 1486 if ( isVisible() ) {
1488 //qDebug("KOMonthView::isVisible "); 1487 //qDebug("KOMonthView::isVisible ");
1489 slotComputeLayout(); 1488 slotComputeLayout();
1490 } else 1489 } else
1491 mComputeLayoutTimer->start( 100 ); 1490 mComputeLayoutTimer->start( 100 );
1492} 1491}
1493 1492
1494void KOMonthView::slotComputeLayout() 1493void KOMonthView::slotComputeLayout()
1495{ 1494{
1496 mComputeLayoutTimer->stop(); 1495 mComputeLayoutTimer->stop();
1497 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() ); 1496 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() );
1498 computeLayout(); 1497 computeLayout();
1499 clPending = true; 1498 clPending = true;
1500 if ( mShowWeekView ) 1499 if ( mShowWeekView )
1501 mCellsW[0]->setFocus(); 1500 mCellsW[0]->setFocus();
1502 else 1501 else
1503 mCells[0]->setFocus(); 1502 mCells[0]->setFocus();
1504 1503
1505} 1504}
1506void KOMonthView::computeLayoutWeek() 1505void KOMonthView::computeLayoutWeek()
1507{ 1506{
1508 static int lastWid = 0; 1507 static int lastWid = 0;
1509 static int lastHei = 0; 1508 static int lastHei = 0;
1510 int daysToShow; 1509 int daysToShow;
1511 bool combinedSatSun = false; 1510 bool combinedSatSun = false;
1512 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1511 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1513 daysToShow = 6; 1512 daysToShow = 6;
1514 combinedSatSun = true; 1513 combinedSatSun = true;
1515 } 1514 }
1516 int tWid = topLevelWidget()->size().width(); 1515 int tWid = topLevelWidget()->size().width();
1517 int tHei = topLevelWidget()->size().height(); 1516 int tHei = topLevelWidget()->size().height();
1518 1517
1519 int wid = width();//e 1518 int wid = width();//e
1520 int hei = height()-1-mNavigatorBar->height(); 1519 int hei = height()-1-mNavigatorBar->height();
1521 1520
1522 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1521 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1523 return; 1522 return;
1524 1523
1525 if ( lastWid == width() && lastHei == height() ) { 1524 if ( lastWid == width() && lastHei == height() ) {
1526 //qDebug("KOListWeekView::No compute layout needed "); 1525 //qDebug("KOListWeekView::No compute layout needed ");
1527 return; 1526 return;
1528 } 1527 }
1529 lastWid = width(); 1528 lastWid = width();
1530 lastHei = height(); 1529 lastHei = height();
1531 1530
1532 1531
1533 if ( wid < hei ) 1532 if ( wid < hei )
1534 daysToShow = 2; 1533 daysToShow = 2;
1535 else 1534 else
1536 daysToShow = 3; 1535 daysToShow = 3;
1537 mShowSatSunComp = true; 1536 mShowSatSunComp = true;
1538 combinedSatSun = true; 1537 combinedSatSun = true;
1539 1538
1540 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); 1539 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1541 QFontMetrics fm ( mWeekLabels[0]->font() ); 1540 QFontMetrics fm ( mWeekLabels[0]->font() );
1542 int weeklabelwid = fm.width( "888" ); 1541 int weeklabelwid = fm.width( "888" );
1543 wid -= weeklabelwid; 1542 wid -= weeklabelwid;
1544 1543
1545 int colWid = wid / daysToShow; 1544 int colWid = wid / daysToShow;
1546 int lastCol = wid - ( colWid*6 ); 1545 int lastCol = wid - ( colWid*6 );
1547 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1546 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1548 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1547 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1549 int colModulo = wid % daysToShow; 1548 int colModulo = wid % daysToShow;
1550 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1549 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1551 //qDebug("rowmod %d ", rowModulo); 1550 //qDebug("rowmod %d ", rowModulo);
1552 int i; 1551 int i;
1553 int x,y,w,h; 1552 int x,y,w,h;
1554 x= 0; 1553 x= 0;
1555 y= 0; 1554 y= 0;
1556 w = colWid; 1555 w = colWid;
1557 h = dayLabelHei ; 1556 h = dayLabelHei ;
1558 for ( i = 0; i < 7; i++) { 1557 for ( i = 0; i < 7; i++) {
1559 if ( i && !( i % daysToShow) && i < 6) { 1558 if ( i && !( i % daysToShow) && i < 6) {
1560 y += hei/(5-daysToShow); 1559 y += hei/(5-daysToShow);
1561 x = 0; 1560 x = 0;
1562 w = colWid; 1561 w = colWid;
1563 } 1562 }
1564 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1563 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1565 ++w; 1564 ++w;
1566 } 1565 }
1567 if ( i >= 5 ) { 1566 if ( i >= 5 ) {
1568 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h); 1567 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h);
1569 x -= (w/2 ); 1568 x -= (w/2 );
1570 } 1569 }
1571 else 1570 else
1572 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h); 1571 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h);
1573 x += w; 1572 x += w;
1574 } 1573 }
1575 x= 0; 1574 x= 0;
1576 y= dayLabelHei; 1575 y= dayLabelHei;
1577 w = colWid; 1576 w = colWid;
1578 h = cellHei; 1577 h = cellHei;
1579 int max = 0; 1578 int max = 0;
1580 for ( i = 0; i < mCellsW.count(); ++i) { 1579 for ( i = 0; i < mCellsW.count(); ++i) {
1581 if ( i > 6 ) { 1580 if ( i > 6 ) {
1582 mCellsW[i]->hide(); 1581 mCellsW[i]->hide();
1583 continue; 1582 continue;
1584 } 1583 }
1585 1584
1586 w = colWid; 1585 w = colWid;
1587 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1586 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1588 ++w; 1587 ++w;
1589 } 1588 }
1590 if ( i == (daysToShow-1-rowModulo)*7) 1589 if ( i == (daysToShow-1-rowModulo)*7)
1591 ++h; 1590 ++h;
1592 1591
1593 if ( i >= 5 ) { 1592 if ( i >= 5 ) {
1594 if ( i ==5 ) { 1593 if ( i ==5 ) {
1595 max = h/2; 1594 max = h/2;
1596 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max ); 1595 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max );
1597 x -= w ;y += h/2; 1596 x -= w ;y += h/2;
1598 } else { 1597 } else {
1599 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1598 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1600 ++w; 1599 ++w;
1601 } 1600 }
1602 max = h-h/2; 1601 max = h-h/2;
1603 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max ); 1602 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max );
1604 y -= h/2; 1603 y -= h/2;
1605 } 1604 }
1606 } else { 1605 } else {
1607 max = h; 1606 max = h;
1608 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1607 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h );
1609 } 1608 }
1610 1609
1611 1610
1612 x += w; 1611 x += w;
1613 if ( x + w/2 > wid ) { 1612 if ( x + w/2 > wid ) {
1614 x = 0; 1613 x = 0;
1615 y += h+dayLabelHei ; 1614 y += h+dayLabelHei ;
1616 } 1615 }
1617 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 ); 1616 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 );
1618 } 1617 }
1619 y= dayLabelHei; 1618 y= dayLabelHei;
1620 h = cellHei ; 1619 h = cellHei ;
1621 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1620 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1622 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1621 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1623 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1622 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1624 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1623 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1625 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; 1624 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ;
1626 updateDayLabels(); 1625 updateDayLabels();
1627 //bool forceUpdate = !updatePossible; 1626 //bool forceUpdate = !updatePossible;
1628 updatePossible = true; 1627 updatePossible = true;
1629 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1628 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1630 //if ( forceUpdate ) 1629 //if ( forceUpdate )
1631 // updateView(); 1630 // updateView();
1632} 1631}
1633void KOMonthView::computeLayout() 1632void KOMonthView::computeLayout()
1634{ 1633{
1635 1634
1636 1635
1637 static int lastWid = 0; 1636 static int lastWid = 0;
1638 static int lastHei = 0; 1637 static int lastHei = 0;
1639 1638
1640 if ( mShowWeekView ){ 1639 if ( mShowWeekView ){
1641 computeLayoutWeek(); 1640 computeLayoutWeek();
1642 return; 1641 return;
1643 } 1642 }
1644 int daysToShow = 7; 1643 int daysToShow = 7;
1645 bool combinedSatSun = false; 1644 bool combinedSatSun = false;
1646 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1645 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1647 daysToShow = 6; 1646 daysToShow = 6;
1648 combinedSatSun = true; 1647 combinedSatSun = true;
1649 } 1648 }
1650 int tWid = topLevelWidget()->size().width(); 1649 int tWid = topLevelWidget()->size().width();
1651 int tHei = topLevelWidget()->size().height(); 1650 int tHei = topLevelWidget()->size().height();
1652 1651
1653 int wid = width();//e 1652 int wid = width();//e
1654 int hei = height()-1-mNavigatorBar->height(); 1653 int hei = height()-1-mNavigatorBar->height();
1655 1654
1656 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { 1655 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) {
1657 return; 1656 return;
1658 } 1657 }
1659 if ( lastWid == width() && lastHei == height() ){ 1658 if ( lastWid == width() && lastHei == height() ){
1660 //qDebug("KOMonthview::No compute layout needed "); 1659 //qDebug("KOMonthview::No compute layout needed ");
1661 return; 1660 return;
1662 } 1661 }
1663 1662
1664 lastWid = width(); 1663 lastWid = width();
1665 lastHei = height(); 1664 lastHei = height();
1666 //qDebug("KOMonthView::computeLayout() MMM ------------------- "); 1665 //qDebug("KOMonthView::computeLayout() MMM ------------------- ");
1667 QFontMetrics fm ( mWeekLabels[0]->font() ); 1666 QFontMetrics fm ( mWeekLabels[0]->font() );
1668 int weeklabelwid = fm.width( "888" ); 1667 int weeklabelwid = fm.width( "888" );
1669 wid -= weeklabelwid; 1668 wid -= weeklabelwid;
1670 1669
1671 int colWid = wid / daysToShow; 1670 int colWid = wid / daysToShow;
1672 int lastCol = wid - ( colWid*6 ); 1671 int lastCol = wid - ( colWid*6 );
1673 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 1672 int dayLabelHei = mDayLabels[0]->sizeHint().height();
1674 int cellHei = (hei - dayLabelHei) /6; 1673 int cellHei = (hei - dayLabelHei) /6;
1675 int colModulo = wid % daysToShow; 1674 int colModulo = wid % daysToShow;
1676 int rowModulo = (hei- dayLabelHei) % 6; 1675 int rowModulo = (hei- dayLabelHei) % 6;
1677 //qDebug("rowmod %d ", rowModulo); 1676 //qDebug("rowmod %d ", rowModulo);
1678 int i; 1677 int i;
1679 int x,y,w,h; 1678 int x,y,w,h;
1680 x= 0; 1679 x= 0;
1681 y= 0; 1680 y= 0;
1682 w = colWid; 1681 w = colWid;
1683 h = dayLabelHei ; 1682 h = dayLabelHei ;
1684 for ( i = 0; i < 7; i++) { 1683 for ( i = 0; i < 7; i++) {
1685 if ( i == daysToShow-colModulo ) 1684 if ( i == daysToShow-colModulo )
1686 ++w; 1685 ++w;
1687 if ( combinedSatSun ) { 1686 if ( combinedSatSun ) {
1688 if ( i >= daysToShow-1 ) { 1687 if ( i >= daysToShow-1 ) {
1689 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 1688 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
1690 x -= w/2 ; 1689 x -= w/2 ;
1691 } 1690 }
1692 else 1691 else
1693 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1692 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1694 } else 1693 } else
1695 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1694 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1696 x += w; 1695 x += w;
1697 } 1696 }
1698 x= 0; 1697 x= 0;
1699 y= dayLabelHei; 1698 y= dayLabelHei;
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index a58f6b8..9e724c7 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -1,314 +1,314 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#ifndef _KOMONTHVIEW_H 20#ifndef _KOMONTHVIEW_H
21#define _KOMONTHVIEW_H 21#define _KOMONTHVIEW_H
22 22
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qframe.h> 24#include <qframe.h>
25#include <qdatetime.h> 25#include <qdatetime.h>
26#include <qlistbox.h> 26#include <qlistbox.h>
27#include <qpoint.h> 27#include <qpoint.h>
28#include <qwidgetstack.h> 28#include <qwidgetstack.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qtimer.h> 30#include <qtimer.h>
31#include <qintdict.h> 31#include <qintdict.h>
32#include <qpushbutton.h> 32#include <qpushbutton.h>
33#include <qvaluelist.h> 33#include <qvaluelist.h>
34#include <qptrvector.h> 34#include <qptrvector.h>
35 35
36#include <libkcal/calendar.h> 36#include <libkcal/calendar.h>
37#include <libkcal/event.h> 37#include <libkcal/event.h>
38 38
39#include "koeventview.h" 39#include "koeventview.h"
40#include "navigatorbar.h" 40#include "navigatorbar.h"
41 41
42#ifdef DESKTOP_VERSION 42#ifdef DESKTOP_VERSION
43class QToolTipGroup; 43class QToolTipGroup;
44#endif 44#endif
45 45
46class KNOWhatsThis; 46class KNOWhatsThis;
47class KOWeekButton : public QPushButton 47class KOWeekButton : public QPushButton
48{ 48{
49 Q_OBJECT 49 Q_OBJECT
50 public: 50 public:
51 KOWeekButton( QWidget *parent=0, const char *name=0 ) : 51 KOWeekButton( QWidget *parent=0, const char *name=0 ) :
52 QPushButton( parent, name) 52 QPushButton( parent, name)
53 { 53 {
54 connect( this, SIGNAL( clicked() ), 54 connect( this, SIGNAL( clicked() ),
55 SLOT( bottonClicked() )); 55 SLOT( bottonClicked() ));
56 mNumber = -1; 56 mNumber = -1;
57 } 57 }
58 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));} 58 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));}
59 int getWeekNum() { return mNumber;} 59 int getWeekNum() { return mNumber;}
60 signals: 60 signals:
61 void selectWeekNum ( int ); 61 void selectWeekNum ( int );
62private: 62private:
63 int mNumber; 63 int mNumber;
64private slots : 64private slots :
65 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); } 65 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); }
66}; 66};
67 67
68class KNoScrollListBox: public QListBox 68class KNoScrollListBox: public QListBox
69{ 69{
70 Q_OBJECT 70 Q_OBJECT
71 public: 71 public:
72 KNoScrollListBox(QWidget *parent=0, const char *name=0); 72 KNoScrollListBox(QWidget *parent=0, const char *name=0);
73 ~KNoScrollListBox(); 73 ~KNoScrollListBox();
74 QString getWhatsThisText(QPoint p) ; 74 QString getWhatsThisText(QPoint p) ;
75 75
76 signals: 76 signals:
77 void shiftDown(); 77 void shiftDown();
78 void shiftUp(); 78 void shiftUp();
79 void rightClick(); 79 void rightClick();
80 80
81 protected slots: 81 protected slots:
82 void oneDown(); 82 void oneDown();
83 void keyPressEvent(QKeyEvent *); 83 void keyPressEvent(QKeyEvent *);
84 void keyReleaseEvent(QKeyEvent *); 84 void keyReleaseEvent(QKeyEvent *);
85 void mousePressEvent(QMouseEvent *); 85 void mousePressEvent(QMouseEvent *);
86 86
87 private: 87 private:
88 KNOWhatsThis * mWT; 88 KNOWhatsThis * mWT;
89}; 89};
90 90
91 91
92class MonthViewItem: public QListBoxItem 92class MonthViewItem: public QListBoxItem
93{ 93{
94 public: 94 public:
95 MonthViewItem( Incidence *, QDate qd, const QString & title ); 95 MonthViewItem( Incidence *, QDate qd, const QString & title );
96 void recycle( Incidence *incidence, QDate qd, const QString & s); 96 void recycle( Incidence *incidence, QDate qd, const QString & s);
97 void setRecur(bool on) { mRecur = on; } 97 void setRecur(bool on) { mRecur = on; }
98 void setAlarm(bool on) { mAlarm = on; } 98 void setAlarm(bool on) { mAlarm = on; }
99 void setReply(bool on) { mReply = on; } 99 void setReply(bool on) { mReply = on; }
100 void setMoreInfo(bool on) { mInfo = on; } 100 void setMoreInfo(bool on) { mInfo = on; }
101 void setMultiDay(int type) { mMultiday = type; } 101 void setMultiDay(int type) { mMultiday = type; }
102 void setBlockRepaint(bool on) { mblockRepaint = on; } 102 void setBlockRepaint(bool on) { mblockRepaint = on; }
103 103
104 104
105 void setPalette(const QPalette &p) { mPalette = p; } 105 void setPalette(const QPalette &p) { mPalette = p; }
106 QPalette palette() const { return mPalette; } 106 QPalette palette() const { return mPalette; }
107 107
108 Incidence *incidence() const { return mIncidence; } 108 Incidence *incidence() const { return mIncidence; }
109 QDate incidenceDate() { return mDate; } 109 QDate incidenceDate() { return mDate; }
110 110
111 protected: 111 protected:
112 virtual void paint(QPainter *); 112 virtual void paint(QPainter *);
113 virtual int height(const QListBox *) const; 113 virtual int height(const QListBox *) const;
114 virtual int width(const QListBox *) const; 114 virtual int width(const QListBox *) const;
115 115
116 private: 116 private:
117 bool mblockRepaint; 117 bool mblockRepaint;
118 int mMultiday; 118 int mMultiday;
119 bool mRecur; 119 bool mRecur;
120 bool mAlarm; 120 bool mAlarm;
121 bool mReply; 121 bool mReply;
122 bool mInfo; 122 bool mInfo;
123 123
124 QPalette mPalette; 124 QPalette mPalette;
125 QDate mDate; 125 QDate mDate;
126 126
127 Incidence *mIncidence; 127 Incidence *mIncidence;
128}; 128};
129 129
130 130
131class KOMonthView; 131class KOMonthView;
132 132
133class MonthViewCell : public KNoScrollListBox 133class MonthViewCell : public KNoScrollListBox
134{ 134{
135 Q_OBJECT 135 Q_OBJECT
136 public: 136 public:
137 MonthViewCell(KOMonthView *,QWidget* ); 137 MonthViewCell(KOMonthView *,QWidget* );
138 ~MonthViewCell() {mAvailItemList.setAutoDelete( true );} 138 ~MonthViewCell() {mAvailItemList.setAutoDelete( true );}
139 139
140 void setDate( const QDate & ); 140 void setDate( const QDate & );
141 QDate date() const; 141 QDate date() const;
142 142
143 void setPrimary( bool ); 143 void setPrimary( bool );
144 bool isPrimary() const; 144 bool isPrimary() const;
145 145
146 void setHoliday( bool ); 146 void setHoliday( bool );
147 void setHoliday( const QString & ); 147 void setHoliday( const QString & );
148 148
149 void updateCell(); 149 void updateCell();
150 void startUpdateCell(); 150 void startUpdateCell();
151 void finishUpdateCell(); 151 void finishUpdateCell();
152 void repaintfinishUpdateCell(); 152 void repaintfinishUpdateCell();
153 void insertEvent(Event *); 153 void insertEvent(Event *);
154 void insertTodo(Todo *); 154 void insertTodo(Todo *);
155 155
156 void updateConfig( bool bigFont = false ); 156 void updateConfig( bool bigFont = false );
157 157
158 void enableScrollBars( bool ); 158 void enableScrollBars( bool );
159 159
160 Incidence *selectedIncidence(); 160 Incidence *selectedIncidence();
161 QDate selectedIncidenceDate(); 161 QDate selectedIncidenceDate();
162 QPushButton * dateLabel() { return mLabel; } 162 QPushButton * dateLabel() { return mLabel; }
163 163
164 void deselect(); 164 void deselect();
165 void select(); 165 void select();
166 166
167#ifdef DESKTOP_VERSION 167#ifdef DESKTOP_VERSION
168 static QToolTipGroup *toolTipGroup(); 168 static QToolTipGroup *toolTipGroup();
169#endif 169#endif
170 signals: 170 signals:
171 void defaultAction( Incidence * ); 171 void defaultAction( Incidence * );
172 void newEventSignal( QDateTime ); 172 void newEventSignal( QDateTime );
173 void showDaySignal( QDate ); 173 void showDaySignal( QDate );
174 174
175 protected: 175 protected:
176 QStringList mToolTip; 176 QStringList mToolTip;
177 void resizeEvent( QResizeEvent * ); 177 void resizeEvent( QResizeEvent * );
178 178
179 179
180public slots: 180public slots:
181 void showDay(); 181 void showDay();
182 182
183 protected slots: 183 protected slots:
184 void defaultAction( QListBoxItem * ); 184 void defaultAction( QListBoxItem * );
185 void contextMenu( QListBoxItem * ); 185 void contextMenu( QListBoxItem * );
186 void selection( QListBoxItem * ); 186 void selection( QListBoxItem * );
187 void cellClicked( QListBoxItem * ); 187 void cellClicked( QListBoxItem * );
188 void newEvent(); 188 void newEvent();
189 189
190 private: 190 private:
191 MonthViewItem* mCurrentAvailItem; 191 MonthViewItem* mCurrentAvailItem;
192 QPtrList <MonthViewItem> mAvailItemList; 192 QPtrList <MonthViewItem> mAvailItemList;
193 KOMonthView *mMonthView; 193 KOMonthView *mMonthView;
194 int currentPalette; 194 int currentPalette;
195 195
196 QDate mDate; 196 QDate mDate;
197 bool mPrimary; 197 bool mPrimary;
198 bool mHoliday; 198 bool mHoliday;
199 QString mHolidayString; 199 QString mHolidayString;
200 200
201 //QLabel *mLabel; 201 //QLabel *mLabel;
202 QPushButton *mLabel; 202 QPushButton *mLabel;
203 //QListBox *mItemList; 203 //QListBox *mItemList;
204#ifdef DESKTOP_VERSION 204#ifdef DESKTOP_VERSION
205 static QToolTipGroup *mToolTipGroup; 205 static QToolTipGroup *mToolTipGroup;
206#endif 206#endif
207 QSize mLabelSize; 207 QSize mLabelSize;
208 QSize mLabelBigSize; 208 QSize mLabelBigSize;
209 QPalette mHolidayPalette; 209 QPalette mHolidayPalette;
210 QPalette mStandardPalette; 210 QPalette mStandardPalette;
211 QPalette mPrimaryPalette; 211 QPalette mPrimaryPalette;
212 QPalette mNonPrimaryPalette; 212 QPalette mNonPrimaryPalette;
213 void setMyPalette(); 213 void setMyPalette();
214 QPalette getPalette (); 214 QPalette getPalette ();
215 215
216}; 216};
217 217
218 218
219class KOMonthView: public KOEventView 219class KOMonthView: public KOEventView
220{ 220{
221 Q_OBJECT 221 Q_OBJECT
222 public: 222 public:
223 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 ); 223 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 );
224 ~KOMonthView(); 224 ~KOMonthView();
225 225
226 /** Returns maximum number of days supported by the komonthview */ 226 /** Returns maximum number of days supported by the komonthview */
227 virtual int maxDatesHint(); 227 virtual int maxDatesHint();
228 228
229 /** Returns number of currently shown dates. */ 229 /** Returns number of currently shown dates. */
230 virtual int currentDateCount(); 230 virtual int currentDateCount();
231 231
232 /** returns the currently selected events */ 232 /** returns the currently selected events */
233 virtual QPtrList<Incidence> selectedIncidences(); 233 virtual QPtrList<Incidence> selectedIncidences();
234 234
235 /** returns dates of the currently selected events */ 235 /** returns dates of the currently selected events */
236 virtual DateList selectedDates(); 236 virtual DateList selectedDates();
237 237
238 virtual void printPreview(CalPrinter *calPrinter, 238 virtual void printPreview(CalPrinter *calPrinter,
239 const QDate &, const QDate &); 239 const QDate &, const QDate &);
240 bool isMonthView() { return !mShowWeekView; } 240 bool isMonthView() { return !mShowWeekView; }
241 bool isUpdatePossible() { return updatePossible; } 241 bool isUpdatePossible() { return updatePossible; }
242 242
243 MonthViewCell * selectedCell(); 243 MonthViewCell * selectedCell();
244 bool skipResize; 244 bool skipResize;
245 NavigatorBar* navigatorBar() { return mNavigatorBar ;} 245 NavigatorBar* navigatorBar() { return mNavigatorBar ;}
246 public slots: 246 public slots:
247 virtual void updateView(); 247 virtual void updateView();
248 virtual void updateConfig(); 248 virtual void updateConfig();
249 virtual void showDates(const QDate &start, const QDate &end); 249 virtual void showDates(const QDate &start, const QDate &end);
250 virtual void showEvents(QPtrList<Event> eventList); 250 virtual void showEvents(QPtrList<Event> eventList);
251 251
252 void changeEventDisplay(Event *, int); 252 void changeEventDisplay(Event *, int);
253 253
254 void clearSelection(); 254 void clearSelection();
255 255
256 void showContextMenu( Incidence * ); 256 void showContextMenu( Incidence * );
257 257
258 void setSelectedCell( MonthViewCell * ); 258 void setSelectedCell( MonthViewCell * );
259 void switchView(); 259 void switchView();
260 260
261 protected slots: 261 protected slots:
262 void slotComputeLayout(); 262 void slotComputeLayout();
263 void selectInternalWeekNum ( int ); 263 void selectInternalWeekNum ( int );
264 void processSelectionChange(); 264 void processSelectionChange();
265 signals: 265 signals:
266 void nextMonth(); 266 void nextMonth();
267 void prevMonth(); 267 void prevMonth();
268 void selectWeekNum ( int ); 268 void selectWeekNum ( int );
269 void selectMonth (); 269 void selectMonth ();
270 void showDaySignal( QDate ); 270 void showDaySignal( QDate );
271 protected: 271 protected:
272 void resizeEvent(QResizeEvent *); 272 void resizeEvent(QResizeEvent *);
273 void viewChanged(); 273 void viewChanged();
274 void updateDayLabels(); 274 void updateDayLabels();
275 275
276 private: 276 private:
277 QTimer* mComputeLayoutTimer; 277 QTimer* mComputeLayoutTimer;
278 NavigatorBar* mNavigatorBar; 278 NavigatorBar* mNavigatorBar;
279 int currentWeek(); 279 int currentWeek();
280 bool clPending; 280 bool clPending;
281 QWidgetStack * mWidStack; 281 QWidgetStack * mWidStack;
282 QWidget* mMonthView; 282 QWidget* mMonthView;
283 QWidget* mWeekView; 283 QWidget* mWeekView;
284 bool mShowWeekView; 284 bool mShowWeekView;
285 bool updatePossible; 285 bool updatePossible;
286 int mDaysPerWeek; 286 int mDaysPerWeek;
287 int mNumWeeks; 287 int mNumWeeks;
288 int mNumCells; 288 int mNumCells;
289 bool mWeekStartsMonday; 289 //bool mWeekStartsMonday;
290 bool mShowSatSunComp; 290 bool mShowSatSunComp;
291 void computeLayout(); 291 void computeLayout();
292 void computeLayoutWeek(); 292 void computeLayoutWeek();
293 293
294 QPtrVector<MonthViewCell> mCells; 294 QPtrVector<MonthViewCell> mCells;
295 QPtrVector<QLabel> mDayLabels; 295 QPtrVector<QLabel> mDayLabels;
296 QPtrVector<KOWeekButton> mWeekLabels; 296 QPtrVector<KOWeekButton> mWeekLabels;
297 QPtrVector<MonthViewCell> mCellsW; 297 QPtrVector<MonthViewCell> mCellsW;
298 QPtrVector<QLabel> mDayLabelsW; 298 QPtrVector<QLabel> mDayLabelsW;
299 QPtrVector<KOWeekButton> mWeekLabelsW; 299 QPtrVector<KOWeekButton> mWeekLabelsW;
300 300
301 bool mShortDayLabelsM; 301 bool mShortDayLabelsM;
302 bool mShortDayLabelsW; 302 bool mShortDayLabelsW;
303 int mWidthLongDayLabel; 303 int mWidthLongDayLabel;
304 304
305 QDate mStartDate; 305 QDate mStartDate;
306 306
307 MonthViewCell *mSelectedCell; 307 MonthViewCell *mSelectedCell;
308 308
309 KOEventPopupMenu *mContextMenu; 309 KOEventPopupMenu *mContextMenu;
310 void keyPressEvent ( QKeyEvent * ) ; 310 void keyPressEvent ( QKeyEvent * ) ;
311 311
312}; 312};
313 313
314#endif 314#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 2da592b..8e52968 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1097,795 +1097,773 @@ void MainWindow::initActions()
1097 xdays_action->addTo( viewToolBar ); 1097 xdays_action->addTo( viewToolBar );
1098 if (p-> mShowIconJournal) 1098 if (p-> mShowIconJournal)
1099 viewjournal_action->addTo( viewToolBar ); 1099 viewjournal_action->addTo( viewToolBar );
1100 if (p-> mShowIconDay1) 1100 if (p-> mShowIconDay1)
1101 day1_action->addTo( viewToolBar ); 1101 day1_action->addTo( viewToolBar );
1102 if (p-> mShowIconDay5) 1102 if (p-> mShowIconDay5)
1103 day5_action->addTo( viewToolBar ); 1103 day5_action->addTo( viewToolBar );
1104 if (p-> mShowIconDay7) 1104 if (p-> mShowIconDay7)
1105 day7_action->addTo( viewToolBar ); 1105 day7_action->addTo( viewToolBar );
1106 if (p-> mShowIconDay6) 1106 if (p-> mShowIconDay6)
1107 day6_action->addTo( viewToolBar ); 1107 day6_action->addTo( viewToolBar );
1108 if (p-> mShowIconMonth) 1108 if (p-> mShowIconMonth)
1109 month_action->addTo( viewToolBar ); 1109 month_action->addTo( viewToolBar );
1110 if (p-> mShowIconList) 1110 if (p-> mShowIconList)
1111 showlist_action->addTo( viewToolBar ); 1111 showlist_action->addTo( viewToolBar );
1112 if (p-> mShowIconTodoview) 1112 if (p-> mShowIconTodoview)
1113 todoview_action->addTo( viewToolBar ); 1113 todoview_action->addTo( viewToolBar );
1114 1114
1115 icon = loadPixmap( pathString + "2leftarrowB" ); 1115 icon = loadPixmap( pathString + "2leftarrowB" );
1116 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200); 1116 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200);
1117 if (p-> mShowIconBackFast) { 1117 if (p-> mShowIconBackFast) {
1118 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 1118 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
1119 connect( action, SIGNAL( activated() ), 1119 connect( action, SIGNAL( activated() ),
1120 mView, SLOT( goPreviousMonth() ) ); 1120 mView, SLOT( goPreviousMonth() ) );
1121 action->addTo( navigatorToolBar ); 1121 action->addTo( navigatorToolBar );
1122 } 1122 }
1123 icon = loadPixmap( pathString + "1leftarrowB" ); 1123 icon = loadPixmap( pathString + "1leftarrowB" );
1124 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210); 1124 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210);
1125 if (p-> mShowIconBack) { 1125 if (p-> mShowIconBack) {
1126 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 1126 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
1127 connect( action, SIGNAL( activated() ), 1127 connect( action, SIGNAL( activated() ),
1128 mView, SLOT( goPrevious() ) ); 1128 mView, SLOT( goPrevious() ) );
1129 action->addTo( navigatorToolBar ); 1129 action->addTo( navigatorToolBar );
1130 } 1130 }
1131 icon = loadPixmap( pathString + "today" ); 1131 icon = loadPixmap( pathString + "today" );
1132 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 1132 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
1133 if (p-> mShowIconToday) 1133 if (p-> mShowIconToday)
1134 today_action->addTo( navigatorToolBar ); 1134 today_action->addTo( navigatorToolBar );
1135 icon = loadPixmap( pathString + "1rightarrowB" ); 1135 icon = loadPixmap( pathString + "1rightarrowB" );
1136 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 1136 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
1137 if (p-> mShowIconForward) { 1137 if (p-> mShowIconForward) {
1138 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 1138 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
1139 connect( action, SIGNAL( activated() ), 1139 connect( action, SIGNAL( activated() ),
1140 mView, SLOT( goNext() ) ); 1140 mView, SLOT( goNext() ) );
1141 action->addTo( navigatorToolBar ); 1141 action->addTo( navigatorToolBar );
1142 } 1142 }
1143 icon = loadPixmap( pathString + "2rightarrowB" ); 1143 icon = loadPixmap( pathString + "2rightarrowB" );
1144 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 1144 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
1145 if (p-> mShowIconForwardFast) { 1145 if (p-> mShowIconForwardFast) {
1146 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 1146 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
1147 connect( action, SIGNAL( activated() ), 1147 connect( action, SIGNAL( activated() ),
1148 mView, SLOT( goNextMonth() ) ); 1148 mView, SLOT( goNextMonth() ) );
1149 action->addTo( navigatorToolBar ); 1149 action->addTo( navigatorToolBar );
1150 } 1150 }
1151 1151
1152 1152
1153 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6); 1153 configureToolBarMenu->insertItem(i18n("What's This?"), 300, 6);
1154 1154
1155 if (p-> mShowIconNewEvent) 1155 if (p-> mShowIconNewEvent)
1156 configureToolBarMenu->setItemChecked( 10, true ); 1156 configureToolBarMenu->setItemChecked( 10, true );
1157 if (p->mShowIconNewTodo ) 1157 if (p->mShowIconNewTodo )
1158 configureToolBarMenu->setItemChecked( 20, true ); 1158 configureToolBarMenu->setItemChecked( 20, true );
1159 if (p-> mShowIconSearch) 1159 if (p-> mShowIconSearch)
1160 configureToolBarMenu->setItemChecked( 120, true ); 1160 configureToolBarMenu->setItemChecked( 120, true );
1161 if (p-> mShowIconList) 1161 if (p-> mShowIconList)
1162 configureToolBarMenu->setItemChecked( 30, true ); 1162 configureToolBarMenu->setItemChecked( 30, true );
1163 if (p-> mShowIconDay1) 1163 if (p-> mShowIconDay1)
1164 configureToolBarMenu->setItemChecked( 40, true ); 1164 configureToolBarMenu->setItemChecked( 40, true );
1165 if (p-> mShowIconDay5) 1165 if (p-> mShowIconDay5)
1166 configureToolBarMenu->setItemChecked( 50, true ); 1166 configureToolBarMenu->setItemChecked( 50, true );
1167 if (p-> mShowIconDay6) 1167 if (p-> mShowIconDay6)
1168 configureToolBarMenu->setItemChecked( 75, true ); 1168 configureToolBarMenu->setItemChecked( 75, true );
1169 if (p-> mShowIconDay7) 1169 if (p-> mShowIconDay7)
1170 configureToolBarMenu->setItemChecked( 60, true ); 1170 configureToolBarMenu->setItemChecked( 60, true );
1171 if (p-> mShowIconMonth) 1171 if (p-> mShowIconMonth)
1172 configureToolBarMenu->setItemChecked( 70, true ); 1172 configureToolBarMenu->setItemChecked( 70, true );
1173 if (p-> mShowIconTodoview) 1173 if (p-> mShowIconTodoview)
1174 configureToolBarMenu->setItemChecked( 80, true ); 1174 configureToolBarMenu->setItemChecked( 80, true );
1175 if (p-> mShowIconBackFast) 1175 if (p-> mShowIconBackFast)
1176 configureToolBarMenu->setItemChecked( 200, true ); 1176 configureToolBarMenu->setItemChecked( 200, true );
1177 if (p-> mShowIconBack) 1177 if (p-> mShowIconBack)
1178 configureToolBarMenu->setItemChecked( 210, true ); 1178 configureToolBarMenu->setItemChecked( 210, true );
1179 if (p-> mShowIconToday) 1179 if (p-> mShowIconToday)
1180 configureToolBarMenu->setItemChecked( 130, true ); 1180 configureToolBarMenu->setItemChecked( 130, true );
1181 if (p-> mShowIconForward) 1181 if (p-> mShowIconForward)
1182 configureToolBarMenu->setItemChecked( 220, true ); 1182 configureToolBarMenu->setItemChecked( 220, true );
1183 if (p-> mShowIconForwardFast) 1183 if (p-> mShowIconForwardFast)
1184 configureToolBarMenu->setItemChecked( 230, true ); 1184 configureToolBarMenu->setItemChecked( 230, true );
1185 if (p-> mShowIconNextDays) 1185 if (p-> mShowIconNextDays)
1186 configureToolBarMenu->setItemChecked( 100, true ); 1186 configureToolBarMenu->setItemChecked( 100, true );
1187 if (p-> mShowIconNext) 1187 if (p-> mShowIconNext)
1188 configureToolBarMenu->setItemChecked( 110, true ); 1188 configureToolBarMenu->setItemChecked( 110, true );
1189 if (p-> mShowIconJournal) 1189 if (p-> mShowIconJournal)
1190 configureToolBarMenu->setItemChecked( 90, true ); 1190 configureToolBarMenu->setItemChecked( 90, true );
1191 if (p-> mShowIconWhatsThis) 1191 if (p-> mShowIconWhatsThis)
1192 configureToolBarMenu->setItemChecked( 300, true ); 1192 configureToolBarMenu->setItemChecked( 300, true );
1193 if (p-> mShowIconWeekNum) 1193 if (p-> mShowIconWeekNum)
1194 configureToolBarMenu->setItemChecked( 400, true ); 1194 configureToolBarMenu->setItemChecked( 400, true );
1195 if (!p-> mShowIconStretch) { 1195 if (!p-> mShowIconStretch) {
1196 QLabel* dummy = new QLabel( iconToolBar ); 1196 QLabel* dummy = new QLabel( iconToolBar );
1197 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1197 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1198 dummy->setMinimumWidth( 0 ); 1198 dummy->setMinimumWidth( 0 );
1199 iconToolBar->setStretchableWidget ( dummy ) ; 1199 iconToolBar->setStretchableWidget ( dummy ) ;
1200 } 1200 }
1201 else { 1201 else {
1202 iconToolBar->setHorizontalStretchable (true ); 1202 iconToolBar->setHorizontalStretchable (true );
1203 viewToolBar->setHorizontalStretchable (true ); 1203 viewToolBar->setHorizontalStretchable (true );
1204 navigatorToolBar->setHorizontalStretchable (true ); 1204 navigatorToolBar->setHorizontalStretchable (true );
1205 iconToolBar->setVerticalStretchable (true ); 1205 iconToolBar->setVerticalStretchable (true );
1206 viewToolBar->setVerticalStretchable (true ); 1206 viewToolBar->setVerticalStretchable (true );
1207 navigatorToolBar->setVerticalStretchable (true ); 1207 navigatorToolBar->setVerticalStretchable (true );
1208 configureToolBarMenu->setItemChecked( 5, true ); 1208 configureToolBarMenu->setItemChecked( 5, true );
1209 } 1209 }
1210 if (p-> mShowIconFilter) 1210 if (p-> mShowIconFilter)
1211 configureToolBarMenu->setItemChecked( 7, true ); 1211 configureToolBarMenu->setItemChecked( 7, true );
1212 if (p-> mShowIconOnetoolbar) 1212 if (p-> mShowIconOnetoolbar)
1213 configureToolBarMenu->setItemChecked( 6, true ); 1213 configureToolBarMenu->setItemChecked( 6, true );
1214 1214
1215 1215
1216 if ( filterMenubar ) 1216 if ( filterMenubar )
1217 connect( mView->filterView(), SIGNAL( filterChanged() ), SLOT( updateFilterToolbar() ) ); 1217 connect( mView->filterView(), SIGNAL( filterChanged() ), SLOT( updateFilterToolbar() ) );
1218 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1218 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1219 configureAgenda( p->mHourSize ); 1219 configureAgenda( p->mHourSize );
1220 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1220 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1221} 1221}
1222 1222
1223void MainWindow::exportToPhone( int mode ) 1223void MainWindow::exportToPhone( int mode )
1224{ 1224{
1225 1225
1226 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1226 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1227 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1227 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1228 KOex2phonePrefs ex2phone; 1228 KOex2phonePrefs ex2phone;
1229 1229
1230 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1230 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1231 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1231 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1232 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1232 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1233 if ( mode == 1 ) 1233 if ( mode == 1 )
1234 ex2phone.setCaption(i18n("Export complete calendar")); 1234 ex2phone.setCaption(i18n("Export complete calendar"));
1235 if ( mode == 2 ) 1235 if ( mode == 2 )
1236 ex2phone.setCaption(i18n("Export filtered calendar")); 1236 ex2phone.setCaption(i18n("Export filtered calendar"));
1237 1237
1238 if ( !ex2phone.exec() ) { 1238 if ( !ex2phone.exec() ) {
1239 return; 1239 return;
1240 } 1240 }
1241 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1241 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1242 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1242 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1243 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1243 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1244 1244
1245 int inFuture = 0; 1245 int inFuture = 0;
1246 if ( ex2phone.mWriteBackFuture->isChecked() ) 1246 if ( ex2phone.mWriteBackFuture->isChecked() )
1247 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1247 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1248 QPtrList<Incidence> delSel; 1248 QPtrList<Incidence> delSel;
1249 if ( mode == 1 ) 1249 if ( mode == 1 )
1250 delSel = mCalendar->rawIncidences(); 1250 delSel = mCalendar->rawIncidences();
1251 if ( mode == 2 ) 1251 if ( mode == 2 )
1252 delSel = mCalendar->incidences(); 1252 delSel = mCalendar->incidences();
1253 CalendarLocal* cal = new CalendarLocal(); 1253 CalendarLocal* cal = new CalendarLocal();
1254 cal->setLocalTime(); 1254 cal->setLocalTime();
1255 Incidence *incidence = delSel.first(); 1255 Incidence *incidence = delSel.first();
1256 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1256 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1257 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1257 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1258 while ( incidence ) { 1258 while ( incidence ) {
1259 if ( incidence->type() != "Journal" ) { 1259 if ( incidence->type() != "Journal" ) {
1260 bool add = true; 1260 bool add = true;
1261 if ( inFuture ) { 1261 if ( inFuture ) {
1262 QDateTime dt; 1262 QDateTime dt;
1263 if ( incidence->type() == "Todo" ) { 1263 if ( incidence->type() == "Todo" ) {
1264 Todo * t = (Todo*)incidence; 1264 Todo * t = (Todo*)incidence;
1265 if ( t->hasDueDate() ) 1265 if ( t->hasDueDate() )
1266 dt = t->dtDue(); 1266 dt = t->dtDue();
1267 else 1267 else
1268 dt = cur.addSecs( 62 ); 1268 dt = cur.addSecs( 62 );
1269 } 1269 }
1270 else { 1270 else {
1271 bool ok; 1271 bool ok;
1272 dt = incidence->getNextOccurence( cur, &ok ); 1272 dt = incidence->getNextOccurence( cur, &ok );
1273 if ( !ok ) 1273 if ( !ok )
1274 dt = cur.addSecs( -62 ); 1274 dt = cur.addSecs( -62 );
1275 } 1275 }
1276 if ( dt < cur || dt > end ) { 1276 if ( dt < cur || dt > end ) {
1277 add = false; 1277 add = false;
1278 } 1278 }
1279 } 1279 }
1280 if ( add ) { 1280 if ( add ) {
1281 Incidence *in = incidence->clone(); 1281 Incidence *in = incidence->clone();
1282 cal->addIncidence( in ); 1282 cal->addIncidence( in );
1283 } 1283 }
1284 } 1284 }
1285 incidence = delSel.next(); 1285 incidence = delSel.next();
1286 } 1286 }
1287 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1287 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1288 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1288 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1289 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1289 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1290 1290
1291 setCaption( i18n("Writing to phone...")); 1291 setCaption( i18n("Writing to phone..."));
1292 if ( PhoneFormat::writeToPhone( cal ) ) 1292 if ( PhoneFormat::writeToPhone( cal ) )
1293 setCaption( i18n("Export to phone successful!")); 1293 setCaption( i18n("Export to phone successful!"));
1294 else 1294 else
1295 setCaption( i18n("Error exporting to phone!")); 1295 setCaption( i18n("Error exporting to phone!"));
1296 delete cal; 1296 delete cal;
1297} 1297}
1298 1298
1299 1299
1300void MainWindow::setDefaultPreferences() 1300void MainWindow::setDefaultPreferences()
1301{ 1301{
1302 KOPrefs *p = KOPrefs::instance(); 1302 KOPrefs *p = KOPrefs::instance();
1303 1303
1304 p->mCompactDialogs = true; 1304 p->mCompactDialogs = true;
1305 p->mConfirm = true; 1305 p->mConfirm = true;
1306 // p->mEnableQuickTodo = false; 1306 // p->mEnableQuickTodo = false;
1307 1307
1308} 1308}
1309 1309
1310QString MainWindow::resourcePath() 1310QString MainWindow::resourcePath()
1311{ 1311{
1312 return KGlobal::iconLoader()->iconPath(); 1312 return KGlobal::iconLoader()->iconPath();
1313} 1313}
1314 1314
1315void MainWindow::displayText( QString text ,QString cap ) 1315void MainWindow::displayText( QString text ,QString cap )
1316{ 1316{
1317 QDialog dia( this, "name", true ); ; 1317 QDialog dia( this, "name", true ); ;
1318 dia.setCaption( cap ); 1318 dia.setCaption( cap );
1319 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1319 QVBoxLayout* lay = new QVBoxLayout( &dia );
1320 lay->setSpacing( 3 ); 1320 lay->setSpacing( 3 );
1321 lay->setMargin( 3 ); 1321 lay->setMargin( 3 );
1322 QTextBrowser tb ( &dia ); 1322 QTextBrowser tb ( &dia );
1323 lay->addWidget( &tb ); 1323 lay->addWidget( &tb );
1324 tb.setText( text ); 1324 tb.setText( text );
1325#ifdef DESKTOP_VERSION 1325#ifdef DESKTOP_VERSION
1326 dia.resize( 640, 480); 1326 dia.resize( 640, 480);
1327#else 1327#else
1328 dia.showMaximized(); 1328 dia.showMaximized();
1329#endif 1329#endif
1330 dia.exec(); 1330 dia.exec();
1331} 1331}
1332 1332
1333void MainWindow::features() 1333void MainWindow::features()
1334{ 1334{
1335 1335
1336 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1336 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1337} 1337}
1338 1338
1339void MainWindow::usertrans() 1339void MainWindow::usertrans()
1340{ 1340{
1341 1341
1342 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1342 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1343} 1343}
1344 1344
1345void MainWindow::kdesynchowto() 1345void MainWindow::kdesynchowto()
1346{ 1346{
1347 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1347 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1348} 1348}
1349void MainWindow::multisynchowto() 1349void MainWindow::multisynchowto()
1350{ 1350{
1351 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1351 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1352} 1352}
1353void MainWindow::synchowto() 1353void MainWindow::synchowto()
1354{ 1354{
1355 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1355 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1356} 1356}
1357void MainWindow::faq() 1357void MainWindow::faq()
1358{ 1358{
1359 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1359 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1360 1360
1361} 1361}
1362void MainWindow::whatsNew() 1362void MainWindow::whatsNew()
1363{ 1363{
1364 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1364 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1365 1365
1366} 1366}
1367void MainWindow::licence() 1367void MainWindow::licence()
1368{ 1368{
1369 KApplication::showLicence(); 1369 KApplication::showLicence();
1370 1370
1371} 1371}
1372void MainWindow::about() 1372void MainWindow::about()
1373{ 1373{
1374 QString version; 1374 QString version;
1375#include <../version> 1375#include <../version>
1376 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1376 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1377 i18n("KOrganizer/Platform-independent\n") + 1377 i18n("KOrganizer/Platform-independent\n") +
1378 "(KO/Pi) " + version + " - " + 1378 "(KO/Pi) " + version + " - " +
1379 1379
1380#ifdef DESKTOP_VERSION 1380#ifdef DESKTOP_VERSION
1381 i18n("Desktop Edition\n") + 1381 i18n("Desktop Edition\n") +
1382#else 1382#else
1383 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1383 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1384#endif 1384#endif
1385 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") ); 1385 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") );
1386} 1386}
1387void MainWindow::keyBindings() 1387void MainWindow::keyBindings()
1388{ 1388{
1389 QString cap = i18n("KO/Pi Keys + Colors"); 1389 QString cap = i18n("KO/Pi Keys + Colors");
1390 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1390 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1391 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1391 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1392 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1392 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1393 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1393 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1394 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1394 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1395 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1395 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1396 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1396 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1397 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1397 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1398 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1398 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1399 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1399 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1400 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1400 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1401 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1401 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1402 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1402 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1403 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1403 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1404 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1404 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1405 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1405 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1406 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1406 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1407 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1407 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1408 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1408 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1409 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1409 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1410 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1410 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1411 i18n("<p><h3>In agenda view:</h3></p>\n") + 1411 i18n("<p><h3>In agenda view:</h3></p>\n") +
1412 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1412 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1413 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1413 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1414 i18n("<p><h3>In todo view:</h3></p>\n") + 1414 i18n("<p><h3>In todo view:</h3></p>\n") +
1415 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1415 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1416 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1416 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1417 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1417 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1418 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1418 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1419 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1419 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1420 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1420 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1421 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1421 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1422 i18n("<p><h3>In list view:</h3></p>\n") + 1422 i18n("<p><h3>In list view:</h3></p>\n") +
1423 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1423 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1424 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1424 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1425 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1425 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1426 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1426 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1427 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1427 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1428 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1428 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1429 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1429 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1430 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1430 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1431 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1431 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1432 i18n("<p><b>E</b>: Edit item</p>\n") + 1432 i18n("<p><b>E</b>: Edit item</p>\n") +
1433 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1433 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1434 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1434 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1435 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1435 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1436 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1436 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1437 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1437 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1438 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1438 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1439 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1439 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1440 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1440 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1441 i18n("<p><b>White</b>: Item readonly</p>\n"); 1441 i18n("<p><b>White</b>: Item readonly</p>\n");
1442 displayText( text, cap); 1442 displayText( text, cap);
1443} 1443}
1444void MainWindow::aboutAutoSaving() 1444void MainWindow::aboutAutoSaving()
1445{ 1445{
1446 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1446 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1447 1447
1448 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1448 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1449 1449
1450} 1450}
1451void MainWindow::aboutKnownBugs() 1451void MainWindow::aboutKnownBugs()
1452{ 1452{
1453 QMessageBox* msg; 1453 QMessageBox* msg;
1454 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1454 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1455 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1455 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1456 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1456 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1457 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + 1457 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") +
1458 i18n("\nor report them in the bugtracker on\n") + 1458 i18n("\nor report them in the bugtracker on\n") +
1459 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1459 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1460 QMessageBox::NoIcon, 1460 QMessageBox::NoIcon,
1461 QMessageBox::Ok, 1461 QMessageBox::Ok,
1462 QMessageBox::NoButton, 1462 QMessageBox::NoButton,
1463 QMessageBox::NoButton); 1463 QMessageBox::NoButton);
1464 msg->exec(); 1464 msg->exec();
1465 delete msg; 1465 delete msg;
1466 1466
1467} 1467}
1468 1468
1469QString MainWindow::defaultFileName() 1469QString MainWindow::defaultFileName()
1470{ 1470{
1471 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1471 return locateLocal( "data", "korganizer/mycalendar.ics" );
1472} 1472}
1473QString MainWindow::syncFileName() 1473QString MainWindow::syncFileName()
1474{ 1474{
1475#ifdef DESKTOP_VERSION 1475#ifdef DESKTOP_VERSION
1476 return locateLocal( "tmp", "synccalendar.ics" ); 1476 return locateLocal( "tmp", "synccalendar.ics" );
1477#else 1477#else
1478 return QString( "/tmp/synccalendar.ics" ); 1478 return QString( "/tmp/synccalendar.ics" );
1479#endif 1479#endif
1480} 1480}
1481#include "koglobals.h"
1482#include <kcalendarsystem.h>
1481void MainWindow::updateWeek(QDate seda) 1483void MainWindow::updateWeek(QDate seda)
1482{ 1484{
1483 int weekNum = 0; 1485 int weekNum = KGlobal::locale()->weekNum ( seda );
1484 QDate d = QDate ( seda.year(), 1,1);
1485 seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday
1486 if ( seda.addDays(6).year() != seda.year() ) {
1487 if ( seda.year() != d.year() ) {
1488 if ( d.dayOfWeek() > 4 )
1489 d = QDate ( seda.year(), 1,1);
1490 else
1491 weekNum = 1;
1492 } else {
1493 QDate dd( seda.year()+1, 1,1);
1494 if ( dd.dayOfWeek() <= 4 )
1495 weekNum = 1;
1496 }
1497 }
1498 if ( weekNum == 0 ){
1499 int dow = d.dayOfWeek();
1500 if ( dow <= 4 )
1501 d = d.addDays( 1-dow );
1502 else // 5,6,7
1503 d = d.addDays( 8-dow );
1504 // we have the first week of the year.we are on monday
1505 weekNum = d.daysTo( seda ) / 7 +1;
1506 }
1507
1508 mWeekPixmap.fill( mWeekBgColor ); 1486 mWeekPixmap.fill( mWeekBgColor );
1509 QPainter p ( &mWeekPixmap ); 1487 QPainter p ( &mWeekPixmap );
1510 p.setFont( mWeekFont ); 1488 p.setFont( mWeekFont );
1511 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); 1489 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) );
1512 p.end(); 1490 p.end();
1513 QIconSet icon3 ( mWeekPixmap ); 1491 QIconSet icon3 ( mWeekPixmap );
1514 mWeekAction->setIconSet ( icon3 ); 1492 mWeekAction->setIconSet ( icon3 );
1515 1493
1516} 1494}
1517void MainWindow::updateWeekNum(const DateList &selectedDates) 1495void MainWindow::updateWeekNum(const DateList &selectedDates)
1518{ 1496{
1519 updateWeek( selectedDates.first() ); 1497 updateWeek( selectedDates.first() );
1520} 1498}
1521void MainWindow::processIncidenceSelection( Incidence *incidence ) 1499void MainWindow::processIncidenceSelection( Incidence *incidence )
1522{ 1500{
1523 1501
1524 if ( !incidence ) { 1502 if ( !incidence ) {
1525 enableIncidenceActions( false ); 1503 enableIncidenceActions( false );
1526 1504
1527 mNewSubTodoAction->setEnabled( false ); 1505 mNewSubTodoAction->setEnabled( false );
1528 setCaptionToDates(); 1506 setCaptionToDates();
1529 return; 1507 return;
1530 1508
1531 } 1509 }
1532 1510
1533 //KGlobal::locale()->formatDateTime(nextA, true); 1511 //KGlobal::locale()->formatDateTime(nextA, true);
1534 QString startString = ""; 1512 QString startString = "";
1535 if ( incidence->type() != "Todo" ) { 1513 if ( incidence->type() != "Todo" ) {
1536 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1514 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1537 if ( incidence->doesFloat() ) { 1515 if ( incidence->doesFloat() ) {
1538 startString += ": "+incidence->dtStartDateStr( true ); 1516 startString += ": "+incidence->dtStartDateStr( true );
1539 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1517 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1540 1518
1541 } else { 1519 } else {
1542 startString = ": "+incidence->dtStartStr(true); 1520 startString = ": "+incidence->dtStartStr(true);
1543 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1521 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1544 1522
1545 } 1523 }
1546 1524
1547 } else { 1525 } else {
1548 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1526 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1549 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1527 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1550 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1528 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1551 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { 1529 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) {
1552 bool ok; 1530 bool ok;
1553 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1531 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1554 if ( ok ) { 1532 if ( ok ) {
1555 int years = noc.date().year() - incidence->dtStart().date().year(); 1533 int years = noc.date().year() - incidence->dtStart().date().year();
1556 startString += i18n(" (%1 y.)"). arg( years ); 1534 startString += i18n(" (%1 y.)"). arg( years );
1557 } 1535 }
1558 } 1536 }
1559 else 1537 else
1560 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1538 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1561 } 1539 }
1562 1540
1563 } 1541 }
1564 else 1542 else
1565 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1543 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1566 if ( !incidence->location().isEmpty() ) 1544 if ( !incidence->location().isEmpty() )
1567 startString += " (" +incidence->location()+")"; 1545 startString += " (" +incidence->location()+")";
1568 setCaption( incidence->summary()+startString); 1546 setCaption( incidence->summary()+startString);
1569 1547
1570 enableIncidenceActions( true ); 1548 enableIncidenceActions( true );
1571 1549
1572 if ( incidence->type() == "Event" ) { 1550 if ( incidence->type() == "Event" ) {
1573 mShowAction->setText( i18n("Show Event...") ); 1551 mShowAction->setText( i18n("Show Event...") );
1574 mEditAction->setText( i18n("Edit Event...") ); 1552 mEditAction->setText( i18n("Edit Event...") );
1575 mDeleteAction->setText( i18n("Delete Event...") ); 1553 mDeleteAction->setText( i18n("Delete Event...") );
1576 1554
1577 mNewSubTodoAction->setEnabled( false ); 1555 mNewSubTodoAction->setEnabled( false );
1578 } else if ( incidence->type() == "Todo" ) { 1556 } else if ( incidence->type() == "Todo" ) {
1579 mShowAction->setText( i18n("Show Todo...") ); 1557 mShowAction->setText( i18n("Show Todo...") );
1580 mEditAction->setText( i18n("Edit Todo...") ); 1558 mEditAction->setText( i18n("Edit Todo...") );
1581 mDeleteAction->setText( i18n("Delete Todo...") ); 1559 mDeleteAction->setText( i18n("Delete Todo...") );
1582 1560
1583 mNewSubTodoAction->setEnabled( true ); 1561 mNewSubTodoAction->setEnabled( true );
1584 } else { 1562 } else {
1585 mShowAction->setText( i18n("Show...") ); 1563 mShowAction->setText( i18n("Show...") );
1586 mShowAction->setText( i18n("Edit...") ); 1564 mShowAction->setText( i18n("Edit...") );
1587 mShowAction->setText( i18n("Delete...") ); 1565 mShowAction->setText( i18n("Delete...") );
1588 1566
1589 mNewSubTodoAction->setEnabled( false ); 1567 mNewSubTodoAction->setEnabled( false );
1590 } 1568 }
1591} 1569}
1592 1570
1593void MainWindow::enableIncidenceActions( bool enabled ) 1571void MainWindow::enableIncidenceActions( bool enabled )
1594{ 1572{
1595 mShowAction->setEnabled( enabled ); 1573 mShowAction->setEnabled( enabled );
1596 mEditAction->setEnabled( enabled ); 1574 mEditAction->setEnabled( enabled );
1597 mDeleteAction->setEnabled( enabled ); 1575 mDeleteAction->setEnabled( enabled );
1598 1576
1599 mCloneAction->setEnabled( enabled ); 1577 mCloneAction->setEnabled( enabled );
1600 mMoveAction->setEnabled( enabled ); 1578 mMoveAction->setEnabled( enabled );
1601 mBeamAction->setEnabled( enabled ); 1579 mBeamAction->setEnabled( enabled );
1602 mCancelAction->setEnabled( enabled ); 1580 mCancelAction->setEnabled( enabled );
1603} 1581}
1604 1582
1605void MainWindow::importOL() 1583void MainWindow::importOL()
1606{ 1584{
1607#ifdef _OL_IMPORT_ 1585#ifdef _OL_IMPORT_
1608 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1586 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1609 id->exec(); 1587 id->exec();
1610 delete id; 1588 delete id;
1611 mView->updateView(); 1589 mView->updateView();
1612#endif 1590#endif
1613} 1591}
1614void MainWindow::importBday() 1592void MainWindow::importBday()
1615{ 1593{
1616 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1594 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1617 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1595 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1618 i18n("Import!"), i18n("Cancel"), 0, 1596 i18n("Import!"), i18n("Cancel"), 0,
1619 0, 1 ); 1597 0, 1 );
1620 if ( result == 0 ) { 1598 if ( result == 0 ) {
1621 mView->importBday(); 1599 mView->importBday();
1622 1600
1623 } 1601 }
1624 1602
1625 1603
1626} 1604}
1627void MainWindow::importQtopia() 1605void MainWindow::importQtopia()
1628{ 1606{
1629 //#ifndef DESKTOP_VERSION 1607 //#ifndef DESKTOP_VERSION
1630 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"); 1608 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");
1631#ifdef DESKTOP_VERSION 1609#ifdef DESKTOP_VERSION
1632 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"); 1610 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");
1633#endif 1611#endif
1634 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, 1612 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess,
1635 i18n("Import!"), i18n("Cancel"), 0, 1613 i18n("Import!"), i18n("Cancel"), 0,
1636 0, 1 ); 1614 0, 1 );
1637 if ( result == 0 ) { 1615 if ( result == 0 ) {
1638#ifndef DESKTOP_VERSION 1616#ifndef DESKTOP_VERSION
1639 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1617 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1640 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1618 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1641 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1619 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1642#else 1620#else
1643 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; 1621 QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml";
1644 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; 1622 QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml";
1645 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; 1623 QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml";
1646#endif 1624#endif
1647 mView->importQtopia( categories, datebook, todolist ); 1625 mView->importQtopia( categories, datebook, todolist );
1648 } 1626 }
1649#if 0 1627#if 0
1650 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1628 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1651 i18n("Not supported \non desktop!\n"), 1629 i18n("Not supported \non desktop!\n"),
1652 i18n("Ok"), i18n("Cancel"), 0, 1630 i18n("Ok"), i18n("Cancel"), 0,
1653 0, 1 ); 1631 0, 1 );
1654 1632
1655#endif 1633#endif
1656} 1634}
1657 1635
1658void MainWindow::saveOnClose() 1636void MainWindow::saveOnClose()
1659{ 1637{
1660 KOPrefs *p = KOPrefs::instance(); 1638 KOPrefs *p = KOPrefs::instance();
1661 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1639 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1662 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal ); 1640 p->mToolBarHorV = ( viewToolBar->orientation () == Qt:: Horizontal );
1663 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal ); 1641 p->mToolBarHorN = ( navigatorToolBar->orientation () == Qt:: Horizontal );
1664 if ( filterToolBar ) { 1642 if ( filterToolBar ) {
1665 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal ); 1643 p->mToolBarHorF = ( filterToolBar->orientation () == Qt:: Horizontal );
1666 } 1644 }
1667#ifdef DESKTOP_VERSION 1645#ifdef DESKTOP_VERSION
1668 1646
1669 QPoint myP; 1647 QPoint myP;
1670 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) ); 1648 myP = mapFromGlobal( iconToolBar->mapToGlobal( QPoint( 0,0) ) );
1671 if ( p->mToolBarHor ) 1649 if ( p->mToolBarHor )
1672 p->mToolBarUp = myP.y() > height()/2; 1650 p->mToolBarUp = myP.y() > height()/2;
1673 else 1651 else
1674 p->mToolBarUp = myP.x() > width()/2; 1652 p->mToolBarUp = myP.x() > width()/2;
1675 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) ); 1653 myP = mapFromGlobal( viewToolBar->mapToGlobal( QPoint( 0,0) ) );
1676 if ( p->mToolBarHorV ) 1654 if ( p->mToolBarHorV )
1677 p->mToolBarUpV = myP.y() > height()/2; 1655 p->mToolBarUpV = myP.y() > height()/2;
1678 else 1656 else
1679 p->mToolBarUpV = myP.x() > width()/2 ; 1657 p->mToolBarUpV = myP.x() > width()/2 ;
1680 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) ); 1658 myP = mapFromGlobal( navigatorToolBar->mapToGlobal( QPoint( 0,0) ) );
1681 if ( p->mToolBarHorN ) 1659 if ( p->mToolBarHorN )
1682 p->mToolBarUpN = myP.y() > height()/2; 1660 p->mToolBarUpN = myP.y() > height()/2;
1683 else 1661 else
1684 p->mToolBarUpN = myP.x() > width()/2 ; 1662 p->mToolBarUpN = myP.x() > width()/2 ;
1685 if ( filterToolBar ) { 1663 if ( filterToolBar ) {
1686 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) ); 1664 myP = mapFromGlobal( filterToolBar->mapToGlobal( QPoint( 0,0) ) );
1687 if ( p->mToolBarHorF ) 1665 if ( p->mToolBarHorF )
1688 p->mToolBarUpF = myP.y() > height()/2; 1666 p->mToolBarUpF = myP.y() > height()/2;
1689 else 1667 else
1690 p->mToolBarUpF = myP.x() > width()/2 ; 1668 p->mToolBarUpF = myP.x() > width()/2 ;
1691 } 1669 }
1692#else 1670#else
1693 if ( p->mToolBarHor ) 1671 if ( p->mToolBarHor )
1694 p->mToolBarUp = iconToolBar->y() > height()/2; 1672 p->mToolBarUp = iconToolBar->y() > height()/2;
1695 else 1673 else
1696 p->mToolBarUp = iconToolBar->x() > width()/2; 1674 p->mToolBarUp = iconToolBar->x() > width()/2;
1697 if ( p->mToolBarHorV ) 1675 if ( p->mToolBarHorV )
1698 p->mToolBarUpV = viewToolBar->y() > height()/2; 1676 p->mToolBarUpV = viewToolBar->y() > height()/2;
1699 else 1677 else
1700 p->mToolBarUpV = viewToolBar->x() > width()/2 ; 1678 p->mToolBarUpV = viewToolBar->x() > width()/2 ;
1701 1679
1702 if ( p->mToolBarHorN ) 1680 if ( p->mToolBarHorN )
1703 p->mToolBarUpN = navigatorToolBar->y() > height()/2; 1681 p->mToolBarUpN = navigatorToolBar->y() > height()/2;
1704 else 1682 else
1705 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ; 1683 p->mToolBarUpN = navigatorToolBar->x() > width()/2 ;
1706 if ( filterToolBar ) { 1684 if ( filterToolBar ) {
1707 if ( p->mToolBarHorF ) 1685 if ( p->mToolBarHorF )
1708 p->mToolBarUpF = filterToolBar->y() > height()/2; 1686 p->mToolBarUpF = filterToolBar->y() > height()/2;
1709 else 1687 else
1710 p->mToolBarUpF = filterToolBar->x() > width()/2 ; 1688 p->mToolBarUpF = filterToolBar->x() > width()/2 ;
1711 } 1689 }
1712#endif 1690#endif
1713 1691
1714 1692
1715 mView->writeSettings(); 1693 mView->writeSettings();
1716 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) 1694 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName()))
1717 save(); 1695 save();
1718} 1696}
1719void MainWindow::slotModifiedChanged( bool changed ) 1697void MainWindow::slotModifiedChanged( bool changed )
1720{ 1698{
1721 if ( mBlockAtStartup ) 1699 if ( mBlockAtStartup )
1722 return; 1700 return;
1723 1701
1724 int msec; 1702 int msec;
1725 // we store the changes after 1 minute, 1703 // we store the changes after 1 minute,
1726 // and for safety reasons after 10 minutes again 1704 // and for safety reasons after 10 minutes again
1727 if ( !mSyncManager->blockSave() ) 1705 if ( !mSyncManager->blockSave() )
1728 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1706 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1729 else 1707 else
1730 msec = 1000 * 600; 1708 msec = 1000 * 600;
1731 mSaveTimer.start( msec, true ); // 1 minute 1709 mSaveTimer.start( msec, true ); // 1 minute
1732 qDebug("KO: Saving File in %d secs!", msec/1000); 1710 qDebug("KO: Saving File in %d secs!", msec/1000);
1733 mCalendarModifiedFlag = true; 1711 mCalendarModifiedFlag = true;
1734} 1712}
1735void MainWindow::saveStopTimer() 1713void MainWindow::saveStopTimer()
1736{ 1714{
1737 mSaveTimer.stop(); 1715 mSaveTimer.stop();
1738 if (mSaveTimer.isActive() ) 1716 if (mSaveTimer.isActive() )
1739 qDebug("ti active "); 1717 qDebug("ti active ");
1740 else 1718 else
1741 qDebug("KO: Save timer stopped"); 1719 qDebug("KO: Save timer stopped");
1742} 1720}
1743void MainWindow::save() 1721void MainWindow::save()
1744{ 1722{
1745 if ( !mCalendarModifiedFlag ) { 1723 if ( !mCalendarModifiedFlag ) {
1746 qDebug("KO: Calendar not modified. Nothing saved."); 1724 qDebug("KO: Calendar not modified. Nothing saved.");
1747 return; 1725 return;
1748 } 1726 }
1749 if ( mSyncManager->blockSave() ) 1727 if ( mSyncManager->blockSave() )
1750 return; 1728 return;
1751 mSyncManager->setBlockSave(true); 1729 mSyncManager->setBlockSave(true);
1752 if ( mView->checkFileVersion( defaultFileName()) ) { 1730 if ( mView->checkFileVersion( defaultFileName()) ) {
1753 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1731 QTime neededSaveTime = QDateTime::currentDateTime().time();
1754 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1732 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1755 qDebug("KO: Start saving data to file!"); 1733 qDebug("KO: Start saving data to file!");
1756 mView->saveCalendar( defaultFileName() ); 1734 mView->saveCalendar( defaultFileName() );
1757 mCalendarModifiedFlag = false; 1735 mCalendarModifiedFlag = false;
1758 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1736 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1759 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1737 qDebug("KO: Needed %d ms for saving.",msNeeded );
1760 QString savemes; 1738 QString savemes;
1761 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1739 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1762 setCaption(savemes); 1740 setCaption(savemes);
1763 } else 1741 } else
1764 setCaption(i18n("Saving cancelled!")); 1742 setCaption(i18n("Saving cancelled!"));
1765 mSyncManager->setBlockSave( false ); 1743 mSyncManager->setBlockSave( false );
1766} 1744}
1767 1745
1768void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1746void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1769{ 1747{
1770 if ( !e->isAutoRepeat() ) { 1748 if ( !e->isAutoRepeat() ) {
1771 mFlagKeyPressed = false; 1749 mFlagKeyPressed = false;
1772 } 1750 }
1773} 1751}
1774void MainWindow::keyPressEvent ( QKeyEvent * e ) 1752void MainWindow::keyPressEvent ( QKeyEvent * e )
1775{ 1753{
1776 qApp->processEvents(); 1754 qApp->processEvents();
1777 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1755 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1778 e->ignore(); 1756 e->ignore();
1779 // qDebug(" ignore %d",e->isAutoRepeat() ); 1757 // qDebug(" ignore %d",e->isAutoRepeat() );
1780 return; 1758 return;
1781 } 1759 }
1782 if (! e->isAutoRepeat() ) 1760 if (! e->isAutoRepeat() )
1783 mFlagKeyPressed = true; 1761 mFlagKeyPressed = true;
1784 KOPrefs *p = KOPrefs::instance(); 1762 KOPrefs *p = KOPrefs::instance();
1785 bool showSelectedDates = false; 1763 bool showSelectedDates = false;
1786 int size; 1764 int size;
1787 int pro = 0; 1765 int pro = 0;
1788 //qDebug("MainWindow::keyPressEvent "); 1766 //qDebug("MainWindow::keyPressEvent ");
1789 switch ( e->key() ) { 1767 switch ( e->key() ) {
1790 case Qt::Key_Right: 1768 case Qt::Key_Right:
1791 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1769 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1792 mView->goNextMonth(); 1770 mView->goNextMonth();
1793 else 1771 else
1794 mView->goNext(); 1772 mView->goNext();
1795 showSelectedDates = true; 1773 showSelectedDates = true;
1796 break; 1774 break;
1797 case Qt::Key_Left: 1775 case Qt::Key_Left:
1798 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1776 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1799 mView->goPreviousMonth(); 1777 mView->goPreviousMonth();
1800 else 1778 else
1801 mView->goPrevious(); 1779 mView->goPrevious();
1802 showSelectedDates = true; 1780 showSelectedDates = true;
1803 break; 1781 break;
1804 case Qt::Key_Down: 1782 case Qt::Key_Down:
1805 mView->viewManager()->agendaView()->scrollOneHourDown(); 1783 mView->viewManager()->agendaView()->scrollOneHourDown();
1806 break; 1784 break;
1807 case Qt::Key_Up: 1785 case Qt::Key_Up:
1808 mView->viewManager()->agendaView()->scrollOneHourUp(); 1786 mView->viewManager()->agendaView()->scrollOneHourUp();
1809 break; 1787 break;
1810 case Qt::Key_K: 1788 case Qt::Key_K:
1811 mView->viewManager()->showMonthViewWeek(); 1789 mView->viewManager()->showMonthViewWeek();
1812 break; 1790 break;
1813 case Qt::Key_I: 1791 case Qt::Key_I:
1814 mView->showIncidence(); 1792 mView->showIncidence();
1815 break; 1793 break;
1816 case Qt::Key_Delete: 1794 case Qt::Key_Delete:
1817 case Qt::Key_Backspace: 1795 case Qt::Key_Backspace:
1818 mView->deleteIncidence(); 1796 mView->deleteIncidence();
1819 break; 1797 break;
1820 case Qt::Key_D: 1798 case Qt::Key_D:
1821 mView->viewManager()->showDayView(); 1799 mView->viewManager()->showDayView();
1822 showSelectedDates = true; 1800 showSelectedDates = true;
1823 break; 1801 break;
1824 case Qt::Key_O: 1802 case Qt::Key_O:
1825 mView->toggleFilerEnabled( ); 1803 mView->toggleFilerEnabled( );
1826 break; 1804 break;
1827 case Qt::Key_0: 1805 case Qt::Key_0:
1828 case Qt::Key_1: 1806 case Qt::Key_1:
1829 case Qt::Key_2: 1807 case Qt::Key_2:
1830 case Qt::Key_3: 1808 case Qt::Key_3:
1831 case Qt::Key_4: 1809 case Qt::Key_4:
1832 case Qt::Key_5: 1810 case Qt::Key_5:
1833 case Qt::Key_6: 1811 case Qt::Key_6:
1834 case Qt::Key_7: 1812 case Qt::Key_7:
1835 case Qt::Key_8: 1813 case Qt::Key_8:
1836 case Qt::Key_9: 1814 case Qt::Key_9:
1837 pro = e->key()-48; 1815 pro = e->key()-48;
1838 if ( pro == 0 ) 1816 if ( pro == 0 )
1839 pro = 10; 1817 pro = 10;
1840 if ( e->state() == Qt::ControlButton) 1818 if ( e->state() == Qt::ControlButton)
1841 pro += 10; 1819 pro += 10;
1842 break; 1820 break;
1843 case Qt::Key_M: 1821 case Qt::Key_M:
1844 mView->viewManager()->showMonthView(); 1822 mView->viewManager()->showMonthView();
1845 showSelectedDates = true; 1823 showSelectedDates = true;
1846 break; 1824 break;
1847 case Qt::Key_Insert: 1825 case Qt::Key_Insert:
1848 mView->newEvent(); 1826 mView->newEvent();
1849 break; 1827 break;
1850 case Qt::Key_S : 1828 case Qt::Key_S :
1851 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1829 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1852 mView->newSubTodo(); 1830 mView->newSubTodo();
1853 else 1831 else
1854 mView->dialogManager()->showSearchDialog(); 1832 mView->dialogManager()->showSearchDialog();
1855 break; 1833 break;
1856 case Qt::Key_Y : 1834 case Qt::Key_Y :
1857 case Qt::Key_Z : 1835 case Qt::Key_Z :
1858 mView->viewManager()->showWorkWeekView(); 1836 mView->viewManager()->showWorkWeekView();
1859 showSelectedDates = true; 1837 showSelectedDates = true;
1860 break; 1838 break;
1861 case Qt::Key_U : 1839 case Qt::Key_U :
1862 mView->viewManager()->showWeekView(); 1840 mView->viewManager()->showWeekView();
1863 showSelectedDates = true; 1841 showSelectedDates = true;
1864 break; 1842 break;
1865 case Qt::Key_H : 1843 case Qt::Key_H :
1866 keyBindings(); 1844 keyBindings();
1867 break; 1845 break;
1868 case Qt::Key_W: 1846 case Qt::Key_W:
1869 mView->viewManager()->showWhatsNextView(); 1847 mView->viewManager()->showWhatsNextView();
1870 break; 1848 break;
1871 case Qt::Key_L: 1849 case Qt::Key_L:
1872 mView->viewManager()->showListView(); 1850 mView->viewManager()->showListView();
1873 break; 1851 break;
1874 case Qt::Key_N: 1852 case Qt::Key_N:
1875 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1853 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1876 mView->viewManager()->showNextView(); 1854 mView->viewManager()->showNextView();
1877 else { 1855 else {
1878 mView->viewManager()->showNextXView(); 1856 mView->viewManager()->showNextXView();
1879 showSelectedDates = true; 1857 showSelectedDates = true;
1880 } 1858 }
1881 break; 1859 break;
1882 case Qt::Key_V: 1860 case Qt::Key_V:
1883 mView->viewManager()->showTodoView(); 1861 mView->viewManager()->showTodoView();
1884 break; 1862 break;
1885 case Qt::Key_C: 1863 case Qt::Key_C:
1886 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 1864 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
1887 break; 1865 break;
1888 case Qt::Key_P: 1866 case Qt::Key_P:
1889 mView->showDatePicker( ); 1867 mView->showDatePicker( );
1890 break; 1868 break;
1891 case Qt::Key_F: 1869 case Qt::Key_F:
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index 7f31ab1..1d8ae9f 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -1,654 +1,691 @@
1#include <qregexp.h> 1#include <qregexp.h>
2#include <qapplication.h> 2#include <qapplication.h>
3 3
4#include "kdebug.h" 4#include "kdebug.h"
5#include "kcalendarsystemgregorian.h" 5#include "kcalendarsystemgregorian.h"
6 6
7#include "klocale.h" 7#include "klocale.h"
8 8
9#include <qstringlist.h> 9#include <qstringlist.h>
10 10
11//#define COLLECT_TRANSLATION 11//#define COLLECT_TRANSLATION
12 12
13 13
14QDict<QString> *mLocaleDict = 0; 14QDict<QString> *mLocaleDict = 0;
15void setLocaleDict( QDict<QString> * dict ) 15void setLocaleDict( QDict<QString> * dict )
16{ 16{
17 mLocaleDict = dict; 17 mLocaleDict = dict;
18 18
19} 19}
20 20
21#ifdef COLLECT_TRANSLATION 21#ifdef COLLECT_TRANSLATION
22 22
23QStringList missingTrans; 23QStringList missingTrans;
24QStringList existingTrans1; 24QStringList existingTrans1;
25QStringList existingTrans2; 25QStringList existingTrans2;
26 26
27void addMissing(const char *text) 27void addMissing(const char *text)
28{ 28{
29 29
30 QString mis ( text ); 30 QString mis ( text );
31 if ( !missingTrans.contains( mis ) ) 31 if ( !missingTrans.contains( mis ) )
32 missingTrans.append(mis); 32 missingTrans.append(mis);
33 33
34} 34}
35void addExist(const char *text,QString trans ) 35void addExist(const char *text,QString trans )
36{ 36{
37 //return; 37 //return;
38 QString mis ( text ); 38 QString mis ( text );
39 if ( !existingTrans1.contains( mis ) ) { 39 if ( !existingTrans1.contains( mis ) ) {
40 existingTrans1.append(mis); 40 existingTrans1.append(mis);
41 existingTrans2.append(trans); 41 existingTrans2.append(trans);
42 42
43 } 43 }
44 44
45} 45}
46 46
47#include <qfile.h> 47#include <qfile.h>
48#include <qtextstream.h> 48#include <qtextstream.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#endif 50#endif
51void dumpMissing() 51void dumpMissing()
52{ 52{
53#ifdef COLLECT_TRANSLATION 53#ifdef COLLECT_TRANSLATION
54 QString fileName = "/tmp/usernewtrans.txt"; 54 QString fileName = "/tmp/usernewtrans.txt";
55 QFile file( fileName ); 55 QFile file( fileName );
56 if (!file.open( IO_WriteOnly ) ) { 56 if (!file.open( IO_WriteOnly ) ) {
57 return ; 57 return ;
58 } 58 }
59 QTextStream ts( &file ); 59 QTextStream ts( &file );
60 ts.setCodec( QTextCodec::codecForName("utf8") ); 60 ts.setCodec( QTextCodec::codecForName("utf8") );
61 61
62 int i; 62 int i;
63 for ( i = 0; i< missingTrans.count(); ++i ) { 63 for ( i = 0; i< missingTrans.count(); ++i ) {
64 64
65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" ); 65 QString text = missingTrans[i].replace( QRegExp("\n"),"\\n" );
66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n"; 66 ts << "{ \""<<text<< "\",\""<< text <<"\" },\n";
67 67
68 } 68 }
69 file.close(); 69 file.close();
70 { 70 {
71 QString fileName = "/tmp/usertrans.txt"; 71 QString fileName = "/tmp/usertrans.txt";
72 QFile file( fileName ); 72 QFile file( fileName );
73 if (!file.open( IO_WriteOnly ) ) { 73 if (!file.open( IO_WriteOnly ) ) {
74 return ; 74 return ;
75 } 75 }
76 QTextStream ts( &file ); 76 QTextStream ts( &file );
77 ts.setCodec( QTextCodec::codecForName("utf8") ); 77 ts.setCodec( QTextCodec::codecForName("utf8") );
78 78
79 int i; 79 int i;
80 for ( i = 0; i< existingTrans1.count(); ++i ) { 80 for ( i = 0; i< existingTrans1.count(); ++i ) {
81 81
82 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" ); 82 QString text = existingTrans1[i].replace( QRegExp("\n"),"\\n" );
83 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" ); 83 QString text2 = existingTrans2[i].replace( QRegExp("\n"),"\\n" );
84 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n"; 84 ts << "{ \""<<text<< "\",\""<< text2 <<"\" },\n";
85 85
86 } 86 }
87 file.close(); 87 file.close();
88 } 88 }
89#endif 89#endif
90} 90}
91QString i18n(const char *text) 91QString i18n(const char *text)
92{ 92{
93 if ( ! mLocaleDict ) { 93 if ( ! mLocaleDict ) {
94#ifdef COLLECT_TRANSLATION 94#ifdef COLLECT_TRANSLATION
95 addMissing( text ); 95 addMissing( text );
96#endif 96#endif
97 return QString( text ); 97 return QString( text );
98 } 98 }
99 else { 99 else {
100 QString* ret = mLocaleDict->find(QString(text)) ; 100 QString* ret = mLocaleDict->find(QString(text)) ;
101 if ( ret == 0 ) { 101 if ( ret == 0 ) {
102#ifdef COLLECT_TRANSLATION 102#ifdef COLLECT_TRANSLATION
103 addMissing( text ); 103 addMissing( text );
104#endif 104#endif
105 return QString( text ); 105 return QString( text );
106 } 106 }
107 else { 107 else {
108 if ( (*ret).isEmpty() ) { 108 if ( (*ret).isEmpty() ) {
109#ifdef COLLECT_TRANSLATION 109#ifdef COLLECT_TRANSLATION
110 addMissing( text ); 110 addMissing( text );
111#endif 111#endif
112 return QString( text ); 112 return QString( text );
113 } 113 }
114 else { 114 else {
115#ifdef COLLECT_TRANSLATION 115#ifdef COLLECT_TRANSLATION
116 addExist( text, *ret ); 116 addExist( text, *ret );
117#endif 117#endif
118 return (*ret); 118 return (*ret);
119 } 119 }
120 } 120 }
121 } 121 }
122 122
123} 123}
124 124
125QString i18n(const char *,const char *text) 125QString i18n(const char *,const char *text)
126{ 126{
127 return i18n( text ); 127 return i18n( text );
128} 128}
129 129
130QString i18n(const char *text1, const char *textn, int num) 130QString i18n(const char *text1, const char *textn, int num)
131{ 131{
132 if ( num == 1 ) return i18n( text1 ); 132 if ( num == 1 ) return i18n( text1 );
133 else { 133 else {
134 QString text = i18n( textn ); 134 QString text = i18n( textn );
135 int pos = text.find( "%n" ); 135 int pos = text.find( "%n" );
136 if ( pos >= 0 ) text.replace( pos, 2, QString::number( num ) ); 136 if ( pos >= 0 ) text.replace( pos, 2, QString::number( num ) );
137 return text; 137 return text;
138 } 138 }
139} 139}
140 140
141inline void put_it_in( QChar *buffer, uint& index, const QString &s ) 141inline void put_it_in( QChar *buffer, uint& index, const QString &s )
142{ 142{
143 for ( uint l = 0; l < s.length(); l++ ) 143 for ( uint l = 0; l < s.length(); l++ )
144 buffer[index++] = s.at( l ); 144 buffer[index++] = s.at( l );
145} 145}
146 146
147inline void put_it_in( QChar *buffer, uint& index, int number ) 147inline void put_it_in( QChar *buffer, uint& index, int number )
148{ 148{
149 buffer[index++] = number / 10 + '0'; 149 buffer[index++] = number / 10 + '0';
150 buffer[index++] = number % 10 + '0'; 150 buffer[index++] = number % 10 + '0';
151} 151}
152 152
153static int readInt(const QString &str, uint &pos) 153static int readInt(const QString &str, uint &pos)
154{ 154{
155 if (!str.at(pos).isDigit()) return -1; 155 if (!str.at(pos).isDigit()) return -1;
156 int result = 0; 156 int result = 0;
157 for (; str.length() > pos && str.at(pos).isDigit(); pos++) 157 for (; str.length() > pos && str.at(pos).isDigit(); pos++)
158 { 158 {
159 result *= 10; 159 result *= 10;
160 result += str.at(pos).digitValue(); 160 result += str.at(pos).digitValue();
161 } 161 }
162 162
163 return result; 163 return result;
164} 164}
165 165
166KLocale::KLocale() : mCalendarSystem( 0 ) 166KLocale::KLocale() : mCalendarSystem( 0 )
167{ 167{
168 168
169 m_decimalSymbol = "."; 169 m_decimalSymbol = ".";
170 m_positiveSign = ""; 170 m_positiveSign = "";
171 m_negativeSign = "-"; 171 m_negativeSign = "-";
172 m_thousandsSeparator = ","; 172 m_thousandsSeparator = ",";
173 173
174 174
175 175
176 176
177 mWeekStartsMonday = true; 177 mWeekStartsMonday = true;
178 mHourF24Format = true; 178 mHourF24Format = true;
179 mIntDateFormat = Default; 179 mIntDateFormat = Default;
180 mIntTimeFormat = Default; 180 mIntTimeFormat = Default;
181 mLanguage = 0; 181 mLanguage = 0;
182 mDateFormat = "%a %Y %b %d"; 182 mDateFormat = "%a %Y %b %d";
183 mDateFormatShort = "%Y-%m-%d"; 183 mDateFormatShort = "%Y-%m-%d";
184 mTimeZoneList << ("-11:00 US/Samoa") 184 mTimeZoneList << ("-11:00 US/Samoa")
185 << ("-10:00 US/Hawaii") 185 << ("-10:00 US/Hawaii")
186 << ("-09:00 US/Alaska") 186 << ("-09:00 US/Alaska")
187 << ("-08:00 US/Pacific") 187 << ("-08:00 US/Pacific")
188 << ("-07:00 US/Mountain") 188 << ("-07:00 US/Mountain")
189 << ("-06:00 US/Central") 189 << ("-06:00 US/Central")
190 << ("-05:00 US/Eastern") 190 << ("-05:00 US/Eastern")
191 << ("-04:00 Brazil/West") 191 << ("-04:00 Brazil/West")
192 << ("-03:00 Brazil/East") 192 << ("-03:00 Brazil/East")
193 << ("-02:00 Brazil/DeNoronha") 193 << ("-02:00 Brazil/DeNoronha")
194 << ("-01:00 Atlantic/Azores") 194 << ("-01:00 Atlantic/Azores")
195 << (" 00:00 Europe/London(UTC)") 195 << (" 00:00 Europe/London(UTC)")
196 << ("+01:00 Europe/Oslo(CET)") 196 << ("+01:00 Europe/Oslo(CET)")
197 << ("+02:00 Europe/Helsinki") 197 << ("+02:00 Europe/Helsinki")
198 << ("+03:00 Europe/Moscow") 198 << ("+03:00 Europe/Moscow")
199 << ("+04:00 Indian/Mauritius") 199 << ("+04:00 Indian/Mauritius")
200 << ("+05:00 Indian/Maldives") 200 << ("+05:00 Indian/Maldives")
201 << ("+06:00 Indian/Chagos") 201 << ("+06:00 Indian/Chagos")
202 << ("+07:00 Asia/Bangkok") 202 << ("+07:00 Asia/Bangkok")
203 << ("+08:00 Asia/Hongkong") 203 << ("+08:00 Asia/Hongkong")
204 << ("+09:00 Asia/Tokyo") 204 << ("+09:00 Asia/Tokyo")
205 << ("+10:00 Asia/Vladivostok") 205 << ("+10:00 Asia/Vladivostok")
206 << ("+11:00 Asia/Magadan") 206 << ("+11:00 Asia/Magadan")
207 << ("+12:00 Asia/Kamchatka") 207 << ("+12:00 Asia/Kamchatka")
208 // << (" xx:xx User defined offset") 208 // << (" xx:xx User defined offset")
209 << i18n (" Local Time"); 209 << i18n (" Local Time");
210 mSouthDaylight = false; 210 mSouthDaylight = false;
211 mTimeZoneOffset = 0; 211 mTimeZoneOffset = 0;
212 daylightEnabled = false; 212 daylightEnabled = false;
213} 213}
214 214
215void KLocale::setDateFormat( QString s ) 215void KLocale::setDateFormat( QString s )
216{ 216{
217 mDateFormat = s; 217 mDateFormat = s;
218} 218}
219 219
220void KLocale::setDateFormatShort( QString s ) 220void KLocale::setDateFormatShort( QString s )
221{ 221{
222 mDateFormatShort = s; 222 mDateFormatShort = s;
223} 223}
224 224
225void KLocale::setHore24Format ( bool b ) 225void KLocale::setHore24Format ( bool b )
226{ 226{
227 mHourF24Format = b; 227 mHourF24Format = b;
228} 228}
229void KLocale::setWeekStartMonday( bool b ) 229void KLocale::setWeekStartMonday( bool b )
230{ 230{
231 mWeekStartsMonday = b; 231 mWeekStartsMonday = b;
232} 232}
233 233
234KLocale::IntDateFormat KLocale::getIntDateFormat( ) 234KLocale::IntDateFormat KLocale::getIntDateFormat( )
235{ 235{
236 return mIntDateFormat; 236 return mIntDateFormat;
237 237
238} 238}
239void KLocale::setIntDateFormat( KLocale::IntDateFormat i ) 239void KLocale::setIntDateFormat( KLocale::IntDateFormat i )
240{ 240{
241 mIntDateFormat = i; 241 mIntDateFormat = i;
242} 242}
243KLocale::IntDateFormat KLocale::getIntTimeFormat( ) 243KLocale::IntDateFormat KLocale::getIntTimeFormat( )
244{ 244{
245 return mIntTimeFormat; 245 return mIntTimeFormat;
246 246
247} 247}
248void KLocale::setIntTimeFormat( KLocale::IntDateFormat i ) 248void KLocale::setIntTimeFormat( KLocale::IntDateFormat i )
249{ 249{
250 mIntTimeFormat = i; 250 mIntTimeFormat = i;
251} 251}
252 252
253void KLocale::setLanguage( int i ) 253void KLocale::setLanguage( int i )
254{ 254{
255 mLanguage = i; 255 mLanguage = i;
256} 256}
257int KLocale::language( ) 257int KLocale::language( )
258{ 258{
259 return mLanguage; 259 return mLanguage;
260} 260}
261QString KLocale::translate( const char *index ) const 261QString KLocale::translate( const char *index ) const
262{ 262{
263 return i18n( index ); 263 return i18n( index );
264} 264}
265 265
266QString KLocale::translate( const char *, const char *fallback) const 266QString KLocale::translate( const char *, const char *fallback) const
267{ 267{
268 return i18n( fallback ); 268 return i18n( fallback );
269} 269}
270 270
271int KLocale::weekNum ( const QDate & date )
272{
273 QDate seda = date;
274 int weekNum = 0;
275 int dayofweek = seda.dayOfWeek(); // 1... 7 Mo .. So. Do = 4
276 int daystoprevthursday = (dayofweek + 3) % 7 ;
277 int dayofyear = seda.dayOfYear();
278 int prevThursday = dayofyear - ( daystoprevthursday );
279 int subweeknum = 0;
280 if ( prevThursday < 1 ) {
281 seda = seda.addDays( - daystoprevthursday );
282 dayofyear = seda.dayOfYear();
283 prevThursday = dayofyear;
284 subweeknum = prevThursday / 7;
285 if ( prevThursday % 7 != 0 )
286 ++subweeknum;
287 } else {
288 if ( dayofyear >= 360 ) { //maybe week 1
289 seda = seda.addDays( 7 - daystoprevthursday );
290 dayofyear = seda.dayOfYear();
291 if ( dayofyear < 360 && ( dayofweek < 4 || dayofweek == 7 && !mWeekStartsMonday ) )
292 return 1;
293 }
294 }
295 if ( ! weekNum ) {
296 weekNum = prevThursday / 7;
297 if ( prevThursday % 7 != 0 )
298 ++weekNum;
299 if ( dayofweek < 4 )
300 ++weekNum;
301 else if ( dayofweek == 7 && !mWeekStartsMonday )
302 ++weekNum;
303 if ( weekNum > subweeknum )
304 weekNum -= subweeknum;
305 }
306 return weekNum;
307}
271QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat intIntDateFormat) const 308QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat intIntDateFormat) const
272{ 309{
273 const QString rst = timeFormat(intIntDateFormat); 310 const QString rst = timeFormat(intIntDateFormat);
274 311
275 // only "pm/am" here can grow, the rest shrinks, but 312 // only "pm/am" here can grow, the rest shrinks, but
276 // I'm rather safe than sorry 313 // I'm rather safe than sorry
277 QChar *buffer = new QChar[rst.length() * 3 / 2 + 30]; 314 QChar *buffer = new QChar[rst.length() * 3 / 2 + 30];
278 315
279 uint index = 0; 316 uint index = 0;
280 bool escape = false; 317 bool escape = false;
281 int number = 0; 318 int number = 0;
282 319
283 for ( uint format_index = 0; format_index < rst.length(); format_index++ ) 320 for ( uint format_index = 0; format_index < rst.length(); format_index++ )
284 { 321 {
285 if ( !escape ) 322 if ( !escape )
286 { 323 {
287 if ( rst.at( format_index ).unicode() == '%' ) 324 if ( rst.at( format_index ).unicode() == '%' )
288 escape = true; 325 escape = true;
289 else 326 else
290 buffer[index++] = rst.at( format_index ); 327 buffer[index++] = rst.at( format_index );
291 } 328 }
292 else 329 else
293 { 330 {
294 switch ( rst.at( format_index ).unicode() ) 331 switch ( rst.at( format_index ).unicode() )
295 { 332 {
296 case '%': 333 case '%':
297 buffer[index++] = '%'; 334 buffer[index++] = '%';
298 break; 335 break;
299 case 'H': 336 case 'H':
300 put_it_in( buffer, index, pTime.hour() ); 337 put_it_in( buffer, index, pTime.hour() );
301 break; 338 break;
302 case 'I': 339 case 'I':
303 put_it_in( buffer, index, ( pTime.hour() + 11) % 12 + 1 ); 340 put_it_in( buffer, index, ( pTime.hour() + 11) % 12 + 1 );
304 break; 341 break;
305 case 'M': 342 case 'M':
306 put_it_in( buffer, index, pTime.minute() ); 343 put_it_in( buffer, index, pTime.minute() );
307 break; 344 break;
308 case 'S': 345 case 'S':
309 if (includeSecs) 346 if (includeSecs)
310 put_it_in( buffer, index, pTime.second() ); 347 put_it_in( buffer, index, pTime.second() );
311 else 348 else
312 { 349 {
313 // we remove the seperator sign before the seconds and 350 // we remove the seperator sign before the seconds and
314 // assume that works everywhere 351 // assume that works everywhere
315 --index; 352 --index;
316 break; 353 break;
317 } 354 }
318 break; 355 break;
319 case 'k': 356 case 'k':
320 number = pTime.hour(); 357 number = pTime.hour();
321 case 'l': 358 case 'l':
322 // to share the code 359 // to share the code
323 if ( rst.at( format_index ).unicode() == 'l' ) 360 if ( rst.at( format_index ).unicode() == 'l' )
324 number = (pTime.hour() + 11) % 12 + 1; 361 number = (pTime.hour() + 11) % 12 + 1;
325 if ( number / 10 ) 362 if ( number / 10 )
326 buffer[index++] = number / 10 + '0'; 363 buffer[index++] = number / 10 + '0';
327 buffer[index++] = number % 10 + '0'; 364 buffer[index++] = number % 10 + '0';
328 break; 365 break;
329 case 'p': 366 case 'p':
330 { 367 {
331 QString s; 368 QString s;
332 if ( pTime.hour() >= 12 ) 369 if ( pTime.hour() >= 12 )
333 put_it_in( buffer, index, i18n("pm") ); 370 put_it_in( buffer, index, i18n("pm") );
334 else 371 else
335 put_it_in( buffer, index, i18n("am") ); 372 put_it_in( buffer, index, i18n("am") );
336 break; 373 break;
337 } 374 }
338 default: 375 default:
339 buffer[index++] = rst.at( format_index ); 376 buffer[index++] = rst.at( format_index );
340 break; 377 break;
341 } 378 }
342 escape = false; 379 escape = false;
343 } 380 }
344 } 381 }
345 QString ret( buffer, index ); 382 QString ret( buffer, index );
346 delete [] buffer; 383 delete [] buffer;
347 return ret; 384 return ret;
348} 385}
349 386
350QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat intIntDateFormat) const 387QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat intIntDateFormat) const
351{ 388{
352 const QString rst = shortFormat?dateFormatShort(intIntDateFormat):dateFormat(intIntDateFormat); 389 const QString rst = shortFormat?dateFormatShort(intIntDateFormat):dateFormat(intIntDateFormat);
353 390
354 // I'm rather safe than sorry 391 // I'm rather safe than sorry
355 QChar *buffer = new QChar[rst.length() * 3 / 2 + 50]; 392 QChar *buffer = new QChar[rst.length() * 3 / 2 + 50];
356 393
357 unsigned int index = 0; 394 unsigned int index = 0;
358 bool escape = false; 395 bool escape = false;
359 int number = 0; 396 int number = 0;
360 397
361 for ( uint format_index = 0; format_index < rst.length(); ++format_index ) 398 for ( uint format_index = 0; format_index < rst.length(); ++format_index )
362 { 399 {
363 if ( !escape ) 400 if ( !escape )
364 { 401 {
365 if ( rst.at( format_index ).unicode() == '%' ) 402 if ( rst.at( format_index ).unicode() == '%' )
366 escape = true; 403 escape = true;
367 else 404 else
368 buffer[index++] = rst.at( format_index ); 405 buffer[index++] = rst.at( format_index );
369 } 406 }
370 else 407 else
371 { 408 {
372 switch ( rst.at( format_index ).unicode() ) 409 switch ( rst.at( format_index ).unicode() )
373 { 410 {
374 case '%': 411 case '%':
375 buffer[index++] = '%'; 412 buffer[index++] = '%';
376 break; 413 break;
377 case 'Y': 414 case 'Y':
378 put_it_in( buffer, index, pDate.year() / 100 ); 415 put_it_in( buffer, index, pDate.year() / 100 );
379 case 'y': 416 case 'y':
380 put_it_in( buffer, index, pDate.year() % 100 ); 417 put_it_in( buffer, index, pDate.year() % 100 );
381 break; 418 break;
382 case 'n': 419 case 'n':
383 number = pDate.month(); 420 number = pDate.month();
384 case 'e': 421 case 'e':
385 // to share the code 422 // to share the code
386 if ( rst.at( format_index ).unicode() == 'e' ) 423 if ( rst.at( format_index ).unicode() == 'e' )
387 number = pDate.day(); 424 number = pDate.day();
388 if ( number / 10 ) 425 if ( number / 10 )
389 buffer[index++] = number / 10 + '0'; 426 buffer[index++] = number / 10 + '0';
390 buffer[index++] = number % 10 + '0'; 427 buffer[index++] = number % 10 + '0';
391 break; 428 break;
392 case 'm': 429 case 'm':
393 put_it_in( buffer, index, pDate.month() ); 430 put_it_in( buffer, index, pDate.month() );
394 break; 431 break;
395 case 'b': 432 case 'b':
396 put_it_in( buffer, index, monthName(pDate.month(), true) ); 433 put_it_in( buffer, index, monthName(pDate.month(), true) );
397 break; 434 break;
398 case 'B': 435 case 'B':
399 put_it_in( buffer, index, monthName(pDate.month(), false) ); 436 put_it_in( buffer, index, monthName(pDate.month(), false) );
400 break; 437 break;
401 case 'd': 438 case 'd':
402 put_it_in( buffer, index, pDate.day() ); 439 put_it_in( buffer, index, pDate.day() );
403 break; 440 break;
404 case 'a': 441 case 'a':
405 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), true) ); 442 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), true) );
406 break; 443 break;
407 case 'A': 444 case 'A':
408 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), false) ); 445 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), false) );
409 break; 446 break;
410 default: 447 default:
411 buffer[index++] = rst.at( format_index ); 448 buffer[index++] = rst.at( format_index );
412 break; 449 break;
413 } 450 }
414 escape = false; 451 escape = false;
415 } 452 }
416 } 453 }
417 QString ret( buffer, index ); 454 QString ret( buffer, index );
418 delete [] buffer; 455 delete [] buffer;
419 return ret; 456 return ret;
420} 457}
421 458
422QString KLocale::formatDateTime(const QDateTime &pDateTime, 459QString KLocale::formatDateTime(const QDateTime &pDateTime,
423 bool shortFormat, 460 bool shortFormat,
424 bool includeSeconds, 461 bool includeSeconds,
425 IntDateFormat intIntDateFormat) const 462 IntDateFormat intIntDateFormat) const
426{ 463{
427 QString format("%1 %2"); 464 QString format("%1 %2");
428 465
429 if ( intIntDateFormat == Default ) 466 if ( intIntDateFormat == Default )
430 format = "%1 %2"; 467 format = "%1 %2";
431 else if ( intIntDateFormat == Format1 ) 468 else if ( intIntDateFormat == Format1 )
432 format = "%1 %2"; 469 format = "%1 %2";
433 else if ( intIntDateFormat == ISODate ) 470 else if ( intIntDateFormat == ISODate )
434 format = "%1T%2"; 471 format = "%1T%2";
435 472
436 QString res = format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat )) 473 QString res = format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat ))
437 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat )); 474 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat ));
438 475
439 //qDebug("KLocale::formatDateTime transformed %s, into %s", pDateTime.toString().latin1(), res.latin1() ); 476 //qDebug("KLocale::formatDateTime transformed %s, into %s", pDateTime.toString().latin1(), res.latin1() );
440 477
441 return res; 478 return res;
442} 479}
443 480
444QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const 481QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const
445{ 482{
446 return formatDateTime(pDateTime, true, true, intIntDateFormat); 483 return formatDateTime(pDateTime, true, true, intIntDateFormat);
447} 484}
448 485
449QDate KLocale::readDate(const QString &intstr, bool* ok) const 486QDate KLocale::readDate(const QString &intstr, bool* ok) const
450{ 487{
451 QDate date; 488 QDate date;
452 date = readDate(intstr, true, ok); 489 date = readDate(intstr, true, ok);
453 if (date.isValid()) return date; 490 if (date.isValid()) return date;
454 return readDate(intstr, false, ok); 491 return readDate(intstr, false, ok);
455} 492}
456 493
457QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const 494QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const
458{ 495{
459 QString fmt = (shortFormat ? dateFormatShort() : dateFormat()).simplifyWhiteSpace(); 496 QString fmt = (shortFormat ? dateFormatShort() : dateFormat()).simplifyWhiteSpace();
460 return readDate( intstr, fmt, ok ); 497 return readDate( intstr, fmt, ok );
461} 498}
462 499
463QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) const 500QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) const
464{ 501{
465 //kdDebug(173) << "KLocale::readDate intstr=" << intstr << " fmt=" << fmt << endl; 502 //kdDebug(173) << "KLocale::readDate intstr=" << intstr << " fmt=" << fmt << endl;
466 QString str = intstr.simplifyWhiteSpace().lower(); 503 QString str = intstr.simplifyWhiteSpace().lower();
467 int day = -1, month = -1; 504 int day = -1, month = -1;
468 // allow the year to be omitted if not in the format 505 // allow the year to be omitted if not in the format
469 int year = QDate::currentDate().year(); 506 int year = QDate::currentDate().year();
470 uint strpos = 0; 507 uint strpos = 0;
471 uint fmtpos = 0; 508 uint fmtpos = 0;
472 509
473 while (fmt.length() > fmtpos || str.length() > strpos) 510 while (fmt.length() > fmtpos || str.length() > strpos)
474 { 511 {
475 if ( !(fmt.length() > fmtpos && str.length() > strpos) ) 512 if ( !(fmt.length() > fmtpos && str.length() > strpos) )
476 goto error; 513 goto error;
477 514
478 QChar c = fmt.at(fmtpos++); 515 QChar c = fmt.at(fmtpos++);
479 516
480 if (c != '%') { 517 if (c != '%') {
481 if (c.isSpace()) 518 if (c.isSpace())
482 strpos++; 519 strpos++;
483 else if (c != str.at(strpos++)) 520 else if (c != str.at(strpos++))
484 goto error; 521 goto error;
485 continue; 522 continue;
486 } 523 }
487 524
488 // remove space at the begining 525 // remove space at the begining
489 if (str.length() > strpos && str.at(strpos).isSpace()) 526 if (str.length() > strpos && str.at(strpos).isSpace())
490 strpos++; 527 strpos++;
491 528
492 c = fmt.at(fmtpos++); 529 c = fmt.at(fmtpos++);
493 switch (c) 530 switch (c)
494 { 531 {
495 case 'a': 532 case 'a':
496 case 'A': 533 case 'A':
497 // this will just be ignored 534 // this will just be ignored
498 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 535 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
499 for (int j = 1; j < 8; j++) { 536 for (int j = 1; j < 8; j++) {
500 QString s = weekDayName(j, c == 'a').lower(); 537 QString s = weekDayName(j, c == 'a').lower();
501 int len = s.length(); 538 int len = s.length();
502 if (str.mid(strpos, len) == s) 539 if (str.mid(strpos, len) == s)
503 strpos += len; 540 strpos += len;
504 } 541 }
505 break; 542 break;
506 } 543 }
507 case 'b': 544 case 'b':
508 case 'B': 545 case 'B':
509 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 546 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
510 for (int j = 1; j < 13; j++) { 547 for (int j = 1; j < 13; j++) {
511 QString s = monthName(j, c == 'b').lower(); 548 QString s = monthName(j, c == 'b').lower();
512 int len = s.length(); 549 int len = s.length();
513 if (str.mid(strpos, len) == s) { 550 if (str.mid(strpos, len) == s) {
514 month = j; 551 month = j;
515 strpos += len; 552 strpos += len;
516 } 553 }
517 } 554 }
518 break; 555 break;
519 } 556 }
520 case 'd': 557 case 'd':
521 case 'e': 558 case 'e':
522 day = readInt(str, strpos); 559 day = readInt(str, strpos);
523 if (day < 1 || day > 31) 560 if (day < 1 || day > 31)
524 goto error; 561 goto error;
525 562
526 break; 563 break;
527 564
528 case 'n': 565 case 'n':
529 case 'm': 566 case 'm':
530 month = readInt(str, strpos); 567 month = readInt(str, strpos);
531 if (month < 1 || month > 12) 568 if (month < 1 || month > 12)
532 goto error; 569 goto error;
533 570
534 break; 571 break;
535 572
536 case 'Y': 573 case 'Y':
537 case 'y': 574 case 'y':
538 year = readInt(str, strpos); 575 year = readInt(str, strpos);
539 if (year < 0) 576 if (year < 0)
540 goto error; 577 goto error;
541 // Qt treats a year in the range 0-100 as 1900-1999. 578 // Qt treats a year in the range 0-100 as 1900-1999.
542 // It is nicer for the user if we treat 0-68 as 2000-2068 579 // It is nicer for the user if we treat 0-68 as 2000-2068
543 if (year < 69) 580 if (year < 69)
544 year += 2000; 581 year += 2000;
545 else if (c == 'y') 582 else if (c == 'y')
546 year += 1900; 583 year += 1900;
547 584
548 break; 585 break;
549 } 586 }
550 } 587 }
551 //kdDebug(173) << "KLocale::readDate day=" << day << " month=" << month << " year=" << year << endl; 588 //kdDebug(173) << "KLocale::readDate day=" << day << " month=" << month << " year=" << year << endl;
552 if ( year != -1 && month != -1 && day != -1 ) 589 if ( year != -1 && month != -1 && day != -1 )
553 { 590 {
554 if (ok) *ok = true; 591 if (ok) *ok = true;
555 return QDate(year, month, day); 592 return QDate(year, month, day);
556 } 593 }
557 error: 594 error:
558 if (ok) *ok = false; 595 if (ok) *ok = false;
559 return QDate(); // invalid date 596 return QDate(); // invalid date
560} 597}
561 598
562QTime KLocale::readTime(const QString &intstr, bool *ok) const 599QTime KLocale::readTime(const QString &intstr, bool *ok) const
563{ 600{
564 QTime _time; 601 QTime _time;
565 _time = readTime(intstr, false, ok); 602 _time = readTime(intstr, false, ok);
566 if (_time.isValid()) return _time; 603 if (_time.isValid()) return _time;
567 return readTime(intstr, true, ok); 604 return readTime(intstr, true, ok);
568} 605}
569 606
570QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const 607QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const
571{ 608{
572 QString str = intstr.simplifyWhiteSpace().lower(); 609 QString str = intstr.simplifyWhiteSpace().lower();
573 QString Format = timeFormat().simplifyWhiteSpace(); 610 QString Format = timeFormat().simplifyWhiteSpace();
574 if (!seconds) 611 if (!seconds)
575 Format.replace(QRegExp(QString::fromLatin1(".%S")), QString::null); 612 Format.replace(QRegExp(QString::fromLatin1(".%S")), QString::null);
576 613
577 int hour = -1, minute = -1, second = seconds ? -1 : 0; // don't require seconds 614 int hour = -1, minute = -1, second = seconds ? -1 : 0; // don't require seconds
578 615
579 bool g_12h = false; 616 bool g_12h = false;
580 bool pm = false; 617 bool pm = false;
581 uint strpos = 0; 618 uint strpos = 0;
582 uint Formatpos = 0; 619 uint Formatpos = 0;
583 620
584 while (Format.length() > Formatpos || str.length() > strpos) 621 while (Format.length() > Formatpos || str.length() > strpos)
585 { 622 {
586 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error; 623 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error;
587 624
588 QChar c = Format.at(Formatpos++); 625 QChar c = Format.at(Formatpos++);
589 626
590 if (c != '%') 627 if (c != '%')
591 { 628 {
592 if (c.isSpace()) 629 if (c.isSpace())
593 strpos++; 630 strpos++;
594 else if (c != str.at(strpos++)) 631 else if (c != str.at(strpos++))
595 goto error; 632 goto error;
596 continue; 633 continue;
597 } 634 }
598 635
599 // remove space at the begining 636 // remove space at the begining
600 if (str.length() > strpos && str.at(strpos).isSpace()) 637 if (str.length() > strpos && str.at(strpos).isSpace())
601 strpos++; 638 strpos++;
602 639
603 c = Format.at(Formatpos++); 640 c = Format.at(Formatpos++);
604 switch (c) 641 switch (c)
605 { 642 {
606 case 'p': 643 case 'p':
607 { 644 {
608 QString s; 645 QString s;
609 s = i18n("pm").lower(); 646 s = i18n("pm").lower();
610 int len = s.length(); 647 int len = s.length();
611 if (str.mid(strpos, len) == s) 648 if (str.mid(strpos, len) == s)
612 { 649 {
613 pm = true; 650 pm = true;
614 strpos += len; 651 strpos += len;
615 } 652 }
616 else 653 else
617 { 654 {
618 s = i18n("am").lower(); 655 s = i18n("am").lower();
619 len = s.length(); 656 len = s.length();
620 if (str.mid(strpos, len) == s) { 657 if (str.mid(strpos, len) == s) {
621 pm = false; 658 pm = false;
622 strpos += len; 659 strpos += len;
623 } 660 }
624 else 661 else
625 goto error; 662 goto error;
626 } 663 }
627 } 664 }
628 break; 665 break;
629 666
630 case 'k': 667 case 'k':
631 case 'H': 668 case 'H':
632 g_12h = false; 669 g_12h = false;
633 hour = readInt(str, strpos); 670 hour = readInt(str, strpos);
634 if (hour < 0 || hour > 23) 671 if (hour < 0 || hour > 23)
635 goto error; 672 goto error;
636 673
637 break; 674 break;
638 675
639 case 'l': 676 case 'l':
640 case 'I': 677 case 'I':
641 g_12h = true; 678 g_12h = true;
642 hour = readInt(str, strpos); 679 hour = readInt(str, strpos);
643 if (hour < 1 || hour > 12) 680 if (hour < 1 || hour > 12)
644 goto error; 681 goto error;
645 682
646 break; 683 break;
647 684
648 case 'M': 685 case 'M':
649 minute = readInt(str, strpos); 686 minute = readInt(str, strpos);
650 if (minute < 0 || minute > 59) 687 if (minute < 0 || minute > 59)
651 goto error; 688 goto error;
652 689
653 break; 690 break;
654 691
diff --git a/microkde/kdecore/klocale.h b/microkde/kdecore/klocale.h
index 14660d6..58e0b39 100644
--- a/microkde/kdecore/klocale.h
+++ b/microkde/kdecore/klocale.h
@@ -1,119 +1,119 @@
1#ifndef MINIKDE_KLOCALE_H 1#ifndef MINIKDE_KLOCALE_H
2#define MINIKDE_KLOCALE_H 2#define MINIKDE_KLOCALE_H
3 3
4#include <qstring.h> 4#include <qstring.h>
5#include <qstringlist.h> 5#include <qstringlist.h>
6#include <qdatetime.h> 6#include <qdatetime.h>
7#include <qdict.h> 7#include <qdict.h>
8 8
9#ifndef I18N_NOOP 9#ifndef I18N_NOOP
10#define I18N_NOOP(x) (x) 10#define I18N_NOOP(x) (x)
11#endif 11#endif
12 12
13class KCalendarSystem; 13class KCalendarSystem;
14void setLocaleDict( QDict<QString> * dict ); 14void setLocaleDict( QDict<QString> * dict );
15QString i18n(const char *text); 15QString i18n(const char *text);
16QString i18n(const char *hint, const char *text); 16QString i18n(const char *hint, const char *text);
17QString i18n(const char *text1, const char *textn, int num); 17QString i18n(const char *text1, const char *textn, int num);
18 18
19// Qt3's uic generates i18n( "msg", "comment" ) calls which conflict 19// Qt3's uic generates i18n( "msg", "comment" ) calls which conflict
20// with our i18n method. we use uic -tr tr2i18n to redirect 20// with our i18n method. we use uic -tr tr2i18n to redirect
21// to the right i18n() function 21// to the right i18n() function
22inline QString tr2i18n(const char* message, const char* =0) { 22inline QString tr2i18n(const char* message, const char* =0) {
23 return i18n( message); 23 return i18n( message);
24} 24}
25 25
26class KLocale 26class KLocale
27{ 27{
28 public: 28 public:
29 KLocale(); 29 KLocale();
30 30
31 QString formatNumber(double num, int precision = -1) const; 31 QString formatNumber(double num, int precision = -1) const;
32 QString formatNumber(const QString &numStr) const; 32 QString formatNumber(const QString &numStr) const;
33 double readNumber(const QString &numStr, bool * ok = 0) const; 33 double readNumber(const QString &numStr, bool * ok = 0) const;
34 34
35 QString decimalSymbol() const; 35 QString decimalSymbol() const;
36 QString thousandsSeparator() const; 36 QString thousandsSeparator() const;
37 QString positiveSign() const; 37 QString positiveSign() const;
38 QString negativeSign() const; 38 QString negativeSign() const;
39 39
40 40
41 QString translate( const char *index ) const; 41 QString translate( const char *index ) const;
42 QString translate( const char *index, const char *fallback) const; 42 QString translate( const char *index, const char *fallback) const;
43 43
44 enum IntDateFormat { Undefined=-1, Default=0, Format1=1, ISODate=2, Userdefined=3 }; 44 enum IntDateFormat { Undefined=-1, Default=0, Format1=1, ISODate=2, Userdefined=3 };
45 45
46 QString formatDate(const QDate &pDate, bool shortFormat = false, IntDateFormat intIntDateFormat = Undefined) const; 46 QString formatDate(const QDate &pDate, bool shortFormat = false, IntDateFormat intIntDateFormat = Undefined) const;
47 QString formatTime(const QTime &pTime, bool includeSecs = false, IntDateFormat intIntDateFormat = Undefined) const; 47 QString formatTime(const QTime &pTime, bool includeSecs = false, IntDateFormat intIntDateFormat = Undefined) const;
48 QString formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat = Undefined) const; 48 QString formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat = Undefined) const;
49 QString formatDateTime(const QDateTime &pDateTime, 49 QString formatDateTime(const QDateTime &pDateTime,
50 bool shortFormat, 50 bool shortFormat,
51 bool includeSecs = false, IntDateFormat intIntDateFormat = Undefined) const; 51 bool includeSecs = false, IntDateFormat intIntDateFormat = Undefined) const;
52 52
53 QDate readDate(const QString &str, bool* ok = 0) const; 53 QDate readDate(const QString &str, bool* ok = 0) const;
54 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const; 54 QDate readDate( const QString &intstr, const QString &fmt, bool* ok = 0) const;
55 QTime readTime(const QString &str, bool* ok = 0) const; 55 QTime readTime(const QString &str, bool* ok = 0) const;
56 QDate readDate(const QString &intstr, IntDateFormat intIntDateFormat, bool* ok) const; 56 QDate readDate(const QString &intstr, IntDateFormat intIntDateFormat, bool* ok) const;
57 57
58 QDateTime readDateTime(const QString &intstr, IntDateFormat intIntDateFormat, bool* ok) const; 58 QDateTime readDateTime(const QString &intstr, IntDateFormat intIntDateFormat, bool* ok) const;
59 59
60 bool use12Clock() const; 60 bool use12Clock() const;
61 bool weekStartsMonday() const; 61 bool weekStartsMonday() const;
62 int weekStartDay() const; 62 int weekStartDay() const;
63 63
64 QString weekDayName(int,bool=false) const; 64 QString weekDayName(int,bool=false) const;
65 QString monthName(int,bool=false) const; 65 QString monthName(int,bool=false) const;
66 66
67 QString country() const; 67 QString country() const;
68 68 int weekNum ( const QDate & );
69 QString dateFormat(IntDateFormat intIntDateFormat = Undefined) const; 69 QString dateFormat(IntDateFormat intIntDateFormat = Undefined) const;
70 QString dateFormatShort(IntDateFormat intIntDateFormat = Undefined) const; 70 QString dateFormatShort(IntDateFormat intIntDateFormat = Undefined) const;
71 QString timeFormat(IntDateFormat intIntDateFormat = Undefined) const; 71 QString timeFormat(IntDateFormat intIntDateFormat = Undefined) const;
72 72
73 void insertCatalogue ( const QString & ); 73 void insertCatalogue ( const QString & );
74 74
75 KCalendarSystem *calendar(); 75 KCalendarSystem *calendar();
76 void setHore24Format ( bool ); 76 void setHore24Format ( bool );
77 void setWeekStartMonday( bool ); 77 void setWeekStartMonday( bool );
78 void setIntDateFormat( IntDateFormat ); 78 void setIntDateFormat( IntDateFormat );
79 void setIntTimeFormat( IntDateFormat ); 79 void setIntTimeFormat( IntDateFormat );
80 IntDateFormat getIntDateFormat( ); 80 IntDateFormat getIntDateFormat( );
81 IntDateFormat getIntTimeFormat( ); 81 IntDateFormat getIntTimeFormat( );
82 void setLanguage( int ); 82 void setLanguage( int );
83 int language(); 83 int language();
84 void setDateFormat( QString ); 84 void setDateFormat( QString );
85 void setDateFormatShort( QString ); 85 void setDateFormatShort( QString );
86 86
87 QString m_decimalSymbol; 87 QString m_decimalSymbol;
88 QString m_thousandsSeparator; 88 QString m_thousandsSeparator;
89 QString m_currencySymbol; 89 QString m_currencySymbol;
90 QString m_monetaryDecimalSymbol; 90 QString m_monetaryDecimalSymbol;
91 QString m_monetaryThousandsSeparator; 91 QString m_monetaryThousandsSeparator;
92 QString m_positiveSign; 92 QString m_positiveSign;
93 QString m_negativeSign; 93 QString m_negativeSign;
94 94
95 int timezoneOffset( QString ); 95 int timezoneOffset( QString );
96 QStringList timeZoneList() const; 96 QStringList timeZoneList() const;
97 void setDaylightSaving( bool, int , int ); 97 void setDaylightSaving( bool, int , int );
98 int localTimeOffset(const QDateTime &); 98 int localTimeOffset(const QDateTime &);
99 void setTimezone( const QString &timeZone , bool oddTZ); 99 void setTimezone( const QString &timeZone , bool oddTZ);
100 private: 100 private:
101 QTime readTime(const QString &str, bool seconds, bool *ok) const; 101 QTime readTime(const QString &str, bool seconds, bool *ok) const;
102 QDate readDate(const QString &str, bool shortFormat, bool *ok) const; 102 QDate readDate(const QString &str, bool shortFormat, bool *ok) const;
103 KCalendarSystem *mCalendarSystem; 103 KCalendarSystem *mCalendarSystem;
104 bool mWeekStartsMonday; 104 bool mWeekStartsMonday;
105 bool mHourF24Format; 105 bool mHourF24Format;
106 IntDateFormat mIntDateFormat; 106 IntDateFormat mIntDateFormat;
107 IntDateFormat mIntTimeFormat; 107 IntDateFormat mIntTimeFormat;
108 int mLanguage; 108 int mLanguage;
109 QString mDateFormat; 109 QString mDateFormat;
110 QString mDateFormatShort; 110 QString mDateFormatShort;
111 QStringList mTimeZoneList; 111 QStringList mTimeZoneList;
112 bool daylightEnabled; 112 bool daylightEnabled;
113 int mDaylightTZoffset; 113 int mDaylightTZoffset;
114 int mNondaylightTZoffset; 114 int mNondaylightTZoffset;
115 bool mSouthDaylight; 115 bool mSouthDaylight;
116 int daylightStart, daylightEnd, mTimeZoneOffset; 116 int daylightStart, daylightEnd, mTimeZoneOffset;
117}; 117};
118 118
119#endif 119#endif