summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-06-07 20:23:54 (UTC)
committer zautrix <zautrix>2005-06-07 20:23:54 (UTC)
commit041729646fdaabd2ed69b4fc77c839efa81a7d2e (patch) (unidiff)
tree82c78d5c25d18a79a8ae76aabf75ea40b91c26f2
parentaa9a9368a7b38e34118b65a4e8efa7ea7ec0e8e4 (diff)
downloadkdepimpi-041729646fdaabd2ed69b4fc77c839efa81a7d2e.zip
kdepimpi-041729646fdaabd2ed69b4fc77c839efa81a7d2e.tar.gz
kdepimpi-041729646fdaabd2ed69b4fc77c839efa81a7d2e.tar.bz2
print list added to kopi
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt6
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt4
-rw-r--r--desktop/rpm/kdepim_rpm2
-rw-r--r--korganizer/kolistview.cpp82
-rw-r--r--korganizer/kolistview.h3
-rw-r--r--version2
6 files changed, 95 insertions, 4 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 6e3b886..719f120 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,50 +1,56 @@
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.1.6 ************
4
5KO/Pi:
6Added to the list view (the list view is used in search dialog as well) the possibility to print it.
7Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view.
8
3********** VERSION 2.1.5 ************ 9********** VERSION 2.1.5 ************
4 10
5This is the new stable version. 11This is the new stable version.
6Bugfix: 12Bugfix:
7Fixed a problem with agenda popup on the desktop in KO/Pi. 13Fixed a problem with agenda popup on the desktop in KO/Pi.
8Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization. 14Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization.
9Added config option to not display completed todos in agenda view. 15Added config option to not display completed todos in agenda view.
10Addressee view is now using the formatted name, if defined. 16Addressee view is now using the formatted name, if defined.
11That makes it possible to display "lastname, firstname" in that view now. 17That makes it possible to display "lastname, firstname" in that view now.
12To set the formatted name for all contacts, please use menu: 18To set the formatted name for all contacts, please use menu:
13Edit->Change->Set formatted name. 19Edit->Change->Set formatted name.
14Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows. 20Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows.
15 21
16********** VERSION 2.1.4 ************ 22********** VERSION 2.1.4 ************
17 23
18Fixed two more bugs in the KA/Pi CSV import dialog: 24Fixed two more bugs in the KA/Pi CSV import dialog:
19Made it possible to read multi-line fields and import it to the "Note" field. 25Made it possible to read multi-line fields and import it to the "Note" field.
20Fixed a problem in mapping custom fields, whatever a custem field is... 26Fixed a problem in mapping custom fields, whatever a custem field is...
21 27
22********** VERSION 2.1.3 ************ 28********** VERSION 2.1.3 ************
23 29
24Changed the menu structure of the alarm applet: 30Changed the menu structure of the alarm applet:
25Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List". 31Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List".
26 32
27Fixed several problems in the KA/Pi CSV import dialog: 33Fixed several problems in the KA/Pi CSV import dialog:
28Added "Category", made codec configureable and made it possible to map many fields to the "Note" field. 34Added "Category", made codec configureable and made it possible to map many fields to the "Note" field.
29 35
30 36
31********** VERSION 2.1.2 ************ 37********** VERSION 2.1.2 ************
32 38
33Fixed a problem closing the alarm dialog on Zaurus with "OK" button. 39Fixed a problem closing the alarm dialog on Zaurus with "OK" button.
34 40
35Fixed a problem when importing data from Outlook with mutiple categories set. 41Fixed a problem when importing data from Outlook with mutiple categories set.
36 42
37Changed display of days in datenavigator: 43Changed display of days in datenavigator:
38Birthdays are now blue, not dark green. 44Birthdays are now blue, not dark green.
39When todo view is shown, no birtdays are shown and days with due todos are shown blue. 45When todo view is shown, no birtdays are shown and days with due todos are shown blue.
40When journal view is shown, only holidays are shown and days with journals are blue. 46When journal view is shown, only holidays are shown and days with journals are blue.
41 47
42Added Backup options to global config: 48Added Backup options to global config:
43You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ). 49You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ).
44It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again. 50It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again.
45The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups. 51The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups.
46 52
47********** VERSION 2.1.1 ************ 53********** VERSION 2.1.1 ************
48 54
49Stable release 2.1.1! 55Stable release 2.1.1!
50 56
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 5a27a10..8f28234 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1327,55 +1327,55 @@
1327{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, 1327{ "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" },
1328{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, 1328{ "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" },
1329{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, 1329{ "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." },
1330{ "Show Sync Events","Zeige Sync-Ereignisse" }, 1330{ "Show Sync Events","Zeige Sync-Ereignisse" },
1331{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, 1331{ "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" },
1332{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, 1332{ "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" },
1333{ " on "," am " }, 1333{ " on "," am " },
1334{ "On: ","Am: " }, 1334{ "On: ","Am: " },
1335{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, 1335{ "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" },
1336{ "Start/Stop todo...","Starte/Stoppe Todo..." }, 1336{ "Start/Stop todo...","Starte/Stoppe Todo..." },
1337{ "Color for running todos:","Farbe für laufende Todos:" }, 1337{ "Color for running todos:","Farbe für laufende Todos:" },
1338{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" }, 1338{ "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" },
1339{ "Todo is started","Todo ist gestartet" }, 1339{ "Todo is started","Todo ist gestartet" },
1340{ "Stop todo","Stoppe Todo" }, 1340{ "Stop todo","Stoppe Todo" },
1341{ "Todo is stopped","Todo ist gestoppt" }, 1341{ "Todo is stopped","Todo ist gestoppt" },
1342{ "Start todo","Starte Todo" }, 1342{ "Start todo","Starte Todo" },
1343{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, 1343{ "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" },
1344{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" }, 1344{ "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" },
1345{ "Todo has subtodos","Todo hat Untertodos" }, 1345{ "Todo has subtodos","Todo hat Untertodos" },
1346{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, 1346{ "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" },
1347{ "Colors","Farben" }, 1347{ "Colors","Farben" },
1348{ "Click on new parent item","Klicke auf neues Übertodo" }, 1348{ "Click on new parent item","Klicke auf neues Übertodo" },
1349{ "Reparenting aborted!","Übertodo setzen abgebrochen" }, 1349{ "Reparenting aborted!","Übertodo setzen abgebrochen" },
1350{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, 1350{ "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" },
1351{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, 1351{ "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" },
1352{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" }, 1352{ "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" },
1353{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, 1353{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
1354{ "times","Zeiten" }, 1354{ "times","Zeiten" },
1355{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" }, 1355{ "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" },
1356{ "Backup enabled","Backup angeschaltet" }, 1356{ "Backup enabled","Backup angeschaltet" },
1357{ "Use standard backup dir","Standard Backupverzeichnis" }, 1357{ "Use standard backup dir","Standard Backupverzeichnis" },
1358{ "Number of Backups:","Anzahl der Backups" }, 1358{ "Number of Backups:","Anzahl der Backups" },
1359{ "Make backup every ","Mache ein Backup alle " }, 1359{ "Make backup every ","Mache ein Backup alle " },
1360{ " days"," Tage" }, 1360{ " days"," Tage" },
1361{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, 1361{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." },
1362{ "Backup Failed!","Backup Problem!" }, 1362{ "Backup Failed!","Backup Problem!" },
1363{ "Try again now","Versuche jetzt nochmal" }, 1363{ "Try again now","Versuche jetzt nochmal" },
1364{ "Try again later","Versuche später nochmal" }, 1364{ "Try again later","Versuche später nochmal" },
1365{ "Try again tomorrow","Versuche morgen nochmal" }, 1365{ "Try again tomorrow","Versuche morgen nochmal" },
1366{ "Disable backup","Schalte Backup ab" }, 1366{ "Disable backup","Schalte Backup ab" },
1367{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 1367{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
1368{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 1368{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
1369{ "Choose action","Wähle Aktion" }, 1369{ "Choose action","Wähle Aktion" },
1370{ "Comment for todo:","Kommentar zum Todo:" }, 1370{ "Comment for todo:","Kommentar zum Todo:" },
1371{ "Stop+note","Stop+Notiz" }, 1371{ "Stop+note","Stop+Notiz" },
1372{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" }, 1372{ "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" },
1373{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" }, 1373{ "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" },
1374{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" }, 1374{ "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" },
1375{ "","" }, 1375{ "Print complete list","Drucke komplette Liste" },
1376{ "","" }, 1376{ "Hide all selected","Verstecke Selektierte" },
1377{ "","" }, 1377{ "","" },
1378{ "","" }, 1378{ "","" },
1379{ "","" }, 1379{ "","" },
1380{ "","" }, 1380{ "","" },
1381{ "","" }, \ No newline at end of file 1381{ "","" }, \ No newline at end of file
diff --git a/desktop/rpm/kdepim_rpm b/desktop/rpm/kdepim_rpm
index cf68670..ee00372 100644
--- a/desktop/rpm/kdepim_rpm
+++ b/desktop/rpm/kdepim_rpm
@@ -1,51 +1,51 @@
1Summary: A collection of PIM programs 1Summary: A collection of PIM programs
2Name: KDE-Pim-Pi 2Name: KDE-Pim-Pi
3Version: 2.1.5 3Version: 2.1.6
4Release: SuSE_9.2 4Release: SuSE_9.2
5Copyright:GPL 5Copyright:GPL
6Group: Productivity/Pim 6Group: Productivity/Pim
7Source:http://sourceforge.net/projects/kdepimpi/ 7Source:http://sourceforge.net/projects/kdepimpi/
8URL:http://sourceforge.net/projects/kdepimpi/ 8URL:http://sourceforge.net/projects/kdepimpi/
9Packager: zautrix 9Packager: zautrix
10 10
11%description 11%description
12This package contains the platform-independent PIM programs from 12This package contains the platform-independent PIM programs from
13www.pi-sync.info, compiled for SuSE 9.2: 13www.pi-sync.info, compiled for SuSE 9.2:
14KTimeTacker/Pi 14KTimeTacker/Pi
15KPhone/Pi 15KPhone/Pi
16KAddressbook/Pi 16KAddressbook/Pi
17KOrganizer/Pi 17KOrganizer/Pi
18PasswordManager/Pi 18PasswordManager/Pi
19KOPieMail/Pi 19KOPieMail/Pi
20 20
21These applications do not need anything from the KDE-desktop 21These applications do not need anything from the KDE-desktop
22at all to run on Linux. However, there is a dependency from 22at all to run on Linux. However, there is a dependency from
23two KDE libs, because a small command line program is included 23two KDE libs, because a small command line program is included
24to make it possible to sync with the KDE-desktop applications. 24to make it possible to sync with the KDE-desktop applications.
25 25
26These applications are independent from the KDE-desktop 26These applications are independent from the KDE-desktop
27environment. That means, nothing of your existing 27environment. That means, nothing of your existing
28KDE-desktop setup will be changed, or any data 28KDE-desktop setup will be changed, or any data
29(calendar-addressbook) used by the KDE-desktop 29(calendar-addressbook) used by the KDE-desktop
30applications will be changed or accessed. 30applications will be changed or accessed.
31These applications stores their data and config in 31These applications stores their data and config in
32$HOME/kdepim/ 32$HOME/kdepim/
33However, because the same file format is used, 33However, because the same file format is used,
34an easy exchange of data with the KDE-desktop 34an easy exchange of data with the KDE-desktop
35is possible. 35is possible.
36A small command line program is included 36A small command line program is included
37to make it possible to sync with the KDE-desktop applications. 37to make it possible to sync with the KDE-desktop applications.
38You do not need to call this program from the commandline, 38You do not need to call this program from the commandline,
39it is called from the KDE-Pim/Pi apps when you choose there: 39it is called from the KDE-Pim/Pi apps when you choose there:
40Sync with KDE_Desktop. 40Sync with KDE_Desktop.
41If something is going wrong, please start the 41If something is going wrong, please start the
42KDE-Pim/Pi program itself from the console to get detailed output. 42KDE-Pim/Pi program itself from the console to get detailed output.
43 43
44After installation, you should have a 44After installation, you should have a
45PIM-pi 45PIM-pi
46folder in your KDE start menu, where you can 46folder in your KDE start menu, where you can
47start the applications from. 47start the applications from.
48 48
49These programs makes it possible to sync your Zaurus easily 49These programs makes it possible to sync your Zaurus easily
50(with the KDE-Pim/Pi programs running on the Zaurus) 50(with the KDE-Pim/Pi programs running on the Zaurus)
51with the KDE-desktop calendar/addressbook data. 51with the KDE-desktop calendar/addressbook data.
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index bc52281..7022e02 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -1,113 +1,116 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown 3 Copyright (c) 1999 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qlistview.h> 25#include <qlistview.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qpopupmenu.h> 28#include <qpopupmenu.h>
29#include <qprogressbar.h> 29#include <qprogressbar.h>
30#include <qfileinfo.h> 30#include <qfileinfo.h>
31#include <qmessagebox.h> 31#include <qmessagebox.h>
32#include <qdialog.h> 32#include <qdialog.h>
33#include <qtextstream.h> 33#include <qtextstream.h>
34#include <qdir.h> 34#include <qdir.h>
35#include <qwhatsthis.h> 35#include <qwhatsthis.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qpainter.h>
38#include <qpaintdevicemetrics.h>
37 39
38#include <klocale.h> 40#include <klocale.h>
39#include <kdebug.h> 41#include <kdebug.h>
40#include <kiconloader.h> 42#include <kiconloader.h>
41#include <kglobal.h> 43#include <kglobal.h>
42 44
43#include <libkdepim/kpimglobalprefs.h> 45#include <libkdepim/kpimglobalprefs.h>
44#include <libkcal/calendar.h> 46#include <libkcal/calendar.h>
45#include <libkcal/calendarlocal.h> 47#include <libkcal/calendarlocal.h>
46#include <libkcal/icalformat.h> 48#include <libkcal/icalformat.h>
47#include <libkcal/vcalformat.h> 49#include <libkcal/vcalformat.h>
48#include <libkcal/recurrence.h> 50#include <libkcal/recurrence.h>
49#include <libkcal/filestorage.h> 51#include <libkcal/filestorage.h>
50#include <libkdepim/categoryselectdialog.h> 52#include <libkdepim/categoryselectdialog.h>
51#include <libkcal/kincidenceformatter.h> 53#include <libkcal/kincidenceformatter.h>
52#ifndef DESKTOP_VERSION 54#ifndef DESKTOP_VERSION
53#include <qpe/qpeapplication.h> 55#include <qpe/qpeapplication.h>
54#else 56#else
55#include <qapplication.h> 57#include <qapplication.h>
56#endif 58#endif
57 59
58#ifndef KORG_NOPRINTER 60#ifndef KORG_NOPRINTER
59#include "calprinter.h" 61#include "calprinter.h"
60#endif 62#endif
61#include "koglobals.h" 63#include "koglobals.h"
62#include "koprefs.h" 64#include "koprefs.h"
63#include "kfiledialog.h" 65#include "kfiledialog.h"
64 66
65#include "kolistview.h" 67#include "kolistview.h"
68#include "koeventviewer.h"
66 69
67 70
68 71
69 72
70class KOListViewWhatsThis :public QWhatsThis 73class KOListViewWhatsThis :public QWhatsThis
71{ 74{
72public: 75public:
73 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 76 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
74 77
75protected: 78protected:
76 virtual QString text( const QPoint& p) 79 virtual QString text( const QPoint& p)
77 { 80 {
78 return _view->getWhatsThisText(p) ; 81 return _view->getWhatsThisText(p) ;
79 } 82 }
80private: 83private:
81 QWidget* _wid; 84 QWidget* _wid;
82 KOListView * _view; 85 KOListView * _view;
83}; 86};
84 87
85 88
86ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 89ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
87{ 90{
88 mItem = item; 91 mItem = item;
89 mDate = date; 92 mDate = date;
90} 93}
91 94
92ListItemVisitor::~ListItemVisitor() 95ListItemVisitor::~ListItemVisitor()
93{ 96{
94} 97}
95 98
96bool ListItemVisitor::visit(Event *e) 99bool ListItemVisitor::visit(Event *e)
97{ 100{
98 bool ok = false; 101 bool ok = false;
99 QString start, end; 102 QString start, end;
100 QDate ds, de; 103 QDate ds, de;
101 if ( e->doesRecur() ) { 104 if ( e->doesRecur() ) {
102 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); 105 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date();
103 if ( ok ) { 106 if ( ok ) {
104 int days = e->dtStart().date().daysTo(e->dtEnd().date() ); 107 int days = e->dtStart().date().daysTo(e->dtEnd().date() );
105 start = KGlobal::locale()->formatDate(ds,true); 108 start = KGlobal::locale()->formatDate(ds,true);
106 de = ds.addDays( days); 109 de = ds.addDays( days);
107 end = KGlobal::locale()->formatDate(de,true); 110 end = KGlobal::locale()->formatDate(de,true);
108 } 111 }
109 112
110 } 113 }
111 if ( ! ok ) { 114 if ( ! ok ) {
112 start =e->dtStartDateStr(); 115 start =e->dtStartDateStr();
113 end = e->dtEndDateStr(); 116 end = e->dtEndDateStr();
@@ -235,97 +238,108 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
235 const char *name) 238 const char *name)
236 : KOEventView(calendar, parent, name) 239 : KOEventView(calendar, parent, name)
237{ 240{
238 mActiveItem = 0; 241 mActiveItem = 0;
239 mListView = new KOListViewListView(this); 242 mListView = new KOListViewListView(this);
240 mListView->addColumn(i18n("Summary")); 243 mListView->addColumn(i18n("Summary"));
241 mListView->addColumn(i18n("Start Date")); 244 mListView->addColumn(i18n("Start Date"));
242 mListView->addColumn(i18n("Start Time")); 245 mListView->addColumn(i18n("Start Time"));
243 mListView->addColumn(i18n("End Date")); 246 mListView->addColumn(i18n("End Date"));
244 mListView->addColumn(i18n("End Time")); 247 mListView->addColumn(i18n("End Time"));
245 mListView->addColumn(i18n("Alarm")); // alarm set? 248 mListView->addColumn(i18n("Alarm")); // alarm set?
246 mListView->addColumn(i18n("Recurs")); // recurs? 249 mListView->addColumn(i18n("Recurs")); // recurs?
247 mListView->addColumn(i18n("Due Date")); 250 mListView->addColumn(i18n("Due Date"));
248 mListView->addColumn(i18n("Due Time")); 251 mListView->addColumn(i18n("Due Time"));
249 mListView->addColumn(i18n("Cancelled")); 252 mListView->addColumn(i18n("Cancelled"));
250 mListView->addColumn(i18n("Categories")); 253 mListView->addColumn(i18n("Categories"));
251 254
252 mListView->setColumnAlignment(0,AlignLeft); 255 mListView->setColumnAlignment(0,AlignLeft);
253 mListView->setColumnAlignment(1,AlignLeft); 256 mListView->setColumnAlignment(1,AlignLeft);
254 mListView->setColumnAlignment(2,AlignHCenter); 257 mListView->setColumnAlignment(2,AlignHCenter);
255 mListView->setColumnAlignment(3,AlignLeft); 258 mListView->setColumnAlignment(3,AlignLeft);
256 mListView->setColumnAlignment(4,AlignHCenter); 259 mListView->setColumnAlignment(4,AlignHCenter);
257 mListView->setColumnAlignment(5,AlignLeft); 260 mListView->setColumnAlignment(5,AlignLeft);
258 mListView->setColumnAlignment(6,AlignLeft); 261 mListView->setColumnAlignment(6,AlignLeft);
259 mListView->setColumnAlignment(7,AlignLeft); 262 mListView->setColumnAlignment(7,AlignLeft);
260 mListView->setColumnAlignment(8,AlignLeft); 263 mListView->setColumnAlignment(8,AlignLeft);
261 mListView->setColumnAlignment(9,AlignLeft); 264 mListView->setColumnAlignment(9,AlignLeft);
262 mListView->setColumnAlignment(10,AlignLeft); 265 mListView->setColumnAlignment(10,AlignLeft);
263 mListView->setColumnWidthMode(10, QListView::Manual); 266 mListView->setColumnWidthMode(10, QListView::Manual);
264 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); 267 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this);
265 268
266 int iii = 0; 269 int iii = 0;
267 for ( iii = 0; iii< 10 ; ++iii ) 270 for ( iii = 0; iii< 10 ; ++iii )
268 mListView->setColumnWidthMode( iii, QListView::Manual ); 271 mListView->setColumnWidthMode( iii, QListView::Manual );
269 272
270 QBoxLayout *layoutTop = new QVBoxLayout(this); 273 QBoxLayout *layoutTop = new QVBoxLayout(this);
271 layoutTop->addWidget(mListView); 274 layoutTop->addWidget(mListView);
272 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 275 mListView->setFont ( KOPrefs::instance()->mListViewFont );
273 mPopupMenu = eventPopup(); 276 mPopupMenu = eventPopup();
274 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
275 i18n("Select all"),this, 278 i18n("Select all"),this,
276 SLOT(allSelection()),true); 279 SLOT(allSelection()),true);
277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
278 i18n("Deselect all"),this, 281 i18n("Deselect all"),this,
279 SLOT(clearSelection()),true); 282 SLOT(clearSelection()),true);
280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 283 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
281 i18n("Delete all selected"),this, 284 i18n("Delete all selected"),this,
282 SLOT(deleteAll()),true); 285 SLOT(deleteAll()),true);
286#ifdef DESKTOP_VERSION
287 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
288 i18n("Hide all selected"),this,
289 SLOT(hideAll()),true);
290#endif
291 mPopupMenu->insertSeparator();
292#ifdef DESKTOP_VERSION
293 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
294 i18n("Print complete list"),this,
295 SLOT(printList()),true);
283 mPopupMenu->insertSeparator(); 296 mPopupMenu->insertSeparator();
297#endif
284 QPopupMenu * exportPO = new QPopupMenu ( this ); 298 QPopupMenu * exportPO = new QPopupMenu ( this );
285 mPopupMenu->insertItem( i18n("Export selected"), exportPO ); 299 mPopupMenu->insertItem( i18n("Export selected"), exportPO );
286 exportPO->insertItem( i18n("As iCal (ics) file..."),this, 300 exportPO->insertItem( i18n("As iCal (ics) file..."),this,
287 SLOT(saveToFile())); 301 SLOT(saveToFile()));
288 exportPO->insertItem( i18n("As vCal (vcs) file..."),this, 302 exportPO->insertItem( i18n("As vCal (vcs) file..."),this,
289 SLOT(saveToFileVCS())); 303 SLOT(saveToFileVCS()));
290 exportPO->insertItem( i18n("Journal/Details..."),this, 304 exportPO->insertItem( i18n("Journal/Details..."),this,
291 SLOT(saveDescriptionToFile())); 305 SLOT(saveDescriptionToFile()));
292 // mPopupMenu->insertSeparator(); 306 // mPopupMenu->insertSeparator();
293 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 307 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
294 i18n("Add Categ. to selected..."),this, 308 i18n("Add Categ. to selected..."),this,
295 SLOT(addCat()),true); 309 SLOT(addCat()),true);
296 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 310 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
297 i18n("Set Categ. for selected..."),this, 311 i18n("Set Categ. for selected..."),this,
298 SLOT(setCat()),true); 312 SLOT(setCat()),true);
299 //mPopupMenu->insertSeparator(); 313 //mPopupMenu->insertSeparator();
300 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 314 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
301 i18n("Set alarm for selected..."),this, 315 i18n("Set alarm for selected..."),this,
302 SLOT(setAlarm()),true); 316 SLOT(setAlarm()),true);
303 317
304 318
305#ifndef DESKTOP_VERSION 319#ifndef DESKTOP_VERSION
306 mPopupMenu->insertSeparator(); 320 mPopupMenu->insertSeparator();
307 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 321 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
308 i18n("Beam selected via IR"),this, 322 i18n("Beam selected via IR"),this,
309 SLOT(beamSelected()),true); 323 SLOT(beamSelected()),true);
310#endif 324#endif
311 /* 325 /*
312 mPopupMenu = new QPopupMenu; 326 mPopupMenu = new QPopupMenu;
313 mPopupMenu->insertItem(i18n("Edit Event"), this, 327 mPopupMenu->insertItem(i18n("Edit Event"), this,
314 SLOT (editEvent())); 328 SLOT (editEvent()));
315 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 329 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
316 SLOT (deleteEvent())); 330 SLOT (deleteEvent()));
317 mPopupMenu->insertSeparator(); 331 mPopupMenu->insertSeparator();
318 mPopupMenu->insertItem(i18n("Show Dates"), this, 332 mPopupMenu->insertItem(i18n("Show Dates"), this,
319 SLOT(showDates())); 333 SLOT(showDates()));
320 mPopupMenu->insertItem(i18n("Hide Dates"), this, 334 mPopupMenu->insertItem(i18n("Hide Dates"), this,
321 SLOT(hideDates())); 335 SLOT(hideDates()));
322 */ 336 */
323 QObject::connect(mListView,SIGNAL( newEvent()), 337 QObject::connect(mListView,SIGNAL( newEvent()),
324 this,SIGNAL(signalNewEvent())); 338 this,SIGNAL(signalNewEvent()));
325 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 339 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
326 this,SLOT(defaultItemAction(QListViewItem *))); 340 this,SLOT(defaultItemAction(QListViewItem *)));
327 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, 341 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *,
328 const QPoint &, int )), 342 const QPoint &, int )),
329 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 343 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
330 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 344 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
331 SLOT(processSelectionChange(QListViewItem *))); 345 SLOT(processSelectionChange(QListViewItem *)));
@@ -677,96 +691,117 @@ void KOListView::writeToFile( bool iCal )
677 if ( fn.right( 4 ).lower() == ".vcs" ) { 691 if ( fn.right( 4 ).lower() == ".vcs" ) {
678 fn = fn.left( fn.length() -3) + "ics"; 692 fn = fn.left( fn.length() -3) + "ics";
679 } 693 }
680 } else { 694 } else {
681 if ( fn.right( 4 ).lower() == ".ics" ) { 695 if ( fn.right( 4 ).lower() == ".ics" ) {
682 fn = fn.left( fn.length() -3) + "vcs"; 696 fn = fn.left( fn.length() -3) + "vcs";
683 } 697 }
684 } 698 }
685 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 699 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
686 700
687 if ( fn == "" ) 701 if ( fn == "" )
688 return; 702 return;
689 QFileInfo info; 703 QFileInfo info;
690 info.setFile( fn ); 704 info.setFile( fn );
691 QString mes; 705 QString mes;
692 bool createbup = true; 706 bool createbup = true;
693 if ( info. exists() ) { 707 if ( info. exists() ) {
694 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 708 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
695 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 709 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
696 i18n("Overwrite!"), i18n("Cancel"), 0, 710 i18n("Overwrite!"), i18n("Cancel"), 0,
697 0, 1 ); 711 0, 1 );
698 if ( result != 0 ) { 712 if ( result != 0 ) {
699 createbup = false; 713 createbup = false;
700 } 714 }
701 } 715 }
702 if ( createbup ) { 716 if ( createbup ) {
703 CalendarLocal cal; 717 CalendarLocal cal;
704 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 718 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
705 Incidence *incidence = delSel.first(); 719 Incidence *incidence = delSel.first();
706 while ( incidence ) { 720 while ( incidence ) {
707 cal.addIncidence( incidence->clone() ); 721 cal.addIncidence( incidence->clone() );
708 incidence = delSel.next(); 722 incidence = delSel.next();
709 } 723 }
710 if ( iCal ) { 724 if ( iCal ) {
711 ICalFormat format; 725 ICalFormat format;
712 format.save( &cal, fn ); 726 format.save( &cal, fn );
713 } else { 727 } else {
714 728
715 VCalFormat format; 729 VCalFormat format;
716 format.save( &cal, fn ); 730 format.save( &cal, fn );
717 } 731 }
718 mes = i18n("KO/Pi:Saved %1").arg(fn ); 732 mes = i18n("KO/Pi:Saved %1").arg(fn );
719 KOPrefs::instance()->mLastSaveFile = fn; 733 KOPrefs::instance()->mLastSaveFile = fn;
720 topLevelWidget()->setCaption(mes); 734 topLevelWidget()->setCaption(mes);
721 } 735 }
722 } 736 }
723 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 737 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
724} 738}
739void KOListView::hideAll()
740{
741 QPtrList<QListViewItem> delSel ;
742 QListViewItem *item = mListView->firstChild ();
743 while ( item ) {
744 if ( item->isSelected() ) {
745 delSel.append(item);
746 }
747 item = item->nextSibling();
748 }
749 item = delSel.first() ;
750 while ( item ) {
751 QListViewItem * del = item;
752 item = delSel.next();
753 delete del;
754 }
755}
756void KOListView::printList()
757{
758 mListView->printList();
759}
725void KOListView::deleteAll() 760void KOListView::deleteAll()
726{ 761{
727 int icount = 0; 762 int icount = 0;
728 QPtrList<Incidence> delSel ; 763 QPtrList<Incidence> delSel ;
729 QListViewItem *item = mListView->firstChild (); 764 QListViewItem *item = mListView->firstChild ();
730 while ( item ) { 765 while ( item ) {
731 if ( item->isSelected() ) { 766 if ( item->isSelected() ) {
732 delSel.append(((KOListViewItem *)item)->data()); 767 delSel.append(((KOListViewItem *)item)->data());
733 ++icount; 768 ++icount;
734 } 769 }
735 770
736 item = item->nextSibling(); 771 item = item->nextSibling();
737 } 772 }
738 if ( icount ) { 773 if ( icount ) {
739 Incidence *incidence = delSel.first(); 774 Incidence *incidence = delSel.first();
740 Incidence *toDelete; 775 Incidence *toDelete;
741 KOPrefs *p = KOPrefs::instance(); 776 KOPrefs *p = KOPrefs::instance();
742 bool confirm = p->mConfirm; 777 bool confirm = p->mConfirm;
743 QString mess; 778 QString mess;
744 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); 779 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount );
745 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { 780 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) {
746 p->mConfirm = false; 781 p->mConfirm = false;
747 int delCounter = 0; 782 int delCounter = 0;
748 QDialog dia ( this, "p-dialog", true ); 783 QDialog dia ( this, "p-dialog", true );
749 QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); 784 QLabel lab (i18n("Close dialog to abort deletion!"), &dia );
750 QVBoxLayout lay( &dia ); 785 QVBoxLayout lay( &dia );
751 lay.setMargin(7); 786 lay.setMargin(7);
752 lay.setSpacing(7); 787 lay.setSpacing(7);
753 lay.addWidget( &lab); 788 lay.addWidget( &lab);
754 QProgressBar bar( icount, &dia ); 789 QProgressBar bar( icount, &dia );
755 lay.addWidget( &bar); 790 lay.addWidget( &bar);
756 int w = 220; 791 int w = 220;
757 int h = 50; 792 int h = 50;
758 int dw = QApplication::desktop()->width(); 793 int dw = QApplication::desktop()->width();
759 int dh = QApplication::desktop()->height(); 794 int dh = QApplication::desktop()->height();
760 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 795 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
761 //dia.resize( 240,50 ); 796 //dia.resize( 240,50 );
762 dia.show(); 797 dia.show();
763 798
764 while ( incidence ) { 799 while ( incidence ) {
765 bar.setProgress( delCounter ); 800 bar.setProgress( delCounter );
766 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); 801 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter );
767 dia.setCaption( mess ); 802 dia.setCaption( mess );
768 qApp->processEvents(); 803 qApp->processEvents();
769 toDelete = (incidence); 804 toDelete = (incidence);
770 incidence = delSel.next(); 805 incidence = delSel.next();
771 emit deleteIncidenceSignal(toDelete ); 806 emit deleteIncidenceSignal(toDelete );
772 if ( dia.result() != 0 ) 807 if ( dia.result() != 0 )
@@ -1242,48 +1277,95 @@ void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1242{ 1277{
1243 KListView::contentsMouseMoveEvent(e); 1278 KListView::contentsMouseMoveEvent(e);
1244} 1279}
1245#endif 1280#endif
1246void KOListViewListView::popupMenu() 1281void KOListViewListView::popupMenu()
1247{ 1282{
1248 mPopupTimer->stop(); 1283 mPopupTimer->stop();
1249 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); 1284 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton );
1250 QApplication::postEvent( this->viewport(), e ); 1285 QApplication::postEvent( this->viewport(), e );
1251 1286
1252} 1287}
1253void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1288void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1254{ 1289{
1255 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); 1290 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y());
1256 mYMousePos = mapToGlobal( (e->pos())).y(); 1291 mYMousePos = mapToGlobal( (e->pos())).y();
1257 if ( e->button() == LeftButton ) { 1292 if ( e->button() == LeftButton ) {
1258 mPopupTimer->start( 600 ); 1293 mPopupTimer->start( 600 );
1259 mEventPos = contentsToViewport(e->pos()); 1294 mEventPos = contentsToViewport(e->pos());
1260 mEventGlobalPos = e->globalPos(); 1295 mEventGlobalPos = e->globalPos();
1261 } 1296 }
1262 KListView::contentsMousePressEvent( e ); 1297 KListView::contentsMousePressEvent( e );
1263 if ( e->button() == RightButton ) { 1298 if ( e->button() == RightButton ) {
1264 QListViewItem* ci = currentItem(); 1299 QListViewItem* ci = currentItem();
1265 //clearSelection(); 1300 //clearSelection();
1266 if ( ci ) 1301 if ( ci )
1267 ci->setSelected( true ); 1302 ci->setSelected( true );
1268 } 1303 }
1269} 1304}
1270void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1305void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1271{ 1306{
1272 mPopupTimer->stop(); 1307 mPopupTimer->stop();
1273 KListView::contentsMouseReleaseEvent(e); 1308 KListView::contentsMouseReleaseEvent(e);
1274} 1309}
1275void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1310void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1276{ 1311{
1277 // qDebug("contentsMouseMoveEv....... "); 1312 // qDebug("contentsMouseMoveEv....... ");
1278 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); 1313 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() );
1279 int diff = mYMousePos - mapToGlobal( (e->pos())).y(); 1314 int diff = mYMousePos - mapToGlobal( (e->pos())).y();
1280 if ( diff < 0 ) diff = -diff; 1315 if ( diff < 0 ) diff = -diff;
1281 if ( diff > 15 ) 1316 if ( diff > 15 )
1282 mPopupTimer->stop(); 1317 mPopupTimer->stop();
1283 else { 1318 else {
1284 mEventPos = contentsToViewport(e->pos()); 1319 mEventPos = contentsToViewport(e->pos());
1285 mEventGlobalPos = e->globalPos(); 1320 mEventGlobalPos = e->globalPos();
1286 } 1321 }
1287 KListView::contentsMouseMoveEvent(e); 1322 KListView::contentsMouseMoveEvent(e);
1288} 1323}
1289 1324
1325#define protected public
1326#include <qheader.h>
1327#undef protected
1328void KOListViewListView::printList()
1329{
1330#ifdef DESKTOP_VERSION
1331 KOPrintPrefs pp ( this );
1332 if (!pp.exec() )
1333 return;
1334 int scaleval = pp.printMode() ;
1335
1336 QPrinter printer;
1337 if (!printer.setup() )
1338 return;
1339 clearSelection ();
1340 QPainter p;
1341 p.begin ( &printer );
1342 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
1343 float dx, dy;
1344 int wid = (m.width() * 9)/10;
1345 dx = (float) wid/(float)contentsWidth ();
1346 dy = (float)(m.height()) / (float)contentsHeight ();
1347 float scale;
1348 // scale to fit the width or height of the paper
1349 if ( dx < dy )
1350 scale = dx;
1351 else
1352 scale = dy;
1353
1354 p.translate( m.width()/10,m.width()/10 );
1355 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
1356 p.scale( scale, scale );
1357 }
1358
1359 int cou = header()->count();
1360 int iii;
1361 QRect rect ( 0,0,0, header()->height());
1362 for ( iii = 0; iii < cou; ++iii ) {
1363 rect.setLeft ( header()->sectionPos( iii ) );
1364 rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii));
1365 header()->paintSection ( & p, header()->mapToIndex (iii), rect );
1366 }
1367 p.translate( 0, header()->height());
1368 drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () );
1369 p.end();
1370#endif
1371}
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index f4d6879..c25592d 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -171,144 +171,147 @@ void pickAlarmProgram()
171 171
172}; 172};
173 173
174 174
175 175
176 176
177 177
178 178
179 179
180typedef CustomListViewItem<Incidence *> KOListViewItem; 180typedef CustomListViewItem<Incidence *> KOListViewItem;
181 181
182/** 182/**
183 This class provides the initialisation of a KOListViewItem for calendar 183 This class provides the initialisation of a KOListViewItem for calendar
184 components using the Incidence::Visitor. 184 components using the Incidence::Visitor.
185*/ 185*/
186class ListItemVisitor : public Incidence::Visitor 186class ListItemVisitor : public Incidence::Visitor
187{ 187{
188 public: 188 public:
189 ListItemVisitor(KOListViewItem *, QDate d); 189 ListItemVisitor(KOListViewItem *, QDate d);
190 ~ListItemVisitor(); 190 ~ListItemVisitor();
191 191
192 bool visit(Event *); 192 bool visit(Event *);
193 bool visit(Todo *); 193 bool visit(Todo *);
194 bool visit(Journal *); 194 bool visit(Journal *);
195 195
196 private: 196 private:
197 KOListViewItem *mItem; 197 KOListViewItem *mItem;
198 QDate mDate; 198 QDate mDate;
199}; 199};
200 200
201/** 201/**
202 This class provides a multi-column list view of events. It can 202 This class provides a multi-column list view of events. It can
203 display events from one particular day or several days, it doesn't 203 display events from one particular day or several days, it doesn't
204 matter. To use a view that only handles one day at a time, use 204 matter. To use a view that only handles one day at a time, use
205 KODayListView. 205 KODayListView.
206 206
207 @short multi-column list view of various events. 207 @short multi-column list view of various events.
208 @author Preston Brown <pbrown@kde.org> 208 @author Preston Brown <pbrown@kde.org>
209 @see KOBaseView, KODayListView 209 @see KOBaseView, KODayListView
210*/ 210*/
211class KOListView; 211class KOListView;
212 212
213class KOListViewListView : public KListView 213class KOListViewListView : public KListView
214{ 214{
215 Q_OBJECT 215 Q_OBJECT
216 public: 216 public:
217 KOListViewListView(KOListView * lv ); 217 KOListViewListView(KOListView * lv );
218 bool hasMultiSelection(QListViewItem*); 218 bool hasMultiSelection(QListViewItem*);
219 void printList();
219 signals: 220 signals:
220 void newEvent(); 221 void newEvent();
221 void showIncidence( Incidence* ); 222 void showIncidence( Incidence* );
222 public slots: 223 public slots:
223 void popupMenu(); 224 void popupMenu();
224 private: 225 private:
225 QPoint mEventPos; 226 QPoint mEventPos;
226 QPoint mEventGlobalPos; 227 QPoint mEventGlobalPos;
227 QTimer* mPopupTimer; 228 QTimer* mPopupTimer;
228 int mYMousePos; 229 int mYMousePos;
229 void keyPressEvent ( QKeyEvent * ) ; 230 void keyPressEvent ( QKeyEvent * ) ;
230 void contentsMouseDoubleClickEvent(QMouseEvent *e); 231 void contentsMouseDoubleClickEvent(QMouseEvent *e);
231 void contentsMousePressEvent(QMouseEvent *e); 232 void contentsMousePressEvent(QMouseEvent *e);
232 void contentsMouseReleaseEvent(QMouseEvent *e); 233 void contentsMouseReleaseEvent(QMouseEvent *e);
233 void contentsMouseMoveEvent(QMouseEvent *e); 234 void contentsMouseMoveEvent(QMouseEvent *e);
234 bool mMouseDown; 235 bool mMouseDown;
235}; 236};
236 237
237class KOListView : public KOEventView 238class KOListView : public KOEventView
238{ 239{
239 Q_OBJECT 240 Q_OBJECT
240 public: 241 public:
241 KOListView(Calendar *calendar, QWidget *parent = 0, 242 KOListView(Calendar *calendar, QWidget *parent = 0,
242 const char *name = 0); 243 const char *name = 0);
243 ~KOListView(); 244 ~KOListView();
244 245
245 virtual int maxDatesHint(); 246 virtual int maxDatesHint();
246 virtual int currentDateCount(); 247 virtual int currentDateCount();
247 virtual QPtrList<Incidence> selectedIncidences(); 248 virtual QPtrList<Incidence> selectedIncidences();
248 virtual DateList selectedDates(); 249 virtual DateList selectedDates();
249 250
250 void showDates(bool show); 251 void showDates(bool show);
251 Incidence* currentItem(); 252 Incidence* currentItem();
252 void addTodos(QPtrList<Todo> eventList); 253 void addTodos(QPtrList<Todo> eventList);
253 void addJournals(QPtrList<Journal> eventList); 254 void addJournals(QPtrList<Journal> eventList);
254 virtual void printPreview(CalPrinter *calPrinter, 255 virtual void printPreview(CalPrinter *calPrinter,
255 const QDate &, const QDate &); 256 const QDate &, const QDate &);
256 257
257 void readSettings(KConfig *config, QString setting = "KOListView Layout"); 258 void readSettings(KConfig *config, QString setting = "KOListView Layout");
258 void writeSettings(KConfig *config, QString setting = "KOListView Layout"); 259 void writeSettings(KConfig *config, QString setting = "KOListView Layout");
259 void updateList(); 260 void updateList();
260 void clearList(); 261 void clearList();
261 void setStartDate(const QDate &start); 262 void setStartDate(const QDate &start);
262 int count(); 263 int count();
263 QString getWhatsThisText(QPoint p); 264 QString getWhatsThisText(QPoint p);
264 signals: 265 signals:
265 void signalNewEvent(); 266 void signalNewEvent();
266 void beamIncidenceList(QPtrList<Incidence>); 267 void beamIncidenceList(QPtrList<Incidence>);
267 268
268 public slots: 269 public slots:
270 void hideAll();
271 void printList();
269 void resetFocus(); 272 void resetFocus();
270 virtual void updateView(); 273 virtual void updateView();
271 virtual void showDates(const QDate &start, const QDate &end); 274 virtual void showDates(const QDate &start, const QDate &end);
272 virtual void showEvents(QPtrList<Event> eventList); 275 virtual void showEvents(QPtrList<Event> eventList);
273 void clearSelection(); 276 void clearSelection();
274 void allSelection(); 277 void allSelection();
275 278
276 void clear(); 279 void clear();
277 void beamDone( Ir *ir ); 280 void beamDone( Ir *ir );
278 void showDates(); 281 void showDates();
279 void hideDates(); 282 void hideDates();
280 void deleteAll(); 283 void deleteAll();
281 void saveToFile(); 284 void saveToFile();
282 void saveToFileVCS(); 285 void saveToFileVCS();
283 void saveDescriptionToFile(); 286 void saveDescriptionToFile();
284 void beamSelected(); 287 void beamSelected();
285 void updateConfig(); 288 void updateConfig();
286 void addCat(); 289 void addCat();
287 void setCat(); 290 void setCat();
288 void setAlarm(); 291 void setAlarm();
289 void setCategories( bool removeOld ); 292 void setCategories( bool removeOld );
290 void changeEventDisplay(Event *, int); 293 void changeEventDisplay(Event *, int);
291 294
292 void defaultItemAction(QListViewItem *item); 295 void defaultItemAction(QListViewItem *item);
293 void popupMenu(QListViewItem *item,const QPoint &,int); 296 void popupMenu(QListViewItem *item,const QPoint &,int);
294 297
295 protected slots: 298 protected slots:
296 void processSelectionChange(QListViewItem *); 299 void processSelectionChange(QListViewItem *);
297 300
298 protected: 301 protected:
299 void writeToFile( bool iCal ); 302 void writeToFile( bool iCal );
300 void addEvents(QPtrList<Event> eventList); 303 void addEvents(QPtrList<Event> eventList);
301 void addIncidence(Incidence *); 304 void addIncidence(Incidence *);
302 KOListViewItem *getItemForEvent(Event *event); 305 KOListViewItem *getItemForEvent(Event *event);
303 306
304 private: 307 private:
305 KOListViewWhatsThis *mKOListViewWhatsThis; 308 KOListViewWhatsThis *mKOListViewWhatsThis;
306 KOListViewListView *mListView; 309 KOListViewListView *mListView;
307 KOEventPopupMenu *mPopupMenu; 310 KOEventPopupMenu *mPopupMenu;
308 KOListViewItem *mActiveItem; 311 KOListViewItem *mActiveItem;
309 QDict<Incidence> mUidDict; 312 QDict<Incidence> mUidDict;
310 QDate mStartDate; 313 QDate mStartDate;
311 void keyPressEvent ( QKeyEvent * ) ; 314 void keyPressEvent ( QKeyEvent * ) ;
312}; 315};
313 316
314#endif 317#endif
diff --git a/version b/version
index 3a546e2..f3e46b1 100644
--- a/version
+++ b/version
@@ -1 +1 @@
version = "2.1.5"; version = "2.1.6";