summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeditordetails.cpp39
-rw-r--r--korganizer/koeditordetails.h7
2 files changed, 43 insertions, 3 deletions
diff --git a/korganizer/koeditordetails.cpp b/korganizer/koeditordetails.cpp
index c0e7bdd..8e2fabe 100644
--- a/korganizer/koeditordetails.cpp
+++ b/korganizer/koeditordetails.cpp
@@ -24,33 +24,39 @@
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
41#ifdef DESKTOP_VERSION
40#include <kabc/addresseedialog.h> 42#include <kabc/addresseedialog.h>
43#else //DESKTOP_VERSION
44#include <externalapphandler.h>
45#endif //DESKTOP_VERSION
46
41#endif 47#endif
42 48
43#include <libkcal/incidence.h> 49#include <libkcal/incidence.h>
44 50
45#include "koprefs.h" 51#include "koprefs.h"
46 52
47#include "koeditordetails.h" 53#include "koeditordetails.h"
48 54
49template <> 55template <>
50CustomListViewItem<class Attendee *>::~CustomListViewItem() 56CustomListViewItem<class Attendee *>::~CustomListViewItem()
51{ 57{
52 delete mData; 58 delete mData;
53} 59}
54 60
55template <> 61template <>
56void CustomListViewItem<class Attendee *>::updateItem() 62void CustomListViewItem<class Attendee *>::updateItem()
@@ -71,33 +77,33 @@ KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name)
71{ 77{
72 QGridLayout *topLayout = new QGridLayout(this); 78 QGridLayout *topLayout = new QGridLayout(this);
73 topLayout->setSpacing(spacing); 79 topLayout->setSpacing(spacing);
74 80
75 QString organizer = KOPrefs::instance()->email(); 81 QString organizer = KOPrefs::instance()->email();
76 mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this); 82 mOrganizerLabel = new QLabel(i18n("Organizer: %1").arg(organizer),this);
77 83
78 mListView = new KListView(this,"mListView"); 84 mListView = new KListView(this,"mListView");
79 mListView->addColumn(i18n("Name"),180); 85 mListView->addColumn(i18n("Name"),180);
80 mListView->addColumn(i18n("Email"),180); 86 mListView->addColumn(i18n("Email"),180);
81 mListView->addColumn(i18n("Role"),60); 87 mListView->addColumn(i18n("Role"),60);
82 mListView->addColumn(i18n("Status"),100); 88 mListView->addColumn(i18n("Status"),100);
83 mListView->addColumn(i18n("RSVP"),35); 89 mListView->addColumn(i18n("RSVP"),35);
84 if ( KOPrefs::instance()->mCompactDialogs ) { 90 if ( KOPrefs::instance()->mCompactDialogs ) {
85 //mListView->setFixedHeight(78); 91 //mListView->setFixedHeight(78);
86 } 92 }
87 93
88 connect(mListView,SIGNAL(selectionChanged(QListViewItem *)), 94 connect(mListView,SIGNAL(selectionChanged(QListViewItem *)),
89 SLOT(updateAttendeeInput())); 95 SLOT(updateAttendeeInput()));
90 96
91 QLabel *attendeeLabel = new QLabel(this); 97 QLabel *attendeeLabel = new QLabel(this);
92 attendeeLabel->setText(i18n("Name:")); 98 attendeeLabel->setText(i18n("Name:"));
93 attendeeLabel->setFixedSize( attendeeLabel->sizeHint() ); 99 attendeeLabel->setFixedSize( attendeeLabel->sizeHint() );
94 mNameEdit = new QLineEdit(this); 100 mNameEdit = new QLineEdit(this);
95 connect(mNameEdit,SIGNAL(textChanged(const QString &)), 101 connect(mNameEdit,SIGNAL(textChanged(const QString &)),
96 SLOT(updateAttendeeItem())); 102 SLOT(updateAttendeeItem()));
97 103
98 mUidEdit = new QLineEdit(0); 104 mUidEdit = new QLineEdit(0);
99 mUidEdit->setText(""); 105 mUidEdit->setText("");
100 106
101 QLabel *emailLabel = new QLabel(this); 107 QLabel *emailLabel = new QLabel(this);
102 emailLabel->setText(i18n("Email:")); 108 emailLabel->setText(i18n("Email:"));
103 mEmailEdit = new QLineEdit(this); 109 mEmailEdit = new QLineEdit(this);
@@ -182,64 +188,75 @@ KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name)
182// topLayout->addWidget(statusLabel,4,3); 188// topLayout->addWidget(statusLabel,4,3);
183// // topLayout->addWidget(mStatusCombo,4,3); 189// // topLayout->addWidget(mStatusCombo,4,3);
184// topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5); 190// topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5);
185 191
186// #endif 192// #endif
187// // topLayout->setRowStretch(5,1); 193// // topLayout->setRowStretch(5,1);
188// topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1); 194// topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1);
189// topLayout->addMultiCellWidget(buttonBox,2,3,5,5); 195// topLayout->addMultiCellWidget(buttonBox,2,3,5,5);
190// topLayout->setRowStretch(1,5); 196// topLayout->setRowStretch(1,5);
191// topLayout->setColStretch(0,0); 197// topLayout->setColStretch(0,0);
192 198
193#ifdef KORG_NOKABC 199#ifdef KORG_NOKABC
194 mAddressBookButton->hide(); 200 mAddressBookButton->hide();
195#endif 201#endif
196 202
197 updateAttendeeInput(); 203 updateAttendeeInput();
204
205//US listen for arriving address resultsets
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&)));
208
198} 209}
199 210
200KOEditorDetails::~KOEditorDetails() 211KOEditorDetails::~KOEditorDetails()
201{ 212{
202} 213}
203 214
204void KOEditorDetails::removeAttendee() 215void KOEditorDetails::removeAttendee()
205{ 216{
206 AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem(); 217 AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem();
207 if (!aItem) return; 218 if (!aItem) return;
208 219
209 Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(), 220 Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(),
210 aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(), 221 aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(),
211 aItem->data()->uid()); 222 aItem->data()->uid());
212 mdelAttendees.append(delA); 223 mdelAttendees.append(delA);
213 224
214 delete aItem; 225 delete aItem;
215 226
216 updateAttendeeInput(); 227 updateAttendeeInput();
217} 228}
218 229
219 230
220void KOEditorDetails::openAddressBook() 231void KOEditorDetails::openAddressBook()
221{ 232{
222#ifndef KORG_NOKABC 233#ifndef KORG_NOKABC
223 234
235#ifdef DESKTOP_VERSION
224 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 236 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
225 uint i=0; 237 uint i=0;
226 for (i=0; i < list.count(); i++) { 238 for (i=0; i < list.count(); i++) {
227 insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) ); 239 insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) );
228 } 240 }
229 241#else
242 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#endif
245
246
230#if 0 247#if 0
231 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); 248 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this);
232 if (!a.isEmpty()) { 249 if (!a.isEmpty()) {
233 insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) ); 250 insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) );
234 } 251 }
235#endif 252#endif
236#endif 253#endif
237} 254}
238 255
239 256
240void KOEditorDetails::addNewAttendee() 257void KOEditorDetails::addNewAttendee()
241{ 258{
242#if 0 259#if 0
243 // this is cool. If they didn't enter an email address, 260 // this is cool. If they didn't enter an email address,
244 // try to look it up in the address book and fill it in for them. 261 // try to look it up in the address book and fill it in for them.
245 if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) { 262 if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) {
@@ -250,32 +267,50 @@ void KOEditorDetails::addNewAttendee()
250 if (addrBook.init() == AddressBook::NoError) { 267 if (addrBook.init() == AddressBook::NoError) {
251 if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) { 268 if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) {
252 kdDebug() << "positive match" << endl; 269 kdDebug() << "positive match" << endl;
253 // take first email address 270 // take first email address
254 if (!entries.front().emails.isEmpty() && 271 if (!entries.front().emails.isEmpty() &&
255 entries.front().emails.first().length()>0) 272 entries.front().emails.first().length()>0)
256 mEmailEdit->setText(entries.front().emails.first()); 273 mEmailEdit->setText(entries.front().emails.first());
257 } 274 }
258 } 275 }
259 } 276 }
260#endif 277#endif
261 278
262 Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)")); 279 Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)"));
263 insertAttendee(a); 280 insertAttendee(a);
264} 281}
265 282
283//the map includes name/email pairs, that comes from Ka/Pi
284void KOEditorDetails::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList)
285{
286 if (uid == this->name())
287 {
288 for ( int i = 0; i < nameList.count(); i++)
289 {
290 QString _name = nameList[i];
291 QString _email = emailList[i];
292 QString _uid = uidList[i];
293
294 Attendee *a = new Attendee(_name,_email,false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant, _uid);
295 insertAttendee(a);
296 }
297 }
298
299}
300
266 301
267void KOEditorDetails::insertAttendee(Attendee *a) 302void KOEditorDetails::insertAttendee(Attendee *a)
268{ 303{
269 AttendeeListItem *item = new AttendeeListItem(a,mListView); 304 AttendeeListItem *item = new AttendeeListItem(a,mListView);
270 mListView->setSelected( item, true ); 305 mListView->setSelected( item, true );
271} 306}
272 307
273void KOEditorDetails::setDefaults() 308void KOEditorDetails::setDefaults()
274{ 309{
275 mRsvpButton->setChecked(true); 310 mRsvpButton->setChecked(true);
276 mListView->clear(); 311 mListView->clear();
277 mdelAttendees.clear(); 312 mdelAttendees.clear();
278 clearAttendeeInput(); 313 clearAttendeeInput();
279 mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email())); 314 mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email()));
280 315
281 mNameEdit->setText(""); 316 mNameEdit->setText("");
diff --git a/korganizer/koeditordetails.h b/korganizer/koeditordetails.h
index 930b296..0cc807f 100644
--- a/korganizer/koeditordetails.h
+++ b/korganizer/koeditordetails.h
@@ -10,32 +10,33 @@
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 _KOEDITORDETAILS_H 23#ifndef _KOEDITORDETAILS_H
24#define _KOEDITORDETAILS_H 24#define _KOEDITORDETAILS_H
25 25
26#include <qmap.h>
26#include <qframe.h> 27#include <qframe.h>
27#include <qlabel.h> 28#include <qlabel.h>
28#include <qcheckbox.h> 29#include <qcheckbox.h>
29#include <qpushbutton.h> 30#include <qpushbutton.h>
30#include <qgroupbox.h> 31#include <qgroupbox.h>
31#include <qlineedit.h> 32#include <qlineedit.h>
32#include <qcombobox.h> 33#include <qcombobox.h>
33#include <qmultilineedit.h> 34#include <qmultilineedit.h>
34#include <klistview.h> 35#include <klistview.h>
35#include <qradiobutton.h> 36#include <qradiobutton.h>
36#include <qptrlist.h> 37#include <qptrlist.h>
37 38
38#include <kapplication.h> 39#include <kapplication.h>
39 40
40#include <libkcal/event.h> 41#include <libkcal/event.h>
41 42
@@ -57,47 +58,51 @@ class KOEditorDetails : public QWidget
57 virtual ~KOEditorDetails(); 58 virtual ~KOEditorDetails();
58 59
59 /** Set widgets to default values */ 60 /** Set widgets to default values */
60 void setDefaults(); 61 void setDefaults();
61 /** Read event object and setup widgets accordingly */ 62 /** Read event object and setup widgets accordingly */
62 void readEvent(Incidence *); 63 void readEvent(Incidence *);
63 /** Write event settings to event object */ 64 /** Write event settings to event object */
64 void writeEvent(Incidence *); 65 void writeEvent(Incidence *);
65 66
66 /** return a clone of the event with attendees to be canceld*/ 67 /** return a clone of the event with attendees to be canceld*/
67 void cancelAttendeeEvent(Incidence *); 68 void cancelAttendeeEvent(Incidence *);
68 /** Check if the input is valid. */ 69 /** Check if the input is valid. */
69 bool validateInput(); 70 bool validateInput();
70 71
71 public slots: 72 public slots:
72 void insertAttendee(Attendee *); 73 void insertAttendee(Attendee *);
74 // called when the app recieves a list of name/email/uid (=addresses) from another app. Usually Ka/Pi
75 // The first parameter is a uniqueid. It can be used to identify if event
76 void insertAttendees(const QString&, const QStringList& namelist, const QStringList& emaillist, const QStringList& uidlist);
77
73 78
74 protected slots: 79 protected slots:
75 void addNewAttendee(); 80 void addNewAttendee();
76 void removeAttendee(); 81 void removeAttendee();
77 void openAddressBook(); 82 void openAddressBook();
78 void updateAttendeeInput(); 83 void updateAttendeeInput();
79 void clearAttendeeInput(); 84 void clearAttendeeInput();
80 void fillAttendeeInput(AttendeeListItem *); 85 void fillAttendeeInput(AttendeeListItem *);
81 void updateAttendeeItem(); 86 void updateAttendeeItem();
82 void setEnabledAttendeeInput(bool); 87 void setEnabledAttendeeInput(bool);
83 88
84 private: 89 private:
85 bool mDisableItemUpdate; 90 bool mDisableItemUpdate;
86 91
87 QLineEdit *mNameEdit; 92 QLineEdit *mNameEdit;
88 QLineEdit *mUidEdit; 93 QLineEdit *mUidEdit;
89 QLineEdit *mEmailEdit; 94 QLineEdit *mEmailEdit;
90 KListView *mListView; 95 KListView *mListView;
91 QComboBox* mRoleCombo; 96 QComboBox* mRoleCombo;
92 QCheckBox* mRsvpButton; 97 QCheckBox* mRsvpButton;
93 QComboBox* mStatusCombo; 98 QComboBox* mStatusCombo;
94 QLabel *mOrganizerLabel; 99 QLabel *mOrganizerLabel;
95 100
96 QPushButton* mAddButton; 101 QPushButton* mAddButton;
97 QPushButton* mRemoveButton; 102 QPushButton* mRemoveButton;
98 QPushButton* mAddressBookButton; 103 QPushButton* mAddressBookButton;
99 104
100 QPtrList<Attendee> mdelAttendees; 105 QPtrList<Attendee> mdelAttendees;
101}; 106};
102 107
103#endif 108#endif