summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeventpopupmenu.cpp27
-rw-r--r--korganizer/koeventpopupmenu.h3
-rw-r--r--korganizer/kolistview.cpp12
-rw-r--r--korganizer/kolistview.h1
4 files changed, 38 insertions, 5 deletions
diff --git a/korganizer/koeventpopupmenu.cpp b/korganizer/koeventpopupmenu.cpp
index b274810..17ef81e 100644
--- a/korganizer/koeventpopupmenu.cpp
+++ b/korganizer/koeventpopupmenu.cpp
@@ -1,113 +1,130 @@
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 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 <qcursor.h> 24#include <qcursor.h>
25 25
26#include <klocale.h> 26#include <klocale.h>
27#include <kdebug.h> 27#include <kdebug.h>
28#include <kiconloader.h> 28#include <kiconloader.h>
29 29
30#include <libkcal/event.h> 30#include <libkcal/event.h>
31 31
32#include "koeventpopupmenu.h" 32#include "koeventpopupmenu.h"
33 33
34KOEventPopupMenu::KOEventPopupMenu() 34KOEventPopupMenu::KOEventPopupMenu()
35{ 35{
36 mCurrentIncidence = 0; 36 mCurrentIncidence = 0;
37 mHasAdditionalItems = false; 37 mHasAdditionalItems = false;
38 38
39 insertItem (i18n("&Show"),this,SLOT(popupShow())); 39
40 mSingleOnlyItems.append( insertItem (i18n("&Show"),this,SLOT(popupShow())));
40 mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit()))); 41 mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit())));
41 mEditOnlyItems.append(insertItem (i18n("&Delete"), 42 mEditOnlyItems.append(insertItem (i18n("&Delete"),
42 this,SLOT(popupDelete()))); 43 this,SLOT(popupDelete())));
43 mEditOnlyItems.append(insertItem (i18n("&Clone..."), 44 mEditOnlyItems.append(insertItem (i18n("&Clone..."),
44 this,SLOT(popupClone()))); 45 this,SLOT(popupClone())));
45 mEditOnlyItems.append(insertItem (i18n("&Move..."), 46 mEditOnlyItems.append(insertItem (i18n("&Move..."),
46 this,SLOT(popupMove()))); 47 this,SLOT(popupMove())));
47#ifndef DESKTOP_VERSION 48#ifndef DESKTOP_VERSION
48 mEditOnlyItems.append(insertItem (i18n("&Beam..."), 49 mEditOnlyItems.append(insertItem (i18n("&Beam..."),
49 this,SLOT(popupBeam()))); 50 this,SLOT(popupBeam())));
50#endif 51#endif
51 mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"), 52 mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"),
52 this,SLOT(popupCancel()))); 53 this,SLOT(popupCancel())));
54 isDisabled = false;
55 QValueList<int>::Iterator it;
56 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
57 mSingleOnlyItems.append(*it);
58 }
59}
60void KOEventPopupMenu::enableDefault( bool enable )
61{
62 isDisabled = !enable;
63 QValueList<int>::Iterator it;
64 for( it = mSingleOnlyItems.begin(); it != mSingleOnlyItems.end(); ++it ) {
65 setItemEnabled(*it,enable);
66 }
67
53} 68}
54 69
55void KOEventPopupMenu::showIncidencePopup(Incidence *incidence) 70void KOEventPopupMenu::showIncidencePopup(Incidence *incidence)
56{ 71{
57 mCurrentIncidence = incidence; 72 mCurrentIncidence = incidence;
58 73
59 if (mCurrentIncidence) { 74 if (mCurrentIncidence) {
60 // Enable/Disabled menu items only valid for editable events. 75 // Enable/Disabled menu items only valid for editable events.
61 QValueList<int>::Iterator it; 76 if ( !isDisabled ) {
62 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { 77 QValueList<int>::Iterator it;
63 setItemEnabled(*it,!mCurrentIncidence->isReadOnly()); 78 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
64 } 79 setItemEnabled(*it,!mCurrentIncidence->isReadOnly());
80 }
81 }
65 popup(QCursor::pos()); 82 popup(QCursor::pos());
66 } else { 83 } else {
67 kdDebug() << "KOEventPopupMenu::showEventPopup(): No event selected" << endl; 84 kdDebug() << "KOEventPopupMenu::showEventPopup(): No event selected" << endl;
68 } 85 }
69} 86}
70 87
71void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text, 88void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text,
72 const QObject *receiver, const char *member, 89 const QObject *receiver, const char *member,
73 bool editOnly) 90 bool editOnly)
74{ 91{
75 if (!mHasAdditionalItems) { 92 if (!mHasAdditionalItems) {
76 mHasAdditionalItems = true; 93 mHasAdditionalItems = true;
77 insertSeparator(); 94 insertSeparator();
78 } 95 }
79 int id = insertItem(icon,text,receiver,member); 96 int id = insertItem(icon,text,receiver,member);
80 if (editOnly) mEditOnlyItems.append(id); 97 if (editOnly) mEditOnlyItems.append(id);
81} 98}
82 99
83void KOEventPopupMenu::popupShow() 100void KOEventPopupMenu::popupShow()
84{ 101{
85 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence); 102 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence);
86} 103}
87 104
88void KOEventPopupMenu::popupEdit() 105void KOEventPopupMenu::popupEdit()
89{ 106{
90 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence); 107 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence);
91} 108}
92 109
93void KOEventPopupMenu::popupDelete() 110void KOEventPopupMenu::popupDelete()
94{ 111{
95 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence); 112 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence);
96} 113}
97void KOEventPopupMenu::popupClone() 114void KOEventPopupMenu::popupClone()
98{ 115{
99 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence); 116 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence);
100} 117}
101void KOEventPopupMenu::popupCancel() 118void KOEventPopupMenu::popupCancel()
102{ 119{
103 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence); 120 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence);
104} 121}
105void KOEventPopupMenu::popupMove() 122void KOEventPopupMenu::popupMove()
106{ 123{
107 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence); 124 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence);
108} 125}
109 126
110void KOEventPopupMenu::popupBeam() 127void KOEventPopupMenu::popupBeam()
111{ 128{
112 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence); 129 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence);
113} 130}
diff --git a/korganizer/koeventpopupmenu.h b/korganizer/koeventpopupmenu.h
index 6993899..8fb51fa 100644
--- a/korganizer/koeventpopupmenu.h
+++ b/korganizer/koeventpopupmenu.h
@@ -1,73 +1,76 @@
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 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOEVENTPOPUPMENU_H 23#ifndef KOEVENTPOPUPMENU_H
24#define KOEVENTPOPUPMENU_H 24#define KOEVENTPOPUPMENU_H
25// 25//
26// Context menu for event views with standard event actions 26// Context menu for event views with standard event actions
27// 27//
28 28
29#include <qpopupmenu.h> 29#include <qpopupmenu.h>
30 30
31#include <libkcal/incidence.h> 31#include <libkcal/incidence.h>
32 32
33using namespace KCal; 33using namespace KCal;
34 34
35class KOEventPopupMenu : public QPopupMenu { 35class KOEventPopupMenu : public QPopupMenu {
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 KOEventPopupMenu(); 38 KOEventPopupMenu();
39 39
40 void addAdditionalItem(const QIconSet &icon,const QString &text, 40 void addAdditionalItem(const QIconSet &icon,const QString &text,
41 const QObject *receiver, const char *member, 41 const QObject *receiver, const char *member,
42 bool editOnly=false); 42 bool editOnly=false);
43 43
44 44
45 public slots: 45 public slots:
46 void showIncidencePopup(Incidence *); 46 void showIncidencePopup(Incidence *);
47 void enableDefault( bool );
47 48
48 protected slots: 49 protected slots:
49 void popupShow(); 50 void popupShow();
50 void popupEdit(); 51 void popupEdit();
51 void popupDelete(); 52 void popupDelete();
52 void popupClone(); 53 void popupClone();
53 void popupCancel(); 54 void popupCancel();
54 void popupMove(); 55 void popupMove();
55 void popupBeam(); 56 void popupBeam();
56 57
57 signals: 58 signals:
58 void editIncidenceSignal(Incidence *); 59 void editIncidenceSignal(Incidence *);
59 void showIncidenceSignal(Incidence *); 60 void showIncidenceSignal(Incidence *);
60 void deleteIncidenceSignal(Incidence *); 61 void deleteIncidenceSignal(Incidence *);
61 void cloneIncidenceSignal(Incidence *); 62 void cloneIncidenceSignal(Incidence *);
62 void cancelIncidenceSignal(Incidence *); 63 void cancelIncidenceSignal(Incidence *);
63 void moveIncidenceSignal(Incidence *); 64 void moveIncidenceSignal(Incidence *);
64 void beamIncidenceSignal(Incidence *); 65 void beamIncidenceSignal(Incidence *);
65 66
66 private: 67 private:
67 Incidence *mCurrentIncidence; 68 Incidence *mCurrentIncidence;
68 69
69 bool mHasAdditionalItems; 70 bool mHasAdditionalItems;
70 QValueList<int> mEditOnlyItems; 71 QValueList<int> mEditOnlyItems;
72 QValueList<int> mSingleOnlyItems;
73 bool isDisabled;
71}; 74};
72 75
73#endif 76#endif
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index b94916a..02247c8 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -814,460 +814,472 @@ DateList KOListView::selectedDates()
814void KOListView::showDates(bool show) 814void KOListView::showDates(bool show)
815{ 815{
816 // Shouldn't we set it to a value greater 0? When showDates is called with 816 // Shouldn't we set it to a value greater 0? When showDates is called with
817 // show == true at first, then the columnwidths are set to zero. 817 // show == true at first, then the columnwidths are set to zero.
818 static int oldColWidth1 = 0; 818 static int oldColWidth1 = 0;
819 static int oldColWidth3 = 0; 819 static int oldColWidth3 = 0;
820 820
821 if (!show) { 821 if (!show) {
822 oldColWidth1 = mListView->columnWidth(1); 822 oldColWidth1 = mListView->columnWidth(1);
823 oldColWidth3 = mListView->columnWidth(3); 823 oldColWidth3 = mListView->columnWidth(3);
824 mListView->setColumnWidth(1, 0); 824 mListView->setColumnWidth(1, 0);
825 mListView->setColumnWidth(3, 0); 825 mListView->setColumnWidth(3, 0);
826 } else { 826 } else {
827 mListView->setColumnWidth(1, oldColWidth1); 827 mListView->setColumnWidth(1, oldColWidth1);
828 mListView->setColumnWidth(3, oldColWidth3); 828 mListView->setColumnWidth(3, oldColWidth3);
829 } 829 }
830 mListView->repaint(); 830 mListView->repaint();
831} 831}
832 832
833void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 833void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd,
834 const QDate &td) 834 const QDate &td)
835{ 835{
836#ifndef KORG_NOPRINTER 836#ifndef KORG_NOPRINTER
837 calPrinter->preview(CalPrinter::Day, fd, td); 837 calPrinter->preview(CalPrinter::Day, fd, td);
838#endif 838#endif
839} 839}
840 840
841void KOListView::showDates() 841void KOListView::showDates()
842{ 842{
843 showDates(true); 843 showDates(true);
844} 844}
845 845
846void KOListView::hideDates() 846void KOListView::hideDates()
847{ 847{
848 showDates(false); 848 showDates(false);
849} 849}
850 850
851void KOListView::resetFocus() 851void KOListView::resetFocus()
852{ 852{
853 topLevelWidget()->setActiveWindow(); 853 topLevelWidget()->setActiveWindow();
854 topLevelWidget()->raise(); 854 topLevelWidget()->raise();
855 mListView->setFocus(); 855 mListView->setFocus();
856} 856}
857void KOListView::updateView() 857void KOListView::updateView()
858{ 858{
859 mListView->setFocus(); 859 mListView->setFocus();
860 if ( mListView->firstChild () ) 860 if ( mListView->firstChild () )
861 mListView->setCurrentItem( mListView->firstChild () ); 861 mListView->setCurrentItem( mListView->firstChild () );
862} 862}
863void KOListView::updateConfig() 863void KOListView::updateConfig()
864{ 864{
865 865
866 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 866 mListView->setFont ( KOPrefs::instance()->mListViewFont );
867 updateView(); 867 updateView();
868 868
869} 869}
870void KOListView::setStartDate(const QDate &start) 870void KOListView::setStartDate(const QDate &start)
871{ 871{
872 mStartDate = start; 872 mStartDate = start;
873} 873}
874 874
875void KOListView::showDates(const QDate &start, const QDate &end) 875void KOListView::showDates(const QDate &start, const QDate &end)
876{ 876{
877 clear(); 877 clear();
878 mStartDate = start; 878 mStartDate = start;
879 QDate date = start; 879 QDate date = start;
880 QPtrList<Journal> j_list; 880 QPtrList<Journal> j_list;
881 while( date <= end ) { 881 while( date <= end ) {
882 addEvents(calendar()->events(date)); 882 addEvents(calendar()->events(date));
883 addTodos(calendar()->todos(date)); 883 addTodos(calendar()->todos(date));
884 Journal* jo = calendar()->journal(date); 884 Journal* jo = calendar()->journal(date);
885 if ( jo ) 885 if ( jo )
886 j_list.append( jo ); 886 j_list.append( jo );
887 date = date.addDays( 1 ); 887 date = date.addDays( 1 );
888 } 888 }
889 addJournals(j_list); 889 addJournals(j_list);
890 emit incidenceSelected( 0 ); 890 emit incidenceSelected( 0 );
891 updateView(); 891 updateView();
892 892
893} 893}
894 894
895void KOListView::addEvents(QPtrList<Event> eventList) 895void KOListView::addEvents(QPtrList<Event> eventList)
896{ 896{
897 897
898 Event *ev; 898 Event *ev;
899 for(ev = eventList.first(); ev; ev = eventList.next()) { 899 for(ev = eventList.first(); ev; ev = eventList.next()) {
900 addIncidence(ev); 900 addIncidence(ev);
901 } 901 }
902 if ( !mListView->currentItem() ){ 902 if ( !mListView->currentItem() ){
903 updateView(); 903 updateView();
904 } 904 }
905} 905}
906 906
907void KOListView::addTodos(QPtrList<Todo> eventList) 907void KOListView::addTodos(QPtrList<Todo> eventList)
908{ 908{
909 Todo *ev; 909 Todo *ev;
910 for(ev = eventList.first(); ev; ev = eventList.next()) { 910 for(ev = eventList.first(); ev; ev = eventList.next()) {
911 addIncidence(ev); 911 addIncidence(ev);
912 } 912 }
913 if ( !mListView->currentItem() ){ 913 if ( !mListView->currentItem() ){
914 updateView(); 914 updateView();
915 } 915 }
916} 916}
917void KOListView::addJournals(QPtrList<Journal> eventList) 917void KOListView::addJournals(QPtrList<Journal> eventList)
918{ 918{
919 Journal *ev; 919 Journal *ev;
920 for(ev = eventList.first(); ev; ev = eventList.next()) { 920 for(ev = eventList.first(); ev; ev = eventList.next()) {
921 addIncidence(ev); 921 addIncidence(ev);
922 } 922 }
923 if ( !mListView->currentItem() ){ 923 if ( !mListView->currentItem() ){
924 updateView(); 924 updateView();
925 } 925 }
926} 926}
927 927
928void KOListView::addIncidence(Incidence *incidence) 928void KOListView::addIncidence(Incidence *incidence)
929{ 929{
930 if ( mUidDict.find( incidence->uid() ) ) return; 930 if ( mUidDict.find( incidence->uid() ) ) return;
931 931
932 // mListView->setFont ( KOPrefs::instance()->mListViewFont ); 932 // mListView->setFont ( KOPrefs::instance()->mListViewFont );
933 mUidDict.insert( incidence->uid(), incidence ); 933 mUidDict.insert( incidence->uid(), incidence );
934 KOListViewItem *item = new KOListViewItem( incidence, mListView ); 934 KOListViewItem *item = new KOListViewItem( incidence, mListView );
935 ListItemVisitor v(item, mStartDate ); 935 ListItemVisitor v(item, mStartDate );
936 if (incidence->accept(v)) { 936 if (incidence->accept(v)) {
937 return; 937 return;
938 } 938 }
939 else delete item; 939 else delete item;
940} 940}
941 941
942void KOListView::showEvents(QPtrList<Event> eventList) 942void KOListView::showEvents(QPtrList<Event> eventList)
943{ 943{
944 clear(); 944 clear();
945 945
946 addEvents(eventList); 946 addEvents(eventList);
947 947
948 // After new creation of list view no events are selected. 948 // After new creation of list view no events are selected.
949 emit incidenceSelected( 0 ); 949 emit incidenceSelected( 0 );
950} 950}
951int KOListView::count() 951int KOListView::count()
952{ 952{
953 return mListView->childCount(); 953 return mListView->childCount();
954} 954}
955 955
956void KOListView::changeEventDisplay(Event *event, int action) 956void KOListView::changeEventDisplay(Event *event, int action)
957{ 957{
958 KOListViewItem *item; 958 KOListViewItem *item;
959 959
960 switch(action) { 960 switch(action) {
961 case KOGlobals::EVENTADDED: 961 case KOGlobals::EVENTADDED:
962 addIncidence( event ); 962 addIncidence( event );
963 break; 963 break;
964 case KOGlobals::EVENTEDITED: 964 case KOGlobals::EVENTEDITED:
965 item = getItemForEvent(event); 965 item = getItemForEvent(event);
966 if (item) { 966 if (item) {
967 mUidDict.remove( event->uid() ); 967 mUidDict.remove( event->uid() );
968 delete item; 968 delete item;
969 addIncidence( event ); 969 addIncidence( event );
970 } 970 }
971 break; 971 break;
972 case KOGlobals::EVENTDELETED: 972 case KOGlobals::EVENTDELETED:
973 item = getItemForEvent(event); 973 item = getItemForEvent(event);
974 if (item) { 974 if (item) {
975 mUidDict.remove( event->uid() ); 975 mUidDict.remove( event->uid() );
976 delete item; 976 delete item;
977 } 977 }
978 break; 978 break;
979 default: 979 default:
980 ; 980 ;
981 } 981 }
982} 982}
983 983
984KOListViewItem *KOListView::getItemForEvent(Event *event) 984KOListViewItem *KOListView::getItemForEvent(Event *event)
985{ 985{
986 KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); 986 KOListViewItem *item = (KOListViewItem *)mListView->firstChild();
987 while (item) { 987 while (item) {
988 if (item->data() == event) return item; 988 if (item->data() == event) return item;
989 item = (KOListViewItem *)item->nextSibling(); 989 item = (KOListViewItem *)item->nextSibling();
990 } 990 }
991 return 0; 991 return 0;
992} 992}
993 993
994void KOListView::defaultItemAction(QListViewItem *i) 994void KOListView::defaultItemAction(QListViewItem *i)
995{ 995{
996 KOListViewItem *item = static_cast<KOListViewItem *>( i ); 996 KOListViewItem *item = static_cast<KOListViewItem *>( i );
997 if ( item ) defaultAction( item->data() ); 997 if ( item ) defaultAction( item->data() );
998 998
999} 999}
1000 1000
1001void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 1001void KOListView::popupMenu(QListViewItem *item,const QPoint &,int)
1002{ 1002{
1003 mActiveItem = (KOListViewItem *)item; 1003 mActiveItem = (KOListViewItem *)item;
1004 if (mActiveItem) { 1004 if (mActiveItem) {
1005 Incidence *incidence = mActiveItem->data(); 1005 Incidence *incidence = mActiveItem->data();
1006 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) );
1006 mPopupMenu->showIncidencePopup(incidence); 1007 mPopupMenu->showIncidencePopup(incidence);
1007 1008
1008 /* 1009 /*
1009 if ( incidence && incidence->type() == "Event" ) { 1010 if ( incidence && incidence->type() == "Event" ) {
1010 Event *event = static_cast<Event *>( incidence ); 1011 Event *event = static_cast<Event *>( incidence );
1011 mPopupMenu->showEventPopup(event); 1012 mPopupMenu->showEventPopup(event);
1012 } 1013 }
1013 */ 1014 */
1014 } 1015 }
1015} 1016}
1016 1017
1017void KOListView::readSettings(KConfig *config, QString setting) 1018void KOListView::readSettings(KConfig *config, QString setting)
1018{ 1019{
1019 // qDebug("KOListView::readSettings "); 1020 // qDebug("KOListView::readSettings ");
1020 mListView->restoreLayout(config,setting); 1021 mListView->restoreLayout(config,setting);
1021} 1022}
1022 1023
1023void KOListView::writeSettings(KConfig *config, QString setting) 1024void KOListView::writeSettings(KConfig *config, QString setting)
1024{ 1025{
1025 // qDebug("KOListView::writeSettings "); 1026 // qDebug("KOListView::writeSettings ");
1026 mListView->saveLayout(config, setting); 1027 mListView->saveLayout(config, setting);
1027} 1028}
1028 1029
1029void KOListView::processSelectionChange(QListViewItem *) 1030void KOListView::processSelectionChange(QListViewItem *)
1030{ 1031{
1031 1032
1032 KOListViewItem *item = 1033 KOListViewItem *item =
1033 static_cast<KOListViewItem *>( mListView->currentItem() ); 1034 static_cast<KOListViewItem *>( mListView->currentItem() );
1034 1035
1035 if ( !item ) { 1036 if ( !item ) {
1036 emit incidenceSelected( 0 ); 1037 emit incidenceSelected( 0 );
1037 } else { 1038 } else {
1038 emit incidenceSelected( item->data() ); 1039 emit incidenceSelected( item->data() );
1039 } 1040 }
1040} 1041}
1041 1042
1042void KOListView::clearSelection() 1043void KOListView::clearSelection()
1043{ 1044{
1044 mListView->selectAll( false ); 1045 mListView->selectAll( false );
1045} 1046}
1046void KOListView::allSelection() 1047void KOListView::allSelection()
1047{ 1048{
1048 mListView->selectAll( true ); 1049 mListView->selectAll( true );
1049} 1050}
1050 1051
1051void KOListView::clear() 1052void KOListView::clear()
1052{ 1053{
1053 mListView->clear(); 1054 mListView->clear();
1054 mUidDict.clear(); 1055 mUidDict.clear();
1055} 1056}
1056 1057
1057Incidence* KOListView::currentItem() 1058Incidence* KOListView::currentItem()
1058{ 1059{
1059 if ( mListView->currentItem() ) 1060 if ( mListView->currentItem() )
1060 return ((KOListViewItem*) mListView->currentItem())->data(); 1061 return ((KOListViewItem*) mListView->currentItem())->data();
1061 return 0; 1062 return 0;
1062} 1063}
1063void KOListView::keyPressEvent ( QKeyEvent *e) 1064void KOListView::keyPressEvent ( QKeyEvent *e)
1064{ 1065{
1065 1066
1066 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { 1067 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) {
1067 deleteAll(); 1068 deleteAll();
1068 return; 1069 return;
1069 } 1070 }
1070 1071
1071 e->ignore(); 1072 e->ignore();
1072} 1073}
1073void KOListViewListView::keyPressEvent ( QKeyEvent *e) 1074void KOListViewListView::keyPressEvent ( QKeyEvent *e)
1074{ 1075{
1075 1076
1076 switch ( e->key() ) { 1077 switch ( e->key() ) {
1077 case Qt::Key_Down: 1078 case Qt::Key_Down:
1078 if ( e->state() == ShiftButton ) { 1079 if ( e->state() == ShiftButton ) {
1079 QListViewItem* cn = currentItem(); 1080 QListViewItem* cn = currentItem();
1080 if ( !cn ) 1081 if ( !cn )
1081 cn = firstChild(); 1082 cn = firstChild();
1082 if ( !cn ) 1083 if ( !cn )
1083 return; 1084 return;
1084 while ( cn->nextSibling() ) 1085 while ( cn->nextSibling() )
1085 cn = cn->nextSibling(); 1086 cn = cn->nextSibling();
1086 setCurrentItem ( cn ); 1087 setCurrentItem ( cn );
1087 ensureItemVisible ( cn ); 1088 ensureItemVisible ( cn );
1088 1089
1089 e->accept(); 1090 e->accept();
1090 return; 1091 return;
1091 } 1092 }
1092 if ( e->state() == ControlButton ) { 1093 if ( e->state() == ControlButton ) {
1093 int count = childCount (); 1094 int count = childCount ();
1094 int jump = count / 5; 1095 int jump = count / 5;
1095 QListViewItem* cn; 1096 QListViewItem* cn;
1096 cn = currentItem(); 1097 cn = currentItem();
1097 if ( ! cn ) 1098 if ( ! cn )
1098 return; 1099 return;
1099 if ( jump == 0 ) 1100 if ( jump == 0 )
1100 jump = 1; 1101 jump = 1;
1101 while ( jump && cn->nextSibling() ) { 1102 while ( jump && cn->nextSibling() ) {
1102 cn = cn->nextSibling(); 1103 cn = cn->nextSibling();
1103 --jump; 1104 --jump;
1104 } 1105 }
1105 setCurrentItem ( cn ); 1106 setCurrentItem ( cn );
1106 ensureItemVisible ( cn ); 1107 ensureItemVisible ( cn );
1107 1108
1108 } else 1109 } else
1109 QListView::keyPressEvent ( e ) ; 1110 QListView::keyPressEvent ( e ) ;
1110 e->accept(); 1111 e->accept();
1111 break; 1112 break;
1112 1113
1113 case Qt::Key_Up: 1114 case Qt::Key_Up:
1114 if ( e->state() == ShiftButton ) { 1115 if ( e->state() == ShiftButton ) {
1115 QListViewItem* cn = firstChild(); 1116 QListViewItem* cn = firstChild();
1116 if ( cn ) { 1117 if ( cn ) {
1117 setCurrentItem ( cn ); 1118 setCurrentItem ( cn );
1118 ensureItemVisible ( cn ); 1119 ensureItemVisible ( cn );
1119 } 1120 }
1120 e->accept(); 1121 e->accept();
1121 return; 1122 return;
1122 } 1123 }
1123 if ( e->state() == ControlButton ) { 1124 if ( e->state() == ControlButton ) {
1124 int count = childCount (); 1125 int count = childCount ();
1125 int jump = count / 5; 1126 int jump = count / 5;
1126 QListViewItem* cn; 1127 QListViewItem* cn;
1127 cn = currentItem(); 1128 cn = currentItem();
1128 if ( ! cn ) 1129 if ( ! cn )
1129 return; 1130 return;
1130 if ( jump == 0 ) 1131 if ( jump == 0 )
1131 jump = 1; 1132 jump = 1;
1132 while ( jump && cn->itemAbove ()) { 1133 while ( jump && cn->itemAbove ()) {
1133 cn = cn->itemAbove (); 1134 cn = cn->itemAbove ();
1134 --jump; 1135 --jump;
1135 } 1136 }
1136 setCurrentItem ( cn ); 1137 setCurrentItem ( cn );
1137 ensureItemVisible ( cn ); 1138 ensureItemVisible ( cn );
1138 } else 1139 } else
1139 QListView::keyPressEvent ( e ) ; 1140 QListView::keyPressEvent ( e ) ;
1140 e->accept(); 1141 e->accept();
1141 break; 1142 break;
1142 case Qt::Key_I: { 1143 case Qt::Key_I: {
1143 QListViewItem* cn; 1144 QListViewItem* cn;
1144 cn = currentItem(); 1145 cn = currentItem();
1145 if ( cn ) { 1146 if ( cn ) {
1146 KOListViewItem* ci = (KOListViewItem*)( cn ); 1147 KOListViewItem* ci = (KOListViewItem*)( cn );
1147 if ( ci ){ 1148 if ( ci ){
1148 //emit showIncidence( ci->data()); 1149 //emit showIncidence( ci->data());
1149 cn = cn->nextSibling(); 1150 cn = cn->nextSibling();
1150 if ( cn ) { 1151 if ( cn ) {
1151 setCurrentItem ( cn ); 1152 setCurrentItem ( cn );
1152 ensureItemVisible ( cn ); 1153 ensureItemVisible ( cn );
1153 } 1154 }
1154 emit showIncidence( ci->data()); 1155 emit showIncidence( ci->data());
1155 } 1156 }
1156 } 1157 }
1157 e->accept(); 1158 e->accept();
1158 } 1159 }
1159 break; 1160 break;
1160 case Qt::Key_Return: 1161 case Qt::Key_Return:
1161 case Qt::Key_Enter: 1162 case Qt::Key_Enter:
1162 { 1163 {
1163 QListViewItem* cn; 1164 QListViewItem* cn;
1164 cn = currentItem(); 1165 cn = currentItem();
1165 if ( cn ) { 1166 if ( cn ) {
1166 KOListViewItem* ci = (KOListViewItem*)( cn ); 1167 KOListViewItem* ci = (KOListViewItem*)( cn );
1167 if ( ci ){ 1168 if ( ci ){
1168 if ( e->state() == ShiftButton ) 1169 if ( e->state() == ShiftButton )
1169 ci->setSelected( false ); 1170 ci->setSelected( false );
1170 else 1171 else
1171 ci->setSelected( true ); 1172 ci->setSelected( true );
1172 cn = cn->nextSibling(); 1173 cn = cn->nextSibling();
1173 if ( cn ) { 1174 if ( cn ) {
1174 setCurrentItem ( cn ); 1175 setCurrentItem ( cn );
1175 ensureItemVisible ( cn ); 1176 ensureItemVisible ( cn );
1176 } 1177 }
1177 } 1178 }
1178 } 1179 }
1179 e->accept(); 1180 e->accept();
1180 } 1181 }
1181 break; 1182 break;
1182 default: 1183 default:
1183 e->ignore(); 1184 e->ignore();
1184 } 1185 }
1185} 1186}
1186KOListViewListView::KOListViewListView(KOListView * lv ) 1187KOListViewListView::KOListViewListView(KOListView * lv )
1187 : KListView( lv, "kolistlistview", false ) 1188 : KListView( lv, "kolistlistview", false )
1188{ 1189{
1189 mYMousePos = 0; 1190 mYMousePos = 0;
1190 mPopupTimer = new QTimer(this); 1191 mPopupTimer = new QTimer(this);
1191 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); 1192 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu()));
1192#ifndef DESKTOP_VERSION 1193#ifndef DESKTOP_VERSION
1193 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); 1194 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold );
1194#endif 1195#endif
1195 setSelectionMode( QListView::Multi ); 1196 setSelectionMode( QListView::Multi );
1196 setMultiSelection( true); 1197 setMultiSelection( true);
1197} 1198}
1199bool KOListViewListView::hasMultiSelection(QListViewItem* item)
1200{
1201 int selCount = 0;
1202 QListViewItem *qitem = firstChild ();
1203 while ( qitem ) {
1204 if ( qitem->isSelected() && item != qitem )
1205 return true;
1206 qitem = qitem->nextSibling();
1207 }
1208 return false;
1209}
1198void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 1210void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
1199{ 1211{
1200 if (!e) return; 1212 if (!e) return;
1201 QPoint vp = contentsToViewport(e->pos()); 1213 QPoint vp = contentsToViewport(e->pos());
1202 QListViewItem *item = itemAt(vp); 1214 QListViewItem *item = itemAt(vp);
1203 if (!item) { 1215 if (!item) {
1204 emit newEvent(); 1216 emit newEvent();
1205 return; 1217 return;
1206 } 1218 }
1207 KListView::contentsMouseDoubleClickEvent(e); 1219 KListView::contentsMouseDoubleClickEvent(e);
1208} 1220}
1209#if 0 1221#if 0
1210void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1222void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1211{ 1223{
1212 //qDebug("contentsMousePressEvent++++ "); 1224 //qDebug("contentsMousePressEvent++++ ");
1213 KListView::contentsMousePressEvent( e ); 1225 KListView::contentsMousePressEvent( e );
1214 if ( e->button() == RightButton ) { 1226 if ( e->button() == RightButton ) {
1215 QListViewItem* ci = currentItem(); 1227 QListViewItem* ci = currentItem();
1216 clearSelection () ; 1228 clearSelection () ;
1217 if ( ci ) 1229 if ( ci )
1218 ci->setSelected( true ); 1230 ci->setSelected( true );
1219 } 1231 }
1220} 1232}
1221void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1233void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1222{ 1234{
1223 KListView::contentsMouseReleaseEvent(e); 1235 KListView::contentsMouseReleaseEvent(e);
1224} 1236}
1225void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1237void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1226{ 1238{
1227 KListView::contentsMouseMoveEvent(e); 1239 KListView::contentsMouseMoveEvent(e);
1228} 1240}
1229#endif 1241#endif
1230void KOListViewListView::popupMenu() 1242void KOListViewListView::popupMenu()
1231{ 1243{
1232 mPopupTimer->stop(); 1244 mPopupTimer->stop();
1233 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); 1245 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton );
1234 QApplication::postEvent( this->viewport(), e ); 1246 QApplication::postEvent( this->viewport(), e );
1235 1247
1236} 1248}
1237void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1249void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1238{ 1250{
1239 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); 1251 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y());
1240 mYMousePos = mapToGlobal( (e->pos())).y(); 1252 mYMousePos = mapToGlobal( (e->pos())).y();
1241 if ( e->button() == LeftButton ) { 1253 if ( e->button() == LeftButton ) {
1242 mPopupTimer->start( 600 ); 1254 mPopupTimer->start( 600 );
1243 mEventPos = contentsToViewport(e->pos()); 1255 mEventPos = contentsToViewport(e->pos());
1244 mEventGlobalPos = e->globalPos(); 1256 mEventGlobalPos = e->globalPos();
1245 } 1257 }
1246 KListView::contentsMousePressEvent( e ); 1258 KListView::contentsMousePressEvent( e );
1247 if ( e->button() == RightButton ) { 1259 if ( e->button() == RightButton ) {
1248 QListViewItem* ci = currentItem(); 1260 QListViewItem* ci = currentItem();
1249 //clearSelection(); 1261 //clearSelection();
1250 if ( ci ) 1262 if ( ci )
1251 ci->setSelected( true ); 1263 ci->setSelected( true );
1252 } 1264 }
1253} 1265}
1254void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1266void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1255{ 1267{
1256 mPopupTimer->stop(); 1268 mPopupTimer->stop();
1257 KListView::contentsMouseReleaseEvent(e); 1269 KListView::contentsMouseReleaseEvent(e);
1258} 1270}
1259void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1271void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1260{ 1272{
1261 // qDebug("contentsMouseMoveEv....... "); 1273 // qDebug("contentsMouseMoveEv....... ");
1262 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); 1274 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() );
1263 int diff = mYMousePos - mapToGlobal( (e->pos())).y(); 1275 int diff = mYMousePos - mapToGlobal( (e->pos())).y();
1264 if ( diff < 0 ) diff = -diff; 1276 if ( diff < 0 ) diff = -diff;
1265 if ( diff > 15 ) 1277 if ( diff > 15 )
1266 mPopupTimer->stop(); 1278 mPopupTimer->stop();
1267 else { 1279 else {
1268 mEventPos = contentsToViewport(e->pos()); 1280 mEventPos = contentsToViewport(e->pos());
1269 mEventGlobalPos = e->globalPos(); 1281 mEventGlobalPos = e->globalPos();
1270 } 1282 }
1271 KListView::contentsMouseMoveEvent(e); 1283 KListView::contentsMouseMoveEvent(e);
1272} 1284}
1273 1285
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index 2051d60..dee69f6 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -26,287 +26,288 @@
26 26
27#include <qlistview.h> 27#include <qlistview.h>
28#include <qmap.h> 28#include <qmap.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include <klistview.h> 31#include <klistview.h>
32 32
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/incidence.h> 38#include <libkcal/incidence.h>
39 39
40#include "koeventview.h" 40#include "koeventview.h"
41#include "customlistviewitem.h" 41#include "customlistviewitem.h"
42 42
43using namespace KCal; 43using namespace KCal;
44 44
45class KOListViewWhatsThis; 45class KOListViewWhatsThis;
46 46
47#include <qpushbutton.h> 47#include <qpushbutton.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qdialog.h> 49#include <qdialog.h>
50#include <qtimer.h> 50#include <qtimer.h>
51#include <qcombobox.h> 51#include <qcombobox.h>
52#include <qspinbox.h> 52#include <qspinbox.h>
53#include <qtooltip.h> 53#include <qtooltip.h>
54#include <qcheckbox.h> 54#include <qcheckbox.h>
55#include <qhbox.h> 55#include <qhbox.h>
56#include <qlabel.h> 56#include <qlabel.h>
57#include <kiconloader.h> 57#include <kiconloader.h>
58#include "kfiledialog.h" 58#include "kfiledialog.h"
59#include "koprefs.h" 59#include "koprefs.h"
60class KOAlarmPrefs : public QDialog 60class KOAlarmPrefs : public QDialog
61{ 61{
62 Q_OBJECT 62 Q_OBJECT
63 public: 63 public:
64 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) : 64 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) :
65 QDialog( par, name, true ) 65 QDialog( par, name, true )
66 { 66 {
67 setCaption( i18n("Alarm Options") ); 67 setCaption( i18n("Alarm Options") );
68 QVBoxLayout* alarmLayout = new QVBoxLayout( this ); 68 QVBoxLayout* alarmLayout = new QVBoxLayout( this );
69 alarmLayout->setSpacing( 3 ); 69 alarmLayout->setSpacing( 3 );
70 alarmLayout->setMargin( 3 ); 70 alarmLayout->setMargin( 3 );
71 QWidget *parent = this; 71 QWidget *parent = this;
72 mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent); 72 mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent);
73 alarmLayout->addWidget(mAlarmButton); 73 alarmLayout->addWidget(mAlarmButton);
74 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; 74 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
75 mAlarmTimeEdit->setValue( 15 ); 75 mAlarmTimeEdit->setValue( 15 );
76 alarmLayout->addWidget(mAlarmTimeEdit); 76 alarmLayout->addWidget(mAlarmTimeEdit);
77 mAlarmIncrCombo = new QComboBox(false, parent); 77 mAlarmIncrCombo = new QComboBox(false, parent);
78 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 78 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
79 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 79 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
80 mAlarmIncrCombo->insertItem(i18n("day(s)")); 80 mAlarmIncrCombo->insertItem(i18n("day(s)"));
81 alarmLayout->addWidget(mAlarmIncrCombo); 81 alarmLayout->addWidget(mAlarmIncrCombo);
82 QHBox * hb = new QHBox ( parent ); 82 QHBox * hb = new QHBox ( parent );
83 alarmLayout->addWidget(hb); 83 alarmLayout->addWidget(hb);
84 mAlarmSoundButton = new QPushButton(hb); 84 mAlarmSoundButton = new QPushButton(hb);
85 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 85 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
86 mAlarmSoundButton->setToggleButton(true); 86 mAlarmSoundButton->setToggleButton(true);
87 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 87 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
88 mAlarmProgramButton = new QPushButton(hb); 88 mAlarmProgramButton = new QPushButton(hb);
89 mAlarmProgramButton->setPixmap(SmallIcon("run")); 89 mAlarmProgramButton->setPixmap(SmallIcon("run"));
90 mAlarmProgramButton->setToggleButton(true); 90 mAlarmProgramButton->setToggleButton(true);
91 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 91 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
92 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 92 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
93 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 93 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
94 mAlarmLabel = new QLabel( this ); 94 mAlarmLabel = new QLabel( this );
95 alarmLayout->addWidget( mAlarmLabel ); 95 alarmLayout->addWidget( mAlarmLabel );
96 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) ); 96 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) );
97 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 97 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
98 mAlarmSoundButton->setOn( true ); 98 mAlarmSoundButton->setOn( true );
99 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this ); 99 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this );
100 alarmLayout->addWidget( ok ); 100 alarmLayout->addWidget( ok );
101 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 101 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
102 alarmLayout->addWidget( cancel ); 102 alarmLayout->addWidget( cancel );
103 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 103 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
104 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 104 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
105 resize( 200, 200 ); 105 resize( 200, 200 );
106 106
107 } 107 }
108 108
109 109
110 110
111 QString mAlarmSound, mAlarmProgram ; 111 QString mAlarmSound, mAlarmProgram ;
112 QCheckBox* mAlarmButton; 112 QCheckBox* mAlarmButton;
113 QSpinBox* mAlarmTimeEdit; 113 QSpinBox* mAlarmTimeEdit;
114 QLabel* mAlarmLabel; 114 QLabel* mAlarmLabel;
115 QComboBox* mAlarmIncrCombo ; 115 QComboBox* mAlarmIncrCombo ;
116 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton; 116 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton;
117private slots: 117private slots:
118 118
119void pickAlarmSound() 119void pickAlarmSound()
120{ 120{
121 //QString prefix = mAlarmSound; 121 //QString prefix = mAlarmSound;
122 if (!mAlarmSoundButton->isOn()) { 122 if (!mAlarmSoundButton->isOn()) {
123 //mAlarmSound = ""; 123 //mAlarmSound = "";
124 QToolTip::remove(mAlarmSoundButton); 124 QToolTip::remove(mAlarmSoundButton);
125 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 125 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
126 mAlarmProgramButton->setOn(true); 126 mAlarmProgramButton->setOn(true);
127 mAlarmSoundButton->setOn(false); 127 mAlarmSoundButton->setOn(false);
128 } else { 128 } else {
129 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 129 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
130 i18n("*.wav|Wav Files"), 0)); 130 i18n("*.wav|Wav Files"), 0));
131 if (!fileName.isEmpty()) { 131 if (!fileName.isEmpty()) {
132 mAlarmSound = fileName; 132 mAlarmSound = fileName;
133 mAlarmLabel->setText( "..."+fileName.right( 30 ) ); 133 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
134 QToolTip::remove(mAlarmSoundButton); 134 QToolTip::remove(mAlarmSoundButton);
135 QString dispStr = i18n("Playing '%1'").arg(fileName); 135 QString dispStr = i18n("Playing '%1'").arg(fileName);
136 QToolTip::add(mAlarmSoundButton, dispStr); 136 QToolTip::add(mAlarmSoundButton, dispStr);
137 mAlarmProgramButton->setOn(false); 137 mAlarmProgramButton->setOn(false);
138 mAlarmSoundButton->setOn(true); 138 mAlarmSoundButton->setOn(true);
139 } else { 139 } else {
140 mAlarmProgramButton->setOn(true); 140 mAlarmProgramButton->setOn(true);
141 mAlarmSoundButton->setOn(false); 141 mAlarmSoundButton->setOn(false);
142 142
143 } 143 }
144 } 144 }
145}; 145};
146 146
147void pickAlarmProgram() 147void pickAlarmProgram()
148{ 148{
149 if (!mAlarmProgramButton->isOn()) { 149 if (!mAlarmProgramButton->isOn()) {
150 //mAlarmProgram = ""; 150 //mAlarmProgram = "";
151 QToolTip::remove(mAlarmProgramButton); 151 QToolTip::remove(mAlarmProgramButton);
152 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 152 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
153 mAlarmProgramButton->setOn(false); 153 mAlarmProgramButton->setOn(false);
154 mAlarmSoundButton->setOn(true); 154 mAlarmSoundButton->setOn(true);
155 } else { 155 } else {
156 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); 156 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
157 if (!fileName.isEmpty()) { 157 if (!fileName.isEmpty()) {
158 mAlarmProgram = fileName; 158 mAlarmProgram = fileName;
159 mAlarmLabel->setText( "..."+fileName.right( 30 ) ); 159 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
160 QToolTip::remove(mAlarmProgramButton); 160 QToolTip::remove(mAlarmProgramButton);
161 QString dispStr = i18n("Running '%1'").arg(fileName); 161 QString dispStr = i18n("Running '%1'").arg(fileName);
162 QToolTip::add(mAlarmProgramButton, dispStr); 162 QToolTip::add(mAlarmProgramButton, dispStr);
163 mAlarmSoundButton->setOn(false); 163 mAlarmSoundButton->setOn(false);
164 mAlarmProgramButton->setOn(true); 164 mAlarmProgramButton->setOn(true);
165 } else { 165 } else {
166 mAlarmProgramButton->setOn(false); 166 mAlarmProgramButton->setOn(false);
167 mAlarmSoundButton->setOn(true); 167 mAlarmSoundButton->setOn(true);
168 } 168 }
169 } 169 }
170}; 170};
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 signals: 219 signals:
219 void newEvent(); 220 void newEvent();
220 void showIncidence( Incidence* ); 221 void showIncidence( Incidence* );
221 public slots: 222 public slots:
222 void popupMenu(); 223 void popupMenu();
223 private: 224 private:
224 QPoint mEventPos; 225 QPoint mEventPos;
225 QPoint mEventGlobalPos; 226 QPoint mEventGlobalPos;
226 QTimer* mPopupTimer; 227 QTimer* mPopupTimer;
227 int mYMousePos; 228 int mYMousePos;
228 void keyPressEvent ( QKeyEvent * ) ; 229 void keyPressEvent ( QKeyEvent * ) ;
229 void contentsMouseDoubleClickEvent(QMouseEvent *e); 230 void contentsMouseDoubleClickEvent(QMouseEvent *e);
230 void contentsMousePressEvent(QMouseEvent *e); 231 void contentsMousePressEvent(QMouseEvent *e);
231 void contentsMouseReleaseEvent(QMouseEvent *e); 232 void contentsMouseReleaseEvent(QMouseEvent *e);
232 void contentsMouseMoveEvent(QMouseEvent *e); 233 void contentsMouseMoveEvent(QMouseEvent *e);
233 bool mMouseDown; 234 bool mMouseDown;
234}; 235};
235 236
236class KOListView : public KOEventView 237class KOListView : public KOEventView
237{ 238{
238 Q_OBJECT 239 Q_OBJECT
239 public: 240 public:
240 KOListView(Calendar *calendar, QWidget *parent = 0, 241 KOListView(Calendar *calendar, QWidget *parent = 0,
241 const char *name = 0); 242 const char *name = 0);
242 ~KOListView(); 243 ~KOListView();
243 244
244 virtual int maxDatesHint(); 245 virtual int maxDatesHint();
245 virtual int currentDateCount(); 246 virtual int currentDateCount();
246 virtual QPtrList<Incidence> selectedIncidences(); 247 virtual QPtrList<Incidence> selectedIncidences();
247 virtual DateList selectedDates(); 248 virtual DateList selectedDates();
248 249
249 void showDates(bool show); 250 void showDates(bool show);
250 Incidence* currentItem(); 251 Incidence* currentItem();
251 void addTodos(QPtrList<Todo> eventList); 252 void addTodos(QPtrList<Todo> eventList);
252 void addJournals(QPtrList<Journal> eventList); 253 void addJournals(QPtrList<Journal> eventList);
253 virtual void printPreview(CalPrinter *calPrinter, 254 virtual void printPreview(CalPrinter *calPrinter,
254 const QDate &, const QDate &); 255 const QDate &, const QDate &);
255 256
256 void readSettings(KConfig *config, QString setting = "KOListView Layout"); 257 void readSettings(KConfig *config, QString setting = "KOListView Layout");
257 void writeSettings(KConfig *config, QString setting = "KOListView Layout"); 258 void writeSettings(KConfig *config, QString setting = "KOListView Layout");
258 void updateList(); 259 void updateList();
259 void setStartDate(const QDate &start); 260 void setStartDate(const QDate &start);
260 int count(); 261 int count();
261 QString getWhatsThisText(QPoint p); 262 QString getWhatsThisText(QPoint p);
262 signals: 263 signals:
263 void signalNewEvent(); 264 void signalNewEvent();
264 void beamIncidenceList(QPtrList<Incidence>); 265 void beamIncidenceList(QPtrList<Incidence>);
265 266
266 public slots: 267 public slots:
267 void resetFocus(); 268 void resetFocus();
268 virtual void updateView(); 269 virtual void updateView();
269 virtual void showDates(const QDate &start, const QDate &end); 270 virtual void showDates(const QDate &start, const QDate &end);
270 virtual void showEvents(QPtrList<Event> eventList); 271 virtual void showEvents(QPtrList<Event> eventList);
271 void clearSelection(); 272 void clearSelection();
272 void allSelection(); 273 void allSelection();
273 274
274 void clear(); 275 void clear();
275 void beamDone( Ir *ir ); 276 void beamDone( Ir *ir );
276 void showDates(); 277 void showDates();
277 void hideDates(); 278 void hideDates();
278 void deleteAll(); 279 void deleteAll();
279 void saveToFile(); 280 void saveToFile();
280 void saveToFileVCS(); 281 void saveToFileVCS();
281 void saveDescriptionToFile(); 282 void saveDescriptionToFile();
282 void beamSelected(); 283 void beamSelected();
283 void updateConfig(); 284 void updateConfig();
284 void addCat(); 285 void addCat();
285 void setCat(); 286 void setCat();
286 void setAlarm(); 287 void setAlarm();
287 void setCategories( bool removeOld ); 288 void setCategories( bool removeOld );
288 void changeEventDisplay(Event *, int); 289 void changeEventDisplay(Event *, int);
289 290
290 void defaultItemAction(QListViewItem *item); 291 void defaultItemAction(QListViewItem *item);
291 void popupMenu(QListViewItem *item,const QPoint &,int); 292 void popupMenu(QListViewItem *item,const QPoint &,int);
292 293
293 protected slots: 294 protected slots:
294 void processSelectionChange(QListViewItem *); 295 void processSelectionChange(QListViewItem *);
295 296
296 protected: 297 protected:
297 void writeToFile( bool iCal ); 298 void writeToFile( bool iCal );
298 void addEvents(QPtrList<Event> eventList); 299 void addEvents(QPtrList<Event> eventList);
299 void addIncidence(Incidence *); 300 void addIncidence(Incidence *);
300 KOListViewItem *getItemForEvent(Event *event); 301 KOListViewItem *getItemForEvent(Event *event);
301 302
302 private: 303 private:
303 KOListViewWhatsThis *mKOListViewWhatsThis; 304 KOListViewWhatsThis *mKOListViewWhatsThis;
304 KOListViewListView *mListView; 305 KOListViewListView *mListView;
305 KOEventPopupMenu *mPopupMenu; 306 KOEventPopupMenu *mPopupMenu;
306 KOListViewItem *mActiveItem; 307 KOListViewItem *mActiveItem;
307 QDict<Incidence> mUidDict; 308 QDict<Incidence> mUidDict;
308 QDate mStartDate; 309 QDate mStartDate;
309 void keyPressEvent ( QKeyEvent * ) ; 310 void keyPressEvent ( QKeyEvent * ) ;
310}; 311};
311 312
312#endif 313#endif