summaryrefslogtreecommitdiffabout
path: root/korganizer/koeventpopupmenu.cpp
Unidiff
Diffstat (limited to 'korganizer/koeventpopupmenu.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeventpopupmenu.cpp173
1 files changed, 100 insertions, 73 deletions
diff --git a/korganizer/koeventpopupmenu.cpp b/korganizer/koeventpopupmenu.cpp
index 90caaf4..41d331a 100644
--- a/korganizer/koeventpopupmenu.cpp
+++ b/korganizer/koeventpopupmenu.cpp
@@ -1,24 +1,24 @@
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>
@@ -34,34 +34,39 @@
34 34
35KOEventPopupMenu::KOEventPopupMenu(): QPopupMenu() 35KOEventPopupMenu::KOEventPopupMenu(): QPopupMenu()
36{ 36{
37 mCurrentIncidence = 0; 37 mCurrentIncidence = 0;
38 mHasAdditionalItems = false; 38 mHasAdditionalItems = false;
39 39
40 40
41 mSingleOnlyItems.append( insertItem (i18n("&Show"),this,SLOT(popupShow()))); 41 mSingleOnlyItems.append( insertItem (i18n("&Show"),this,SLOT(popupShow())));
42 mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit()))); 42 mEditOnlyItems.append(insertItem (i18n("&Edit..."),this,SLOT(popupEdit())));
43 mEditOnlyItems.append(insertItem (i18n("&Delete"), 43 mEditOnlyItems.append(insertItem (i18n("&Delete"),
44 this,SLOT(popupDelete()))); 44 this,SLOT(popupDelete())));
45 mEditOnlyItems.append(insertItem (i18n("&Clone..."), 45 mEditOnlyItems.append(insertItem (i18n("&Clone..."),
46 this,SLOT(popupClone()))); 46 this,SLOT(popupClone())));
47 mEditOnlyItems.append(insertItem (i18n("&Move..."), 47 mEditOnlyItems.append(insertItem (i18n("&Move..."),
48 this,SLOT(popupMove()))); 48 this,SLOT(popupMove())));
49#ifndef DESKTOP_VERSION 49#ifndef DESKTOP_VERSION
50 mEditOnlyItems.append(insertItem (i18n("&Beam..."), 50 mEditOnlyItems.append(insertItem (i18n("&Beam..."),
51 this,SLOT(popupBeam()))); 51 this,SLOT(popupBeam())));
52#endif 52#endif
53 mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"), 53 mEditOnlyItems.append(insertItem (i18n("&Toggle Cancel"),
54 this,SLOT(popupCancel()))); 54 this,SLOT(popupCancel())));
55 isDisabled = false; 55 isDisabled = false;
56 mCatPopup = new QPopupMenu ( this ); 56 mCatPopup = new QPopupMenu ( this );
57 mCatPopup->setCheckable (true); 57 mCatPopup->setCheckable (true);
58 connect(mCatPopup,SIGNAL( aboutToShow ()), this ,SLOT( fillCatPopup())); 58 connect(mCatPopup,SIGNAL( aboutToShow ()), this ,SLOT( fillCatPopup()));
59 connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT( computeCatPopup( int ))); 59 connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT( computeCatPopup( int )));
60 mEditOnlyItems.append(insertItem (i18n("Categories"),mCatPopup )); 60 mCalPopup = new QPopupMenu ( this );
61 QValueList<int>::Iterator it; 61 mCalPopup->setCheckable (true);
62 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { 62 connect(mCalPopup,SIGNAL( aboutToShow ()), this ,SLOT( fillCalPopup()));
63 mSingleOnlyItems.append(*it); 63 connect(mCalPopup,SIGNAL( activated ( int ) ), this ,SLOT( computeCalPopup( int )));
64 } 64 mEditOnlyItems.append(insertItem (i18n("Categories"),mCatPopup ));
65 mEditOnlyItems.append(insertItem (i18n("Calendar"),mCalPopup ));
66 QValueList<int>::Iterator it;
67 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
68 mSingleOnlyItems.append(*it);
69 }
65 70
66} 71}
67void KOEventPopupMenu::enableDefault( bool enable ) 72void KOEventPopupMenu::enableDefault( bool enable )
@@ -74,9 +79,29 @@ void KOEventPopupMenu::enableDefault( bool enable )
74 79
75} 80}
76 81
82void KOEventPopupMenu::fillCalPopup() // CAL
83{
84 mCalPopup->clear();
85 if (!mCurrentIncidence) return;
86 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
87 while ( kkf ) {
88 int index = mCalPopup->insertItem( kkf->mName, kkf->mCalNumber);
89 if ( kkf->mErrorOnLoad || kkf->isReadOnly )
90 mCalPopup->setItemEnabled( index, false );
91 mCalPopup->setItemChecked (index, kkf->mCalNumber == mCurrentIncidence->calID());
92 kkf = KOPrefs::instance()->mCalendars.next();
93 }
94}
95void KOEventPopupMenu::computeCalPopup( int index ) // CAL
96{
97 if (!mCurrentIncidence) return;
98 mCurrentIncidence->setCalID( index );
99 emit categoryChanged( mCurrentIncidence );
100}
77void KOEventPopupMenu::fillCatPopup() 101void KOEventPopupMenu::fillCatPopup()
78{ 102{
79 mCatPopup->clear(); 103 mCatPopup->clear();
104 if (!mCurrentIncidence) return;
80 QStringList checkedCategories = mCurrentIncidence->categories(); 105 QStringList checkedCategories = mCurrentIncidence->categories();
81 int index = 0; 106 int index = 0;
82 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 107 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
@@ -90,11 +115,12 @@ void KOEventPopupMenu::fillCatPopup()
90 } 115 }
91} 116}
92void KOEventPopupMenu::computeCatPopup( int index ) 117void KOEventPopupMenu::computeCatPopup( int index )
93{ 118{
119 if (!mCurrentIncidence) return;
94 QStringList categories = mCurrentIncidence->categories(); 120 QStringList categories = mCurrentIncidence->categories();
95 QString colcat = categories.first(); 121 QString colcat = categories.first();
96 if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ()) 122 if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ())
97 categories.remove (KOPrefs::instance()->mCustomCategories[index]); 123 categories.remove (KOPrefs::instance()->mCustomCategories[index]);
98 else 124 else
99 categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]); 125 categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]);
100 categories.sort (); 126 categories.sort ();
@@ -104,65 +130,66 @@ void KOEventPopupMenu::computeCatPopup( int index )
104 categories.prepend( colcat ); 130 categories.prepend( colcat );
105 } 131 }
106 } 132 }
107 mCurrentIncidence->setCategories( categories ); 133 mCurrentIncidence->setCategories( categories );
108 emit categoryChanged( mCurrentIncidence ); 134 emit categoryChanged( mCurrentIncidence );
109} 135}
110void KOEventPopupMenu::showIncidencePopup(Incidence *incidence) 136void KOEventPopupMenu::showIncidencePopup(Incidence *incidence)
111{ 137{
112 mCurrentIncidence = incidence; 138 if ( !incidence) return;
139 mCurrentIncidence = incidence;
113 140
114 if (mCurrentIncidence) { 141 if (mCurrentIncidence) {
115 // Enable/Disabled menu items only valid for editable events. 142 // Enable/Disabled menu items only valid for editable events.
116 if ( !isDisabled ) { 143 if ( !isDisabled ) {
117 QValueList<int>::Iterator it; 144 QValueList<int>::Iterator it;
118 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { 145 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
119 setItemEnabled(*it,!mCurrentIncidence->isReadOnly()); 146 setItemEnabled(*it,!mCurrentIncidence->isReadOnly());
120 } 147 }
121 } 148 }
122 popup(QCursor::pos()); 149 popup(QCursor::pos());
123 } 150 }
124} 151}
125 152
126void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text, 153void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text,
127 const QObject *receiver, const char *member, 154 const QObject *receiver, const char *member,
128 bool editOnly) 155 bool editOnly)
129{ 156{
130 if (!mHasAdditionalItems) { 157 if (!mHasAdditionalItems) {
131 mHasAdditionalItems = true; 158 mHasAdditionalItems = true;
132 insertSeparator(); 159 insertSeparator();
133 } 160 }
134 int id = insertItem(icon,text,receiver,member); 161 int id = insertItem(icon,text,receiver,member);
135 if (editOnly) mEditOnlyItems.append(id); 162 if (editOnly) mEditOnlyItems.append(id);
136} 163}
137 164
138void KOEventPopupMenu::popupShow() 165void KOEventPopupMenu::popupShow()
139{ 166{
140 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence); 167 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence);
141} 168}
142 169
143void KOEventPopupMenu::popupEdit() 170void KOEventPopupMenu::popupEdit()
144{ 171{
145 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence); 172 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence);
146} 173}
147 174
148void KOEventPopupMenu::popupDelete() 175void KOEventPopupMenu::popupDelete()
149{ 176{
150 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence); 177 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence);
151} 178}
152void KOEventPopupMenu::popupClone() 179void KOEventPopupMenu::popupClone()
153{ 180{
154 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence); 181 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence);
155} 182}
156void KOEventPopupMenu::popupCancel() 183void KOEventPopupMenu::popupCancel()
157{ 184{
158 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence); 185 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence);
159} 186}
160void KOEventPopupMenu::popupMove() 187void KOEventPopupMenu::popupMove()
161{ 188{
162 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence); 189 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence);
163} 190}
164 191
165void KOEventPopupMenu::popupBeam() 192void KOEventPopupMenu::popupBeam()
166{ 193{
167 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence); 194 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence);
168} 195}