korganizer
koattendeeeditor.h
00001 /* 00002 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 00003 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> 00004 Copyright (c) 2007 Volker Krause <vkrause@kde.org> 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00019 */ 00020 00021 #ifndef KOATTENDEEEDITOR_H 00022 #define KOATTENDEEEDITOR_H 00023 00024 #include <qwidget.h> 00025 #include <libkcal/attendee.h> 00026 00027 class QBoxLayout; 00028 class QComboBox; 00029 class QCheckBox; 00030 class QLabel; 00031 class QPushButton; 00032 class QHBox; 00033 class QListViewItem; 00034 00035 namespace KPIM { 00036 class AddresseeLineEdit; 00037 } 00038 00039 namespace KABC { 00040 class Addressee; 00041 } 00042 00043 namespace KCal { 00044 class Incidence; 00045 } 00046 00050 class KOAttendeeEditor : public QWidget 00051 { 00052 Q_OBJECT 00053 public: 00054 KOAttendeeEditor( QWidget *parent, const char *name = 0 ); 00055 00056 virtual void insertAttendee( KCal::Attendee* attendee, bool fetchFB = true ) = 0; 00057 00058 virtual void readEvent( KCal::Incidence *incidence ); 00059 virtual void writeEvent( KCal::Incidence *incidence ); 00060 00062 void cancelAttendeeEvent( KCal::Incidence *incidence ); 00063 00064 public slots: 00065 void acceptForMe(); 00066 void declineForMe(); 00067 00068 signals: 00069 void updateAttendeeSummary( int count ); 00070 00071 protected: 00072 void initOrganizerWidgets( QWidget *parent, QBoxLayout *layout ); 00073 void initEditWidgets( QWidget *parent, QBoxLayout *layout ); 00074 00080 void insertAttendeeFromAddressee( const KABC::Addressee &a, const KCal::Attendee* at=0 ); 00081 00082 void fillOrganizerCombo(); 00083 virtual QListViewItem* hasExampleAttendee() const = 0; 00084 bool isExampleAttendee( const KCal::Attendee* ) const; 00085 virtual KCal::Attendee* currentAttendee() const = 0; 00086 virtual void updateCurrentItem() = 0; 00087 00088 virtual void changeStatusForMe( KCal::Attendee::PartStat status ) = 0; 00089 00090 virtual bool eventFilter( QObject *, QEvent *); 00091 00092 protected slots: 00093 void addNewAttendee(); 00094 void openAddressBook(); 00095 00096 void setEnableAttendeeInput( bool enabled ); 00097 void updateAttendeeInput(); 00098 void clearAttendeeInput(); 00099 void fillAttendeeInput( KCal::Attendee *a ); 00100 void updateAttendee(); 00101 00102 protected: 00103 KPIM::AddresseeLineEdit *mNameEdit; 00104 QString mUid; 00105 QComboBox* mRoleCombo; 00106 QCheckBox* mRsvpButton; 00107 QComboBox* mStatusCombo; 00108 00109 QHBox* mOrganizerHBox; 00110 QComboBox *mOrganizerCombo; // either we organize it (combo shown) 00111 QLabel *mOrganizerLabel; // or someone else does (just a label is shown) 00112 00113 QLabel* mDelegateLabel; 00114 00115 QPushButton* mAddButton; 00116 QPushButton* mRemoveButton; 00117 QPushButton* mAddressBookButton; 00118 00119 QPtrList<KCal::Attendee> mdelAttendees; 00120 QPtrList<KCal::Attendee> mnewAttendees; 00121 00122 private: 00123 bool mDisableItemUpdate; 00124 }; 00125 00126 #endif