korganizer
koeventview.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "koprefs.h"
00026 #include "kocore.h"
00027 #include "koeventview.h"
00028 #include "koeventpopupmenu.h"
00029
00030 #include <libkcal/calendar.h>
00031
00032 #include <klocale.h>
00033 #include <kdebug.h>
00034 #include <kiconloader.h>
00035 #include <kmessagebox.h>
00036 #include <kxmlguiclient.h>
00037 #include <kxmlguifactory.h>
00038
00039 #include <qpopupmenu.h>
00040 #include <qcursor.h>
00041
00042
00043 using namespace KOrg;
00044 #include "koeventview.moc"
00045
00046
00047
00048 KOEventView::KOEventView(Calendar *cal,QWidget *parent,const char *name)
00049 : KOrg::BaseView(cal,parent,name)
00050 {
00051 }
00052
00053
00054
00055 KOEventView::~KOEventView()
00056 {
00057 }
00058
00059
00060
00061 KOEventPopupMenu *KOEventView::eventPopup()
00062 {
00063 KOEventPopupMenu *eventPopup = new KOEventPopupMenu;
00064
00065 connect( eventPopup, SIGNAL(editIncidenceSignal(Incidence *,const QDate &)),
00066 SIGNAL(editIncidenceSignal(Incidence *,const QDate &)) );
00067 connect( eventPopup, SIGNAL(showIncidenceSignal(Incidence *,const QDate &)),
00068 SIGNAL(showIncidenceSignal(Incidence *,const QDate &)) );
00069 connect( eventPopup, SIGNAL(deleteIncidenceSignal(Incidence *)),
00070 SIGNAL(deleteIncidenceSignal(Incidence *)) );
00071 connect( eventPopup, SIGNAL(cutIncidenceSignal(Incidence *)),
00072 SIGNAL(cutIncidenceSignal(Incidence *)) );
00073 connect( eventPopup, SIGNAL(copyIncidenceSignal(Incidence *)),
00074 SIGNAL(copyIncidenceSignal(Incidence *)) );
00075 connect( eventPopup, SIGNAL(pasteIncidenceSignal()),
00076 SIGNAL(pasteIncidenceSignal()) );
00077 connect( eventPopup, SIGNAL(toggleAlarmSignal(Incidence *)),
00078 SIGNAL(toggleAlarmSignal(Incidence*)) );
00079 connect( eventPopup, SIGNAL(dissociateOccurrenceSignal(Incidence *,const QDate &)),
00080 SIGNAL(dissociateOccurrenceSignal(Incidence *,const QDate &)) );
00081 connect( eventPopup, SIGNAL(dissociateFutureOccurrenceSignal(Incidence *,const QDate &)),
00082 SIGNAL(dissociateFutureOccurrenceSignal(Incidence *,const QDate &)) );
00083
00084 return eventPopup;
00085 }
00086
00087 QPopupMenu *KOEventView::newEventPopup()
00088 {
00089 KXMLGUIClient *client = KOCore::self()->xmlguiClient( this );
00090 if ( !client ) {
00091 kdError() << "KOEventView::newEventPopup(): no xmlGuiClient." << endl;
00092 return 0;
00093 }
00094 if ( !client->factory() ) {
00095 kdError() << "KOEventView::newEventPopup(): no factory" << endl;
00096 return 0;
00097 }
00098
00099 return static_cast<QPopupMenu*>
00100 ( client->factory()->container( "rmb_selection_popup", client ) );
00101 }
00102
00103
00104 void KOEventView::popupShow()
00105 {
00106 emit showIncidenceSignal(mCurrentIncidence, QDate() );
00107 }
00108
00109
00110
00111 void KOEventView::popupEdit()
00112 {
00113 emit editIncidenceSignal( mCurrentIncidence, QDate() );
00114 }
00115
00116
00117
00118 void KOEventView::popupDelete()
00119 {
00120 emit deleteIncidenceSignal(mCurrentIncidence);
00121 }
00122
00123
00124
00125 void KOEventView::popupCut()
00126 {
00127 emit cutIncidenceSignal(mCurrentIncidence);
00128 }
00129
00130
00131
00132 void KOEventView::popupCopy()
00133 {
00134 emit copyIncidenceSignal(mCurrentIncidence);
00135 }
00136
00137
00138
00139 void KOEventView::showNewEventPopup()
00140 {
00141 if ( !readOnly() ) {
00142 QPopupMenu *popup = newEventPopup();
00143 if ( !popup ) {
00144 kdError() << "KOEventView::showNewEventPopup(): popup creation failed"
00145 << endl;
00146 return;
00147 }
00148
00149 popup->popup( QCursor::pos() );
00150 }
00151 }
00152
00153
00154
00155 void KOEventView::defaultAction( Incidence *incidence )
00156 {
00157 kdDebug(5850) << "KOEventView::defaultAction()" << endl;
00158
00159 if ( !incidence ) return;
00160
00161 kdDebug(5850) << " type: " << incidence->type() << endl;
00162
00163 if ( incidence->isReadOnly() ) {
00164 emit showIncidenceSignal( incidence, QDate() );
00165 } else {
00166 emit editIncidenceSignal( incidence, QDate() );
00167 }
00168 }
00169
00170
00171
00172 bool KOEventView::makesWholeDayBusy( Incidence *incidence )
00173 {
00174
00175
00176
00177
00178
00179 if ( !KOPrefs::instance()->mColorBusyDaysEnabled ) {
00180 return false;
00181 }
00182
00183 if ( incidence->type() != "Event" || !incidence->doesFloat() ) {
00184 return false;
00185 }
00186
00187 Event *ev = static_cast<Event*>( incidence );
00188
00189 if ( ev->transparency() != Event::Opaque ) {
00190 return false;
00191 }
00192
00193
00194 if ( KOPrefs::instance()->thatIsMe( ev->organizer().email() ) ) {
00195 return true;
00196 }
00197
00198 KCal::Attendee::List attendees = ev->attendees();
00199 KCal::Attendee::List::ConstIterator it;
00200 for ( it = attendees.constBegin(); it != attendees.constEnd(); ++it ) {
00201 if ( KOPrefs::instance()->thatIsMe( (*it)->email() ) ) {
00202 return true;
00203 }
00204 }
00205
00206 return false;
00207 }
00208
00209
00210
00211 #include "baseview.moc"
00212
|