summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-07-04 08:17:48 (UTC)
committer zautrix <zautrix>2005-07-04 08:17:48 (UTC)
commite19b410f43c4fcf35d3d62fc312d1b5251068691 (patch) (unidiff)
treec3aecb6089dbb2e068ad072226e227c14cd8c2cf /korganizer
parent068a89b64d8ef4cb49702ed53ab4e415a0b90a80 (diff)
downloadkdepimpi-e19b410f43c4fcf35d3d62fc312d1b5251068691.zip
kdepimpi-e19b410f43c4fcf35d3d62fc312d1b5251068691.tar.gz
kdepimpi-e19b410f43c4fcf35d3d62fc312d1b5251068691.tar.bz2
fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeditorgeneral.cpp65
-rw-r--r--korganizer/koeditorgeneral.h4
-rw-r--r--korganizer/koeventpopupmenu.cpp1
3 files changed, 62 insertions, 8 deletions
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp
index 29e68b3..753630b 100644
--- a/korganizer/koeditorgeneral.cpp
+++ b/korganizer/koeditorgeneral.cpp
@@ -1,572 +1,623 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 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 <qwidget.h> 24#include <qwidget.h>
25#include <qtooltip.h> 25#include <qtooltip.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qvgroupbox.h> 29#include <qvgroupbox.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qregexp.h> 34#include <qregexp.h>
35 35
36 36
37#include <kglobal.h> 37#include <kglobal.h>
38#include <kdialog.h> 38#include <kdialog.h>
39#include <kdebug.h> 39#include <kdebug.h>
40#include <klocale.h> 40#include <klocale.h>
41#include <kiconloader.h> 41#include <kiconloader.h>
42#include <kmessagebox.h> 42#include <kmessagebox.h>
43#include <kfiledialog.h> 43#include <kfiledialog.h>
44#include <kstandarddirs.h> 44#include <kstandarddirs.h>
45 45
46#include <libkcal/todo.h> 46#include <libkcal/todo.h>
47#include <libkcal/event.h> 47#include <libkcal/event.h>
48#include <libkdepim/categoryselectdialog.h> 48#include <libkdepim/categoryselectdialog.h>
49#include <libkdepim/kdateedit.h> 49#include <libkdepim/kdateedit.h>
50 50
51#include "koprefs.h" 51#include "koprefs.h"
52#include "koglobals.h" 52#include "koglobals.h"
53 53
54#include "koeditorgeneral.h" 54#include "koeditorgeneral.h"
55#include "kolocationbox.h" 55#include "kolocationbox.h"
56#ifndef DESKTOP_VERSION 56#ifndef DESKTOP_VERSION
57#include <qpe/qpeapplication.h> 57#include <qpe/qpeapplication.h>
58#else 58#else
59#include <qapplication.h> 59#include <qapplication.h>
60#endif 60#endif
61 61
62KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) : 62KOEditorGeneral::KOEditorGeneral(QObject* parent, const char* name) :
63 QObject( parent, name) 63 QObject( parent, name)
64{ 64{
65 mNextFocus = 0; 65 mNextFocus = 0;
66} 66}
67 67
68KOEditorGeneral::~KOEditorGeneral() 68KOEditorGeneral::~KOEditorGeneral()
69{ 69{
70} 70}
71 71
72void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout) 72void KOEditorGeneral::initHeader(QWidget *parent,QBoxLayout *topLayout)
73{ 73{
74 QGridLayout *headerLayout = new QGridLayout(topLayout); 74 QGridLayout *headerLayout = new QGridLayout(topLayout);
75 75
76#if 0 76#if 0
77 mOwnerLabel = new QLabel(i18n("Owner:"),parent); 77 mOwnerLabel = new QLabel(i18n("Owner:"),parent);
78 headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1); 78 headerLayout->addMultiCellWidget(mOwnerLabel,0,0,0,1);
79#endif 79#endif
80 // 1 on pda 80 // 1 on pda
81 // 11 on desktop 81 // 11 on desktop
82 headerLayout->setSpacing( (KDialog::spacingHint()-3)*2+1 ); 82 headerLayout->setSpacing( (KDialog::spacingHint()-3)*2+1 );
83 QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent); 83 QLabel *summaryLabel = new QLabel(i18n("Summary:"),parent);
84 headerLayout->addWidget(summaryLabel,1,0); 84 headerLayout->addWidget(summaryLabel,0,0);
85 85
86 mSummaryEdit = new KOLocationBox(TRUE,parent, 10); 86 mSummaryEdit = new KOLocationBox(TRUE,parent, 10);
87 mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); 87 mSummaryEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
88 //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) ); 88 //mSummaryEdit->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5 ,(QSizePolicy::SizeType)3 ,FALSE) );
89 //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() ); 89 //qDebug("h %d %d ", summaryLabel->sizeHint().height(),mSummaryEdit->sizeHint().height() );
90 int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2; 90 int hei = (summaryLabel->sizeHint().height() + mSummaryEdit->sizeHint().height())/2;
91 if ( QApplication::desktop()->width() > 320 ) 91 if ( QApplication::desktop()->width() > 320 )
92 mSummaryEdit->setMaximumHeight( hei +6 ); 92 mSummaryEdit->setMaximumHeight( hei +6 );
93 //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding ); 93 //qDebug("%d %d %d %d %d %d ", QSizePolicy::Fixed , QSizePolicy::Minimum , QSizePolicy:: Maximum , QSizePolicy:: Preferred , QSizePolicy:: MinimumExpanding , QSizePolicy::Expanding );
94 // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink } 94 // SizeType { Fixed = 0, Minimum = MayGrow, Maximum = MayShrink, Preferred = MayGrow|MayShrink, MinimumExpanding = Minimum|ExpMask, Expanding = MinimumExpanding|MayShrink }
95 // mSummaryEdit = new QLineEdit(parent); 95 // mSummaryEdit = new QLineEdit(parent);
96 headerLayout->addWidget(mSummaryEdit,1,1); 96 if ( QApplication::desktop()->height() < 320 )
97 headerLayout->addWidget(mSummaryEdit,0,1);
98 else
99 headerLayout->addMultiCellWidget(mSummaryEdit,0,0,1,2);
97 connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); 100 connect ( mSummaryEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) );
98 101
99 QLabel *locationLabel = new QLabel(i18n("Location:"),parent); 102 QLabel *locationLabel = new QLabel(i18n("Location:"),parent);
100 if ( QApplication::desktop()->height() < 320 ) 103 if ( QApplication::desktop()->height() < 320 )
101 headerLayout->addWidget(locationLabel,1,2); 104 headerLayout->addWidget(locationLabel,0,2);
102 else 105 else
103 headerLayout->addWidget(locationLabel,2,0); 106 headerLayout->addWidget(locationLabel,1,0);
104 107
105 mLocationEdit = new KOLocationBox(TRUE,parent,10); 108 mLocationEdit = new KOLocationBox(TRUE,parent,10);
106 mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) ); 109 mLocationEdit->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
107 if ( QApplication::desktop()->width() > 320 && QApplication::desktop()->height() > 240 ) 110 if ( QApplication::desktop()->width() > 320 && QApplication::desktop()->height() > 240 )
108 mLocationEdit->setMaximumHeight( hei + 6); 111 mLocationEdit->setMaximumHeight( hei + 6);
109 112
110 // mLocationEdit = new QLineEdit(parent); 113 // mLocationEdit = new QLineEdit(parent);
111 connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) ); 114 connect ( mLocationEdit->lineEdit(), SIGNAL ( returnPressed() ), this, SIGNAL (allAccepted () ) );
115
116 mCalendarBox = new QComboBox ( parent );
117 mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::MinimumExpanding ,FALSE) );
112 if ( QApplication::desktop()->height() < 320 ) { 118 if ( QApplication::desktop()->height() < 320 ) {
113 headerLayout->addWidget(mLocationEdit,1,3); 119 headerLayout->addWidget(mLocationEdit,0,3);
120 headerLayout->addWidget(mCalendarBox,0,4);
114 headerLayout->setColStretch( 1, 10); 121 headerLayout->setColStretch( 1, 10);
115 headerLayout->setColStretch( 3, 10); 122 headerLayout->setColStretch( 3, 10);
123 mCalendarBox->setMaximumWidth( 64 );
116 } 124 }
117 else { 125 else {
118 headerLayout->addWidget(mLocationEdit,2,1); 126 headerLayout->addWidget(mLocationEdit,1,1);
127 headerLayout->addWidget(mCalendarBox,1,2);
119 headerLayout->setColStretch( 1, 10); 128 headerLayout->setColStretch( 1, 10);
120 } 129 }
130
121} 131}
122void KOEditorGeneral::setFocusOn( int i ) 132void KOEditorGeneral::setFocusOn( int i )
123{ 133{
124 mNextFocus = i; 134 mNextFocus = i;
125 QTimer::singleShot( 0, this, SLOT ( slotSetFocusOn() )); 135 QTimer::singleShot( 0, this, SLOT ( slotSetFocusOn() ));
126} 136}
127void KOEditorGeneral::slotSetFocusOn() 137void KOEditorGeneral::slotSetFocusOn()
128{ 138{
129 mNextFocus; 139 mNextFocus;
130 if ( mNextFocus == 1 ) { 140 if ( mNextFocus == 1 ) {
131 mDescriptionEdit->setFocus(); 141 mDescriptionEdit->setFocus();
132 mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333); 142 mDescriptionEdit->setCursorPosition( mDescriptionEdit->numLines (), 333);
133 } 143 }
134 if ( mNextFocus == 2 ) { 144 if ( mNextFocus == 2 ) {
135 mSummaryEdit->setFocus(); 145 mSummaryEdit->setFocus();
136 } 146 }
137} 147}
138void KOEditorGeneral::editCategories() 148void KOEditorGeneral::editCategories()
139{ 149{
140 // qDebug("KOEditorGeneral::editCategories() "); 150 // qDebug("KOEditorGeneral::editCategories() ");
141 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 151 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
142 connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &))); 152 connect(csd,SIGNAL(categoriesSelected(const QString &)), this ,SLOT(setCategories(const QString &)));
143 //KOGlobals::fitDialogToScreen( csd ); 153 //KOGlobals::fitDialogToScreen( csd );
144 csd->setColorEnabled(); 154 csd->setColorEnabled();
145 csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) ); 155 csd->setSelected( QStringList::split (",", mCategoriesLabel->text()) );
146 csd->exec(); 156 csd->exec();
147 delete csd; 157 delete csd;
148} 158}
149 159
150void KOEditorGeneral::showCatPopup() 160void KOEditorGeneral::showCatPopup()
151{ 161{
152 mCatPopup->clear(); 162 mCatPopup->clear();
153 QStringList checkedCategories = QStringList::split (",", mCategoriesLabel->text()); 163 QStringList checkedCategories = QStringList::split (",", mCategoriesLabel->text());
154 int index = 0; 164 int index = 0;
155 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 165 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
156 it != KOPrefs::instance()->mCustomCategories.end (); 166 it != KOPrefs::instance()->mCustomCategories.end ();
157 ++it) { 167 ++it) {
158 mCatPopup->insertItem (*it, index ); 168 mCatPopup->insertItem (*it, index );
159 //mCategory[index] = *it; 169 //mCategory[index] = *it;
160 if (checkedCategories.find (*it) != checkedCategories.end ()) mCatPopup->setItemChecked (index, true); 170 if (checkedCategories.find (*it) != checkedCategories.end ()) mCatPopup->setItemChecked (index, true);
161 ++index; 171 ++index;
162 } 172 }
163} 173}
164void KOEditorGeneral::selectedCatPopup( int index ) 174void KOEditorGeneral::selectedCatPopup( int index )
165{ 175{
166 QStringList categories = QStringList::split (",", mCategoriesLabel->text()); 176 QStringList categories = QStringList::split (",", mCategoriesLabel->text());
167 QString colcat = categories.first(); 177 QString colcat = categories.first();
168 if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ()) 178 if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ())
169 categories.remove (KOPrefs::instance()->mCustomCategories[index]); 179 categories.remove (KOPrefs::instance()->mCustomCategories[index]);
170 else 180 else
171 categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]); 181 categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]);
172 categories.sort (); 182 categories.sort ();
173 if ( !colcat.isEmpty() ) { 183 if ( !colcat.isEmpty() ) {
174 if ( categories.find ( colcat ) != categories.end () ) { 184 if ( categories.find ( colcat ) != categories.end () ) {
175 categories.remove( colcat ); 185 categories.remove( colcat );
176 categories.prepend( colcat ); 186 categories.prepend( colcat );
177 } 187 }
178 } 188 }
179 setCategories( categories.join(",") ); 189 setCategories( categories.join(",") );
180} 190}
181 191
182void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout) 192void KOEditorGeneral::initCategories(QWidget *parent, QBoxLayout *topLayout)
183{ 193{
184 QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout ); 194 QBoxLayout *categoriesLayout = new QHBoxLayout( topLayout );
185 mCatPopup = new QPopupMenu ( parent ); 195 mCatPopup = new QPopupMenu ( parent );
186 mCatPopup->setCheckable (true); 196 mCatPopup->setCheckable (true);
187 connect(mCatPopup,SIGNAL(aboutToShow () ), this ,SLOT(showCatPopup())); 197 connect(mCatPopup,SIGNAL(aboutToShow () ), this ,SLOT(showCatPopup()));
188 connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT(selectedCatPopup( int ))); 198 connect(mCatPopup,SIGNAL( activated ( int ) ), this ,SLOT(selectedCatPopup( int )));
189 mCategoriesButton = new QPushButton(parent); 199 mCategoriesButton = new QPushButton(parent);
190 mCategoriesButton->setText(i18n("Categories...")); 200 mCategoriesButton->setText(i18n("Categories..."));
191 connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); 201 connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() ));
192 //connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() )); 202 //connect(mCategoriesButton,SIGNAL(clicked()),this, SLOT(editCategories() ));
193 categoriesLayout->addWidget(mCategoriesButton); 203 categoriesLayout->addWidget(mCategoriesButton);
194 mCategoriesLabel = new QPushButton(parent);//new QLabel(parent); 204 mCategoriesLabel = new QPushButton(parent);//new QLabel(parent);
195 mCategoriesLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::Fixed ,FALSE) ); 205 mCategoriesLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred ,QSizePolicy::Fixed ,FALSE) );
196 mCategoriesLabel->setPopup( mCatPopup ); 206 mCategoriesLabel->setPopup( mCatPopup );
197 //mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken); 207 //mCategoriesLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
198 categoriesLayout->addWidget(mCategoriesLabel,1); 208 categoriesLayout->addWidget(mCategoriesLabel,1);
199} 209}
200 210
201void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout) 211void KOEditorGeneral::initSecrecy(QWidget *parent, QBoxLayout *topLayout)
202{ 212{
203 QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout ); 213 QBoxLayout *secrecyLayout = new QHBoxLayout( topLayout );
204 214
205 QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent); 215 QLabel *secrecyLabel = new QLabel(i18n("Access:"),parent);
206 mCancelBox = new QCheckBox ( i18n("Cancelled"), parent); 216 mCancelBox = new QCheckBox ( i18n("Cancelled"), parent);
207 secrecyLayout->addWidget(mCancelBox); 217 secrecyLayout->addWidget(mCancelBox);
208 secrecyLayout->addWidget(secrecyLabel); 218 secrecyLayout->addWidget(secrecyLabel);
209 219
210 mSecrecyCombo = new QComboBox(parent); 220 mSecrecyCombo = new QComboBox(parent);
211 mSecrecyCombo->insertStringList(Incidence::secrecyList()); 221 mSecrecyCombo->insertStringList(Incidence::secrecyList());
212 secrecyLayout->addWidget(mSecrecyCombo); 222 secrecyLayout->addWidget(mSecrecyCombo);
213} 223}
214 224
215void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout) 225void KOEditorGeneral::initDescription(QWidget *parent,QBoxLayout *topLayout)
216{ 226{
217 mDescriptionEdit = new KTextEdit(parent); 227 mDescriptionEdit = new KTextEdit(parent);
218 mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont ); 228 mDescriptionEdit->setFont(KOPrefs::instance()->mEditBoxFont );
219 mDescriptionEdit->append(""); 229 mDescriptionEdit->append("");
220 mDescriptionEdit->setReadOnly(false); 230 mDescriptionEdit->setReadOnly(false);
221 mDescriptionEdit->setOverwriteMode(false); 231 mDescriptionEdit->setOverwriteMode(false);
222 mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth ); 232 mDescriptionEdit->setWordWrap( KTextEdit::WidgetWidth );
223 topLayout->addWidget(mDescriptionEdit); 233 topLayout->addWidget(mDescriptionEdit);
224#ifndef DESKTOP_VERSION 234#ifndef DESKTOP_VERSION
225 QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold ); 235 QPEApplication::setStylusOperation( mDescriptionEdit, QPEApplication::RightOnHold );
226#endif 236#endif
227 237
228} 238}
229 239
230void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) 240void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout)
231{ 241{
232 QBoxLayout *alarmLayout = new QHBoxLayout(topLayout); 242 QBoxLayout *alarmLayout = new QHBoxLayout(topLayout);
233 243
234 //mAlarmBell = new QLabel(parent); 244 //mAlarmBell = new QLabel(parent);
235 //mAlarmBell->setPixmap(SmallIcon("bell")); 245 //mAlarmBell->setPixmap(SmallIcon("bell"));
236 //alarmLayout->addWidget(mAlarmBell); 246 //alarmLayout->addWidget(mAlarmBell);
237 if ( QApplication::desktop()->width() < 320 ) 247 if ( QApplication::desktop()->width() < 320 )
238 mAlarmButton = new QCheckBox(i18n("Rem."),parent); 248 mAlarmButton = new QCheckBox(i18n("Rem."),parent);
239 else 249 else
240 mAlarmButton = new QCheckBox(i18n("Reminder:"),parent); 250 mAlarmButton = new QCheckBox(i18n("Reminder:"),parent);
241 251
242 connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool))); 252 connect(mAlarmButton, SIGNAL(toggled(bool)), SLOT(enableAlarmEdit(bool)));
243 alarmLayout->addWidget(mAlarmButton); 253 alarmLayout->addWidget(mAlarmButton);
244 254
245 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; 255 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
246 mAlarmTimeEdit->setButtonSymbols( QSpinBox::PlusMinus ); 256 mAlarmTimeEdit->setButtonSymbols( QSpinBox::PlusMinus );
247 alarmLayout->addWidget(mAlarmTimeEdit); 257 alarmLayout->addWidget(mAlarmTimeEdit);
248 mAlarmIncrCombo = new QComboBox(false, parent); 258 mAlarmIncrCombo = new QComboBox(false, parent);
249 if ( QApplication::desktop()->width() < 320 ) { 259 if ( QApplication::desktop()->width() < 320 ) {
250 mAlarmIncrCombo->insertItem(i18n("min")); 260 mAlarmIncrCombo->insertItem(i18n("min"));
251 mAlarmIncrCombo->insertItem(i18n("hou")); 261 mAlarmIncrCombo->insertItem(i18n("hou"));
252 mAlarmIncrCombo->insertItem(i18n("day")); 262 mAlarmIncrCombo->insertItem(i18n("day"));
253 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() ); 263 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() );
254 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() ); 264 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() );
255 } else { 265 } else {
256 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 266 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
257 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 267 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
258 mAlarmIncrCombo->insertItem(i18n("day(s)")); 268 mAlarmIncrCombo->insertItem(i18n("day(s)"));
259 } 269 }
260 270
261 // mAlarmIncrCombo->setMinimumHeight(20); 271 // mAlarmIncrCombo->setMinimumHeight(20);
262 alarmLayout->addWidget(mAlarmIncrCombo); 272 alarmLayout->addWidget(mAlarmIncrCombo);
263 mAlarmSoundButton = new QPushButton(parent); 273 mAlarmSoundButton = new QPushButton(parent);
264 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 274 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
265 mAlarmSoundButton->setToggleButton(true); 275 mAlarmSoundButton->setToggleButton(true);
266 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 276 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
267 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 277 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
268 alarmLayout->addWidget(mAlarmSoundButton); 278 alarmLayout->addWidget(mAlarmSoundButton);
269 279
270 mAlarmProgramButton = new QPushButton(parent); 280 mAlarmProgramButton = new QPushButton(parent);
271 mAlarmProgramButton->setPixmap(SmallIcon("run")); 281 mAlarmProgramButton->setPixmap(SmallIcon("run"));
272 mAlarmProgramButton->setToggleButton(true); 282 mAlarmProgramButton->setToggleButton(true);
273 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 283 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
274 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 284 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
275 alarmLayout->addWidget(mAlarmProgramButton); 285 alarmLayout->addWidget(mAlarmProgramButton);
276 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 286 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
277 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 287 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
278 // if ( KOPrefs::instance()->mCompactDialogs ) { 288 // if ( KOPrefs::instance()->mCompactDialogs ) {
279 // mAlarmSoundButton->hide(); 289 // mAlarmSoundButton->hide();
280 // mAlarmProgramButton->hide(); 290 // mAlarmProgramButton->hide();
281 // } 291 // }
282} 292}
283 293
284void KOEditorGeneral::pickAlarmSound() 294void KOEditorGeneral::pickAlarmSound()
285{ 295{
286 296
287 //qDebug("KOEditorGeneral::pickAlarmSound() %d",mAlarmSoundButton->isOn() ); 297 //qDebug("KOEditorGeneral::pickAlarmSound() %d",mAlarmSoundButton->isOn() );
288 298
289 bool oldState = mAlarmSoundButton->isOn(); 299 bool oldState = mAlarmSoundButton->isOn();
290 300
291 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 301 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
292 i18n("*.wav|Wav Files"), 0)); 302 i18n("*.wav|Wav Files"), 0));
293 if (!fileName.isEmpty()) { 303 if (!fileName.isEmpty()) {
294 mAlarmSound = fileName; 304 mAlarmSound = fileName;
295 QToolTip::remove(mAlarmSoundButton); 305 QToolTip::remove(mAlarmSoundButton);
296 QString dispStr = i18n("Playing '%1'").arg(fileName); 306 QString dispStr = i18n("Playing '%1'").arg(fileName);
297 QToolTip::add(mAlarmSoundButton, dispStr); 307 QToolTip::add(mAlarmSoundButton, dispStr);
298 mAlarmProgramButton->setOn(false); 308 mAlarmProgramButton->setOn(false);
299 mAlarmSoundButton->setOn(true); 309 mAlarmSoundButton->setOn(true);
300 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 310 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
301 } else { 311 } else {
302 mAlarmProgramButton->setOn(oldState); 312 mAlarmProgramButton->setOn(oldState);
303 mAlarmSoundButton->setOn(!oldState); 313 mAlarmSoundButton->setOn(!oldState);
304 314
305 315
306 } 316 }
307 317
308 if (mAlarmProgramButton->isOn()) 318 if (mAlarmProgramButton->isOn())
309 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); 319 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) );
310 if ( mAlarmSoundButton->isOn()) 320 if ( mAlarmSoundButton->isOn())
311 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); 321 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) );
312 322
313} 323}
314 324
315void KOEditorGeneral::pickAlarmProgram() 325void KOEditorGeneral::pickAlarmProgram()
316{ 326{
317 bool oldState = mAlarmProgramButton->isOn(); 327 bool oldState = mAlarmProgramButton->isOn();
318 328
319 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm: ") , 0)); 329 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm: ") , 0));
320 if (!fileName.isEmpty()) { 330 if (!fileName.isEmpty()) {
321 mAlarmProgram = fileName; 331 mAlarmProgram = fileName;
322 QToolTip::remove(mAlarmProgramButton); 332 QToolTip::remove(mAlarmProgramButton);
323 QString dispStr = i18n("Running '%1'").arg(fileName); 333 QString dispStr = i18n("Running '%1'").arg(fileName);
324 QToolTip::add(mAlarmProgramButton, dispStr); 334 QToolTip::add(mAlarmProgramButton, dispStr);
325 mAlarmSoundButton->setOn(false); 335 mAlarmSoundButton->setOn(false);
326 mAlarmProgramButton->setOn(true); 336 mAlarmProgramButton->setOn(true);
327 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 337 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
328 } else { 338 } else {
329 mAlarmProgramButton->setOn(!oldState); 339 mAlarmProgramButton->setOn(!oldState);
330 mAlarmSoundButton->setOn(oldState); 340 mAlarmSoundButton->setOn(oldState);
331 } 341 }
332 342
333 if (mAlarmProgramButton->isOn()) 343 if (mAlarmProgramButton->isOn())
334 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); 344 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) );
335 if ( mAlarmSoundButton->isOn()) 345 if ( mAlarmSoundButton->isOn())
336 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); 346 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) );
337 347
338} 348}
339 349
340 350
341QString KOEditorGeneral::getFittingPath( const QString s ) 351QString KOEditorGeneral::getFittingPath( const QString s )
342{ 352{
343 int maxlen = 50; 353 int maxlen = 50;
344 if ( QApplication::desktop()->width() < 640 ) { 354 if ( QApplication::desktop()->width() < 640 ) {
345 if ( QApplication::desktop()->width() < 320 ) 355 if ( QApplication::desktop()->width() < 320 )
346 maxlen = 22; 356 maxlen = 22;
347 else 357 else
348 maxlen = 35; 358 maxlen = 35;
349 } 359 }
350 if ( s.length() > maxlen ) { 360 if ( s.length() > maxlen ) {
351 return "..."+s.right(maxlen -3); 361 return "..."+s.right(maxlen -3);
352 } 362 }
353 return s; 363 return s;
354} 364}
355 365
356void KOEditorGeneral::enableAlarmEdit(bool enable) 366void KOEditorGeneral::enableAlarmEdit(bool enable)
357{ 367{
358 if ( enable ) { 368 if ( enable ) {
359 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { 369 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) {
360 mAlarmSoundButton->setOn( true ); 370 mAlarmSoundButton->setOn( true );
361 if ( mAlarmSound.isEmpty() ) 371 if ( mAlarmSound.isEmpty() )
362 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 372 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
363 else { 373 else {
364 if ( ! QFile::exists( mAlarmSound ) ) 374 if ( ! QFile::exists( mAlarmSound ) )
365 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 375 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
366 } 376 }
367 } 377 }
368 } 378 }
369 ((QWidget*)parent())->topLevelWidget()->setCaption(mAlarmMessage); 379 ((QWidget*)parent())->topLevelWidget()->setCaption(mAlarmMessage);
370 mAlarmTimeEdit->setEnabled(enable); 380 mAlarmTimeEdit->setEnabled(enable);
371 mAlarmSoundButton->setEnabled(enable); 381 mAlarmSoundButton->setEnabled(enable);
372 mAlarmProgramButton->setEnabled(enable); 382 mAlarmProgramButton->setEnabled(enable);
373 mAlarmIncrCombo->setEnabled(enable); 383 mAlarmIncrCombo->setEnabled(enable);
374} 384}
375 385
376void KOEditorGeneral::disableAlarmEdit(bool disable) 386void KOEditorGeneral::disableAlarmEdit(bool disable)
377{ 387{
378 enableAlarmEdit( !disable ); 388 enableAlarmEdit( !disable );
379} 389}
380 390
381void KOEditorGeneral::enableAlarm( bool enable ) 391void KOEditorGeneral::enableAlarm( bool enable )
382{ 392{
383 enableAlarmEdit( enable ); 393 enableAlarmEdit( enable );
384} 394}
385 395
386void KOEditorGeneral::alarmDisable(bool disable) 396void KOEditorGeneral::alarmDisable(bool disable)
387{ 397{
388 if (!disable) { 398 if (!disable) {
389 //mAlarmBell->setEnabled(true); 399 //mAlarmBell->setEnabled(true);
390 mAlarmButton->setEnabled(true); 400 mAlarmButton->setEnabled(true);
391 } else { 401 } else {
392 //mAlarmBell->setEnabled(false); 402 //mAlarmBell->setEnabled(false);
393 mAlarmButton->setEnabled(false); 403 mAlarmButton->setEnabled(false);
394 mAlarmButton->setChecked(false); 404 mAlarmButton->setChecked(false);
395 mAlarmTimeEdit->setEnabled(false); 405 mAlarmTimeEdit->setEnabled(false);
396 mAlarmSoundButton->setEnabled(false); 406 mAlarmSoundButton->setEnabled(false);
397 mAlarmProgramButton->setEnabled(false); 407 mAlarmProgramButton->setEnabled(false);
398 mAlarmIncrCombo->setEnabled(false); 408 mAlarmIncrCombo->setEnabled(false);
399 } 409 }
400} 410}
401 411
402void KOEditorGeneral::setCategories(const QString &str) 412void KOEditorGeneral::setCategories(const QString &str)
403{ 413{
404 QString tt = str; 414 QString tt = str;
405 QToolTip::add( mCategoriesLabel, i18n("<b>Click here to edit categories: </b>") +"<em>"+tt.replace( QRegExp(","),", ")+"</em>"); 415 QToolTip::add( mCategoriesLabel, i18n("<b>Click here to edit categories: </b>") +"<em>"+tt.replace( QRegExp(","),", ")+"</em>");
406 mCategoriesLabel->setText(str); 416 mCategoriesLabel->setText(str);
407} 417}
408 418
409void KOEditorGeneral::setDefaults(bool allDay) 419void KOEditorGeneral::setDefaults(bool allDay)
410{ 420{
411#if 0 421#if 0
412 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); 422 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName());
413#endif 423#endif
414 424
415 mAlarmMessage = i18n("Edit new item"); 425 mAlarmMessage = i18n("Edit new item");
416 enableAlarmEdit( !allDay ); 426 enableAlarmEdit( !allDay );
417 427
418 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 428 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
419 int alarmTime; 429 int alarmTime;
420 int a[] = { 1,5,10,15,30,60,180, 1440 }; 430 int a[] = { 1,5,10,15,30,60,180, 1440 };
421 int index = KOPrefs::instance()->mAlarmTime; 431 int index = KOPrefs::instance()->mAlarmTime;
422 if (index < 0 || index > 7) { 432 if (index < 0 || index > 7) {
423 alarmTime = 15; 433 alarmTime = 15;
424 } else { 434 } else {
425 alarmTime = a[index]; 435 alarmTime = a[index];
426 } 436 }
427 mAlarmButton ->setChecked( false ); 437 mAlarmButton ->setChecked( false );
428 mAlarmTimeEdit->setValue(alarmTime); 438 mAlarmTimeEdit->setValue(alarmTime);
429 mAlarmIncrCombo->setCurrentItem(0); 439 mAlarmIncrCombo->setCurrentItem(0);
430 enableAlarmEdit( false ); 440 enableAlarmEdit( false );
431 //alarmDisable (false); 441 //alarmDisable (false);
432 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); 442 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic);
433 mCancelBox->setChecked( false ); 443 mCancelBox->setChecked( false );
434 mSummaryEdit->setEditText(""); 444 mSummaryEdit->setEditText("");
435 mLocationEdit->setEditText(""); 445 mLocationEdit->setEditText("");
436 mDescriptionEdit->setText(""); 446 mDescriptionEdit->setText("");
437 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 447 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
438 setCategories(""); 448 setCategories("");
449 fillCalCombo();
439} 450}
440void KOEditorGeneral::setSecrecy( int num ) 451void KOEditorGeneral::setSecrecy( int num )
441{ 452{
442 mSecrecyCombo->setCurrentItem(num); 453 mSecrecyCombo->setCurrentItem(num);
443} 454}
444void KOEditorGeneral::readIncidence(Incidence *event) 455void KOEditorGeneral::fillCalCombo( int setToID )
445{ 456{
457 mCalendarBox->clear();
458 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
459 int std = 0;
460 int count = 0;
461 while ( kkf ) {
462 if ( !kkf->mErrorOnLoad &&! kkf->isReadOnly ) {
463 if ( setToID ) {
464 if ( kkf->mCalNumber == setToID )
465 std = count;
466 } else {
467 if ( kkf->isStandard ) {
468 std = count;
469 }
470 }
471 ++count;
472 mCalendarBox->insertItem( kkf->mName );
473 }
474 kkf = KOPrefs::instance()->mCalendars.next();
475 }
476 mCalendarBox->setCurrentItem( std );
477 if ( KOPrefs::instance()->mCalendars.count() == 1 )
478 mCalendarBox->hide();
479 else
480 mCalendarBox->show();
481
482}
483int KOEditorGeneral::getCalendarID()
484{
485 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
486 while ( kkf ) {
487 if ( mCalendarBox->currentText() == kkf->mName)
488 return kkf->mCalNumber;
489 kkf = KOPrefs::instance()->mCalendars.next();
490 }
491 return 1;
492}
446 493
494void KOEditorGeneral::readIncidence(Incidence *event)
495{
496 fillCalCombo( event->calID() );
447 mAlarmMessage = event->summary(); 497 mAlarmMessage = event->summary();
448 if ( ! event->location().isEmpty() ) 498 if ( ! event->location().isEmpty() )
449 mAlarmMessage += " ("+event->location()+")"; 499 mAlarmMessage += " ("+event->location()+")";
450 mAlarmIncrCombo->setCurrentItem(0); 500 mAlarmIncrCombo->setCurrentItem(0);
451 mSummaryEdit->setEditText(event->summary()); 501 mSummaryEdit->setEditText(event->summary());
452 mLocationEdit->setEditText(event->location()); 502 mLocationEdit->setEditText(event->location());
453 mDescriptionEdit->setText(event->description()); 503 mDescriptionEdit->setText(event->description());
454 504
455#if 0 505#if 0
456 // organizer information 506 // organizer information
457 mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); 507 mOwnerLabel->setText(i18n("Owner: ") + event->organizer());
458#endif 508#endif
459 509
460 enableAlarmEdit( event->isAlarmEnabled() ); 510 enableAlarmEdit( event->isAlarmEnabled() );
461 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) "); 511 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) ");
462 if(!event->isAlarmEnabled()) { 512 if(!event->isAlarmEnabled()) {
463 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 513 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
464 int alarmTime; 514 int alarmTime;
465 int a[] = { 1,5,10,15,30,60,180, 1440 }; 515 int a[] = { 1,5,10,15,30,60,180, 1440 };
466 int index = KOPrefs::instance()->mAlarmTime; 516 int index = KOPrefs::instance()->mAlarmTime;
467 if (index < 0 || index > 7) { 517 if (index < 0 || index > 7) {
468 alarmTime = 15; 518 alarmTime = 15;
469 } else { 519 } else {
470 alarmTime = a[index]; 520 alarmTime = a[index];
471 } 521 }
472 mAlarmTimeEdit->setValue(alarmTime); 522 mAlarmTimeEdit->setValue(alarmTime);
473 } 523 }
474 mAlarmButton->setChecked( event->isAlarmEnabled() ); 524 mAlarmButton->setChecked( event->isAlarmEnabled() );
475 mSecrecyCombo->setCurrentItem(event->secrecy()); 525 mSecrecyCombo->setCurrentItem(event->secrecy());
476 mCancelBox->setChecked( event->cancelled() ); 526 mCancelBox->setChecked( event->cancelled() );
477 mAlarmProgramButton->setOn(false); 527 mAlarmProgramButton->setOn(false);
478 mAlarmSoundButton->setOn(false); 528 mAlarmSoundButton->setOn(false);
479 529
480 // set up alarm stuff 530 // set up alarm stuff
481 QPtrList<Alarm> alarms = event->alarms(); 531 QPtrList<Alarm> alarms = event->alarms();
482 Alarm* alarm; 532 Alarm* alarm;
483 mAlarmIncrCombo->setCurrentItem(0); 533 mAlarmIncrCombo->setCurrentItem(0);
484 for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) { 534 for ( alarm = alarms.first(); alarm; alarm = alarms.next() ) {
485 int offset; 535 int offset;
486 if ( alarm->hasTime() ) { 536 if ( alarm->hasTime() ) {
487 QDateTime t = alarm->time(); 537 QDateTime t = alarm->time();
488 offset = event->dtStart().secsTo( t ); 538 offset = event->dtStart().secsTo( t );
489 } else { 539 } else {
490 offset = alarm->startOffset().asSeconds(); 540 offset = alarm->startOffset().asSeconds();
491 } 541 }
492 if ( offset != 0 ) { 542 if ( offset != 0 ) {
493 offset = offset / -60; // make minutes 543 offset = offset / -60; // make minutes
494 if (offset % 60 == 0) { // divides evenly into hours? 544 if (offset % 60 == 0) { // divides evenly into hours?
495 offset = offset / 60; 545 offset = offset / 60;
496 mAlarmIncrCombo->setCurrentItem(1); 546 mAlarmIncrCombo->setCurrentItem(1);
497 if (offset % 24 == 0) { // divides evenly into days? 547 if (offset % 24 == 0) { // divides evenly into days?
498 offset = offset / 24; 548 offset = offset / 24;
499 mAlarmIncrCombo->setCurrentItem(2); 549 mAlarmIncrCombo->setCurrentItem(2);
500 } 550 }
501 } 551 }
502 } 552 }
503 mAlarmTimeEdit->setValue( offset ); 553 mAlarmTimeEdit->setValue( offset );
504 if (alarm->type() == Alarm::Procedure) { 554 if (alarm->type() == Alarm::Procedure) {
505 555
506 mAlarmProgram = alarm->programFile(); 556 mAlarmProgram = alarm->programFile();
507 mAlarmProgramButton->setOn(true); 557 mAlarmProgramButton->setOn(true);
508 QString dispStr = i18n("Running '%1'").arg(mAlarmProgram); 558 QString dispStr = i18n("Running '%1'").arg(mAlarmProgram);
509 QToolTip::add(mAlarmProgramButton, dispStr); 559 QToolTip::add(mAlarmProgramButton, dispStr);
510 } 560 }
511 else if (alarm->type() == Alarm::Audio) { 561 else if (alarm->type() == Alarm::Audio) {
512 mAlarmSound = alarm->audioFile(); 562 mAlarmSound = alarm->audioFile();
513 if ( ! QFile::exists( mAlarmSound ) ) 563 if ( ! QFile::exists( mAlarmSound ) )
514 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 564 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
515 mAlarmSoundButton->setOn(true); 565 mAlarmSoundButton->setOn(true);
516 QString dispStr = i18n("Playing '%1'").arg(mAlarmSound); 566 QString dispStr = i18n("Playing '%1'").arg(mAlarmSound);
517 QToolTip::add(mAlarmSoundButton, dispStr); 567 QToolTip::add(mAlarmSoundButton, dispStr);
518 } 568 }
519 mAlarmButton->setChecked(alarm->enabled()); 569 mAlarmButton->setChecked(alarm->enabled());
520 enableAlarmEdit( alarm->enabled() ); 570 enableAlarmEdit( alarm->enabled() );
521 //qDebug("nableAlarmEdit( alarm->enabled() )********* "); 571 //qDebug("nableAlarmEdit( alarm->enabled() )********* ");
522 // TODO: Deal with multiple alarms 572 // TODO: Deal with multiple alarms
523 break; // For now, stop after the first alarm 573 break; // For now, stop after the first alarm
524 } 574 }
525 575
526 setCategories(event->categoriesStr()); 576 setCategories(event->categoriesStr());
527} 577}
528 578
529void KOEditorGeneral::writeIncidence(Incidence *event) 579void KOEditorGeneral::writeIncidence(Incidence *event)
530{ 580{
531 // kdDebug() << "KOEditorGeneral::writeEvent()" << endl; 581 // kdDebug() << "KOEditorGeneral::writeEvent()" << endl;
532 mLocationEdit->save(KOLocationBox::LOCATION); 582 mLocationEdit->save(KOLocationBox::LOCATION);
533 event->setSummary(mSummaryEdit->currentText()); 583 event->setSummary(mSummaryEdit->currentText());
534 event->setLocation(mLocationEdit->currentText()); 584 event->setLocation(mLocationEdit->currentText());
535 event->setDescription(mDescriptionEdit->text()); 585 event->setDescription(mDescriptionEdit->text());
536 event->setCategories(mCategoriesLabel->text()); 586 event->setCategories(mCategoriesLabel->text());
537 event->setSecrecy(mSecrecyCombo->currentItem()); 587 event->setSecrecy(mSecrecyCombo->currentItem());
538 event->setCancelled(mCancelBox->isChecked() );; 588 event->setCancelled(mCancelBox->isChecked() );;
539 // alarm stuff 589 // alarm stuff
540 if (mAlarmButton->isChecked()) { 590 if (mAlarmButton->isChecked()) {
541 if (event->alarms().count() == 0) 591 if (event->alarms().count() == 0)
542 event->newAlarm(); 592 event->newAlarm();
543 QPtrList<Alarm> alarms = event->alarms(); 593 QPtrList<Alarm> alarms = event->alarms();
544 Alarm *alarm; 594 Alarm *alarm;
545 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 595 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
546 alarm->setEnabled(true); 596 alarm->setEnabled(true);
547 int j = mAlarmTimeEdit->value()* -60; 597 int j = mAlarmTimeEdit->value()* -60;
548 if (mAlarmIncrCombo->currentItem() == 1) 598 if (mAlarmIncrCombo->currentItem() == 1)
549 j = j * 60; 599 j = j * 60;
550 else if (mAlarmIncrCombo->currentItem() == 2) 600 else if (mAlarmIncrCombo->currentItem() == 2)
551 j = j * (60 * 24); 601 j = j * (60 * 24);
552 alarm->setStartOffset( j ); 602 alarm->setStartOffset( j );
553 603
554 if (!mAlarmProgram.isEmpty() && mAlarmProgramButton->isOn()) { 604 if (!mAlarmProgram.isEmpty() && mAlarmProgramButton->isOn()) {
555 alarm->setProcedureAlarm(mAlarmProgram); 605 alarm->setProcedureAlarm(mAlarmProgram);
556 } 606 }
557 else if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) 607 else if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn())
558 alarm->setAudioAlarm(mAlarmSound); 608 alarm->setAudioAlarm(mAlarmSound);
559 else 609 else
560 alarm->setType(Alarm::Invalid); 610 alarm->setType(Alarm::Invalid);
561 //alarm->setAudioAlarm("default"); 611 //alarm->setAudioAlarm("default");
562 // TODO: Deal with multiple alarms 612 // TODO: Deal with multiple alarms
563 break; // For now, stop after the first alarm 613 break; // For now, stop after the first alarm
564 } 614 }
565 } else { 615 } else {
566 Alarm* alarm = event->alarms().first(); 616 Alarm* alarm = event->alarms().first();
567 if ( alarm ) { 617 if ( alarm ) {
568 alarm->setEnabled(false); 618 alarm->setEnabled(false);
569 alarm->setType(Alarm::Invalid); 619 alarm->setType(Alarm::Invalid);
570 } 620 }
571 } 621 }
622 event->setCalID( getCalendarID() );
572} 623}
diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h
index c463403..d8b15af 100644
--- a/korganizer/koeditorgeneral.h
+++ b/korganizer/koeditorgeneral.h
@@ -1,121 +1,125 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 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 KOEDITORGENERAL_H 23#ifndef KOEDITORGENERAL_H
24#define KOEDITORGENERAL_H 24#define KOEDITORGENERAL_H
25 25
26#include <qframe.h> 26#include <qframe.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qcheckbox.h> 28#include <qcheckbox.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qpopupmenu.h> 30#include <qpopupmenu.h>
31#include <qgroupbox.h> 31#include <qgroupbox.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qlistview.h> 34#include <qlistview.h>
35#include <qradiobutton.h> 35#include <qradiobutton.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qspinbox.h> 37#include <qspinbox.h>
38#include <qcombobox.h>
38 39
39#include <ktextedit.h> 40#include <ktextedit.h>
40#include <krestrictedline.h> 41#include <krestrictedline.h>
41 42
42#include <libkcal/incidence.h> 43#include <libkcal/incidence.h>
43 44
44#include "ktimeedit.h" 45#include "ktimeedit.h"
45 46
46class KDateEdit; 47class KDateEdit;
47class KOLocationBox; 48class KOLocationBox;
48using namespace KCal; 49using namespace KCal;
49 50
50class KOEditorGeneral : public QObject 51class KOEditorGeneral : public QObject
51{ 52{
52 Q_OBJECT 53 Q_OBJECT
53 public: 54 public:
54 KOEditorGeneral (QObject* parent=0,const char* name=0); 55 KOEditorGeneral (QObject* parent=0,const char* name=0);
55 virtual ~KOEditorGeneral(); 56 virtual ~KOEditorGeneral();
56 void setFocusOn( int i ); 57 void setFocusOn( int i );
57 void initHeader(QWidget *,QBoxLayout *); 58 void initHeader(QWidget *,QBoxLayout *);
58 void initDescription(QWidget *,QBoxLayout *); 59 void initDescription(QWidget *,QBoxLayout *);
59 void initSecrecy(QWidget *,QBoxLayout *); 60 void initSecrecy(QWidget *,QBoxLayout *);
60 void initCategories(QWidget *,QBoxLayout *); 61 void initCategories(QWidget *,QBoxLayout *);
61 void initAlarm(QWidget *,QBoxLayout *); 62 void initAlarm(QWidget *,QBoxLayout *);
62 63
63 /** Set widgets to default values */ 64 /** Set widgets to default values */
64 void setDefaults(bool allDay); 65 void setDefaults(bool allDay);
65 /** Read event object and setup widgets accordingly */ 66 /** Read event object and setup widgets accordingly */
66 void readIncidence(Incidence *); 67 void readIncidence(Incidence *);
67 /** Write event settings to event object */ 68 /** Write event settings to event object */
68 void writeIncidence(Incidence *); 69 void writeIncidence(Incidence *);
69 70
70 /** Check if the input is valid. */ 71 /** Check if the input is valid. */
71 bool validateInput() { return true; } 72 bool validateInput() { return true; }
72 73
73 void enableAlarm( bool enable ); 74 void enableAlarm( bool enable );
74 void setSecrecy( int num ); 75 void setSecrecy( int num );
76 int getCalendarID();
75 public slots: 77 public slots:
76 void setCategories(const QString &); 78 void setCategories(const QString &);
77 void editCategories(); 79 void editCategories();
78 80
79 protected slots: 81 protected slots:
80 void enableAlarmEdit( bool enable ); 82 void enableAlarmEdit( bool enable );
81 void disableAlarmEdit( bool disable ); 83 void disableAlarmEdit( bool disable );
82 void alarmDisable( bool disable ); 84 void alarmDisable( bool disable );
83 void pickAlarmSound(); 85 void pickAlarmSound();
84 void pickAlarmProgram(); 86 void pickAlarmProgram();
85 void slotSetFocusOn(); 87 void slotSetFocusOn();
86 void showCatPopup(); 88 void showCatPopup();
87 void selectedCatPopup( int ); 89 void selectedCatPopup( int );
88 90
89 signals: 91 signals:
90 void openCategoryDialog(); 92 void openCategoryDialog();
91 void allAccepted(); 93 void allAccepted();
92 void dateTimesChanged(QDateTime,QDateTime); 94 void dateTimesChanged(QDateTime,QDateTime);
93 95
94 protected: 96 protected:
97 void fillCalCombo( int setToID = 0 );
95 int mNextFocus; 98 int mNextFocus;
96 //QLineEdit *mSummaryEdit; 99 //QLineEdit *mSummaryEdit;
97 //QLineEdit *mLocationEdit; 100 //QLineEdit *mLocationEdit;
98 KOLocationBox *mSummaryEdit; 101 KOLocationBox *mSummaryEdit;
99 KOLocationBox *mLocationEdit; 102 KOLocationBox *mLocationEdit;
103 QComboBox *mCalendarBox;
100 QLabel *mAlarmBell; 104 QLabel *mAlarmBell;
101 QCheckBox *mAlarmButton; 105 QCheckBox *mAlarmButton;
102 QSpinBox *mAlarmTimeEdit; 106 QSpinBox *mAlarmTimeEdit;
103 QPushButton *mAlarmSoundButton; 107 QPushButton *mAlarmSoundButton;
104 QPushButton *mAlarmProgramButton; 108 QPushButton *mAlarmProgramButton;
105 QComboBox *mAlarmIncrCombo; 109 QComboBox *mAlarmIncrCombo;
106 KTextEdit *mDescriptionEdit; 110 KTextEdit *mDescriptionEdit;
107 QLabel *mOwnerLabel; 111 QLabel *mOwnerLabel;
108 QComboBox *mSecrecyCombo; 112 QComboBox *mSecrecyCombo;
109 QCheckBox *mCancelBox; 113 QCheckBox *mCancelBox;
110 QPushButton *mCategoriesButton; 114 QPushButton *mCategoriesButton;
111 QPushButton *mCategoriesLabel; 115 QPushButton *mCategoriesLabel;
112 116
113 private: 117 private:
114 QPopupMenu * mCatPopup; 118 QPopupMenu * mCatPopup;
115 QString getFittingPath( const QString ) ; 119 QString getFittingPath( const QString ) ;
116 QString mAlarmSound; 120 QString mAlarmSound;
117 QString mAlarmProgram; 121 QString mAlarmProgram;
118 QString mAlarmMessage; 122 QString mAlarmMessage;
119}; 123};
120 124
121#endif 125#endif
diff --git a/korganizer/koeventpopupmenu.cpp b/korganizer/koeventpopupmenu.cpp
index 77322e7..fc4d9a4 100644
--- a/korganizer/koeventpopupmenu.cpp
+++ b/korganizer/koeventpopupmenu.cpp
@@ -1,201 +1,200 @@
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#include "koprefs.h" 33#include "koprefs.h"
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 mCalPopup = new QPopupMenu ( this ); 60 mCalPopup = new QPopupMenu ( this );
61 mCalPopup->setCheckable (true); 61 mCalPopup->setCheckable (true);
62 connect(mCalPopup,SIGNAL( aboutToShow ()), this ,SLOT( fillCalPopup())); 62 connect(mCalPopup,SIGNAL( aboutToShow ()), this ,SLOT( fillCalPopup()));
63 connect(mCalPopup,SIGNAL( activated ( int ) ), this ,SLOT( computeCalPopup( int ))); 63 connect(mCalPopup,SIGNAL( activated ( int ) ), this ,SLOT( computeCalPopup( int )));
64 //mEditOnlyItems.append(insertItem (i18n("Categories"),mCatPopup )); 64 //mEditOnlyItems.append(insertItem (i18n("Categories"),mCatPopup ));
65 //mEditOnlyItems.append(insertItem (i18n("Calendar"),mCalPopup )); 65 //mEditOnlyItems.append(insertItem (i18n("Calendar"),mCalPopup ));
66 insertItem (i18n("Categories"),mCatPopup ); 66 insertItem (i18n("Categories"),mCatPopup );
67 insertItem (i18n("Calendar"),mCalPopup ); 67 insertItem (i18n("Calendar"),mCalPopup );
68 QValueList<int>::Iterator it; 68 QValueList<int>::Iterator it;
69 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { 69 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
70 mSingleOnlyItems.append(*it); 70 mSingleOnlyItems.append(*it);
71 } 71 }
72 72
73} 73}
74void KOEventPopupMenu::enableDefault( bool enable ) 74void KOEventPopupMenu::enableDefault( bool enable )
75{ 75{
76 isDisabled = !enable; 76 isDisabled = !enable;
77 QValueList<int>::Iterator it; 77 QValueList<int>::Iterator it;
78 for( it = mSingleOnlyItems.begin(); it != mSingleOnlyItems.end(); ++it ) { 78 for( it = mSingleOnlyItems.begin(); it != mSingleOnlyItems.end(); ++it ) {
79 setItemEnabled(*it,enable); 79 setItemEnabled(*it,enable);
80 } 80 }
81
82} 81}
83 82
84void KOEventPopupMenu::fillCalPopup() // CAL 83void KOEventPopupMenu::fillCalPopup() // CAL
85{ 84{
86 mCalPopup->clear(); 85 mCalPopup->clear();
87 if (!mCurrentIncidence) return; 86 if (!mCurrentIncidence) return;
88 bool readO = mCurrentIncidence->isReadOnly()|| isDisabled; 87 bool readO = mCurrentIncidence->isReadOnly()|| isDisabled;
89 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 88 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
90 while ( kkf ) { 89 while ( kkf ) {
91 int index = mCalPopup->insertItem( kkf->mName, kkf->mCalNumber); 90 int index = mCalPopup->insertItem( kkf->mName, kkf->mCalNumber);
92 if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO ) 91 if ( kkf->mErrorOnLoad || kkf->isReadOnly || readO )
93 mCalPopup->setItemEnabled( index, false ); 92 mCalPopup->setItemEnabled( index, false );
94 mCalPopup->setItemChecked (index, kkf->mCalNumber == mCurrentIncidence->calID()); 93 mCalPopup->setItemChecked (index, kkf->mCalNumber == mCurrentIncidence->calID());
95 kkf = KOPrefs::instance()->mCalendars.next(); 94 kkf = KOPrefs::instance()->mCalendars.next();
96 } 95 }
97} 96}
98void KOEventPopupMenu::computeCalPopup( int index ) // CAL 97void KOEventPopupMenu::computeCalPopup( int index ) // CAL
99{ 98{
100 if (!mCurrentIncidence) return; 99 if (!mCurrentIncidence) return;
101 mCurrentIncidence->setCalID( index ); 100 mCurrentIncidence->setCalID( index );
102 emit categoryChanged( mCurrentIncidence ); 101 emit categoryChanged( mCurrentIncidence );
103} 102}
104void KOEventPopupMenu::fillCatPopup() 103void KOEventPopupMenu::fillCatPopup()
105{ 104{
106 mCatPopup->clear(); 105 mCatPopup->clear();
107 if (!mCurrentIncidence) return; 106 if (!mCurrentIncidence) return;
108 bool readO = mCurrentIncidence->isReadOnly() || isDisabled; 107 bool readO = mCurrentIncidence->isReadOnly() || isDisabled;
109 QStringList checkedCategories = mCurrentIncidence->categories(); 108 QStringList checkedCategories = mCurrentIncidence->categories();
110 int index = 0; 109 int index = 0;
111 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 110 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
112 it != KOPrefs::instance()->mCustomCategories.end (); 111 it != KOPrefs::instance()->mCustomCategories.end ();
113 ++it) { 112 ++it) {
114 mCatPopup->insertItem (*it, index ); 113 mCatPopup->insertItem (*it, index );
115 if (checkedCategories.find (*it) != checkedCategories.end ()) { 114 if (checkedCategories.find (*it) != checkedCategories.end ()) {
116 mCatPopup->setItemChecked (index, true); 115 mCatPopup->setItemChecked (index, true);
117 } 116 }
118 if ( readO ) 117 if ( readO )
119 mCatPopup->setItemEnabled( index, false ); 118 mCatPopup->setItemEnabled( index, false );
120 ++index; 119 ++index;
121 } 120 }
122} 121}
123void KOEventPopupMenu::computeCatPopup( int index ) 122void KOEventPopupMenu::computeCatPopup( int index )
124{ 123{
125 if (!mCurrentIncidence) return; 124 if (!mCurrentIncidence) return;
126 QStringList categories = mCurrentIncidence->categories(); 125 QStringList categories = mCurrentIncidence->categories();
127 QString colcat = categories.first(); 126 QString colcat = categories.first();
128 if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ()) 127 if (categories.find (KOPrefs::instance()->mCustomCategories[index]) != categories.end ())
129 categories.remove (KOPrefs::instance()->mCustomCategories[index]); 128 categories.remove (KOPrefs::instance()->mCustomCategories[index]);
130 else 129 else
131 categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]); 130 categories.insert (categories.end(), KOPrefs::instance()->mCustomCategories[index]);
132 categories.sort (); 131 categories.sort ();
133 if ( !colcat.isEmpty() ) { 132 if ( !colcat.isEmpty() ) {
134 if ( categories.find ( colcat ) != categories.end () ) { 133 if ( categories.find ( colcat ) != categories.end () ) {
135 categories.remove( colcat ); 134 categories.remove( colcat );
136 categories.prepend( colcat ); 135 categories.prepend( colcat );
137 } 136 }
138 } 137 }
139 mCurrentIncidence->setCategories( categories ); 138 mCurrentIncidence->setCategories( categories );
140 emit categoryChanged( mCurrentIncidence ); 139 emit categoryChanged( mCurrentIncidence );
141} 140}
142void KOEventPopupMenu::showIncidencePopup(Incidence *incidence) 141void KOEventPopupMenu::showIncidencePopup(Incidence *incidence)
143{ 142{
144 if ( !incidence) return; 143 if ( !incidence) return;
145 mCurrentIncidence = incidence; 144 mCurrentIncidence = incidence;
146 145
147 if (mCurrentIncidence) { 146 if (mCurrentIncidence) {
148 // Enable/Disabled menu items only valid for editable events. 147 // Enable/Disabled menu items only valid for editable events.
149 if ( !isDisabled ) { 148 if ( !isDisabled ) {
150 QValueList<int>::Iterator it; 149 QValueList<int>::Iterator it;
151 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) { 150 for( it = mEditOnlyItems.begin(); it != mEditOnlyItems.end(); ++it ) {
152 setItemEnabled(*it,!mCurrentIncidence->isReadOnly()); 151 setItemEnabled(*it,!mCurrentIncidence->isReadOnly());
153 } 152 }
154 } 153 }
155 popup(QCursor::pos()); 154 popup(QCursor::pos());
156 } 155 }
157} 156}
158 157
159void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text, 158void KOEventPopupMenu::addAdditionalItem(const QIconSet &icon,const QString &text,
160 const QObject *receiver, const char *member, 159 const QObject *receiver, const char *member,
161 bool editOnly) 160 bool editOnly)
162{ 161{
163 if (!mHasAdditionalItems) { 162 if (!mHasAdditionalItems) {
164 mHasAdditionalItems = true; 163 mHasAdditionalItems = true;
165 insertSeparator(); 164 insertSeparator();
166 } 165 }
167 int id = insertItem(icon,text,receiver,member); 166 int id = insertItem(icon,text,receiver,member);
168 if (editOnly) mEditOnlyItems.append(id); 167 if (editOnly) mEditOnlyItems.append(id);
169} 168}
170 169
171void KOEventPopupMenu::popupShow() 170void KOEventPopupMenu::popupShow()
172{ 171{
173 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence); 172 if (mCurrentIncidence) emit showIncidenceSignal(mCurrentIncidence);
174} 173}
175 174
176void KOEventPopupMenu::popupEdit() 175void KOEventPopupMenu::popupEdit()
177{ 176{
178 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence); 177 if (mCurrentIncidence) emit editIncidenceSignal(mCurrentIncidence);
179} 178}
180 179
181void KOEventPopupMenu::popupDelete() 180void KOEventPopupMenu::popupDelete()
182{ 181{
183 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence); 182 if (mCurrentIncidence) emit deleteIncidenceSignal(mCurrentIncidence);
184} 183}
185void KOEventPopupMenu::popupClone() 184void KOEventPopupMenu::popupClone()
186{ 185{
187 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence); 186 if (mCurrentIncidence) emit cloneIncidenceSignal(mCurrentIncidence);
188} 187}
189void KOEventPopupMenu::popupCancel() 188void KOEventPopupMenu::popupCancel()
190{ 189{
191 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence); 190 if (mCurrentIncidence) emit cancelIncidenceSignal(mCurrentIncidence);
192} 191}
193void KOEventPopupMenu::popupMove() 192void KOEventPopupMenu::popupMove()
194{ 193{
195 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence); 194 if (mCurrentIncidence) emit moveIncidenceSignal(mCurrentIncidence);
196} 195}
197 196
198void KOEventPopupMenu::popupBeam() 197void KOEventPopupMenu::popupBeam()
199{ 198{
200 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence); 199 if (mCurrentIncidence) emit beamIncidenceSignal(mCurrentIncidence);
201} 200}