-rw-r--r-- | korganizer/koeditordetails.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/korganizer/koeditordetails.cpp b/korganizer/koeditordetails.cpp index 8e2fabe..2e1ae6e 100644 --- a/korganizer/koeditordetails.cpp +++ b/korganizer/koeditordetails.cpp | |||
@@ -1,432 +1,433 @@ | |||
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 thse hope that it will be useful, | 10 | This program is distributed in thse 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 <qtooltip.h> | 24 | #include <qtooltip.h> |
25 | #include <qfiledialog.h> | 25 | #include <qfiledialog.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 <qapp.h> | 32 | #include <qapp.h> |
33 | 33 | ||
34 | #include <klocale.h> | 34 | #include <klocale.h> |
35 | #include <kglobal.h> | 35 | #include <kglobal.h> |
36 | #include <kiconloader.h> | 36 | #include <kiconloader.h> |
37 | #include <kstandarddirs.h> | 37 | #include <kstandarddirs.h> |
38 | #include <kmessagebox.h> | 38 | #include <kmessagebox.h> |
39 | #ifndef KORG_NOKABC | 39 | #ifndef KORG_NOKABC |
40 | 40 | ||
41 | #ifdef DESKTOP_VERSION | 41 | #ifdef DESKTOP_VERSION |
42 | #include <kabc/addresseedialog.h> | 42 | #include <kabc/addresseedialog.h> |
43 | #else //DESKTOP_VERSION | 43 | #else //DESKTOP_VERSION |
44 | #include <externalapphandler.h> | 44 | #include <externalapphandler.h> |
45 | #endif //DESKTOP_VERSION | 45 | #endif //DESKTOP_VERSION |
46 | 46 | ||
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | #include <libkcal/incidence.h> | 49 | #include <libkcal/incidence.h> |
50 | 50 | ||
51 | #include "koprefs.h" | 51 | #include "koprefs.h" |
52 | 52 | ||
53 | #include "koeditordetails.h" | 53 | #include "koeditordetails.h" |
54 | 54 | ||
55 | template <> | 55 | template <> |
56 | CustomListViewItem<class Attendee *>::~CustomListViewItem() | 56 | CustomListViewItem<class Attendee *>::~CustomListViewItem() |
57 | { | 57 | { |
58 | delete mData; | 58 | delete mData; |
59 | } | 59 | } |
60 | 60 | ||
61 | template <> | 61 | template <> |
62 | void CustomListViewItem<class Attendee *>::updateItem() | 62 | void CustomListViewItem<class Attendee *>::updateItem() |
63 | { | 63 | { |
64 | setText(0,mData->name()); | 64 | setText(0,mData->name()); |
65 | setText(1,mData->email()); | 65 | setText(1,mData->email()); |
66 | setText(2,mData->roleStr()); | 66 | setText(2,mData->roleStr()); |
67 | setText(3,mData->statusStr()); | 67 | setText(3,mData->statusStr()); |
68 | if (mData->RSVP() && !mData->email().isEmpty()) | 68 | if (mData->RSVP() && !mData->email().isEmpty()) |
69 | setPixmap(4,SmallIcon("mailappt")); | 69 | setPixmap(4,SmallIcon("mailappt")); |
70 | else | 70 | else |
71 | setPixmap(4,SmallIcon("nomailappt")); | 71 | setPixmap(4,SmallIcon("nomailappt")); |
72 | } | 72 | } |
73 | 73 | ||
74 | 74 | ||
75 | KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name) | 75 | KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name) |
76 | : QWidget( parent, name), mDisableItemUpdate( false ) | 76 | : QWidget( parent, name), mDisableItemUpdate( false ) |
77 | { | 77 | { |
78 | QGridLayout *topLayout = new QGridLayout(this); | 78 | QGridLayout *topLayout = new QGridLayout(this); |
79 | topLayout->setSpacing(spacing); | 79 | topLayout->setSpacing(spacing); |
80 | 80 | ||
81 | QString organizer = KOPrefs::instance()->email(); | 81 | QString organizer = KOPrefs::instance()->email(); |
82 | mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this); | 82 | mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this); |
83 | 83 | ||
84 | mListView = new KListView(this,"mListView"); | 84 | mListView = new KListView(this,"mListView"); |
85 | mListView->addColumn(i18n("Name"),180); | 85 | mListView->addColumn(i18n("Name"),180); |
86 | mListView->addColumn(i18n("Email"),180); | 86 | mListView->addColumn(i18n("Email"),180); |
87 | mListView->addColumn(i18n("Role"),60); | 87 | mListView->addColumn(i18n("Role"),60); |
88 | mListView->addColumn(i18n("Status"),100); | 88 | mListView->addColumn(i18n("Status"),100); |
89 | mListView->addColumn(i18n("RSVP"),35); | 89 | mListView->addColumn(i18n("RSVP"),35); |
90 | if ( KOPrefs::instance()->mCompactDialogs ) { | 90 | if ( KOPrefs::instance()->mCompactDialogs ) { |
91 | //mListView->setFixedHeight(78); | 91 | //mListView->setFixedHeight(78); |
92 | } | 92 | } |
93 | 93 | ||
94 | connect(mListView,SIGNAL(selectionChanged(QListViewItem *)), | 94 | connect(mListView,SIGNAL(selectionChanged(QListViewItem *)), |
95 | SLOT(updateAttendeeInput())); | 95 | SLOT(updateAttendeeInput())); |
96 | 96 | ||
97 | QLabel *attendeeLabel = new QLabel(this); | 97 | QLabel *attendeeLabel = new QLabel(this); |
98 | attendeeLabel->setText(i18n("Name:")); | 98 | attendeeLabel->setText(i18n("Name:")); |
99 | attendeeLabel->setFixedSize( attendeeLabel->sizeHint() ); | 99 | attendeeLabel->setFixedSize( attendeeLabel->sizeHint() ); |
100 | mNameEdit = new QLineEdit(this); | 100 | mNameEdit = new QLineEdit(this); |
101 | connect(mNameEdit,SIGNAL(textChanged(const QString &)), | 101 | connect(mNameEdit,SIGNAL(textChanged(const QString &)), |
102 | SLOT(updateAttendeeItem())); | 102 | SLOT(updateAttendeeItem())); |
103 | 103 | ||
104 | mUidEdit = new QLineEdit(0); | 104 | mUidEdit = new QLineEdit(0); |
105 | mUidEdit->setText(""); | 105 | mUidEdit->setText(""); |
106 | 106 | ||
107 | QLabel *emailLabel = new QLabel(this); | 107 | QLabel *emailLabel = new QLabel(this); |
108 | emailLabel->setText(i18n("Email:")); | 108 | emailLabel->setText(i18n("Email:")); |
109 | mEmailEdit = new QLineEdit(this); | 109 | mEmailEdit = new QLineEdit(this); |
110 | connect(mEmailEdit,SIGNAL(textChanged(const QString &)), | 110 | connect(mEmailEdit,SIGNAL(textChanged(const QString &)), |
111 | SLOT(updateAttendeeItem())); | 111 | SLOT(updateAttendeeItem())); |
112 | 112 | ||
113 | QLabel *attendeeRoleLabel = new QLabel(this); | 113 | QLabel *attendeeRoleLabel = new QLabel(this); |
114 | attendeeRoleLabel->setText(i18n("Role:")); | 114 | attendeeRoleLabel->setText(i18n("Role:")); |
115 | mRoleCombo = new QComboBox(false,this); | 115 | mRoleCombo = new QComboBox(false,this); |
116 | mRoleCombo->insertStringList(Attendee::roleList()); | 116 | mRoleCombo->insertStringList(Attendee::roleList()); |
117 | connect(mRoleCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); | 117 | connect(mRoleCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); |
118 | 118 | ||
119 | QLabel *statusLabel = new QLabel(this); | 119 | QLabel *statusLabel = new QLabel(this); |
120 | statusLabel->setText( i18n("Status:") ); | 120 | statusLabel->setText( i18n("Status:") ); |
121 | 121 | ||
122 | mStatusCombo = new QComboBox(false,this); | 122 | mStatusCombo = new QComboBox(false,this); |
123 | mStatusCombo->insertStringList(Attendee::statusList()); | 123 | mStatusCombo->insertStringList(Attendee::statusList()); |
124 | connect(mStatusCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); | 124 | connect(mStatusCombo,SIGNAL(activated(int)),SLOT(updateAttendeeItem())); |
125 | 125 | ||
126 | mRsvpButton = new QCheckBox(this); | 126 | mRsvpButton = new QCheckBox(this); |
127 | mRsvpButton->setText(i18n("Request response")); | 127 | mRsvpButton->setText(i18n("Request response")); |
128 | connect(mRsvpButton,SIGNAL(clicked()),SLOT(updateAttendeeItem())); | 128 | connect(mRsvpButton,SIGNAL(clicked()),SLOT(updateAttendeeItem())); |
129 | QWidget *buttonBox = new QWidget(this); | 129 | QWidget *buttonBox = new QWidget(this); |
130 | QVBoxLayout *buttonLayout = new QVBoxLayout(buttonBox); | 130 | QVBoxLayout *buttonLayout = new QVBoxLayout(buttonBox); |
131 | 131 | ||
132 | QPushButton *newButton = new QPushButton(i18n("&New"),buttonBox); | 132 | QPushButton *newButton = new QPushButton(i18n("&New"),buttonBox); |
133 | buttonLayout->addWidget(newButton); | 133 | buttonLayout->addWidget(newButton); |
134 | connect(newButton,SIGNAL(clicked()),SLOT(addNewAttendee())); | 134 | connect(newButton,SIGNAL(clicked()),SLOT(addNewAttendee())); |
135 | 135 | ||
136 | mRemoveButton = new QPushButton(i18n("&Remove"),buttonBox); | 136 | mRemoveButton = new QPushButton(i18n("&Remove"),buttonBox); |
137 | buttonLayout->addWidget(mRemoveButton); | 137 | buttonLayout->addWidget(mRemoveButton); |
138 | connect(mRemoveButton, SIGNAL(clicked()),SLOT(removeAttendee())); | 138 | connect(mRemoveButton, SIGNAL(clicked()),SLOT(removeAttendee())); |
139 | 139 | ||
140 | mAddressBookButton = new QPushButton(i18n("Address &Book..."),this); | 140 | mAddressBookButton = new QPushButton(i18n("Address &Book..."),this); |
141 | // buttonLayout->addWidget(mAddressBookButton); | 141 | // buttonLayout->addWidget(mAddressBookButton); |
142 | connect(mAddressBookButton,SIGNAL(clicked()),SLOT(openAddressBook())); | 142 | connect(mAddressBookButton,SIGNAL(clicked()),SLOT(openAddressBook())); |
143 | //mRoleCombo->setFixedSize( mRoleCombo->sizeHint () ); | 143 | //mRoleCombo->setFixedSize( mRoleCombo->sizeHint () ); |
144 | 144 | ||
145 | if (qApp->desktop()->width() < 300 ) { | 145 | if (qApp->desktop()->width() < 300 ) { |
146 | mListView->setFixedHeight(80); | 146 | mListView->setFixedHeight(80); |
147 | topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,3); | 147 | topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,3); |
148 | topLayout->addMultiCellWidget(mListView,1,1,0,3); | 148 | topLayout->addMultiCellWidget(mListView,1,1,0,3); |
149 | topLayout->addWidget(attendeeLabel,3,0); | 149 | topLayout->addWidget(attendeeLabel,3,0); |
150 | topLayout->addMultiCellWidget(mNameEdit,3,3,1,2); | 150 | topLayout->addMultiCellWidget(mNameEdit,3,3,1,2); |
151 | topLayout->addWidget(emailLabel,4,0); | 151 | topLayout->addWidget(emailLabel,4,0); |
152 | topLayout->addMultiCellWidget(mEmailEdit,4,4,1,2); | 152 | topLayout->addMultiCellWidget(mEmailEdit,4,4,1,2); |
153 | topLayout->addWidget(attendeeRoleLabel,5,0); | 153 | topLayout->addWidget(attendeeRoleLabel,5,0); |
154 | topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); | 154 | topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); |
155 | topLayout->addWidget(statusLabel,6,0); | 155 | topLayout->addWidget(statusLabel,6,0); |
156 | topLayout->addMultiCellWidget(mStatusCombo,6,6,1,2); | 156 | topLayout->addMultiCellWidget(mStatusCombo,6,6,1,2); |
157 | topLayout->addMultiCellWidget(mAddressBookButton,2,2,2,3); | 157 | topLayout->addMultiCellWidget(mAddressBookButton,2,2,2,3); |
158 | topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); | 158 | topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); |
159 | topLayout->addMultiCellWidget(buttonBox,3,4,3,3); | 159 | topLayout->addMultiCellWidget(buttonBox,3,4,3,3); |
160 | topLayout->setRowStretch(1,2); | 160 | topLayout->setRowStretch(1,2); |
161 | topLayout->setColStretch(0,0); | 161 | topLayout->setColStretch(0,0); |
162 | topLayout->setColStretch(1,2); | 162 | topLayout->setColStretch(1,2); |
163 | topLayout->setColStretch(2,1); | 163 | topLayout->setColStretch(2,1); |
164 | topLayout->setColStretch(3,1); | 164 | topLayout->setColStretch(3,1); |
165 | 165 | ||
166 | } else { | 166 | } else { |
167 | topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,5); | 167 | topLayout->addMultiCellWidget(mOrganizerLabel,0,0,0,5); |
168 | topLayout->addMultiCellWidget(mListView,1,1,0,5); | 168 | topLayout->addMultiCellWidget(mListView,1,1,0,5); |
169 | topLayout->addWidget(attendeeLabel,3,0); | 169 | topLayout->addWidget(attendeeLabel,3,0); |
170 | topLayout->addMultiCellWidget(mNameEdit,3,3,1,4); | 170 | topLayout->addMultiCellWidget(mNameEdit,3,3,1,4); |
171 | topLayout->addWidget(emailLabel,4,0); | 171 | topLayout->addWidget(emailLabel,4,0); |
172 | topLayout->addMultiCellWidget(mEmailEdit,4,4,1,4); | 172 | topLayout->addMultiCellWidget(mEmailEdit,4,4,1,4); |
173 | topLayout->addWidget(attendeeRoleLabel,5,0); | 173 | topLayout->addWidget(attendeeRoleLabel,5,0); |
174 | topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); | 174 | topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); |
175 | topLayout->addWidget(statusLabel,5,3); | 175 | topLayout->addWidget(statusLabel,5,3); |
176 | topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5); | 176 | topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5); |
177 | topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5); | 177 | topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5); |
178 | topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); | 178 | topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); |
179 | topLayout->addMultiCellWidget(buttonBox,3,4,5,5); | 179 | topLayout->addMultiCellWidget(buttonBox,3,4,5,5); |
180 | topLayout->setRowStretch(1,5); | 180 | topLayout->setRowStretch(1,5); |
181 | topLayout->setColStretch(0,0); | 181 | topLayout->setColStretch(0,0); |
182 | } | 182 | } |
183 | // #if 0 | 183 | // #if 0 |
184 | // topLayout->setColStretch(2,1); | 184 | // topLayout->setColStretch(2,1); |
185 | // topLayout->addWidget(statusLabel,3,3); | 185 | // topLayout->addWidget(statusLabel,3,3); |
186 | // topLayout->addWidget(mStatusCombo,3,4); | 186 | // topLayout->addWidget(mStatusCombo,3,4); |
187 | // #else | 187 | // #else |
188 | // topLayout->addWidget(statusLabel,4,3); | 188 | // topLayout->addWidget(statusLabel,4,3); |
189 | // // topLayout->addWidget(mStatusCombo,4,3); | 189 | // // topLayout->addWidget(mStatusCombo,4,3); |
190 | // topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5); | 190 | // topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5); |
191 | 191 | ||
192 | // #endif | 192 | // #endif |
193 | // // topLayout->setRowStretch(5,1); | 193 | // // topLayout->setRowStretch(5,1); |
194 | // topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1); | 194 | // topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1); |
195 | // topLayout->addMultiCellWidget(buttonBox,2,3,5,5); | 195 | // topLayout->addMultiCellWidget(buttonBox,2,3,5,5); |
196 | // topLayout->setRowStretch(1,5); | 196 | // topLayout->setRowStretch(1,5); |
197 | // topLayout->setColStretch(0,0); | 197 | // topLayout->setColStretch(0,0); |
198 | 198 | ||
199 | #ifdef KORG_NOKABC | 199 | #ifdef KORG_NOKABC |
200 | mAddressBookButton->hide(); | 200 | mAddressBookButton->hide(); |
201 | #endif | 201 | #endif |
202 | 202 | ||
203 | updateAttendeeInput(); | 203 | updateAttendeeInput(); |
204 | 204 | #ifndef DESKTOP_VERSION | |
205 | //US listen for arriving address resultsets | 205 | //US listen for arriving address resultsets |
206 | connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), | 206 | connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), |
207 | this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); | 207 | this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); |
208 | #endif | ||
208 | 209 | ||
209 | } | 210 | } |
210 | 211 | ||
211 | KOEditorDetails::~KOEditorDetails() | 212 | KOEditorDetails::~KOEditorDetails() |
212 | { | 213 | { |
213 | } | 214 | } |
214 | 215 | ||
215 | void KOEditorDetails::removeAttendee() | 216 | void KOEditorDetails::removeAttendee() |
216 | { | 217 | { |
217 | AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem(); | 218 | AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem(); |
218 | if (!aItem) return; | 219 | if (!aItem) return; |
219 | 220 | ||
220 | Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(), | 221 | Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(), |
221 | aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(), | 222 | aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(), |
222 | aItem->data()->uid()); | 223 | aItem->data()->uid()); |
223 | mdelAttendees.append(delA); | 224 | mdelAttendees.append(delA); |
224 | 225 | ||
225 | delete aItem; | 226 | delete aItem; |
226 | 227 | ||
227 | updateAttendeeInput(); | 228 | updateAttendeeInput(); |
228 | } | 229 | } |
229 | 230 | ||
230 | 231 | ||
231 | void KOEditorDetails::openAddressBook() | 232 | void KOEditorDetails::openAddressBook() |
232 | { | 233 | { |
233 | #ifndef KORG_NOKABC | 234 | #ifndef KORG_NOKABC |
234 | 235 | ||
235 | #ifdef DESKTOP_VERSION | 236 | #ifdef DESKTOP_VERSION |
236 | KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); | 237 | KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); |
237 | uint i=0; | 238 | uint i=0; |
238 | for (i=0; i < list.count(); i++) { | 239 | for (i=0; i < list.count(); i++) { |
239 | insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) ); | 240 | insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) ); |
240 | } | 241 | } |
241 | #else | 242 | #else |
242 | bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); | 243 | bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); |
243 | // the result should now arrive through method insertAttendees | 244 | // the result should now arrive through method insertAttendees |
244 | #endif | 245 | #endif |
245 | 246 | ||
246 | 247 | ||
247 | #if 0 | 248 | #if 0 |
248 | KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); | 249 | KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); |
249 | if (!a.isEmpty()) { | 250 | if (!a.isEmpty()) { |
250 | insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) ); | 251 | insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) ); |
251 | } | 252 | } |
252 | #endif | 253 | #endif |
253 | #endif | 254 | #endif |
254 | } | 255 | } |
255 | 256 | ||
256 | 257 | ||
257 | void KOEditorDetails::addNewAttendee() | 258 | void KOEditorDetails::addNewAttendee() |
258 | { | 259 | { |
259 | #if 0 | 260 | #if 0 |
260 | // this is cool. If they didn't enter an email address, | 261 | // this is cool. If they didn't enter an email address, |
261 | // try to look it up in the address book and fill it in for them. | 262 | // try to look it up in the address book and fill it in for them. |
262 | if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) { | 263 | if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) { |
263 | KabAPI addrBook; | 264 | KabAPI addrBook; |
264 | QString name; | 265 | QString name; |
265 | std::list<AddressBook::Entry> entries; | 266 | std::list<AddressBook::Entry> entries; |
266 | name = mNameEdit->text(); | 267 | name = mNameEdit->text(); |
267 | if (addrBook.init() == AddressBook::NoError) { | 268 | if (addrBook.init() == AddressBook::NoError) { |
268 | if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) { | 269 | if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) { |
269 | kdDebug() << "positive match" << endl; | 270 | kdDebug() << "positive match" << endl; |
270 | // take first email address | 271 | // take first email address |
271 | if (!entries.front().emails.isEmpty() && | 272 | if (!entries.front().emails.isEmpty() && |
272 | entries.front().emails.first().length()>0) | 273 | entries.front().emails.first().length()>0) |
273 | mEmailEdit->setText(entries.front().emails.first()); | 274 | mEmailEdit->setText(entries.front().emails.first()); |
274 | } | 275 | } |
275 | } | 276 | } |
276 | } | 277 | } |
277 | #endif | 278 | #endif |
278 | 279 | ||
279 | Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)")); | 280 | Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)")); |
280 | insertAttendee(a); | 281 | insertAttendee(a); |
281 | } | 282 | } |
282 | 283 | ||
283 | //the map includes name/email pairs, that comes from Ka/Pi | 284 | //the map includes name/email pairs, that comes from Ka/Pi |
284 | void KOEditorDetails::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) | 285 | void KOEditorDetails::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) |
285 | { | 286 | { |
286 | if (uid == this->name()) | 287 | if (uid == this->name()) |
287 | { | 288 | { |
288 | for ( int i = 0; i < nameList.count(); i++) | 289 | for ( int i = 0; i < nameList.count(); i++) |
289 | { | 290 | { |
290 | QString _name = nameList[i]; | 291 | QString _name = nameList[i]; |
291 | QString _email = emailList[i]; | 292 | QString _email = emailList[i]; |
292 | QString _uid = uidList[i]; | 293 | QString _uid = uidList[i]; |
293 | 294 | ||
294 | Attendee *a = new Attendee(_name,_email,false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant, _uid); | 295 | Attendee *a = new Attendee(_name,_email,false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant, _uid); |
295 | insertAttendee(a); | 296 | insertAttendee(a); |
296 | } | 297 | } |
297 | } | 298 | } |
298 | 299 | ||
299 | } | 300 | } |
300 | 301 | ||
301 | 302 | ||
302 | void KOEditorDetails::insertAttendee(Attendee *a) | 303 | void KOEditorDetails::insertAttendee(Attendee *a) |
303 | { | 304 | { |
304 | AttendeeListItem *item = new AttendeeListItem(a,mListView); | 305 | AttendeeListItem *item = new AttendeeListItem(a,mListView); |
305 | mListView->setSelected( item, true ); | 306 | mListView->setSelected( item, true ); |
306 | } | 307 | } |
307 | 308 | ||
308 | void KOEditorDetails::setDefaults() | 309 | void KOEditorDetails::setDefaults() |
309 | { | 310 | { |
310 | mRsvpButton->setChecked(true); | 311 | mRsvpButton->setChecked(true); |
311 | mListView->clear(); | 312 | mListView->clear(); |
312 | mdelAttendees.clear(); | 313 | mdelAttendees.clear(); |
313 | clearAttendeeInput(); | 314 | clearAttendeeInput(); |
314 | mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email())); | 315 | mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email())); |
315 | 316 | ||
316 | mNameEdit->setText(""); | 317 | mNameEdit->setText(""); |
317 | mUidEdit->setText(""); | 318 | mUidEdit->setText(""); |
318 | mEmailEdit->setText(""); | 319 | mEmailEdit->setText(""); |
319 | mRoleCombo->setCurrentItem( 0 ); | 320 | mRoleCombo->setCurrentItem( 0 ); |
320 | mStatusCombo->setCurrentItem( 0 ); | 321 | mStatusCombo->setCurrentItem( 0 ); |
321 | 322 | ||
322 | } | 323 | } |
323 | 324 | ||
324 | void KOEditorDetails::readEvent(Incidence *event) | 325 | void KOEditorDetails::readEvent(Incidence *event) |
325 | { | 326 | { |
326 | setDefaults(); | 327 | setDefaults(); |
327 | //mListView->clear(); | 328 | //mListView->clear(); |
328 | //mdelAttendees.clear(); | 329 | //mdelAttendees.clear(); |
329 | QPtrList<Attendee> tmpAList = event->attendees(); | 330 | QPtrList<Attendee> tmpAList = event->attendees(); |
330 | Attendee *a; | 331 | Attendee *a; |
331 | for (a = tmpAList.first(); a; a = tmpAList.next()) | 332 | for (a = tmpAList.first(); a; a = tmpAList.next()) |
332 | insertAttendee(new Attendee(*a)); | 333 | insertAttendee(new Attendee(*a)); |
333 | 334 | ||
334 | mListView->setSelected( mListView->firstChild(), true ); | 335 | mListView->setSelected( mListView->firstChild(), true ); |
335 | mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer())); | 336 | mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer())); |
336 | } | 337 | } |
337 | 338 | ||
338 | void KOEditorDetails::writeEvent(Incidence *event) | 339 | void KOEditorDetails::writeEvent(Incidence *event) |
339 | { | 340 | { |
340 | event->clearAttendees(); | 341 | event->clearAttendees(); |
341 | QListViewItem *item; | 342 | QListViewItem *item; |
342 | AttendeeListItem *a; | 343 | AttendeeListItem *a; |
343 | for (item = mListView->firstChild(); item; | 344 | for (item = mListView->firstChild(); item; |
344 | item = item->nextSibling()) { | 345 | item = item->nextSibling()) { |
345 | a = (AttendeeListItem *)item; | 346 | a = (AttendeeListItem *)item; |
346 | event->addAttendee(new Attendee(*(a->data()))); | 347 | event->addAttendee(new Attendee(*(a->data()))); |
347 | } | 348 | } |
348 | event->setOrganizer(KOPrefs::instance()->email()); | 349 | event->setOrganizer(KOPrefs::instance()->email()); |
349 | } | 350 | } |
350 | 351 | ||
351 | void KOEditorDetails::cancelAttendeeEvent(Incidence *event) | 352 | void KOEditorDetails::cancelAttendeeEvent(Incidence *event) |
352 | { | 353 | { |
353 | event->clearAttendees(); | 354 | event->clearAttendees(); |
354 | Attendee * att; | 355 | Attendee * att; |
355 | for (att=mdelAttendees.first();att;att=mdelAttendees.next()) { | 356 | for (att=mdelAttendees.first();att;att=mdelAttendees.next()) { |
356 | event->addAttendee(new Attendee(*att)); | 357 | event->addAttendee(new Attendee(*att)); |
357 | } | 358 | } |
358 | mdelAttendees.clear(); | 359 | mdelAttendees.clear(); |
359 | } | 360 | } |
360 | 361 | ||
361 | bool KOEditorDetails::validateInput() | 362 | bool KOEditorDetails::validateInput() |
362 | { | 363 | { |
363 | return true; | 364 | return true; |
364 | } | 365 | } |
365 | 366 | ||
366 | void KOEditorDetails::updateAttendeeInput() | 367 | void KOEditorDetails::updateAttendeeInput() |
367 | { | 368 | { |
368 | QListViewItem *item = mListView->selectedItem(); | 369 | QListViewItem *item = mListView->selectedItem(); |
369 | AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); | 370 | AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); |
370 | if (aItem) { | 371 | if (aItem) { |
371 | fillAttendeeInput( aItem ); | 372 | fillAttendeeInput( aItem ); |
372 | } else { | 373 | } else { |
373 | clearAttendeeInput(); | 374 | clearAttendeeInput(); |
374 | } | 375 | } |
375 | } | 376 | } |
376 | 377 | ||
377 | void KOEditorDetails::clearAttendeeInput() | 378 | void KOEditorDetails::clearAttendeeInput() |
378 | { | 379 | { |
379 | mNameEdit->setText(""); | 380 | mNameEdit->setText(""); |
380 | mUidEdit->setText(""); | 381 | mUidEdit->setText(""); |
381 | mEmailEdit->setText(""); | 382 | mEmailEdit->setText(""); |
382 | mRoleCombo->setCurrentItem(0); | 383 | mRoleCombo->setCurrentItem(0); |
383 | mStatusCombo->setCurrentItem(0); | 384 | mStatusCombo->setCurrentItem(0); |
384 | mRsvpButton->setChecked(true); | 385 | mRsvpButton->setChecked(true); |
385 | setEnabledAttendeeInput( false ); | 386 | setEnabledAttendeeInput( false ); |
386 | } | 387 | } |
387 | 388 | ||
388 | void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem ) | 389 | void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem ) |
389 | { | 390 | { |
390 | Attendee *a = aItem->data(); | 391 | Attendee *a = aItem->data(); |
391 | mDisableItemUpdate = true; | 392 | mDisableItemUpdate = true; |
392 | mNameEdit->setText(a->name()); | 393 | mNameEdit->setText(a->name()); |
393 | mUidEdit->setText(a->uid()); | 394 | mUidEdit->setText(a->uid()); |
394 | mEmailEdit->setText(a->email()); | 395 | mEmailEdit->setText(a->email()); |
395 | mRoleCombo->setCurrentItem(a->role()); | 396 | mRoleCombo->setCurrentItem(a->role()); |
396 | mStatusCombo->setCurrentItem(a->status()); | 397 | mStatusCombo->setCurrentItem(a->status()); |
397 | mRsvpButton->setChecked(a->RSVP()); | 398 | mRsvpButton->setChecked(a->RSVP()); |
398 | 399 | ||
399 | mDisableItemUpdate = false; | 400 | mDisableItemUpdate = false; |
400 | 401 | ||
401 | setEnabledAttendeeInput( true ); | 402 | setEnabledAttendeeInput( true ); |
402 | } | 403 | } |
403 | 404 | ||
404 | void KOEditorDetails::setEnabledAttendeeInput( bool enabled ) | 405 | void KOEditorDetails::setEnabledAttendeeInput( bool enabled ) |
405 | { | 406 | { |
406 | mNameEdit->setEnabled( enabled ); | 407 | mNameEdit->setEnabled( enabled ); |
407 | mEmailEdit->setEnabled( enabled ); | 408 | mEmailEdit->setEnabled( enabled ); |
408 | mRoleCombo->setEnabled( enabled ); | 409 | mRoleCombo->setEnabled( enabled ); |
409 | mStatusCombo->setEnabled( enabled ); | 410 | mStatusCombo->setEnabled( enabled ); |
410 | mRsvpButton->setEnabled( enabled ); | 411 | mRsvpButton->setEnabled( enabled ); |
411 | 412 | ||
412 | mRemoveButton->setEnabled( enabled ); | 413 | mRemoveButton->setEnabled( enabled ); |
413 | } | 414 | } |
414 | 415 | ||
415 | void KOEditorDetails::updateAttendeeItem() | 416 | void KOEditorDetails::updateAttendeeItem() |
416 | { | 417 | { |
417 | if (mDisableItemUpdate) return; | 418 | if (mDisableItemUpdate) return; |
418 | 419 | ||
419 | QListViewItem *item = mListView->selectedItem(); | 420 | QListViewItem *item = mListView->selectedItem(); |
420 | AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); | 421 | AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); |
421 | if ( !aItem ) return; | 422 | if ( !aItem ) return; |
422 | 423 | ||
423 | Attendee *a = aItem->data(); | 424 | Attendee *a = aItem->data(); |
424 | 425 | ||
425 | a->setName( mNameEdit->text() ); | 426 | a->setName( mNameEdit->text() ); |
426 | a->setUid( mUidEdit->text() ); | 427 | a->setUid( mUidEdit->text() ); |
427 | a->setEmail( mEmailEdit->text() ); | 428 | a->setEmail( mEmailEdit->text() ); |
428 | a->setRole( Attendee::Role( mRoleCombo->currentItem() ) ); | 429 | a->setRole( Attendee::Role( mRoleCombo->currentItem() ) ); |
429 | a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) ); | 430 | a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) ); |
430 | a->setRSVP( mRsvpButton->isChecked() ); | 431 | a->setRSVP( mRsvpButton->isChecked() ); |
431 | aItem->updateItem(); | 432 | aItem->updateItem(); |
432 | } | 433 | } |