summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-06-07 20:23:54 (UTC)
committer zautrix <zautrix>2005-06-07 20:23:54 (UTC)
commit041729646fdaabd2ed69b4fc77c839efa81a7d2e (patch) (unidiff)
tree82c78d5c25d18a79a8ae76aabf75ea40b91c26f2 /korganizer
parentaa9a9368a7b38e34118b65a4e8efa7ea7ec0e8e4 (diff)
downloadkdepimpi-041729646fdaabd2ed69b4fc77c839efa81a7d2e.zip
kdepimpi-041729646fdaabd2ed69b4fc77c839efa81a7d2e.tar.gz
kdepimpi-041729646fdaabd2ed69b4fc77c839efa81a7d2e.tar.bz2
print list added to kopi
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kolistview.cpp82
-rw-r--r--korganizer/kolistview.h3
2 files changed, 85 insertions, 0 deletions
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